Uvod u VHDL Marijo Maračić
VHDL V(hsic)HDL Very high speed integrated circuit Hardware Description Language Jezik za opisivanje digitalnih elektroničkih sustava Omogućuje opisivanje strukture sustava, ponašanja sustava i simulaciju sustava Omogućuje modeliranje paralelnog izvođenja i kašnjenja Dodatni alati za sintezu mogu VHDL opis prevesti u sklopovsku implementaciju Ne razlikuje velika i mala slova!
Dijelovi VHDL modela Obavezni dijelovi: Sučelje sklopa ENTITY blok Opis rada sklopa ARCHITECTURE blok
Signali Signal = vodič (sa memorijom) Kao dio sučelja Ime : smjer tip; Interni koriste se u opisu rada komponente signal ime : tip; Dodjeljivanje <= Moguće modelirati kašnjenje Signal varijabla
Logičke operacije na podskupu std_logic_1164
Biblioteke Sadrže dodatne komponente std_logic_1164 viševrijednosne logičke operacije (0,1,U,Z...; ukupno 9) Upotreba (obavezno na početku source filea):
Sučelje sklopa Ulazi i izlazi entity TFlipFlop is port( clk: in std_logic; reset: in std_logic; T: in std_logic; q, qn : out std_logic ); end TFlipFlop;
Opis rada sklopa Opisivanje strukture strukturni opis digitalni sustav se opisuje pomoću podsustava i načina na koji su povezani. Hijerarhija podkomponenti Najniže komponente su uvijek opisane ponašajno Opisivanje ponašanja ponašajni opis na koji način se ulazi preslikavaju na izlaz
Opis rada sklopa - ponašajni architecture BehavioralSin of TFlipFlop is begin process(clk) variable temp: std_logic; begin if rising_edge(clk) then if reset = '1' then temp := '0'; else if T='1' then temp := not temp; end if; end if; end if; qn <= not temp after 50 ns; q <= temp after 50 ns; end process; end architecture; Elementi bloka architecture
Opis rada sklopa - Strukturni entity Digit is port( ); end Digit; clk: in std_logic; reset: in std_logic; increase: in std_logic; done: out std_logic; output: out std_logic_vector(width downto 0)
Opis rada sklopa - Strukturni architecture Structural16P of Digit is component TFlipFlop is port ( clk: in std_logic; reset: in std_logic; T: in std_logic; q, qn : out std_logic ); end component; signal tempout: std_logic_vector(width downto 0); signal tempin: std_logic_vector(width downto 1); signal tempdone: std_logic; signal tempreset: std_logic; Interni signali, komponente
Opis rada sklopa - Strukturni begin tempreset <= (tempdone and increase) or reset; b0: TFlipFlop port map (clk => clk, reset=>tempreset, T=>increase, q=>tempout(0), qn=>open); b1: TFlipFlop port map (clk, tempreset, tempin(1), tempout(1), open); b2: TFlipFlop port map (clk => clk, reset=>tempreset, T=>tempIn(2), q=>tempout(2), qn=>open); b3: TFlipFlop port map (clk => clk, reset=>tempreset, T=>tempIn(3), q=>tempout(3), qn=>open); end architecture; Instance/primjerci implementacije modela u drugim modelima Pozicijsko povezivanje, povezivanje po imenu (poredak nebitan) Alternativa komponenti: entity work.tflipflop
Zadatak
Izvršavanje izraza Redosljed izvršavanja izraza ISTODOBNO Lista osjetljivosti lista signala koji utječu na ponovno izvršavanje/izračunavanje procesa/izraza Implicitna lista osjetljivosti signali desno od operatora dodjele U listi nikad nisu izlazni signali
Rad sklopova/simulatora Opisivanje algoritama blok process Jedna operacija sa stajališta simulatora Izrazi unutar procesa izvršavaju se slijedno Eksplicitna lista osjetljivosti obavezna ima barem 1 signal
Rad sklopova/simulatora Sklopovi konstantno rade. Analiza? Simulator Vrijeme simulacije Realno vrijeme Računa iznose izraza signala samo u trenucima promjene Računanje se izvodi u nizu delta ciklusa Nakon što trenutna promjena kroz niz delta ciklusa procirkulira kroz sklop simulator pomakne vrijeme simulacije na vrijeme sljedeće promjene Simulator samo na početku simulacije pokreće izračunavanje svih izraza u svim modelima.
Rad sklopova/simulatora Delta ciklusi Nema protoka simulacijskog vremena Tri dijela: Inicijalno stanje, izračunavanje (na temelju inicijalnog stanja) i dodjela. Računa se vrijednost izraza čije liste osjetljivosti sadrže signal koji se promijenio Delta ciklusi se iterativno dodaju dok god se u prethodnom ciklusu dogodila promjena signala koji je u listi osjetljivosti nekog izraza. Delta ciklusi trenutno provedu promjenu kroz sve izraze na koje ona može utjecati bez obzira na položaj u kodu istovremenost izraza paralelizam sklopovlja.
Završne napomene Prelazimo na pdf Literatura: Čupić, Digitalna elektronika i Digitalna logika. Zbirka riješenih zadataka. Kigen, 2006.; (zadaci 2.1, 2.2, 16.2, 16.6, 16.7, 16.8, pogledati 16.1) Ova prezentacija: www.zemris.fer.hr/~mmaracic (link: Uvod u VHDL)