Angående buffer. clk clear >=1 =9?

Relevanta dokument
VHDL3. Angående buffer

VHDL2. Sekvensnätsexemplet

VHDL2. Sekvensnätsexemplet

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

DESIGN AV SEKVENTIELL LOGIK

Programmerbara kretsar och VHDL. Föreläsning 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

Programmerbara kretsar och VHDL. Föreläsning 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

Konstruktion av digitala system - VHDL

VHDL 1. Programmerbara kretsar

Programmerbara kretsar och VHDL. Föreläsning 10 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

Programmerbara kretsar och VHDL 1. Föreläsning 9 Digitalteknik, TSEA22 Oscar Gustafsson, Mattias Krysander Institutionen för systemteknik

Konstruktionsmetodik för sekvenskretsar

Konstruktionsmetodik för sekvenskretsar. Föreläsning 7 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

VHDL testbänk. Mall-programmets funktion. Låset öppnas när tangenten 1 trycks ned och sedan släpps. William Sandqvist

Hjälpmedel: Appendix A. VHDL-syntax. (bifogas detta prov) Appendix B.2. IEEE-package (bifogas detta prov)

std_logic & std_logic_vector

D2 och E3. EDA321 Digitalteknik-syntes. Fredag den 13 januari 2012, fm i M-salarna

VHDL och laborationer i digitalteknik

Design av mindre digitala system. Föreläsning Digitalteknik, TSEA52 Mattias Krysander Institutionen för systemteknik

Digital elektronik CL0090

Simulering med ModelSim En kort introduktion

KALKYLATOR LABORATION4. Laborationens syfte

Digitalteknik, fortsättningskurs Föreläsning VHDL Very High Speed Integrated Circuit Hardware Description Language

Sekvensnät. William Sandqvist

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Tentamen i IE1204/5 Digital Design onsdagen den 5/

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Digital- och datorteknik, , Per Larsson-Edefors Sida 1

Strukturell VHDL. Grundläggande kunskaper om. och TESTBÄDD. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Lars Wållberg ver 1.

Tenta i Digitalteknik

Digital Konstruktion TSEA43. Ingemar Ragnemalm 2001, Olle Seger 2003-,

Digitalteknik syntes Arne Linde 2012

Digitala projekt Elektro- och informationsteknik

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

IE1205 Digital Design: F11: Programmerbar Logik, VHDL för Sekvensnät

LABORATIONSINSTRUKTION LABORATION

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD

DIGITALTEKNIK. Laboration D172

LABORATION TSEA22 DIGITALTEKNIK D TSEA51 DIGITALTEKNIK Y. Konstruktion av sekvenskretsar med CPLD. Version: 2.2

Tentamen i IE1204/5 Digital Design måndagen den 15/

Digitala System: Datorteknik ERIK LARSSON

-c wc. Pre- Next state Out- Vi ser att tillstånden är redan sorterade i grupper med olika utsignaler,

Datorkonstruktion. Datorkonstruktion 2018, 8hp

FÖRELÄSNING 8 INTRODUKTION TILL DESIGN AV DIGITALA ELEKTRONIKSYSTEM

Chalmers ekniska Högskola Institutionen för Data- och Informationsteknik. EDA 321 Digitalteknik syntes Laboration 2 - VHDL

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

KOMBINATORISKA FUNKTIONER...1

Lösningförslag till Exempel på tentamensfrågor Digitalteknik I.

Tentamen IE Digital Design Måndag 23/

Digitala elektroniksystem

Omtentamen IE Digital Design Måndag 14/

Tenta i Digitalteknik

L15 Introduktion modern digital design

Programmerbar logik och VHDL. Föreläsning 4

Generering av analoga signaler från XSV300

Tenta i Digitalteknik

Tentamen med lösningar IE Digital Design Måndag 23/

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

LAB VHDL-programmering

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

VHDL Basics. Component model Code model Entity Architecture Identifiers and objects Operations for relations. Bengt Oelmann -- copyright

Digital Design IE1204

Sekvensnät vippor, register och bussar

Tenta i Digitalteknik

6. Minnen. Associativt minne

Lösningsföslag till Exempel på tentamensuppgifter i Digitalteknik I

Tentamen i IE1204/5 Digital Design Torsdag 29/

Digital Design IE1204

IE1204/IE1205 Digital Design

FIFO-kostruktion baserat på ett enkel-ports SRAM Yusuf Duman

Omtentamen med lösningar IE Digital Design Måndag 14/

Digital elektronik CL0090

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

Digital Design IE1204

Omtentamen med lösningar i IE1204/5 Digital Design Fredag 10/

Tentamen med lösningar för IE1204/5 Digital Design Torsdag 15/

LABORATION TSEA22 DIGITALTEKNIK D

Tentamen med lösningar i IE1204/5 Digital Design Torsdag 29/

Associativt minne ... A= adress till PM/CM CL = cachelinens storlek CM = cacheminnets storlek. Tag = A/CL = A/2 4 = A(31:4) Adress. K tag.

Examens arbete 10-poäng C-nivå Mälardalens Högskola Testbed for a semi-full-custom mixed signal ASIC

Tenta i Digitalteknik

Chalmers Tekniska Högskola Institutionen för Data- och Informationsteknik. EDA 321 Digitalteknik syntes Laboration 1 - VHDL

Exempel på ett litet Ada-program

Flödesschema som visar hur man använder Quartus II.

IE1205 Digital Design: F9: Synkrona tillståndsautomater

TSEA22 Digitalteknik 2019!

Digitalteknik F9. Automater Minneselement. Digitalteknik F9 bild 1

Digitalteknik F12. Några speciella automater: register räknare Synkronisering av insignaler. Digitalteknik F12 bild 1

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Digital Design IE1204

Läsminne Read Only Memory ROM

LABORATIONSINSTRUKTION LABORATION. Räknare och skiftregister med sekvensiell VHDL. LAB NR Ver KURS. Digitalteknik INNEHÅLL. 1.

IE1204/5 Digital Design typtenta

Tenta i Digitalteknik

Digital Design IE1204

Transkript:

10.VHDL3 Repetition buffer, record, loop kombinaoriska processer Varning latchar, hasard CPU-embryo VHDL-kod för mikromaskin med hämtfas Minnen i FGPA Distributed RAM (LUT) Block-RAM 1

Angående buffer library IEEE; use IEEE.STD_LOGIC_1164.ALL; use STD_LOGIC_UNSIGNED.ALL; entity counter is port(clk, clear: in std_logic; q: buffer std_logic_vector(3 downto 0)); end counter; clk clear architecture simple of counter is process(clk) if rising_edge(clk) then if clear= 0 then q <= 0000 ; elsif q=9 then q <= 0000 ; else q <= q + 1; end simple; +1 0 0 1 4 q >=1 =9? 2

Man skriva så här också: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use STD_LOGIC_UNSIGNED.ALL; entity counter is port(clk, clear: in std_logic; qout: out std_logic_vector(3 downto 0)); end counter; architecture simple of counter is signal q: std_logic_vector(3 downto 0); process(clk) if rising_edge(clk) then if clear= 0 then q <= 0000 ; elsif q=9 then q <= 0000 ; else q <= q + 1; +1 clk 0 0 1 q >=1 clear =9? qout <= q; end simple; 4 qout 3

record type controlword is record alu: std_logic_vector(3 downto 0); tobus: std_logic_vector(2 downto 0); halt: std_logic; end record; type styrminne is array(0 to 31) of controlword; signal styr1, styr2: controlword; signal mm: styrminne; -- styr1.halt <= 0 ; styr1.alu <= "1011"; styr1.tobus <= styr2.tobus; -- mm(3) <= ( 1011, 111, 0 ); 4

Lite överkurs - loop Vi har en buss x, med 32 ledningar. Vi vill bilda paritet mellan alla ledningarna. Loopen beskriver på ett kompakt sätt det kombinatoriska nätet! entity grr is port ( x : in STD_LOGIC_VECTOR (31 downto 0); pout : out STD_LOGIC); end grr; x 32 architecture Behavioral of grr is -- kombinatoriskt nät process(x) variable p: std_logic := 0 ; for i in 31 downto 0 loop p := p xor x(i); end loop; if p= 1 then pout <= '1'; else pout <= '0'; end Behavioral; x(30) x(29) x(28) =1 =1 =1... pout x(31) 5

Kombinatoriska proccesser Vi kan använda process för att göra kombinatorik + if- och case-saterna blir tillgängliga - varning för latchar! Exempel: d/l-nätet i ett sekvensnät x q d/l qplus u process(x,q) u <= 00 ; qplus <= idle; alla insignaler, ej clk Default-värden för alla utsignaler process(clk) if rising_edge(clk) q <= qplus; -- sats för delta/lambda -- nu räcker det att beskriva -- när det inte ska va default end;

OBS! process(b) y <= 0 ; if b= 1 then y <= 1 ; betyder process(b) if b= 1 then y <= 1 ; else y <= 0 ; Blir KN y <= b; Det lämpar sig inte alltid med en kombinatorisk process. 7

Ett varningsord : Oönskade latchar Vid select-sats och case-sats kräver VHDL att alla fall täcks! Det är inte nödvändigt vid if-sats och when-sats! Ibland är detta bra och ibland är det förskräckligt dåligt. För de fall som inte täcks bibehålls föregående utsignal. Ofullst. Sekvensnät (inuti klockad process) if count= 1 then q <= q+1; Kombinatorik? u <= y when s(1) = 1 else x when s(0) = 1 ; Fullst. if count= 1 then q <= q+1; else q <= q; u <= y when s(1) = 1 else x when s(0) = 1 else 0 when others; 8

Ett varningsord : Oönskade latchar Latch = asynkront minneselement x y y 0 1 2 3 u s u 1 x 0 x 2 y 0 y s(1) s(0) 9

Latch Oönskat (oklockat) minneselement pga kombinatorisk loop Ihopkoppling av Mealynät kan ge kombinatorisk loop! x >=1 y x y 0 0 1 1-1 x q d 1 D clk l 1 d 2 D q clk l 2 u 10

Def: Kortvariga värden på utgångarna från ett K-nät när någon insignal byter värde. Exempel: Hasard y=1 z=1 f x = 1->0 y=1 x = 1->0 z=1 1 & & a b 1 f x a x b f t 16

Hasard Om f kopplas till en asynkron ingång, så fungerar inte nätet (som det var tänkt)! D Studera övergången i ett KD, f = xz + x y x 0 1 y=1 z=1 00 01 11 10 1 1 1 1 CLR x = 1->0 f Hasarden kan elimineras 1) genom att lägga till termen yz, f = xz+x y+yz 2) Synkronisera f 3) Undvika asynkrona ingångar 17

Asynkron/synkron reset? process(clk,rst) if rst= 1 then q <= 0 ; elsif rising_edge(clk) then q <= q and x; process(clk) if rising_edge(clk) then if rst= 1 then q <= 0 ; else q <= q and x; 18

CPU-embryo ASR 100 001 IR PM upc upcsig 010 um PCsig PC 011 uaddr upcsig PCsig FB TB 40

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; -- CPU interface entity cpu is port( clk rst ); end cpu; : in std_logic; : in std_logic 41

architecture Behavioral of cpu is -- micro Memory type u_mem_t is array (0 to 15) of unsigned(15 downto 0); constant u_mem_c : u_mem_t := --OP_TB_FB_PC_uPC_uAddr (b"00_011_100_0_0_000000", -- ASR:=PC b"00_010_001_1_1_000000", -- IR:=PM, PC:=PC+1 b"00_000_000_0_0_000000",... b"00_000_000_0_0_000000", b"00_000_000_0_0_000000"); signal u_mem : u_mem_t := u_mem_c; signal um : unsigned(15 downto 0); -- micro Memory output signal upc : unsigned(5 downto 0); -- micro Program Counter signal upcsig : std_logic; -- (0:uPC++, 1:uPC=uAddr) signal uaddr : unsigned(5 downto 0); -- micro Address signal TB : unsigned(2 downto 0); -- To Bus field signal FB : unsigned(2 downto 0); -- From Bus field 42

-- program Memory type p_mem_t is array (0 to 15) of unsigned(15 downto 0); constant p_mem_c : p_mem_t := (x"0042", x"00a0", x"0000",... x"0000"); signal p_mem : p_mem_t := p_mem_c; signal PM : unsigned(15 downto 0); -- Program Memory output signal PC : unsigned(15 downto 0); -- Program Counter signal Pcsig : std_logic; -- 0:PC=PC, 1:PC++ signal ASR : unsigned(15 downto 0); -- Address Register signal IR : unsigned(15 downto 0); -- Instruction Register signal DATA_BUS : unsigned(15 downto 0); -- Data Bus 43

-- mpc : micro Program Counter process(clk) if rising_edge(clk) then if (rst = '1') then upc <= (others => '0'); elsif (upcsig = '1') then upc <= uaddr; else upc <= upc + 1; -- IR : Instruction Register process(clk) if rising_edge(clk) then if (rst = '1') then IR <= (others => '0'); elsif (FB = "001") then IR <= DATA_BUS; -- PC : Program Counter process(clk) if rising_edge(clk) then if (rst = '1') then PC <= (others => '0'); elsif (FB = "011") then PC <= DATA_BUS; elsif (PCsig = '1') then PC <= PC + 1; -- ASR : Address Register process(clk) if rising_edge(clk) then if (rst = '1') then ASR <= (others => '0'); elsif (FB = "100") then ASR <= DATA_BUS; 44

um <= u_mem(to_integer(upc)); uaddr <= um(5 downto 0); upcsig <= um(6); PCsig <= um(7); FB <= um(10 downto 8); TB <= um(13 downto 11); PM <= p_mem(to_integer(asr)); DATA_BUS <= IR when (TB = "001") else PM when (TB = "010") else PC when (TB = "011") else ASR when (TB = "100") else (others => '0'); end Behavioral; 45

46

LIBRARY ieee; USE ieee.std_logic_1164.all; USE IEEE.NUMERIC_STD.ALL; Testbänken ENTITY cpu_tb IS END cpu_tb; ARCHITECTURE behavior OF cpu_tb IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT cpu PORT( clk : IN std_logic; rst : IN std_logic ); END COMPONENT; --Inputs signal clk : std_logic := '0'; signal rst : std_logic := '0'; -- Clock period definitions constant clk_period : time := 1 us; 47

BEGIN -- Instantiate the Unit Under Test (UUT) uut: cpu PORT MAP ( clk => clk, rst => rst ); -- Clock process definitions clk_process :process clk <= '0'; wait for clk_period/2; clk <= '1'; wait for clk_period/2; rst <= '1', '0' after 1.5 us; END; 48

Minnen i FPGA Distributed RAM (LUT) : passar till K1, K2, registerfil, programminne, mikrominne (ROM) Kombinatorisk läsning Klockad skrivning Block RAM: passar till bildminne, programminne,... Klockad läsning Klockad skrivning Man kan påverka vilken minnestyp det blir med sin VHDL-kod, men i båda fallen rekommenderas att syntesverktyget får avgöra 49

50

PM som block-ram architecture grr of brr is type ram_t is array (0 to 255) of std_logic_vector(7 downto 0); signal pm: ram_t; -- PM i OR-datorn process(clk) if rising_edge(clk) then if styr3 = 1 then dr <= pm(conv_integer(adr)); elsif styr6= 1 then dr <= buss; if styr4 = 1 then pm(conv_integer(adr)) <= dr; 51

PM som LUT architecture grr of brr is type ram_t is array (0 to 255) of std_logic_vector(7 downto 0); signal pm: ram_t; -- PM skrivning process(clk) if rising_edge(clk) then if write = 1 then pm(conv_integer(adr)) <= DATA_BUS; -- PM läsning DATA_BUS <= pm(conv_integer(adr)) when TB= 110 else... 52

53