71
UCF datoteka, modularno opisovanje, BCD kodiranje Miha Moškon [email protected] -lj.si http ://lrss.fri.uni-lj.si/bio/personal/mmoskon.html UL-FRI (R3.61)

UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Embed Size (px)

Citation preview

Page 1: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

UCF datoteka, modularno opisovanje, BCD kodiranje

Miha Moš[email protected]

http://lrss.fri.uni-lj.si/bio/personal/mmoskon.html

UL-FRI (R3.61)

Page 2: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

UCF datoteka

Page 3: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

User Constraint File (UCF)preslikava med priključki v VHDL kodi in fizičnimi priključki FPGA čipa

ločena datoteka s končnico ucf

pisanje: pomagamo si s specifikacijami razvojne ploščice

uporaba datoteke Nexys4_Master.ucf, v kateri odkomentiramo kar potrebujemo

imena se morajo ujemati

Sintaksa• NET: deklaracija priključka• LOC: oznaka pina• #: komentar• <i>: vektorski bit z indeksom i• IOSTANDARD = "LVCMOS33": napetostni nivoji

Page 4: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Translate: združi netlist in zahteve (constraints)

Map: načrt prevede na razpoložljive komponente izbrane naprave

Place and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Make Programming File: ustvari bistream datoteko (.bit), ki jo lahko naložimo na napravo

http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/cgn_r_core_generator_output_files.htmhttp://www.xilinx.com/support/documentation/sw_manuals/xilinx11/pta_r_ita_input_files.htm

Netlist Constraints File

A binary Xilinx implementation netlist.

Synthesis

Page 5: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

User Constraint File (UCF)Primer: uporaba gumbov

Shema:

NET "btnC_i" LOC = "E16" | IOSTANDARD = "LVCMOS33";NET "btnU_i" LOC = "F15" | IOSTANDARD = "LVCMOS33";NET "btnL_i" LOC = "T16" | IOSTANDARD = "LVCMOS33";NET "btnR_i" LOC = "R10" | IOSTANDARD = "LVCMOS33";NET "btnD_i" LOC = "V10" | IOSTANDARD = "LVCMOS33";

VHDL:

UCF:

entity btns isPort (btnC_i, btnU_i, btnL_i, btnR_i, btnD_i : in STD_LOGIC);

end btns;

www.xilinx.com/itp/xilinx10/books/docs/cgd/cgd.pdf

Page 6: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

User Constraint File (UCF)Primer: uporaba LED diod

NET "led_o<0>" LOC = "T8" | IOSTANDARD = "LVCMOS33";NET "led_o<1>" LOC = "V9" | IOSTANDARD = "LVCMOS33";NET "led_o<2>" LOC = "R8" | IOSTANDARD = "LVCMOS33";NET "led_o<3>" LOC = "T6" | IOSTANDARD = "LVCMOS33";NET "led_o<4>" LOC = "T5" | IOSTANDARD = "LVCMOS33";NET "led_o<5>" LOC = "T4" | IOSTANDARD = "LVCMOS33";NET "led_o<6>" LOC = "U7" | IOSTANDARD = "LVCMOS33";NET "led_o<7>" LOC = "U6" | IOSTANDARD = "LVCMOS33";NET "led_o<8>" LOC = "V4" | IOSTANDARD = "LVCMOS33";NET "led_o<9>" LOC = "U3" | IOSTANDARD = "LVCMOS33";NET "led_o<10>" LOC = "V1" | IOSTANDARD = "LVCMOS33";NET "led_o<11>" LOC = "R1" | IOSTANDARD = "LVCMOS33";NET "led_o<12>" LOC = "P5" | IOSTANDARD = "LVCMOS33";NET "led_o<13>" LOC = "U1" | IOSTANDARD = "LVCMOS33";NET "led_o<14>" LOC = "R2" | IOSTANDARD = "LVCMOS33";NET "led_o<15>" LOC = "P2" | IOSTANDARD = "LVCMOS33";

VHDL:

UCF:

entity LEDs isPort (led_o: out STD_LOGIC_VECTOR(15 downto 0);

end LEDs;

Shema:

low voltage CMOS I/O standard using 3.3V power supply voltage

Page 7: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

User Constraint File (UCF)primer: uporaba segmentnega prikazovalnika

Pomagamo si s specifikacijami ploščice, kjer najdemo shemo:

Page 8: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

User Constraint File (UCF)

## 7 segment displayNET "C_o<0>" LOC = "L3" | IOSTANDARD = "LVCMOS33";NET "C_o<1>" LOC = "N1" | IOSTANDARD = "LVCMOS33";NET "C_o<2>" LOC = "L5" | IOSTANDARD = "LVCMOS33";NET "C_o<3>" LOC = "L4" | IOSTANDARD = "LVCMOS33";NET "C_o<4>" LOC = "K3" | IOSTANDARD = "LVCMOS33"; NET "C_o<5>" LOC = "M2" | IOSTANDARD = "LVCMOS33"; NET "C_o<6>" LOC = "L6" | IOSTANDARD = "LVCMOS33";NET "dp_o" LOC = "M4" | IOSTANDARD = "LVCMOS33";NET "AN_o<0>" LOC = "N6" | IOSTANDARD = "LVCMOS33";NET "AN_o<1>" LOC = "M6" | IOSTANDARD = "LVCMOS33"; NET "AN_o<2>" LOC = "M3" | IOSTANDARD = "LVCMOS33"; NET "AN_o<3>" LOC = "N5" | IOSTANDARD = "LVCMOS33"; NET "AN_o<4>" LOC = "N2" | IOSTANDARD = "LVCMOS33"; NET "AN_o<5>" LOC = "N4" | IOSTANDARD = "LVCMOS33"; NET "AN_o<6>" LOC = "L1" | IOSTANDARD = "LVCMOS33"; NET "AN_o<7>" LOC = "M1" | IOSTANDARD = "LVCMOS33";

entity seg7 isPort (AN_o : out STD_LOGIC_VECTOR(7 downto 0);C_o : out STD_LOGIC_VECTOR(6 downto 0);dp_o : out STD_LOGIC);

end seg7;

VHDL:

UCF:

Page 9: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCD kodiranje

Page 10: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranjedvojiško kodiranje desetiških števil (angl. binarni coded decimal)

Vsaka desetiška števka v BCD kodu predstavljena s štirimi biti.

Vhod: N-bitno dvojiško številoIzhod: BCD kod (4 bite na števko)

T(isočice), S(totice), D(esetice), E(nice): 16 bitov

Primer: število 9999 [10] = 10011100001111 [2]

Page 11: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCD kodiranjedvojiško kodiranje desetiških števil (angl. binarni coded decimal)

kodirnik: pretvorba BIN BCD

primer uporabe: izpisovanje na segmentni prikazovalnik

BIN BCD IZPIS

00000 0 0000 0 0

00001 0 0001 0 1

00010 0 0010 0 2

00011 0 0011 0 3

00100 0 0100 0 4

00101 0 0101 0 5

00110 0 0110 0 6

00111 0 0111 0 7

01000 0 1000 0 8

01001 0 1001 0 9

01010 1 0000 1 0

01011 1 0001 1 1

01100 1 0010 1 2

01101 1 0011 1 3

01110 1 0100 1 4

01111 1 0101 1 5

10000 1 0110 1 6

Page 12: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCD kodiranjeBIN < 10

– BCD = BINBIN >= 10

– (mesto levo += 1) & začetek iz ničle

BIN BCD IZPIS

00000 0 0000 0 0

00001 0 0001 0 1

00010 0 0010 0 2

00011 0 0011 0 3

00100 0 0100 0 4

00101 0 0101 0 5

00110 0 0110 0 6

00111 0 0111 0 7

01000 0 1000 0 8

01001 0 1001 0 9

01010 1 0000 1 0

01011 1 0001 1 1

01100 1 0010 1 2

01101 1 0011 1 3

01110 1 0100 1 4

01111 1 0101 1 5

10000 1 0110 1 6

Page 13: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranjeDouble Dabble algoritem

• Vhod: N-bitno dvojiško število (bin)• Izhod: BCD kod (TSDE = tisočice, stotice, desetice, enice)• Operacije nad pomikalnim registrom s strukturo

[Izhod (BCD) & Vhod (BIN)]

Prištevanje 3, če je x > 4 (x >= 5) pred pomikom je ekvivalentno prištevanju 6, če je x >= 10 po pomiku.

Page 14: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranje: primer kodiranja števila 1410

Page 15: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranje: primer kodiranja števila 25510

Page 16: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Blok ADD3a3 a2 a1 a0 s3 s2 s1 s0 komentar

0 0 0 0 0 0 0 0 <4

0 0 0 1 0 0 0 1 <4

0 0 1 0 0 0 1 0 <4

0 0 1 1 0 0 1 1 <4

0 1 0 0 0 1 0 0 =4

0 1 0 1 1 0 0 0 >4 (+3)

0 1 1 0 1 0 0 1 >4 (+3)

0 1 1 1 1 0 1 0 >4 (+3)

1 0 0 0 1 0 1 1 >4 (+3)

1 0 0 1 1 1 0 0 >4 (+3)

1 0 1 0 X X X X neveljavno

1 0 1 1 X X X X neveljavno

1 1 0 0 X X X X neveljavno

1 1 0 1 X X X X neveljavno

1 1 1 0 X X X X neveljavno

1 1 1 1 X X X X neveljavno

• vhod <= 4: izhod = vhod• vhod > 4: izhod = vhod + 3

Nedosegljive vrednosti:maksimalna vrednost = 1001

Page 17: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranjeIzvedba v prostoru – kombinatorno vezje.

Uporaba modulov ADD3.

Zamikanje ADD3 v desno – zamikanje števil v levo.

Page 18: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranje: izvedba v prostoru

V katero BCD števko se preslika posamezen BIN bit?

Kolikokrat mora posamezen bit iti skozi ADD3 modul (kolikokrat je na posameznem bitu izvedena primerjava > 4)?

V kakšnem pogoju lahko primerjavo izpustimo (kdaj pogoj > 4 zagotovo ni izpolnjen)?

Page 19: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranje: izvedba v prostoru

Iterativni postopek izvedemo v vezju, ki izvaja postopek v prostoru (ne v času kakor sekvenčna vezja).

Page 20: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranje: realizacija v prostoru

Page 21: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranje: 8-bitno

Page 22: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranje: 14-bitno

Page 23: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BIN BCD kodiranje: 16-bitno

Page 24: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCD BIN kodiranjeVhod: BCD kod (4 bite na števko)Izhod: N-bitno dvojiško število

T(isočice), S(totice), D(esetice), E(nice): 16 bitov

Primer: število 9999 [10] = 1001100110011001[BCD] = 10011100001111 [2]

Page 25: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCD BIN

Page 26: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCD BINOperacije nad pomikalnim registrom s strukturo [Vhod(BCD) & Izhod(BIN)]

BIN BCD• pomik v levo• prištej 3, če je BCD števka > 4BCD BIN• pomik v desno• odštej 3, če je BCD števka > 7

Page 27: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCDBINPrimer: 1410 = 10100BCD

Page 28: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCD BIN: Blok SUB3

Maksimalna vrednost 10011001

Page 29: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCDBINPrimer: 1410 = 10100BCD

Page 30: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCD BIN kodiranje: izvedba v prostoru

V katero BIN števko se preslika posamezen BCD bit?

Kolikokrat mora posamezen bit iti skozi SUB3 modul (kolikokrat je na posameznem bitu izvedena primerjava > 7)?

V kakšnem pogoju lahko primerjavo izpustimo (kdaj pogoj > 7 zagotovo ni izpolnjen)?

Page 31: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

BCDBIN: izvedba v prostoru3 mestno desetiško število (od 0 do 999): Zamikanje SUB3 v levo – zamikanje

števil v desno.

Page 32: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

VHDL: modularno opisovanje in paketi

Page 33: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Arhitektura

opisuje delovanje vezja na tri načine:vzporedno (stavki se izvajajo paralelno): osnovni način,zaporedno (stavki se izvajajo zaporedno – procesi),modularno (uporabimo vnaprej sprogramirane komponente).

Page 34: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Modularno opisovanje vezjaUporablja se, kadar isti modul nastopa večkrat.

Omogoča nam uporabo že napisanih modulov (MUX, seštevalnik, register, števec, pomnilnik ...) in bolj pregledno programiranje pri večjih projektih (razvoj procesorja lahko razbijemo na ALE, podatkovno enoto, kontrolno enoto in pomnilnik).

V posameznem modulu lahko uporabimo generične spremenljivke (blok generic), ki nam omogočajo večjo prilagodljivost (npr. določanje velikosti registra šele ob uporabi).

Tudi simulator uporablja modularno opisovanje.

Page 35: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Definicija modulovPosamezen modul definiramo na enak način, kot smo to delali do sedaj (entiteta + arhitektura).

Če želimo vrednosti izbranih spremenljivk v modulu določiti šele ob uporabi, v entiteto vključimo generic del (navedemo tudi privzeto vrednost):

entity register isgeneric(

size : INTEGER := 8); -- privzeta velikost je 8

port(data_in : IN STD_LOGIC_VECTOR(size-1 downto 0);

data_out : OUT STD_LOGIC_VECTOR(size-1 downto 0);

.... );

Page 36: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba modulovPred začetkom arhitekture podamo entitetni del modula, ki ga bomo uporabili – v blok component.

V arhitekturo dodamo component , port map in generic map del:

architecture behavioral of primer iscomponent komponenta

-- prekopiramo iz entitete modulageneric(

size : INTEGER := 8);port(

CLK : IN STD_LOGIC;data_in : IN STD_LOGIC_VECTOR(size-1 downto 0);data_out : OUT STD_LOGIC_VECTOR(size-1 downto 0);...

);end component;

Page 37: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba modulovZnotraj arhitekture podamo uporabo komponente (instanciranje)

Pri uporabi navedemo preslikavo med lokalnimi signali in signali znotraj uporabljene komponente. Pri tem obstajata dva načina:• imensko povezovanje (named association): navedemo imena lokalnih in

komponentnih signalov in relacije med njimi,• položajno povezovanje (positional association): navedemo samo lokalni

signale v enakem vrstnem redu kot so deklarirani signali v entiteti komponente

Najvišji komponenti, ki uporablja ostale, pravimo top level komponenta.

Page 38: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba modulov: imensko povezovanje

beginkomp1:komponentageneric map(

size => 6 -- velikost registra)port map(

CLK => CLK,data_in => lokalni_data_in,data_out => lokalni_data_out,...

);komp2:komponentaport map(

...);

end behavioral;

Lokalni signali (v top-levelmodulu)Priključki

uporabljenega modula

Page 39: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba modulov: položajno povezovanje

port map (CLK, lokalni_data_in, lokalni_data_out,...);

V port map delu lahko tudi samo naštejemo lokalne signale, v pravem vrstnem redu.

je ekvivalentno zapisu

port map(

CLK => CLK,data_in => lokalni_data_in,data_out => lokalni_data_out,...

);

Priključki uporabljenega modula

Lokalni signali (v top-levelmodulu)Priključki

uporabljenega modula

Page 40: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primer 1:MUX 16/1 = 5 x MUX 4/1

Page 41: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primer 2: Modul ADD3

a3 a2 a1 a0 s3 s2 s1 s0 komentar

0 0 0 0 0 0 0 0 <4

0 0 0 1 0 0 0 1 <4

0 0 1 0 0 0 1 0 <4

0 0 1 1 0 0 1 1 <4

0 1 0 0 0 1 0 0 =4

0 1 0 1 1 0 0 0 >4 (+3)

0 1 1 0 1 0 0 1 >4 (+3)

0 1 1 1 1 0 1 0 >4 (+3)

1 0 0 0 1 0 1 1 >4 (+3)

1 0 0 1 1 1 0 0 >4 (+3)

1 0 1 0 X X X X neveljavno

1 0 1 1 X X X X neveljavno

1 1 0 0 X X X X neveljavno

1 1 0 1 X X X X neveljavno

1 1 1 0 X X X X neveljavno

1 1 1 1 X X X X neveljavno

Page 42: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Modul ADD3library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity ADD3 isport (a_i: in std_logic_vector(3 downto 0);

s_o: out std_logic_vector(3 downto 0));

end ADD3;

architecture behavioral of ADD3 isbegins_o(3) <= a_i(3) OR (a_i(2) AND a_i(0)) OR (a_i(2) AND a_i(1));

s_o(2) <= (a_i(3) AND a_i(0)) OR (NOT a_i(0) AND NOT a_i(1) AND a_i(2));

s_o(1) <= (a_i(3) AND NOT a_i(0)) OR (a_i(1) AND NOT a_i(2)) OR

(a_i(1) AND a_i(0));

s_o(0) <= (a_i(3) AND NOT a_i(0)) OR (NOT a_i(2) AND NOT a_i(1) AND NOT a_i(0)) OR (NOT a_i(3) AND NOT a_i(2) AND a_i(0));

end behavioral;

Brez uporabe knjižnice arith.

Page 43: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Modul ADD3library IEEE;

use IEEE.STD_LOGIC_1164.all;

use IEEE.STD_LOGIC_ARITH.all;

use IEEE.STD_LOGIC_UNSIGNED.all;

entity ADD3 isport (a_i: in std_logic_vector(3 downto 0);

s_o: out std_logic_vector(3 downto 0));

end ADD3;

architecture behavioral of ADD3 isbegin

s_o <= a_i when a_i < 5 else a_i+3;

end behavioral;

Z uporabo knjižnice arith.

Page 44: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba modula ADD3: imensko povezovanje

architecture behavioral of BCD iscomponent ADD3port (a_i: in std_logic_vector(3 downto 0);

s_o: out std_logic_vector(3 downto 0)); end component;

signal b: std_logic_vector(3 downto 0);signal d: std_logic_vector(1 downto 0);signal e: std_logic_vector(2 downto 0);signal t: std_logic_vector(2 downto 0);

beginADD3_1:ADD3port map(a_i(3) => '0'‚a_i(2 downto 0) => b(4 downto 2), s_o(3) => d(1),s_o(2 downto 0) => t

);

ADD3_2:ADD3port map(a_i(3 downto 1) => t,a_i(0) => b(1),s_o(3) => d(0),s_o(2 downto 0) => e(3 downto 1)

);e(0) <= b(0);...

end behavioral;

t2 t1 t0

Page 45: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba modula ADD3: imensko povezovanje

Lepše: uporaba signalov in konkatenacije vektorjev (&):signal a1, a2: std_logic_vector(3 downto 0);signal s1, s2: std_logic_vector(3 downto 0);

a1 <= '0' & b_i(4 downto 2);d(1) <= s1(3);t <= s1(2 downto 0);

a2 <= t & b_i(1);d(0) <= s2(3);e(3 downto 1) <= s2(2 downto 0);e(0) <= b_i(0);

ADD3_1:ADD3_logicport map(a_i => a1,s_o => s1

);

ADD3_2:ADD3_logicport map(a_i => a2,s_o => s2

);

t2 t1 t0

Page 46: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba modula ADD3: položajno povezovanje

a1 <= '0' & b_i(4 downto 2);d(1) <= s1(3);t <= s1(2 downto 0);

a2 <= t & b_i(1);d(0) <= s2(3);e(3 downto 1) <= s2(2 downto 0);e(0) <= b_i(0);

ADD3_1:ADD3port map (a1, s1);

ADD3_2:ADD3port map (a2, a2);

...end behavioral;

t2 t1 t0

Page 47: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Modularno opisovanje v test benchdatoteki

Page 48: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Modularno opisovanje v test benchdatoteki

Page 49: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Paketi v VHDLDefiniramo lahko lastne pakete, ki vsebujejo opise modulov, deklaracije tipov…

Vsebujejo entiteto modulov (komponent), definicije konstant, podatkovnih tipov…

Paket se mora nahajati v istem imeniku kot implementacija modula, ki ga opisuje.

Dovoljuje uporabo modulov, ki niso znotraj našega projekta.

Primer:

Paket ADD3_packet se mora nahajati v istem imeniku kot modul ADD3.

library IEEE;use IEEE.STD_LOGIC_1164.all;

package ADD3_packet istype STATE is (RESET,IDLE,ACKA);

component ADD3port (a_i: in std_logic_vector(3 downto 0);

s_o: out std_logic_vector(3 downto 0)); end component;

end ADD3_packet

Page 50: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Paketi v VHDLPri uporabi moramo definirati knjižnico, ki paket vsebuje.

Primer uporabe vgrajene knjižnice:

Če se paket nahaja v delovnem direktoriju projekta, knjižnice ni potrebno specificirati:

Če želimo imeti paket v drugem direktoriju, moramo narediti svojo knjižnico. Navodila na povezavi:

http://www.xilinx.com/itp/xilinx10/isehelp/ise_c_working_with_vhdl_libraries.htm

library IEEE;use IEEE.STD_LOGIC_1164.all;

use work.ADD3_packet.all;

Page 51: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Paketi v VHDLUporaba paketa:

...ADD3_1:ADD3port map(a_i => a1,s_o => s1

);ADD3_2:ADD3port map(a_i => a2s_o => s2

);

e(0) <= b(0);...

end behavioral;

library IEEE;use IEEE.STD_LOGIC_1164.all;use work.ADD3_packet.all

entity BCD is ...

architecture behavioral of BCD issignal b: std_logic_vector(3 downto 0);signal d: std_logic_vector(1 downto 0);signal e: std_logic_vector(2 downto 0);

signal t: std_logic_vector(2 downto 0);signal a1, a2: std_logic_vector(3 downto 0);signal s1, s2: std_logic_vector(3 downto 0);

begin...

Opis se skajša za component del (vsebovan v paketu)!

Paket se nahaja v delovnem direktoriju

Paket se nahaja v knjižnici IEEE

Page 52: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primerjalniki velikosti in sortiranje števil

Page 53: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primerjalnik enakosti (equalitycomparator)

Vhod: 2 n-bitni številiIzhod: 1, ko sta števili enaki; sicer 0.

Izvedba z operatorjem ekvivalence (XNOR) in operatorjem AND:

Page 54: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primerjalnik enakostiVhod: 2 n-bitni številiIzhod: 0, ko sta števili enaki; sicer 1.

Izvedba z operatorjem XOR in operatorjem OR:

Page 55: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primerjalnik velikosti (magnitude comparator)

Ali je , pri čemer je

Možnosti:• , npr.:• , npr.:• , npr.:• , npr.:

Page 56: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

7485

Page 57: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

7485Vhodi A<B, A=B, A>B se upoštevajo, če so vsi podatkovni vhodi enaki.

Nanje lahko vežemo izhode iz primerjalnikov manj pomembnih bitov – kaskadna vezava.

8-bitni primerjalnik velikosti iz dveh 4-bitnih:

Page 58: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primerjalnik velikosti v VHDLLogične enačbe ali uporaba knjižnic za delo s števili, npr.:use IEEE.STD_LOGIC_ARITH.all;

use IEEE.STD_LOGIC_UNSIGNED.all;

Operatorji primerjanja (knjižnice):• = … enakost• /= … neenakost• < … manj kot• <= … manj ali enako• > … več kot• >= … več ali enako

Page 59: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Vzporedno sortiranje

Page 60: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primerjalnik velikosti v VHDLlibrary IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_ARITH.all;use IEEE.STD_LOGIC_UNSIGNED.all;

entity comparator isgeneric (n: natural := 2);port ( A_i,B_i: in std_logic_vector(n-1 downto 0);

L_o: out std_logic); end comparator;

architecture behavioral of comparator isbegin

L_o <= '1' when (A_i < B_i) else '0';

end behavioral;

Page 61: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Primerjalnik velikosti v VHDLImplementacije primerjalnika velikosti s procesom:

process(A_i,B_i)begin

if (A_i<B_i) thenL_o <= '1';

elseL_o <= '0';

end if;end process;

Page 62: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Sortirnik dveh števil v VHDLUporaba primerjalnika: blok, ki uredi števili po velikosti.

Page 63: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Vzporedno sortiranje (VHDL)

Page 64: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Vzporedno sortiranje (VHDL)

Page 65: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Vzporedno sortiranje (VHDL)

Page 66: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba segmentnega prikazovalnika

Anode: izbira števkeKatode: izbira segmenta v števki

Vklop: anoda = 1, katoda = 0

Nexys4: invertirajoče anode vklop: anoda = 0, katoda = 0

Page 67: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba segmentnega prikazovalnika

Anode: izbira števkeKatode: izbira segmenta v števki (vse števke si delijo iste linije)Vklop: anoda = 0, katoda = 0Osveževanje: med 1 do 16 ms

Page 68: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Modul za uporabo segmentnega prikazovalnika

katode določajo izhodi a, b, c, d, e, f in g (vežemo jih na ca, cb, cc, cd, ce,cf in cg)

dp: pika za števko

invertirajoča logika

na 0 postavimo anodo števke, ki jo želimo regulirati

Page 69: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Uporaba segmentnega prikazovalnika -katode

Page 70: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Modul za uporabo segmentnega prikazovalnika – katode

w3 w2 w1 w0 a b c d e f g

0 0 0 0 0 0 0 0 0 0 1

0 0 0 1 1 0 0 1 1 1 1

0 0 1 0 0 0 1 0 0 1 0

0 0 1 1 0 0 0 0 1 1 0

0 1 0 0 1 0 0 1 1 0 0

0 1 0 1 0 1 0 0 1 0 0

0 1 1 0 0 1 0 0 0 0 0

0 1 1 1 0 0 0 1 1 1 1

1 0 0 0 0 0 0 0 0 0 0

1 0 0 1 0 0 0 0 1 0 0

Invertirajoča logika!

Page 71: UCF datoteka, modularno opisovanje, BCD kodiranje and Route: razporedi načrt po konkretnih komponentah na konkretnih pozicijah, določi povezave med njimi

Modul za uporabo segmentnega prikazovalnika

Uporaba modula v kombinaciji z dodatno logiko za izbiro števke• Določi števko, ki se bo osvežila (anoda = 0).• Modulu posreduje BCD kod trenutne števke.• Menjava števke v intervalu med 1/4 in 4 ms (med 25000 in 400000 urinih

ciklov).