Příklady popisu základních obvodů ve VHDL

Podobné dokumenty
Koncept pokročilého návrhu ve VHDL. INP - cvičení 2

Úvod do jazyka VHDL. Jan Kořenek Návrh číslicových systémů

Číslicové obvody a jazyk VHDL

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Návrh ovládání zdroje ATX

Souhrn Apendixu A doporučení VHDL

Návrh. číslicových obvodů

Násobičky, Boothovo překódování. Demonstrační cvičení 7

1. Seznamte se s výukovou platformou FITkit (

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Jazyk VHDL konstanty, signály a proměnné. Jazyk VHDL paralelní a sekvenční doména. Kurz A0B38FPGA Aplikace hradlových polí

Sčítačky Válcový posouvač. Demonstrační cvičení 6

Kódy pro odstranění redundance, pro zabezpečení proti chybám. Demonstrační cvičení 5 INP

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

2. Entity, Architecture, Process

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

PROGRAMOVATELNÁ LOGICKÁ POLE A JAZYKY HDL

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Pokročilé využití jazyka VHDL. Pavel Lafata

12. VHDL pro verifikaci - Testbench I

14. Složitější konstrukce

Implementace čítačů v číslicových systémech 2 Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

Příklad č. 1 Přepis informace ze vstupů (SW0 až SW3) na ledky (LEDG0 až LEDG3)

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Cíle. Teoretický úvod

Základní znaky. - Ve srovnání se Spice jsou velmi složité a vyžadují dlouhou dobu na plné osvojení. - Velmi nákladné simulační programy.

1 Stručný popis jazyku VHDL

Návrh FPGA systémů. Jazyk VHDL, principy simulace. Ing. Jakub Št astný, Ph.D. 1

r90>25=.nt>+>7z5n2k<1561/+;5n{.57u07k{16;5=.nt>+>7z5n2k<15n>29l.05,90>2/3k5n2k7,50{10;<o5>/>?ˆ581:+z6,561/+;

Y36SAP 2007 Y36SAP-4. Logické obvody kombinační a sekvenční používané v číslicovém počítači Sčítačka, půlsčítačka, registr, čítač

Architektura počítačů Logické obvody

Struktura a architektura počítačů (BI-SAP) 4

Architektura počítačů Logické obvody

Registry a čítače část 2

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

Struktura a architektura počítačů

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

SEKVENČNÍ LOGICKÉ OBVODY

7. Popis konečného automatu

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Návrh základních kombinačních obvodů: dekodér, enkodér, multiplexor, demultiplexor

Číselné vyjádření hodnoty. Kolik váží hrouda zlata?

Implementace čítačů v číslicových systémech Jakub Šťastný

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:

Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ KATEDRA ŘÍDICÍ TECHNIKY BAKALÁŘSKÁ PRÁCE

Digitální technika. Jazyk VHDL, základy návrhu. Ing. Jakub Št astný, Ph.D. 1

Použití jazyka VHDL pro návrh číslicových obvodů

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Integrované obvody. Obvody malé, střední a velké integrace Programovatelné obvody

Logické obvody 10. Neúplné čítače Asynchronní čítače Hazardy v kombinačních obvodech Metastabilita Logické obvody - 10 hazardy 1

Chapter Základní principy simulace :).

3. Aritmetika nad F p a F 2


Jazyk VHDL zápis čísel, znaků a řetězců. Jazyk VHDL základní datové typy a operátory. Kurz A0B38FPGA Aplikace hradlových polí

Úvod do problematiky obvodů FPGA pro integrovanou výuku VUT a VŠB-TUO

Základy digitální techniky

Operace ALU. INP 2008 FIT VUT v Brně

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Pohled do nitra mikroprocesoru Josef Horálek

Typy a použití klopných obvodů

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Princip funkce počítače

VY_32_INOVACE_CTE_2.MA_19_Registry posuvné a kruhové. Střední odborná škola a Střední odborné učiliště, Dubno Ing. Miroslav Krýdl

Boundary Scan JTAG (Joined Test Action Group) IEEE 1149.X Zápis do rozhraní

Vývoj VHDL. Verilog HDL

Logické obvody - sekvenční Formy popisu, konečný automat Příklady návrhu

BDIO - Digitální obvody

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Dělení pamětí Volatilní paměti Nevolatilní paměti. Miroslav Flídr Počítačové systémy LS /11- Západočeská univerzita v Plzni

Struktura a architektura počítačů (BI-SAP) 10

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

ASYNCHRONNÍ ČÍTAČE Použité zdroje:

4. Elektronické logické členy. Elektronické obvody pro logické členy

Sekvenční logické obvody

1 Smíšené digitálně-analogové simulace

České vysoké učení technické v Praze Fakulta elektrotechnická. Automatické generování VHDL kódu pro FPGA

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry.

Moduly MicroUnit serie. všechny typy s výjimkou řady MU-43x, MU-44x a MU-84x

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Struktura a architektura počítačů

Verifikace pomocí assertions: případové studie Jakub Šťastný ASICentrum, s.r.o. FPGA Laboratoř, Katedra teorie obvodů FEL ČVUT Praha

PROGRAMOVATELNÉ LOGICKÉ OBVODY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Simulace číslicových obvodů na hradlové úrovni: model návrhu Jakub Šťastný ASICentrum, s.r.o. Katedra teorie obvodů FEL ČVUT Praha

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

3.7.5 Znaménkové operátory Násobící operátory Rùzné operátory Základní objekty Konstanty Sig

Datum zadání: Datum a forma odevzdání: do :59, POUZE přes IS FIT, 4 soubory

Číslicové obvody základní pojmy

2-LC: ČÍSLICOVÉ OBVODY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ LABORATORNÍ PŘÍPRAVEK PRO VÝVOJ APLIKACÍ OBVODŮ CPLD FIRMY ALTERA

OPERAČNÍ PROGRAM PRAHA ADAPTABILITA & EU:

Transkript:

Příklady popisu základních obvodů ve VHDL INP - cvičení 2 Michal Bidlo, 2008 bidlom@fit.vutbr.cz

entity Circuit is port ( -- rozhraní obvodu ); end Circuit; Proces architecture Behavioral of Circuit is proces1: process(seznam citlivých signálů) -- zde je možné deklarovat proměnné -- tělo procesu (sekvenční příkazy) -- if-then-elsif-else -- cykly, -- přiřazení signálů proces2: process(sensitivity list) -- deklarace proměnných -- tělo procesu2... end Behavioral; Základní prostředek behaviorálního popisu Každý proces ve VHDL je považován za jednu paralelní instrukci (simulace paralelního vykonávání procesů)

entity Circuit is port ( -- rozhraní obvodu: -- vstupní, výstupní, případně -- vstup-výstupní signály VSTUP: in std_logic; VYSTUP: out std_logic_vector(7 downto 0)... ); end Circuit; architecture Behavioral of Circuit is -- deklarace vnitřních signálů obvodu signal vnitrni: std_logic_vector(3 downto 0);... proces1: process(seznam citlivých signálů) vnitrni <=...; proces2: process(sensitivity list) VYSTUP <= vnitrni; end Behavioral; Signál Základní prostředek komunikace (přenosu dat i řídicích informací) v obvodu, představuje vodič Komunikace mezi procesy v behaviorálním popisu Propojení funkčních bloků ve strukturním popisu Signál nabude nové hodnoty (sig <= nova) až po ukončení (uspání) procesu. Tento koncept podporuje simulaci paralelního výpočtu jako u reálných obvodů.

library ieee; use ieee.std_logic_1164.all; Entity Mux is port( I3: in std_logic_vector(2 downto 0); I2: in std_logic_vector(2 downto 0); I1: in std_logic_vector(2 downto 0); I0: in std_logic_vector(2 downto 0); S: in std_logic_vector(1 downto 0); O: out std_logic_vector(2 downto 0) ); end Mux; architecture behv1 of Mux is process(i3,i2,i1,i0,s) case S is when "00" => O <= I0; when "01" => O <= I1; when "10" => O <= I2; when "11" => O <= I3; end case; end behv1; when others => O <= "ZZZ"; architecture behv2 of Mux is with S select -- varianta case bez procesu O <= I0 when "00", I1 when "01", I2 when "10", I3 when "11", "ZZZ when others; end behv2; I3 I2 I1 I0 3 3 3 3 Pozn: if-elsif-else varianta bez procesu Multiplexor 2b adresa, 3b data S 2 3 O process(i3,i2,i1,i0,s) if S = "00" then O <= I0; elsif S = "01" then O <= I1; elsif S = "10" then O <= I2; elsif S = "11" then O <= I3; else O <= "ZZZ"; O <= I0 when S="00" else I1 when S="01" else I2 when S="10" else I3 when S="11" else "ZZZ";

library IEEE; use IEEE.std_logic_1164.all; Dekodér entity Dec3to8 is port (addr: in std_logic_vector(2 downto 0); y: out std_logic_vector(7 downto 0) ); end Dec3to8; architecture behv of Dec3to8 is with addr select y <= "10000000" when "111", "01000000" when "110", "00100000" when "101", "00010000" when "100", "00001000" when "011", "00000100" when "010", "00000010" when "001", "00000001" when others; addr dec3to8 3 8 addr binární adresa y výstupní hodnoty dekodéru. V tomto případě čísla v kódu 1 z n y

library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_arith.all; entity ALU is port( A: in std_logic_vector(7 downto 0); B: in std_logic_vector(7 downto 0); SEL: in std_logic_vector(1 downto 0); RES: out std_logic_vector(7 downto 0) ); end ALU; architecture behv of ALU is process(a,b,sel) case SEL is when "00" => -- sčítání Res <= A + B; when "01" => -- odčítání Res <= A + (not B) + 1; when "10" => -- AND Res <= A and B; when "11" => -- OR Res <= A or B; when others => žádná operace Res <= (others => X ); end case; ALU 8bit (aritmeticko logická jednotka) A B SEL 8 8 2 8 RES A, B operandy SEL selekční vstup (výběr operace) RES výsledek

library IEEE; use IEEE.std_logic_1164.all; entity Dff is port ( CLK: in std_logic; RST: in std_logic; DIN: in std_logic; DOUT: out std_logic ); end Dff; Klopný obvod D architecture behv of Dffx is process (CLK,RST) if RST = '1' then DOUT <= '0'; elsif CLK'event and CLK = '1' then DOUT <= DIN; DIN CLK RST D DOUT CLK (clock) hodinový vstup RST(reset) asynchronní reset DIN (data in) data přivedená na vstup registru DOUT (data output) hodnota uložená v registr

Asynchronní reset u KO D process (CLK,RST,DIN) if RST = '1' then DOUT <= '0'; elsif CLK'event and CLK = '1' then DOUT <= DIN;

Synchronní reset u KO D process (CLK,RST,DIN) if CLK'event and CLK = '1' then if (RST = '1') then DOUT <= '0'; else DOUT <= DIN;

Registr 16bit library IEEE; use IEEE.std_logic_1164.all; entity Reg16 is port ( CLK: in std_logic; RST: in std_logic; DIN: in std_logic_vector(15 downto 0); DOUT: out std_logic_vector(15 downto 0); ); end Reg16; architecture behv of Reg16 is process (CLK,RST) if RST = '1' then DOUT <= (others => 0); elsif CLK'event and CLK = '1' then DOUT <= DIN; DIN CLK RST 16 Reg16 16 DOUT

library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity Cnt is Port( CLK : in std_logic; RST : in std_logic; CE : in std_logic; DOUT : out std_logic_vector(3 downto 0)); end Cnt; architecture behv of Cnt is process (CLK,RST,CE) variable value: std_logic_vector(3 downto 0); if (RST = '1') then value := (others => '0'); elsif (CLK'event and CLK = '1') then if CE='1' then value := value + 1; DOUT <= value; Čítač 4bit v binárním kódu s povolením čítání CE CLK RST Cnt 4 DOUT CE (count enable) povolení čítání CLK (clock) hodinový vstup RST(reset) asynchronní reset DOUT (data output) aktuální hodnota čítače

library IEEE; use IEEE.std_logic_1164.all; entity SReg8 is port( CLK: in std_logic; RESET: in std_logic; LOAD: in std_logic; SHIFT: in std_logic; DIN: in std_logic_vector(7 downto 0); DOUT: out std_logic ); end SReg8; architecture behv of SReg8 is sreg: process(clk, RESET, SHIFT) variable value: std_logic_vector(7 downto 0); if RESET = '1' then value := (others => '0'); elsif LOAD = '1' then value := DIN; elsif CLK'event and CLK = '1' then if SHIFT = '1' then value := '0' & value(7 downto 1); DOUT <= value(0); Posuvný registr 8bit, parallel in, serial out DIN CLK RESET LOAD SHIFT 8 SReg8 DOUT DIN (data in) vstupní data CLK (clock) hodinový vstup RST(reset) asynchronní reset DOUT (data output) výstupní bit (LSB)

entity Mem8x8 is port( CLK: in std_logic; RESET: in std_logic; WRITE: in std_logic; ADDR: in std_logic_vector(2 downto 0); DIN: in std_logic_vector(7 downto 0); DOUT: out std_logic_vector(7 downto 0) ); end Mem8x8; RAM synchronní architecture behv of Mem8x8 is type mem is array (0 to 7) of std_logic_vector(7 downto 0); mem: process(clk, RESET, WRITE, ADDR, DIN) variable space: mem; if RESET = '1' then DOUT <= (others => 'Z'); for i in 0 to 7 loop space(i) := (others => '0'); end loop; elsif CLK'event and CLK = '1' then if WRITE = '1' then space(conv_integer(unsigned(addr))) := DIN; DOUT <= (others => 'Z'); else DOUT <= space(conv_integer(unsigned(addr))); CLK RESET WRITE ADDR DIN 3 8 Mem8x8 8 DOUT CLK hodinový vstup RESET asynchronní reset WRITE povolení zápisu ADDR adresový vstup DIN vstupní data DOUT výstupní data