4 Načrtovanje in izvedba vezja
Osnovna struktura za opis sekvenčnih gradnikov je sinhroni proces – vsak gradnik lahko opišemo s svojim procesom ali pa jih združujemo (npr. smiselno je združiti avtomat za stanje tipke in števec pritiskov). Delilnik je narejen kot števec, pri katerem nastavimo primeren modul štetja:
vhodna ura: 100kHz, števec šteje od 0 do 1000
vhodna ura: 48MHz, števec šteje od 0 do 480000
Pomikalni register naj ob vsakem prelivu števca izvede pomik: sr <= b1 & sr(3 downto 1);
Delilnik naj ima še en enobitni izhod, ki menja stanje s frekvenco 100Hz za preklapljanje segmentov. Dekodiranje segmentov izvedemo po tabeli:
"0000110" when "0001",
"1011011" when "0010",
"1001111" when "0011",
"1100110" when "0100",
"1101101" when "0101",
"1111101" when "0110",
"0000111" when "0111",
"1111111" when "1000",
"1101111" when "1001",
"1110111" when "1010",
"1111100" when "1011",
"0111001" when "1100",
"1011110" when "1101",
"1111001" when "1110",
"1110001" when "1111",
"0111111" when others;
5 Vmesnik za USB mikrokrmilnik
Mikrokrmilnik ima 8-bitno podatkovno vodilo (USBdata) in nekaj krmilnih signalov:
USBastb, USBdstb: impulz na '0' ob branju oz. pisanju naslova ali podatka
USBwrite: določa smer prenosa: '1' za branje in '0' za pisanje na USB
USBwait: usklajevalni (angl. handshaking) signal
kadar vmesnik pripravljen, naj bo na '0'
ob aktivnem USBastb ali USBdstab naj bo na '1'
Podatkovno vodilo mora biti ves čas v stanju visoke impedance, razen kadar podatek beremo (USBwrite='1' in USBdstb='0'). V nasprotnem primeru lahko pride do kratkega stika. Dvosmerno vodilo opišemo s pogojnim prireditvenim stavkom:
|
|
USBdata <= st when USBwrite = '1' and USBdstb = '0' else "ZZZZZZZZ";
|