RaRaččunarskounarsko projektovanjeprojektovanjeelektronskihelektronskih kola kola
PostdiplomskePostdiplomske studijestudije, , smjersmjer elektronikaelektronika
ProfProf ddr Radovan Stojanor Radovan Stojanovivićć
Univerzitet Crne Gore, ETF Podgorica Univerzitet Crne Gore, ETF Podgorica
www.apeg.ac.mewww.apeg.ac.me , , [email protected]@ac.me
UU VV OO DD
– Kratak opis kursa– Zašto automatizovani dizajn (AD)?
– AD methodologije projektovanja el. kola
Opis kursaOpis kursa Ciljevi:
Upoznavanje sa osnovnim principima i tehnikama automatizovanog dizajna i simulacije elektronskih kola i sistema za različite namjene (elektronika, telekomunikacija, računari itd).
Razumijevanje nivoa apstrakcije.
Upoznavanje i ovladavanje sa elementima HDL-a (Hardware description language) kao i osnovnim CAD (Computer aided design) alatima za opis, simulaciju i sintezu digitalnih elektronskih kola.
Upoznavanje i ovladavanje sa elementima softvera i alata za simulaciju analognih elektronskih kola.
Osposobljavanje za praktično projektovanje digitalnih elektronskih kola i sistema upotrebom CAD.
Opis kursa...Opis kursa...
Metodologija nastave:Teorijsko-praktičnog tipa: predavanja, prezentacije, lab vježbe, domaći, praktični problemi.
Metodologija provjere znanja:o Pohadjanje nastave, aktivnosti na času (10%).o Laboratorija (10 %).o Domaci zadaci (5%).o Kolokvijum I (25%)o Kolokvijum II (25%)o Zavrsni ispit (25%)
Opis kursa...Opis kursa...
Metodologija ocjenjivanja:
– >= 85%: A.
– >= 70%, < 85%: B.
– >= 50%, < 70%: C.
– < 50%: F. Kredit:
– 6 ECTS poena Softverski alati u procesu nastave:
– Mentor-s, Aldec-s VHDL simulatori
– Altera Quartus II Ver 7.1 ili 7.2.– CADENCE, PSPICE 9.1
Hardverski alati u procesu nastave:– Apeg’s board Altera 8K family.– Altera’s UP3 education board EP1c6 Cyclone family, DGII
Opis kursa....Opis kursa.... Literatura:
– R. Stojanovic, AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA, TEMPUS EDICIJA 2008.
– WEB sajt, www.apeg.cg.yu/vhdl– LAB CD– Dodatni materijal (Internet, Clanci, Popularne i strucne knjige)– Michael John Sebastian Smith, Application-Specific Integrated
Circuits, Addison-Wesley, 1997 (ISBN: 0201500221) WWW page:
WEB sajt kursa– http://www.apeg.cg.yu/vhdl
Mjesto, vrijeme, konsultacije:– fleksibilan, Računarska sala (L1), Utorak 17-20h– Konsultacije, ponedeljak, 12h, 304 kabinet
Kontakt:– Tel. 069 428 209– [email protected]
IstorijskeIstorijske digresijedigresije
1974, Digitalni a Watch is First System-On-Chip Integrated Circuit, $2,100, $20, 1976
Prva integrisana kola projektovali su od strane: Jack Kilby, Texas Instruments , 1959, i Robert Noyce,Fairchild Semiconductor, 1961.
Steve Jobs and Steve Wozniak, Apple I, nastao iz garaze, Apple II, prvi PC, $1290.
ZaZaššto to AD AD – AD = Automatized design (Automatizovano projektovanje) ili DA– Svjedoci smo prave “eksplozije” elektronske tehnologije.– Elektronski čipovi postaju sve složeniji i sve manjih dimenzija.– Imamo cjelokupan uredjaj na jednom cipu (npr. mob. tel.)– Put od ideje do realizacije mora biti što kraći, “time to market”.
ZaZaššto AD? ...to AD? ...
Time-to-market
Složen
ost
Problem
i
Heterogenost
Manja geometrija veći problemi: – Kapacitivnost– Veze– Induktivnost– Otpornost
Veća raznovrsnost funkcionalnih cjelina na čipu– Processor– Softver– Memorija– Analogni dio
Skraćeno vrijeme dizajniranja Manja tolerancija za reviziju
Preko 10M tranzistora Preko 1M linija koda
AD AD -- MooreMoore’’s Laws Law
In 1965, Gordon Moore predicted that the number of transistors that can be integrated on a die would double every 18 to 14 months (i.e., grow exponentially with time).
Amazingly visionary – million transistor/chip barrier was crossed in the 1980’s.– 2300 transistors, 1 MHz clock (Intel 4004) - 1971– 16 Million transistors (Ultra Sparc III)– 42 Million, 2 GHz clock (Intel P4) - 2001– 140 Million transistor (HP PA-8500)
40048008
80808085 8086
286386
486Pentium® proc
P6
0.001
0.01
0.1
1
10
100
1000
1970 1980 1990 2000 2010
Year
Tra
ns
isto
rs (
MT
)
2X growth in 1.96 years!
Transistors on lead microprocessors double every 2 yearsTransistors on lead microprocessors double every 2 yearsTransistors on lead microprocessors double every 2 years
ADAD-- MooreMoore’’s Laws Law
AD AD -- BrzinaBrzina
Lead microprocessors frequency doubles every 2 yearsLead microprocessors frequency doubles every 2 yearsLead microprocessors frequency doubles every 2 years
P6
Pentium ® proc486
3862868086
8085
8080
80084004
0.1
1
10
100
1000
10000
1970 1980 1990 2000 2010
Year
Fre
qu
en
cy (
Mh
z)
2X every 2 years
AD AD -- PotroPotroššnjanja……
P6Pentium ® proc
486
3862868086
80858080
80084004
0.1
1
10
100
1971 1974 1978 1985 1992 2000
Year
Po
we
r (W
att
s)
Lead Microprocessors power continues to increaseLead Microprocessors power continues to increaseLead Microprocessors power continues to increase
Power delivery and dissipation will be prohibitivePower delivery and dissipation will be prohibitivePower delivery and dissipation will be prohibitive
AD AD -- PotroPotroššnjanja……
4004
8008
8080
8085
8086
286386
486Pentium® proc
P6
1
10
100
1000
10000
1970 1980 1990 2000 2010
Year
Po
we
r D
en
sit
y (
W/c
m2
)
Hot Plate
Nuclear
Reactor
Rocket
Nozzle
Power density too high to keep junctions at low tempPower density too high to keep junctions at low tempPower density too high to keep junctions at low temp
ZaZaššto Ato AD?D?……
Rezultati(produktivnost projektovanja)
(EDA softver)
Fizički nivo – transistor entry(Calma, Computervision, Magic)
Šematski nivo - Schematic entry(Daisy, Mentor, Valid)
Sinteza –syntese(Cadence, Synopsys, Mentor)
Šta je sledeće?
EDA = Electronics Design AutomationEDA = Electronics Design Automation
• McKinseyMcKinseyMcKinseyMcKinseyevaevaevaeva----KrivaKrivaKrivaKriva
Savremena metodologija Savremena metodologija projektovanjaprojektovanja
SpecifikacijaSpecifikacija “High-level”Opis
“High-level”Opis
FunkcionalniOpis
FunkcionalniOpis
“Behavioral”VHDL, C
StrukturalniVHDL
VHDL = je akronim za VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
VHDL = je akronim za VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
Savremena metodologija Savremena metodologija projektovanjaprojektovanja……
PaPaPaPakovanjekovanjekovanjekovanje FabriFabriFabriFabri----kacijakacijakacijakacija
FiziFiziFiziFizičkikikikiDizajnDizajnDizajnDizajn
TeTeTeTehnolohnolohnolohnološššškokokokomapiranjemapiranjemapiranjemapiranje
SSSSintezaintezaintezainteza
SpecifikacijaSpecifikacija “High-level”Opis
“High-level”Opis
FunkcionalniOpis
FunkcionalniOpis
Smeštanje& Povezivanje
Smeštanje& Povezivanje
X=(AB*CD)+(A+D)+(A(B+C))
Y = (A(B+C)+AC+D+A(BC+D))
“Gate-level”Opis
“Gate-level”Opis
LogičkiOpis
LogičkiOpis
ASIC ASIC ““DesignDesign flowflow””Strukturalni/RTL Opis
Mem
Ctrl
Comp.Unit
RegFile
HDL Programiranje
P_InpP_InpP_InpP_Inp: : : : processprocessprocessprocess (Reset, Clock)(Reset, Clock)(Reset, Clock)(Reset, Clock)beginbeginbeginbeginifififif (Reset = '1') (Reset = '1') (Reset = '1') (Reset = '1') thenthenthenthensum <= ( sum <= ( sum <= ( sum <= ( othersothersothersothers => '0' );=> '0' );=> '0' );=> '0' );input_nums_readinput_nums_readinput_nums_readinput_nums_read <= '0';<= '0';<= '0';<= '0';sum_ready <= '0';sum_ready <= '0';sum_ready <= '0';sum_ready <= '0';
P_InpP_InpP_InpP_Inp: : : : processprocessprocessprocess (Reset, Clock)(Reset, Clock)(Reset, Clock)(Reset, Clock)beginbeginbeginbeginifififif (Reset = '1') (Reset = '1') (Reset = '1') (Reset = '1') thenthenthenthensum <= ( sum <= ( sum <= ( sum <= ( othersothersothersothers => '0' );=> '0' );=> '0' );=> '0' );input_nums_readinput_nums_readinput_nums_readinput_nums_read <= '0';<= '0';<= '0';<= '0';sum_ready <= '0';sum_ready <= '0';sum_ready <= '0';sum_ready <= '0';
add82 : kadd8 add82 : kadd8 add82 : kadd8 add82 : kadd8 port mapport mapport mapport map ((((a => add_i1, b => add_i2,a => add_i1, b => add_i2,a => add_i1, b => add_i2,a => add_i1, b => add_i2,cicicici => carry, s => sum_o);=> carry, s => sum_o);=> carry, s => sum_o);=> carry, s => sum_o);
Mult_i1 <= sum_o(7 Mult_i1 <= sum_o(7 Mult_i1 <= sum_o(7 Mult_i1 <= sum_o(7 downtodowntodowntodownto 0);0);0);0);
add82 : kadd8 add82 : kadd8 add82 : kadd8 add82 : kadd8 port mapport mapport mapport map ((((a => add_i1, b => add_i2,a => add_i1, b => add_i2,a => add_i1, b => add_i2,a => add_i1, b => add_i2,cicicici => carry, s => sum_o);=> carry, s => sum_o);=> carry, s => sum_o);=> carry, s => sum_o);
Mult_i1 <= sum_o(7 Mult_i1 <= sum_o(7 Mult_i1 <= sum_o(7 Mult_i1 <= sum_o(7 downtodowntodowntodownto 0);0);0);0);
C D
A B
Cell Biblioteke
D C C B
A C C
D C D B
BCCC
ASIC= Appication Specified Integrated CircuitASIC= Appication Specified Integrated Circuit
Digital Chips Digital Chips ““design flowdesign flow””
XC4000XC4000XC4000
3
Design Entry direktno šema ili unošenje programa (koda), VHDL, and/or Verilog.
Implementation Analiza, simulacija, tajmming.
Download direktno u čipove, pomoću ISP iliprogramatora
1
2
Osnove VHDLOsnove VHDL--aa
• Sta je VHDL?• VHDL je internacionalni IEEE standardizovan jezik
(IEEE 1076-1993) za opis elektronskog hardvera.• VHDL je akronim za VHSIC
(Very High Speed Integrated Circuit) Hardware Description Language
• VHDL je jezik visokog nivoa abstrakcije (slično C-u, Paskalu, itd)
• VHDL filozofijaMaximalno tačan i pouzdan dizajn uz najmanju cijenu koštanja u najkraćem roku razvijanja.
Istorija VHDLIstorija VHDL--aa
• Ideja 1980.• 1981 prve konkretne aktivnosti. • U julu 1983 IBM i Texas Instruments potpisali Ugovor o razvijanju VHDL-a
• U avgustu 1985 završena VHDL version 7.2.• U decembru 1987 VHDL postaje IEEE
standard 1076-1987 i 1988 ANSI standard.• U septembru 1993 VHDL je
re-standardizovan, VHDL-1993.
Aktivnosti Aktivnosti u u procesuprocesu projektovanje projektovanje
digitalnog koladigitalnog kola
- faza logičkog projektovanja i faza fizičkog projektovanjaPredmet naseg interesovanja
Nivoi modelovanja i apstrakcijeNivoi modelovanja i apstrakcije
Funkcionalni ili nivo ponašanja (behavior). Strukturalni (structural) i Fizički ili geometrijski (physical).
StrukturaStruktura VHDL VHDL programaprograma......
yx
carry
resutenable
InternaFunkcionalnostdef VHDLom
Half-adder
SpoljaSpoljaššni izvodi ni izvodi def VHDLomdef VHDLom
x
y
enable
carry
resultHalf Adder
EntitetEntitet
x
ycarry
result
HalfAdder
ENTITY half_adder IS
PORT( x, y, enable: IN BIT;carry, result: OUT BIT);
END half_adder;
a[3..0]b[3..0]
equalsBynComp
entity eq_comp4 is port (
a : in bit_vector(3 downto 0);b : in bit_vector(3 downto 0);
equals: out bit );end eq_comp4;
ArhitekturaArhitektura
Nivo abstrakcije Strukturniopis
Opis ponašanja
paralelno(istovremeno)
serijsko(redosledno)
Ili (najčešće) kombinacijom
• Opisuje unutrašnjost entiteta na nekoliko nivoa apstrakcije.
A B
B<= NOT AFizički
(implementacioni)opis
Arhitektura, Arhitektura, strukturni opisstrukturni opis
• Strukturalni opis, kreiran iz pre-definisanih komponeti (ovdje u0,1,2,3,4). Podrazumijeva se da je korisnik familijaran sa električnom šemom. U jednom programu se daje opis interkonekcije komponenti, spoljašnih izvoda i unutrašnjih pomoćnih izvoda.
a(0)
a(1)
b(0)
a(2)
a(3)
b(1)
b(2)
b(3)
x(0)
x(1)
x(2)
x(3)
u0
u1
u2
u3
u4equals
Šema komparatora
Arhitektura, Arhitektura, strukturni opis...strukturni opis...
library ieee;
use ieee.std_logic_1164.all;
entity eq_comp4 is
port (
a : in std_logic_vector(3 down_to 0);
b : in std_logic_vector(3 down_to 0);
equals: out std_logic );
end eq_comp4;
architecture struct of eq_comp4 is
signal x : std_logic_vector(0 to 3);
begin
u0: xnor_2 port map (a(0), b(0), x(0));
u1: xnor_2 port map (a(1), b(1), x(1));
u2: xnor_2 port map (a(2), b(2), x(2));
u3: xnor_2 port map (a(3), b(3), x(3));
u4: and_4 port map (x(0), x(1), x(2), x(3), equals );
end struct;
Componenta definisanau ovoj
biblioteci
Mapiranje
ArhitekturaArhitektura, , opis ponaopis ponaššanja, paralenianja, paraleni
•• Upotreba logičkih izraza kojim se opisuje funkcija, tokpodataka, (“concurrent behavioral description – dataflow”).
ARCHITECTURE half_adder_b OF
half_adder IS
BEGIN
carry <= enable AND (x AND y);
result <= enable AND (x XOR y);
END half_adder_b;
izmedju begin i end _ ime arhitekture)
ArhitekturaArhitektura, , opisopis ponaponaššanja, serijskianja, serijski
ARCHITECTURE half_adder_a OF half_adder ISBEGIN
PROCESS (x, y, enable)BEGIN
IF enable = ‘1’ THENresult <= x XOR y;carry <= x AND y;
ELSEcarry <= ‘0’;result <= ‘0’;
END IF;END PROCESS;
END half_adder_a;
•• U formi izraza koji se redosledno izvršavaju, (“sequential behavioral”). Ti izrazi mogu biti i konstrukcije kao što su “if”, “case”, “loop”, “for”, and “while”. Sve se odigrava unutar“process” sekvence, može biti više procesa.
EEntityntity,, sintaksa, primjersintaksa, primjer
entity program_rom isport ( address : in bit_vector (14 downto 0) ;
data : out bit_vector (7 downto 0) ;enable : in bit );
subtype instruction_byte is bit_vector (7 downto 0);type program is array (0 to 2**14-1) of instruction_byte;
end entity program_rom;
SamoSamo type dtype deklaracijaeklaracija, signal , signal dedeklaracijaklaracija ii konstantekonstante, n, nee vavariableriable..
entity entity_name is
[generics] [ports] [declarations (types, constants,
signals)] [definitions (functions, procedures)]
[begin statements] – ne upotrebljava seend [entity_name];
Sintaksa u Sintaksa u šširem smisluirem smislu
ArchitectureArchitecture,, sintaksasintaksa
arch_body <=architecture id of entity_name is
block_decl_item begin
concurrent_stmt end [ architecture ] [ id ] ;
Ime arhitektureIme arhitekture Ime entitetaIme entiteta
Process Process iicomponentcomponentizraziizrazi
Type, signal Type, signal ii constant constant dedeklaracijeklaracije..
ArchitectureArchitecture,, primjerprimjer
architecture primitive of and_or_inv issignal and_a, and_b, or_a_b : bit;
begin
and_a: process isbegin
and_a <= a1 and a2;wait on a1, a2;
end process;……
end architecture;
ENTITET + ARHITECTURAENTITET + ARHITECTURA
PROSTI VHDL PROGRAM
ENTITY nand_gate ISPORT (
a, b : IN BIT;c : OUT BIT;);
END nand_gate;
ARCHITECTURE myarch OF nand_gate ISBEGINc <= a NAND b;END myarch;
ENTITET
ARHITEKTURA
ENTITET + ARHITECTURAENTITET + ARHITECTURA
POLU SABIRAČ
Simbol, definisan VHDL kodom
Logička šema
ENTITY half_adder ISPORT( x, y, enable: IN BIT;carry, result: OUT BIT);END half_adder;
ARCHITECTURE half_adder_b OFhalf_adder ISBEGINcarry <= enable AND (x AND y);result <= enable AND (x XOR y);END half_adder_b;
VJEVJEŽŽBA 1BA 1
– Unos, kompajliranje i simulacija VHDL programa(skripta str. 16)
» KORAK 1: Kreirati i unijeti VHDL kod u text editoru.» KORAK 2: Provjeriti ispravnost koda datog u obliku
VHDL programa (half_adder.vhd) i simulirati rad kola koristeći Altera Quartus II programski paket. Upoznajmo se sa instaliranjem, pokretanjem VHDL
kompajlera i simulatora u sastavu Quartus II programskog alata u okviru kojeg ćemo unijeti kod i provjeriti njegovu funkcionalnost.
Izvršimo provjeru koda, kompalaciju i simulaciju kola. Komentarisati simulacione diagrame Kreirajmo simbol “half_adder” .
VjeVježžba 1ba 1
Verifikacija
enable, x, y, result, carry1 0 0 0 01 1 0 1 01 0 1 1 01 1 1 0 10 x x 0 0
VJEVJEŽŽBA 2BA 2
– Unos, kompajliranje i simulacija šematskog kola» Koristeći gore kreirane šematske simbole polusabirača,
projektovati šemu punog sabirača.» Provjeriti ispravnost dizajna i izvršiti simulaciju.
DomaDomaćći 1i 1
• Projektovati puni sabirač (full_adder u VHDLu). Izvršiti unos koda (full_adder.vhd), kompajliranje, simulaciju, verifikaciju i kreirati simbol. Priložiti kod i simulacione
dijagrame.
HiararhijskiHiararhijski principprincip
• VHDL omogućava princip hiararhije, što znaci da jedan modulmože biti opisan preko više sub-modula i njihove inter-konekcije.Inter-konekcija sub-modula je definisana u opisu arhitekturemodula (princip “top-down”). U ovom slučaju arhitektura nesadrži opis funkcionalnosti kola, samo listu komponenata, i inter-konekciju.
DeklarDeklaraacijacija komponentikomponenti
entity FULLADDER isport (A,B, CARRY_IN: in bit;
SUM, CARRY: out bit);end FULLADDER;
architecture STRUCT of FULLADDER issignal W_SUM, W_CARRY1, W_CARRY2 :
bit;
component HALFADDERport (A, B : in bit;
SUM, CARRY : out bit);end component;
component ORGATEport (A, B : in bit;
RES : out bit);end component;
begin. . .
Deklaracija komponenti. U deklarativnom dijeluarhitekture modula. Port promenljivekomponente su samo lokalne.
SINTAKSA:
component component_name
[generic (generic_list: type_name [:= expression] ; generic_list: type_name [:= expression] );]
[port ( signal_list: in|out|inout|buffer type_name ; signal_list: in|out|inout|buffer type_name );]
end component;
UsadjivanjeUsadjivanje komponentikomponentiarchitecture STRUCT of FULLADDER is
component HALFADDERport (A, B : in bit;
SUM, CARRY : out bit);end component;component ORGATE
port (A, B : in bit;RES : out bit);
end component;
signal W_SUM, W_CARRY1, W_CARRY2: bit;
begin
MODULE1: HALFADDERport map( A, B, W_SUM, W_CARRY1 );
MODULE2: HALFADDERport map ( W_SUM, CARRY_IN,
SUM, W_CARRY2 );
MODULE3: ORGATEport map (
W_CARRY2, W_CARRY1, CARRY );
end STRUCT;
SINTAKSA:
component_label: component_name
port map (signal_mapping);
Usadjivanje počinje u opisu arhitekture poslije“begin”. Mapiranje signala.
HiararhijskiHiararhijski princip,ilustracijaprincip,ilustracija……,,entity HALF_ADDER is port (
a : in bit;b : in bit;sum : out bit;carry : out bit );
end HALF_ADDER;
architecture bool of half_adder is beginsum <= (a xor b);carry <= (a and b);end bool;
entity ORGATE isport (
a,b: in bit;res: out bit);
end ORGATE;
architecture bool of ORGATE isbeginres<=a or b;end bool; ------- nastavak
Altera Max+II, VHDL okruzenje
Code
HiararhijskiHiararhijski principprincip, , ilustarcijailustarcija……,,entity FULL_ADDER isport (A,B, CARRY_IN: in bit;
SUM, CARRY: out bit);end FULL_ADDER;
architecture STRUCT of FULL_ADDER iscomponent HALF_ADDERport (A, B : in bit;
SUM, CARRY : out bit);end component;
component ORGATEport (A, B : in bit;
RES : out bit);end component;
signal W_SUM, W_CARRY1, W_CARRY2: bit;
begin
MODULE1: HALF_ADDERport map( A, B, W_SUM, W_CARRY1 ); MODULE2: HALF_ADDERport map ( W_SUM, CARRY_IN,
SUM, W_CARRY2 );MODULE3: ORGATEport map ( W_CARRY2, W_CARRY1, CARRY );
end STRUCT;
KonfiguracijaKonfiguracija
MoguMogućće je za jedan entitet imati vie je za jedan entitet imati višše arhitektura. U tom slue arhitektura. U tom sluččaju aju specifispecifiččna arhitektura mora biti pridruna arhitektura mora biti pridružžena odredjenom ena odredjenom entitetu za proces kompalacije i smulacije. entitetu za proces kompalacije i smulacije.
Koja će arhitektura biti korištena od strane kojeg entiteta
KonfiguracijaKonfiguracija,, primjer Iprimjer I
- Konfiguracija deskripcije ponašanja (“behavior”)
ENTITY mux2to1 IS
PORT( d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux2to1;
ARCHITECTURE behavior OF mux2to1 IS
BEGIN
WITH s SELECT
f <= d0 WHEN '0',
d1 WHEN OTHERS;
END behavior;
CONFIGURATION mux2to1_config OF mux2to1 IS
FOR behavior
END FOR;
END mux2to1_config;
ENTITY mux2to1 IS
PORT( d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux2to1;
ARCHITECTURE behavior OF mux2to1 IS
BEGIN
WITH s SELECT
f <= d0 WHEN '0',
d1 WHEN OTHERS;
END behavior;
CONFIGURATION mux2to1_config OF mux2to1 IS
FOR behavior
END FOR;
END mux2to1_config;
Syntaksa:
configuration configuration_name of entity_name is for architecture_nameend for;
end configuration_name;
KonfiguracijaKonfiguracija, p, primjer IIrimjer II
entity FULLADDER isport(A, B, CARRY_IN: in bit;
SUM, CARRY: out bit);end FULLADDER;architecture STRUCT of FULLADDER is
component HALFADDERport(A, B: in bit;
SUM, CARRY: out bit);. . .
signal W_SUM, W_CARRY1, W_CARRY2: bit;
beginMODULE1: HALFADDER
port map (A, B, W_SUM, W_CARRY1);
MODULE2: HALFADDERport map(W_SUM, CARRY_IN, SUM,
W_CARRY2);. . .
end STRUCT;
entity A isport(A, B: in bit;
SUM, CARRY: out bit);end A;
architecture RTL of A is· · ·
entity B isport(U,V: in bit;
X,Y: out bit);end B;
architecture GATE of B is· · ·
Definisano u drugom VHD
fajlu kao modul (work.xx.xx
Definisano u drugom VHD
fajlu kao modul (work.xx.xx
Konfiguracija, primjer II...Konfiguracija, primjer II...
configuration CFG_FULLADDER of FULLADDER is
for STRUCTfor MODULE2: HALFADDER
use entity work.B(GATE);port map ( U => A,
V => B,X => SUM,Y => CARRY );
end for;
for others : HALFADDERuse entity work.A(RTL);
end for;end for;
end CFG_FULLADDER;
Syntaksa:
configuration configuration_name of entity_name is for architecture_namefor label|others|all: comp_nameuse entity [lib_name.]comp_entity_name(comp_arch_name) | use configuration [lib_name.]comp_configuration_name[generic map (...)] [port map (...)] ;
end for; ... end for;
end configuration_name;
KonfiguracijaKonfiguracija,, pprimjer III (...)rimjer III (...)ARCHITECTURE half_adder_c OF half_adder IS
COMPONENT and2
PORT (in0, in1 : IN BIT;
out0 : OUT BIT);
END COMPONENT;
COMPONENT and3
PORT (in0, in1, in2 : IN BIT;
out0 : OUT BIT);
END COMPONENT;
COMPONENT xor2
PORT (in0, in1 : IN BIT;
out0 : OUT BIT);
END COMPONENT;
FOR ALL : and2 USE ENTITY gate_lib.and2_Nty(and2_a);
FOR ALL : and3 USE ENTITY gate_lib.and3_Nty(and3_a);
FOR ALL : xor2 USE ENTITY gate_lib.xor2_Nty(xor2_a);
SIGNAL xor_res : BIT; -- internal signal
-- Note that other signals are already declared in entity
BEGIN
A0 : and2 PORT MAP (enable, xor_res, result);
A1 : and3 PORT MAP (x, y, enable, carry);
X0 : xor2 PORT MAP (x, y, xor_res);
END half_adder_c;
Konfiguracija
Moduli Moduli • Modul je kolekcija često korištenih podataka, komponenti, funkcija, podprograma,itd.Ako je objekt deklarisan i definisan u modulu modulu on može biti korišten u svim VHDL programima.U modulimamodulima se preporučuje definisanje globalnih informacija, značajnih parametara kao i osnovnih komponenti u. Nesto slično kao “include” u C-u. ModulModul sadrži “deklarativni” i “body” dio. Ponekad može semo figurisati deklarativni dio.
Primjer deklaracije modulaPrimjer deklaracije modula::
package MY_PACK is type SPEED is (STOP, SLOW, MEDIUM, FAST); component HA port (I1, I2 : in bit; S, C : out bit);
end component; constant DELAY_TIME : time; function INT2BIT_VEC (INT_VALUE : integer) return bit_vector;
end MY_PACK;
Primjer Primjer ““bodybody--aa””::
package body MY_PACK is constant DELAY_TIME : time := 1.25 ns; function INT2BIT_VEC (INT_VALUE : integer) return bit_vector is
begin -- sequential behavioral description
(omitted here) end INT2BIT_VEC;
end MY_PACK;
ModuliModuli, , primjerprimjer
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE work.mux2to1_package.all;
ENTITY mux4to1 IS
PORT(w0, w1, w2, w3, sel0, sel1 :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux4to1;
ARCHITECTURE structure OF mux4to1 IS
SIGNAL I1, I2 :STD_LOGIC;
BEGIN
u1:mux2to1 PORT MAP(w0, w1, sel0, I1);
u2:mux2to1 PORT MAP(w2, w3, sel0, I2);
u3:mux2to1 PORT MAP(I1, I2, sel1, f);
END structure;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE work.mux2to1_package.all;
ENTITY mux4to1 IS
PORT(w0, w1, w2, w3, sel0, sel1 :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux4to1;
ARCHITECTURE structure OF mux4to1 IS
SIGNAL I1, I2 :STD_LOGIC;
BEGIN
u1:mux2to1 PORT MAP(w0, w1, sel0, I1);
u2:mux2to1 PORT MAP(w2, w3, sel0, I2);
u3:mux2to1 PORT MAP(I1, I2, sel1, f);
END structure;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mux2to1 IS
PORT (d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux2to1;
ARCHITECTURE LogicFunc OF mux2to1 IS
BEGIN
f <= (d0 AND (NOT s)) OR (d1 AND s);
END LogicFunc;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
PACKAGE mux2to1_package IS
COMPONENT mux2to1
PORT (d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END COMPONENT;
END mux2to1_package;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY mux2to1 IS
PORT (d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux2to1;
ARCHITECTURE LogicFunc OF mux2to1 IS
BEGIN
f <= (d0 AND (NOT s)) OR (d1 AND s);
END LogicFunc;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
PACKAGE mux2to1_package IS
COMPONENT mux2to1
PORT (d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END COMPONENT;
END mux2to1_package;
Fajl#1 u radnom direktrorijumu, morabiti kompajliran (mux2to1.vhd)
Fajl#2, trenutni projekat (mux4to1.vhd)
NAPOMENA: Pri kompajliranju mux4to1.vhd kao projekta uQurtusu II, nije dovoljno ukključiti package sa USE
work.mux2to1_package.all; već treba mux2to1.vhd dodatiprojektu sa Project-> Add/Remove files in Project…
BibliotekeBiblioteke
Sadrže modul ili kolekciju modula Biblioteke proizvodjača
– Standard Package– IEEE developed packages– Altera Component packages
Radne Biblioteke– Work.xx.xx
Biblioteke...Biblioteke...
LIBRARY std;– Sadrži sledeće module (pakete):
» Standard (Types: Bit, Boolean, Integer, Real, and Time. All operator functions to support types)
» Textio (File operations)
LIBRARY ieee;– Sadrži sledeće module (pakete):
» std_logic_1164 (std_logic types & related functions)» std_logic_arith (arithmetic functions» std_logic_signed (signed arithmetic functions)» std_logic_unsigned (unsigned arithmetic functions)
Biblioteke...Biblioteke...STD_LOGIC_1164: Declaration:
type std_ulogic is ( 'U', -------- uninitialized'X', -------- forcing unknown '0', -------- forcing 0 '1', -------- forcing 1 'Z', -------- high impedance 'W', -------- weak unknown 'L', -------- weak 0 'H', -------- weak 1 '-' ); -------- "don't care"
ENTITY mux2to1 IS
PORT( d0, d1, s :IN STD_LOGIC;
f :OUT STD_LOGIC);
END mux2to1;
ARCHITECTURE behavior OF mux2to1 IS
BEGIN
WITH s SELECT
f <= d0 WHEN '0',
d1 WHEN OTHERS;
END behavior;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
Sintaksa upotrebe biblioteke:Sintaksa upotrebe biblioteke:
LIBRARY <any_name>;
USE <any_name>.<package_name>.all;
Pozivanje biblioteke
Veza izmedju hiararhijskih nivoa u projektuVeza izmedju hiararhijskih nivoa u projektu
IdejaIdeja sistemsistem integracijeintegracije
Modeli kaModeli kaššnjenjanjenja VHDL koristi sledeći simulacioni ciklus u cilju modeliranja test vektora i odziva hardvera.
Start SimulationStart Simulation
Update SignalsUpdate Signals Execute ProcessesExecute Processes
End SimulationEnd Simulation
Delay
Tipovi kaTipovi kaššnjenjanjenja
VHDL precisira vremenski period koji mora proći dok signali poprime nove vrijednosti.
Precizirana kašnjenja mogu biti podijeljena u sledeće kategorije:– Transport -- propagaciono kašnjenje– Inertial – propagaciono kašnjenje i minimalna širina ulaznog impulsa.– Delta – uobičajeno kašnjenje, ako nije definisano u kodu
Input
delayOutput
Transport delayTransport delay
Mora biti eksplicitno definisano– Npr. riječ “TRANSPORT” mora biti upotrijebljena
Signal prima novu vrijednost poslije definisanog perioda
-- TRANSPORT delay example
Output <= TRANSPORT NOT Input AFTER 10 ns;
-- TRANSPORT delay example
Output <= TRANSPORT NOT Input AFTER 10 ns;
Input Output
0 5 10 15 20 25 30 35
Input
Output 10ms
Nema uticaja jer je 5ns
Definiše propagaciono kašnjenje i ulaznu širinu impulsa, tj. ‘inerciju’ izlaza:
Inertial delay je uobičajen (ugradjen u kompajleru) a REJECT je opcion:
Output <= NOT Input AFTER 10 ns;
-- Propagation delay and minimum pulse width are 10ns
Output <= NOT Input AFTER 10 ns;
-- Propagation delay and minimum pulse width are 10ns
Input
Output
0 5 10 15 20 25 30 35
Input Output
target <= [REJECT time_expression] INERTIAL waveform;target <= [REJECT time_expression] INERTIAL waveform;
Inertial delayInertial delay
Drugi impuls se invertuje poslije10ns
Inertial delayInertial delay...... Primjer kada je ‘inercia’ manja od vremena propagacije
– Npr. Inverter sa propagation delay od 10ns koji ignoriše impulse kraće od 5ns
PS: REJECT je opcija VHDL 1076-1993
Output <= REJECT 5ns INERTIAL NOT Input AFTER 10ns;Output <= REJECT 5ns INERTIAL NOT Input AFTER 10ns;
Input
Output
0 5 10 15 20 25 30 35
“klin”
Delta delayDelta delay
Uobičajeno kašnjenje– VHDL signal ne prima novu vrijednost trenutno
Output <= NOT Input;
-- Output assumes new value in one delta cycle
Output <= NOT Input;
-- Output assumes new value in one delta cycle
-- Primjer realizacije RS flip flopa-- Uociti delta delay
ENTITY rsff ISPORT (r, s: IN BIT;
q, qn: INOUT BIT);END rsff;
ARCHITECTURE behave OF rsff ISBEGINq <= r NOR qn;qn <= s NOR q;
END behave;
Delta delay
Delta delay=0Delta delay=0 Kako se ponaša C?
1
IN: 1->0A
B
C
NAND gate “okida” prvo:
IN: 1->0
A: 0->1
B: 1->0
C: 0->0
NAND gate “okida” prvo:
IN: 1->0
A: 0->1
B: 1->0
C: 0->0
AND gate “okida” prvo:
IN: 1->0
A: 0->1
C: 0->1
B: 1->0
C: 1->0
AND gate “okida” prvo:
IN: 1->0
A: 0->1
C: 0->1
B: 1->0
C: 1->0
Delta delay <> 0Delta delay <> 0 Kako se ponaša C?IN: 1->0
1
A
B
C
Vremenski slijedTime Delta Event
0 ns 1 IN: 1->0
eval INVERTER
2 A: 0->1
eval NAND, AND
3 B: 1->0
C: 0->1
eval AND
4 C: 1->0
1 ns
Vremenski slijedTime Delta Event
0 ns 1 IN: 1->0
eval INVERTER
2 A: 0->1
eval NAND, AND
3 B: 1->0
C: 0->1
eval AND
4 C: 1->0
1 ns
Inertial Inertial vsvs TransportTransport Inertial Delay
– Uobičajeno u VHDLu.– Guta “klinove”.– Najcesce koristen u simultoru.
Transport Delay– Mora biti specificirano sa riječju TRANSPORT.– Moze izbeci impulse bilo koje sirine.– Dobro za delay blokove/sekcije.
VjeVježžba #ba #33
Vježba #2: Na nekoliko konkretnih primjera uvježbati pravljenje i pozivanje
modula, pozivanje biblioteka kao i efekte različitih kašnjenja (samostalno
reprodukovati primjere iz lekcije, npr. rs flip-flopa). Posebno obratiti paznju na
primjer Mux2to1 i Mux4to1.
d0
d1
f
d2
d3
s0s1
d0
d1f
d2
d3
s1 s0
Mux2to1
Mux2to1
Mux2to1Mux4to1
TipoviTipovi podatakapodataka u VHDLuu VHDLu VHDL je strogo “tipski” orjentisan jezik. Svaki objekat kao sto su
konstante, promenljive, signali, portovi pridruzuju vrijednosti
odredjenog tipa.Types
Access
Scalar
Composite
Array Record
Integer Real Enumerated Physical
SkalarniSkalarni tipovitipovi podatakapodataka
Slično kao u Pascalu i C-u.– Intidžer (Integer) – - 2,147,483,647 do 2,147,483,647 (oblast definisanosti)– Primjer pridruživanja
ARCHITECTURE test_int OF test IS
BEGIN
PROCESS (X)
VARIABLE a: INTEGER;
BEGIN
a := 1; -- OK
a := -1; -- OK
a := 1.0; -- illegal
END PROCESS;
END test_int;
ARCHITECTURE test_int OF test IS
BEGIN
PROCESS (X)
VARIABLE a: INTEGER;
BEGIN
a := 1; -- OK
a := -1; -- OK
a := 1.0; -- illegal
END PROCESS;
END test_int;
Skalarni tipovi ...Skalarni tipovi ...
Realni (Real)– -1.0E38 do 1.0E38 (oblast definisanosti)
– Primjer pridruživanja
ARCHITECTURE test_real OF test IS
BEGIN
PROCESS (X)
VARIABLE a: REAL;
BEGIN
a := 1.3; -- OK
a := -7.5; -- OK
a := 1; -- illegal
a := 1.7E13; -- OK
a := 5.3 ns; -- illegal
END PROCESS;
END test_real;
ARCHITECTURE test_real OF test IS
BEGIN
PROCESS (X)
VARIABLE a: REAL;
BEGIN
a := 1.3; -- OK
a := -7.5; -- OK
a := 1; -- illegal
a := 1.7E13; -- OK
a := 5.3 ns; -- illegal
END PROCESS;
END test_real;
Nenumerisani i fiziNenumerisani i fiziččkiki
Nenumerisani (bezimeni), Enumerated– Korisnik definiše vrijednosti.– Primjer:
TYPE binary IS ( ON, OFF );
... some statements ...
ARCHITECTURE test_enum OF test IS
BEGIN
PROCESS (X)
VARIABLE a: binary;
BEGIN
a := ON; -- OK
... more statements ...
a := OFF; -- OK
... more statements ...
END PROCESS;
END test_enum;
TYPE binary IS ( ON, OFF );
... some statements ...
ARCHITECTURE test_enum OF test IS
BEGIN
PROCESS (X)
VARIABLE a: binary;
BEGIN
a := ON; -- OK
... more statements ...
a := OFF; -- OK
... more statements ...
END PROCESS;
END test_enum;
Nenumerisani i fiziNenumerisani i fiziččki...ki...
Fizički (physical)– Zahtijeva pridruženje jedinica.– Oblast mora biti definisana-– Vrijeme je jedini predefinisani fizički tip u VHDLu.
TYPE resistance IS RANGE 0 TO 10000000
UNITS
ohm; -- ohm
Kohm = 1000 ohm; -- i.e. 1 KΩ
Mohm = 1000 kohm; -- i.e. 1 MΩ
END UNITS;
TYPE resistance IS RANGE 0 TO 10000000
UNITS
ohm; -- ohm
Kohm = 1000 ohm; -- i.e. 1 KΩ
Mohm = 1000 kohm; -- i.e. 1 MΩ
END UNITS;
Kompozitni tipoviKompozitni tipovi
Nizovi (array)– Koristi grupu elemenata istog tipa u VHDL objektu.– Ime, Indeks, Oblast definisanosti (zadata u kodu).– Primjer:
TYPE data_bus IS ARRAY(0 TO 31) OF BIT;TYPE data_bus IS ARRAY(0 TO 31) OF BIT;
0 31
0 1
...element indices...
...array values...
VARIABLE X : data_bus;
VARIABLE Y : BIT;
Y := X(12); -- Y gets value of element at index 12
VARIABLE X : data_bus;
VARIABLE Y : BIT;
Y := X(12); -- Y gets value of element at index 12
Kompozitni tipovi...Kompozitni tipovi...
Primjer sa DOWNTO (od većeg prema manjem)TYPE reg_type IS ARRAY(15 DOWNTO 0) OF BIT;TYPE reg_type IS ARRAY(15 DOWNTO 0) OF BIT;
0 1
15 0...element indices...
...array values...
VARIABLE X : reg_type;
VARIABLE Y : BIT;
Y := X(4); -- Y gets value of element at index 4
VARIABLE X : reg_type;
VARIABLE Y : BIT;
Y := X(4); -- Y gets value of element at index 4
Kompozitni tipovi ...Kompozitni tipovi ...
Višedimenzioni vektor (matrica)
type MEMORY is array (0 to 7, 0 to 3) of bit;
... 8×4 bit array
constant ROM: MEMORY := ( ('0','0','0','0'),
('0','0','0','1'),
('0','0','1','0'),
('0','0','1','1'),
('0','1','0','0'),
('0','1','0','1'),
('0','1','1','0'),
('0','1','1','1'));
variable DATA_BIT: bit;
...
-- access to one element: DATA_BIT := ROM (5,3);
Kompozitni tipovi...Kompozitni tipovi...
Struktura (Records)– Grupa elemenata različitog karaktera u jednom objektu– Elementi su indeksirani kroz ime polja– Primjer:
TYPE binary IS ( ON, OFF );
TYPE switch_info IS
RECORD
status : BINARY;
IDnumber : INTEGER;
END RECORD;
VARIABLE switch : switch_info;
switch.status := ON; -- status of the switch
switch.IDnumber := 30; -- e.g. number of the switch
TYPE binary IS ( ON, OFF );
TYPE switch_info IS
RECORD
status : BINARY;
IDnumber : INTEGER;
END RECORD;
VARIABLE switch : switch_info;
switch.status := ON; -- status of the switch
switch.IDnumber := 30; -- e.g. number of the switch
Pristupni tipPristupni tip Access
– Slično kao “pointer”– Omogućava dinamičku alokaciju memorije– Pogodan za implemenatciju “stakova”, fifo:
type CELL; -- incomplete typetype LINK is access CELL; -- access typetype CELL is --- full type declaration for CELL
record VALUE : integer; NEXTP : LINK; end; variable HEAD, TEMP : LINK; -- pointer to CELL
... TEMP := new CELL'(0, null); -- new data object with initial valuesfor I in 1 to 5 loop HEAD := new CELL; --additional objectsHEAD.VALUE := I; --access to record elementHEAD.NEXTP := TEMP; TEMP := HEAD; end loop; ... deallocate(TEMP); -- free the memory
-- allocate new memory
new CELL; -- new object
new CELL'(I, TEMP); ... with initial values
PodPod--tipovitipovi
Subtypes– Omogućava korisniku da definiše sopstvena ograničenja.– Može sadržavati definisane tipove ali u modifikovanom opsegu
SUBTYPE name IS base_type RANGE <user range>;SUBTYPE name IS base_type RANGE <user range>;
SUBTYPE first_ten IS INTEGER RANGE 0 TO 9;SUBTYPE first_ten IS INTEGER RANGE 0 TO 9;
VHDL objektiVHDL objekti
VHDL objekti– Konstante– Promenljive – Signali– Fajlovi
» Objekti definisani u “package” su dostupni svim VHDL programima koji ga koriste.
» Objekti definisani u entitetima su dostupni svim arhitekturamakoje koriste dati entitet.
» Objekti deklarisani u arhitekturi su dostupni svim naredbama u arhitekturi.
» Objekti deklarisani u procesu su dostupni samo unutar njega.
KonstanteKonstante
Ime pridruženo za specifičnu vrijednost tipa Omogućava jednostavnije izmjene i dopune
CONSTANT constant_name : type_name [:= value];CONSTANT constant_name : type_name [:= value];
CONSTANT PI : REAL := 3.14;
CONSTANT SPEED : INTEGER;
CONSTANT PI : REAL := 3.14;
CONSTANT SPEED : INTEGER;
PromjenljivePromjenljive
Konvencionalni mehanizam za lokalne promenljive– Npr: petlje, brojači– Definišu se samo unutar procesa ili drugih blokova (funkcija, procedura)
Sve varijalbe uzimaju vrijednost trenutno– Nema delta ili pre-definisanog kašnjenja
VARIABLE variable_name : type_name [:= value];VARIABLE variable_name : type_name [:= value];
VARIABLE opcode : BIT_VECTOR(3 DOWNTO 0) := "0000";
VARIABLE freq : INTEGER;
VARIABLE opcode : BIT_VECTOR(3 DOWNTO 0) := "0000";
VARIABLE freq : INTEGER;
SignaliSignali
Služe za komunikaciju izmedju VHDL komponenti Realni fizički signali (žice) Podrazumijevaju kašnjenje pri pridruživanju. Glavna razlika izmedju promenljivih i signala je Glavna razlika izmedju promenljivih i signala je pridrupridružženo kaeno kaššnjenje.njenje.
SIGNAL signal_name : type_name [:= value];SIGNAL signal_name : type_name [:= value];
SIGNAL brdy : BIT;
brdy <= ‘0’ AFTER 5ns, ‘1’ AFTER 10ns;
SIGNAL brdy : BIT;
brdy <= ‘0’ AFTER 5ns, ‘1’ AFTER 10ns;
Promenljive vs SignalPromenljive vs Signalsignal A, B, C, Y, Z : integer;
signal M, N : integer;
begin
process (A, B, C, M, N)
begin
M <= A;
N <= B;
X <= M + N;
M <= C;
Y <= M + N;
end process;
signal A, B, C, X, Y : integer;
begin
process (A, B, C)
variable M, N : integer;
begin
M := A;
N := B;
X <= M + N;
M := C;
Y <= M + N;
end process;
ENTITY var_sig_var ISPORT( a, b, c: IN BIT;out_4 : OUT BIT);END var_sig_var;
ARCHITECTURE var_ex OF var_sig_var ISBEGINPROCESS (a, b, c)VARIABLE out_3 : BIT;BEGINout_3 := a NAND b;out_4 <= out_3 XOR c;END PROCESS;END var_ex;
ENTITY var_sig_sig ISPORT( a, b, c: IN BIT;out_2 : OUT BIT);END var_sig_sig;
ARCHITECTURE sig_ex OF var_sig_sig ISsignal out_1: BIT;BEGINPROCESS (a, b, c, out_1)BEGINout_1 <= a NAND b;out_2 <= out_1 XOR c;END PROCESS;END sig_ex;
Isto kolo
FAJLOVIFAJLOVI
Fajlovi omogućavaju da VHDL dizajn komunicira sa okolinom.
Deklaracija fajla omogućava njegovu dostupnost u kodu.
Fajl može biti otvoren za upisivanje i čitanje– VHDL87, sa pridruženim objektima– VHDL93, FILE_OPEN(), FILE_CLOSE() procedure su dodate.
STANDARD definiše osnovne I/O rutine. TEXTIO definiše naprednije I/O rutine, uključujućitekstualne fajlove.
Fajlovi, primjerFajlovi, primjeruse std.textio.all;
-------- read data from file-1 (test.dat) -------- write data to file-2 (out.dat )
entity COPY4 is -- without portsend COPY4;
architecture FIRST of COPY4 is begin process (go)
-------- file with the input data: file INSTUFF: text is in """"\\\\pathpathpathpath\\\\test.dattest.dattest.dattest.dat""""; -------- file for the output data: file OUTFILE: text is out """"\\\\pathpathpathpath\\\\out.datout.datout.datout.dat""""; variable L1, L2: line; variable VECT: bit_vector(3 downto 0);
begin while not (endfile(INSTUFF)) loop -- until the end of filereadline (INSTUFF, L1); -- read one lineread (L1, VECT); -- copy the input data to VECT
write (L2, VECT); -- copy VECT under a pointer to stringwriteline (OUTFILE, L2); -- write one line to OUTFILE
end loop; end process;
end FIRST;
AtrubutiAtrubuti
Povezano sa dogadjajem, tj stanjem. Generalna forma upotrebe atributa :
VHDL ime više predefinisanih atributa:
name'attribute_identifier -- read as “tick”name'attribute_identifier -- read as “tick”
X’delayed(T) Signal koji uzima iste vrijednosti kao X samopomjeren u vremenu za T
X’stable(T) Logički signal koji je istinit ako u intervalu T signal X bio stabilan
X’quiet(T) Logički signal koji je istinit ako uintervalu T nije bilo transakcija signala X
X’transaction Signal koji mijenja vrijednost iz ‘0’-‘1’ i obrnutosvaki put kada se dogodi transakcija signala X
Atributi...Atributi...
X’event Istinit ako je došlo do događaja na signaluX utekućem simulacionm ciklusu
X’active Istinit ako je došlo do transakcije signala X utekućem simulacionom ciklusu
X’last_event Vrijeme poslednjegdogadjaja
X’last_active posledenje transakcije
X’last_value signala X prije poslednjeg dogadjaja
Vrijeme
Vrijednost
VHDL podržava nekoliko tipova atributa. Vezani su za signale, promjenljive i podatke tipa „type“. Označavaju se sa (‘) iza čega slijedi naziv atributa. Sledeća tabela pokazuje nekoliko attributa vezanih za signale.
GENERICGENERIC
Promjenljiva koja je deklarisana korišćenjem ključne riječi GENERIC predstavlja konstantukoja se može samo čitati. Ova riječ se upotrebljava najčešće kada je potrebno projektovatidizajn čiji se neki od parametara mogu mijenjati (npr. dubina i širina memorije, dužinaregistra i sl.). Za dizajnera je mnogo jednostavnije da napravi komponentu koja se u daljem radu može koristiti nezavisno od parametara kakvi su već navedeni.
· Primjer:library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity signed_adder isgeneric (DATA_WIDTH : natural := 8);port(a : in signed ((DATA_WIDTH-1) downto 0);b : in signed ((DATA_WIDTH-1) downto 0);result : out signed ((DATA_WIDTH-1) downto 0));end entity;
Atributi, primjerAtributi, primjer Kako se atributi mogu koristiti u primjeru 8-bitnog registra. Specifikacija :
– Trigger na uzlaznoj ivici– Lečovanje samo kada je enable high– Data setup vrijeme x_setup– Propagaciono kašnjenje prop_delay
ENTITY 8_bit_reg IS
GENERIC (x_setup, prop_delay : TIME);
PORT(enable, clk : IN qsim_state;
a : IN qsim_state_vector(7 DOWNTO 0);
b : OUT qsim_state_vector(7 DOWNTO 0));
END 8_bit_reg;
qsim_state predefinisan tip sa parametrima 0, 1, X, i Z
Atributi, primjer...Atributi, primjer...ARCHITECTURE first_attempt OF 8_bit_reg IS
BEGIN
PROCESS (clk)
BEGIN
IF (enable = '1') AND a'STABLE(x_setup) AND
(clk = '1') THEN
b <= a AFTER prop_delay;
END IF;
END PROCESS;
END first_attempt;
Kada se signal ustabili
ARCHITECTURE behavior OF 8_bit_reg IS
BEGIN
PROCESS (clk)
BEGIN
IF (enable = '1') AND a'STABLE(x_setup) AND
(clk = '1') AND (clk'LAST_VALUE = '0') THEN
b <= a AFTER delay;
END IF;
END PROCESS;
END behavior;
VHDL Operatori
Logički, relacioni i aritmetički
Logički “and”, “or”, ...
Relacioni se upotrebljavaju za komparaciju
Arithmetički za matematičke operacije
Vraćaju boolean vrijednosti Upotrebljavaju se sa if-then-else, do,... za kontrolu
toka programa.
VHDL OperaVHDL Operatoritori, r, relaelacionicioni
Za tipove integer, real,.... Ne primenjuju se za vektore
VHDL OperatorVHDL Operatorii, a, arithmetirithmetiččkiki
NANAČČINI MODELOVANJA (kodiranja)INI MODELOVANJA (kodiranja)
VHDL kod može biti paralelan (concurrent), sekvencijalan i strukturalan. Ova podjela je vrlo bitna jer, omogućava bolje razumijevanje kakve se komande koriste gdje, kao i posledice primjene jednog odnosno drugog načina.
PARALELNO kodiranjePARALELNO kodiranje WHEN / ELSE:assignment WHEN condition ELSEassignment WHEN condition ELSE...; · WITH / SELECT / WHEN:WITH identifier SELECTassignment WHEN value,
· Primjer:------ With WHEN/ELSE -------------------------outp <= "000" WHEN (inp='0' OR reset='1') ELSE"001" WHEN ctl='1' ELSE"010";---- With WITH/SELECT/WHEN --------------------WITH control SELECToutput <= "000" WHEN reset,"111" WHEN set,UNAFFECTED WHEN OTHERS;
ProcessProcess
Sekvencijalno izvršenje naredbi
Sintaksa: Opciono label, ključna riječ “PROCESS”, i sensitivna lista
Izvršava se kontinualno Aktivira se kada se neki od signala u sensitivnoj
listi promijeni, ili ima neki “event”. Sensitivna lista mora biti kompletna da bi se
proces uspješno odvijao.
ProcessProcess……
IFIF
“if” testira uslov, i izvršava različit set komandi u zavisnosti od rezultata.
Dvije forme if-then i the if-then-else
IF-ELSEIF omogućava testiranje serije uslova, i prvi uslov koji je tačan uzrokovaće izvršenje naradbi koje slijede iza njega.
Tok se nastavlja poslije END IF riječi Redosled uslova je značajan Može biti više njih tačnih ali prvi ima prioritet.
IFIF--ELSIFELSIF
Ako je x= “0000”, tada su oba seta uslova zadovoljena.
Kako je x = “0000” testirano prvo, z će poprimiti vrijednost a.
IF-ELSIF ima ugradjeni prioritet.
IFIF--ELSIF ELSIF PrimjerPrimjer
CASE
CASE uzima u obzir sve moguće vrijednosti koje jedan izraz može da poprimi i izvršava naredbe specificirane za aktuelnu vrijednost.
Vrijednosti ne mogu biti specificirane više puta!
Moraju biti specificirane eksplicitno ili sa “others”
CASE...
WHILEWHILE
Ovo je petlja koja se ponavlja sve do onog momenta do koga je zadovoljen neki uslov.
Sintaksa:[label:] WHILE condition LOOP(sequential statements)END LOOP [label];· Primjer:WHILE (i < 10) LOOPWAIT UNTIL clk'EVENT AND clk='1';(other statements)END LOOP;
STRUKTURALNO KODIRANJESTRUKTURALNO KODIRANJE
Strukturno modelovanje omogućava manuelnukonekciju više komponenata u funkcionalnu cjelinuupotebom signala za povezivanje. Sve komponentekoje se koriste moraju prethodno biti definisanesvojim entitetom i arhitekturom što može biti u posebnim ili zajedničkom fajlu. Strukturnomodelovanje je slično sastavljanju šeme složenogkola iz komponenti.
STRUKTURALNO KODIRANJE...STRUKTURALNO KODIRANJE...
COMPONENT– Sintaksa deklaracije komponente:COMPONENT component_name ISPORT ( port_name : signal_mode signal_type; port_name : signal_mode signal_type;
...);END COMPONENT;- Sintaksa povezivanja komponente:label: component_name PORT MAP (port_list);
STRUKTURALNO KODIRANJE...STRUKTURALNO KODIRANJE...· Primer deklaracije PACKAGE koji sadrži komponenate:----- File my_components.vhd: ---------------LIBRARY ieee;USE ieee.std_logic_1164.all;------------------------PACKAGE my_components IS------ inverter: -------COMPONENT inverter ISPORT (a: IN STD_LOGIC; b: OUT STD_LOGIC);END COMPONENT;------ 2-input nand: ---COMPONENT nand_2 ISPORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC);END COMPONENT;------ 3-input nand: ---COMPONENT nand_3 ISPORT (a, b, c: IN STD_LOGIC; d: OUT STD_LOGIC);END COMPONENT;------------------------R. Stojanović VHDL i FPGAEND my_components;
-Primer projekta u kome će se koristiti prethodno kreirani package sa datim komponentama:----- File project.vhd: ---------------------LIBRARY ieee;USE ieee.std_logic_1164.all;USE work.my_components.all;---------------------------------ENTITY project ISPORT ( a, b, c, d: IN STD_LOGIC;x, y: OUT STD_LOGIC);END project;---------------------------------ARCHITECTURE structural OF project ISSIGNAL w: STD_LOGIC;BEGINU1: inverter PORT MAP (b, w);U2: nand_2 PORT MAP (a, b, x);U3: nand_3 PORT MAP (w, c, d, y);END structural;
PodPod--programiprogrami Peomjenljive unutar podprograma su lokalne.
Validne su samo za vrijeme izvršavanja pod-programa
Sadrže sekvencijalne naredbe
Funkcije:
-vraćaju jedan argument
-svi parametri su ulazni
function vector2int(vec : bit_vector) return integer is
variable tmp : integer;
begin
tmp := 0;
for i in vec’range loop
if vec(i) = ‘1’ then
tmp := tmp+1;
end if;
end loop;
return tmp;
end vector2int;
PodPod--programi...programi...
Procedure– Sadrže više ulazno-izlaznih parametara
procedure vector2int(signal vec : in bit_vector;
variable int: inout integer) is
begin
int := 0;
for i in vec’range loop
if vec(i) = ‘1’ then
int := int+1;
end if;
end loop;
end vector2int;
PodPod--programi...programi...
Poziv procedureMyproc1(my_signal,my_variable,1);
Myproc1(formal1 => ‘1’, formal2=>”111” ,formal3 =>1);
Myprocedure3; --No parameters
VJEVJEŽŽBA #4BA #4 DFF sa RESETOM
-- DFF------------------------------------------------LIBRARY ieee;USE ieee.std_logic_1164.all;------------------------------------------------ENTITY dff ISPORT (d, clk, rst: IN STD_LOGIC;q: OUT STD_LOGIC);END dff;------------------------------------------------ARCHITECTURE behavior OF dff ISBEGINPROCESS (clk, rst)BEGINIF (rst='1') THENq <= '0';ELSIF (clk'EVENT AND clk='1') THENq <= d;END IF;END PROCESS;END behavior;
VJEVJEŽŽBA #5BA #5
Lab #3, 8bitni Shift Registarlibrary IEEE;
use IEEE.std_logic_1164.all;
entity SHIFTR is
port (
CLK, RSTn, SI : in std_logic;
SO : out std_logic);
end SHIFTR;
architecture RTL of SHIFTR is
signal FF8 : std_logic_vector(7 downto 0);
begin
posedge : process (RSTn, CLK)
begin
if (RSTn = '0') then
FF8 <= (FF8'range => '0');
elsif (CLK'event and CLK = '1') then
FF8 <= SI & FF8(FF8'length-1 downto1);
end if;
nd process;
SO <= FF8(0);
end RTL;
VJEVJEŽŽBA BA ##66----------------------------------counter------------------Library Ieee;Use ieee.std_logic_1164.all;Use Ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;-----------------------------------------------------------entity counter isgeneric(word_length : integer:=4);port(clk, en, rst: in std_logic;output : out std_logic_vector(word_length-1 downto 0));end counter;-----------------------------------------------------------architecture counter_behav of counter issignal counting : std_logic_vector(word_length-1 downto 0);beginprocess(clk, rst, en)beginif rst='1' thenoutput<=(others=>'0');counting<=(others=>'0');elsif clk'event and clk='1' thenif en='1' thenoutput<=counting;counting<=counting+'1';end if;end if;end process;end architecture;
VJEVJEŽŽBA #6...BA #6...
-------------------------package---------------------------Library Ieee;Use ieee.std_logic_1164.all;Use Ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;-----------------------------------------------------------package counter_package iscomponent countergeneric(word_length : integer:=16);port(clk, en, rst: in std_logic;output : out std_logic_vector(word_length-1 downto 0));end component;end package counter_package;
VjeVježžba #7ba #7• Uvježbavanje poziva funkcije na primjeru množača
LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;
ENTITY design_one ISPORT (a,b : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
f : OUT STD_LOGIC_VECTOR (15 DOWNTO 0));END design_one;
ARCHITECTURE add_design OF design_one IS BEGINf <= a * b;END add_design;
Funkcija množenja definisana u ovoj biblioteci
package std_logic_unsigned is......................................function "+"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;
......................................function "-"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;
......................................function "*"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;
......................................function "<"(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN;
....................................end std_logic_unsigned;
a[7..0]
b[7..0]c[7..0]a*b
DomaDomaćći #2i #2
State Machine Detektor binarne sekvence “1110101101”
Priložiti VHDL kog i simulacione dijagrame.
Programabilna logička kola(PLD – Programmable Logic Devices)
Lokalno Programibilne Sekvencijalne mreže(FPGA - Field Programmable Gate Array)
PLDPLD -- FPGAFPGA
SadrSadržžajaj
• Pregled digitalnih elektronskih komponenata prema teh. izrade.• Standardna logika vs programabilna (PLD)
- Mjesto PLDs u elektronskoj industriji- Vrste PLD
• FPGA- Konfigurisanje FPGA čipova
• FPGA “Design Flow”• Važniji proizvodjači FPGA• Konfigurisanje FPGA čipova• Dizajn primjer• Proizvodjači FPGA čipova
ElektronskeElektronske kkomponenteomponente, tehn, tehnologijaologija
• Digitalne komponente prema tehnologiji izrade
StandardnaStandardna logikalogika vsvsProgramabilnaProgramabilna
...
Konvecionalni AND simbol
.. .
Programabilni simbol
Glavna razlika!
abc
F
F = a.b.c
a b cF = 0
F = a.c
MjestoMjesto PLDsPLDs u u eelektronskojlektronskoj iindustrijindustriji
PLDs su ključne komponente
elektronskih sistema:
ProcessorProcessor
MemoryMemory
LogicLogicPrednosti: Brz i jeftin razvoj,
idealne za proto-tipove, mogućnost
višestruke upotrebe
i raznovrsne implementacije:
Mane: dimenzije, skupe za serijsku proizvodnju,
veća potrošnja, veće kašnjenje.
PLD
VrsteVrste PLDsPLDs
PROM PROM (Programmable ROM)(Programmable ROM) -- radjenoradjeno
PLAPLA (Programmable Logic Array)(Programmable Logic Array) -- radjenoradjeno
PAL PAL (Programmable Array Logic)(Programmable Array Logic) -- radjenoradjeno
GALGAL (Generic Array Logic)(Generic Array Logic) -- radjenoradjeno
CPLDCPLD (Complex Programmable Logic Device(Complex Programmable Logic Device
FPGAFPGA (Field Programmable Gate Array)(Field Programmable Gate Array)
CPLDCPLD
SadrSadržži vii višše PAL e PAL blokovablokova nana jednomjednom ččipuipu sasaprogramabilnimprogramabilnim linijamalinijama izmedjuizmedju njihnjih..
SvakiSvaki PAL PAL blokblok se se sastojisastoji odod izvesnogizvesnog brojabroja makromakro--ććelijaelija(macro cells).(macro cells).
PLDBlock
PLDBlock
PLDBlock
PLDBlock
Interconnection MatrixInterconnection Matrix
I/O B
lock
I/O B
lock
I/O B
lock
I/O B
lock
PLDBlock
PLDBlock
PLDBlock
PLDBlock
I/O B
lock
I/O B
lock
I/O B
lock
I/O B
lock
•••
Interconnection MatrixInterconnection Matrix
•••
•••
•••
CPLD CPLD PrimjerPrimjer -- AlteraAlteraMAX7000MAX7000, Makro, Makroććelijaelija
EPM7000 Series Device Macrocell
FPGAFPGA
FPGA FPGA susu PLD PLD velikogvelikog kapacitetakapaciteta
SastojeSastoje se se odod programabilnihprogramabilnih ććelijaelija okruokružženihenihprogramabilnimprogramabilnim interinter--konekcijamakonekcijama..
PronadjenePronadjene susu 1985 (1985 (XilinxXilinx))
MoguMogu implementiratiimplementirati kombinacionukombinacionu i i sekevncionalnusekevncionalnulogikulogiku
KapacitetKapacitet: 1K do 1M : 1K do 1M logilogiččkihkih kapijakapija
BrzinaBrzina: do 200MHz.: do 200MHz.
AplikacijeAplikacije: : izrada prototipovaizrada prototipova, FPGA , FPGA baziranibaziranikompjuterikompjuteri, DSP, , DSP, mreznemrezne komponentekomponente, , itd,itditd,itd
FPGAFPGA,, strukturastruktura
Programabilne
Interkonekcije
Programabilni
Logički blokovi
Programabilni
I-O Blokovi
Ostali FPGA blokoviOstali FPGA blokovi
Clock Clock distribucijadistribucija
UsadjeniUsadjeni memorijskimemorijski blokoviblokovi
Blokovi specijalne namjeneBlokovi specijalne namjene:: DSP DSP bloblokk: :
Hardware multipliers, adders and registersHardware multipliers, adders and registers
UsadjeniUsadjeni microprocessors/microcontrollersmicroprocessors/microcontrollers
UART (serijska komunikacija)UART (serijska komunikacija)
USB komunikacijaUSB komunikacija
Itd.Itd.
FPGA FPGA –– Osnovni logiOsnovni logiččki ki elemenatelemenat
LUT LUT sluslužže e za implementaciju kombinacione logike.za implementaciju kombinacione logike. RegisRegistritri zaza implementaciju implementaciju sesekvencijalnekvencijalne logike.logike. Ostala logikaOstala logika ((nije prikazananije prikazana):):
Carry Carry logilogikaka zaza aritmetiaritmetiččkeke funkcijefunkcije ProProšširenairena logikalogika zaza funkcijefunkcije koje zahtijevaju vikoje zahtijevaju višše od 4e od 4 ulazaulaza
LUTLUT
Out
Select
D Q
A
B
C
D
Clock
LookLook--Up Tables (LUT)Up Tables (LUT)
Truth-table
A B C D Z
0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 1
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 1
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
LUTLUT
ABCD
Z
A
B
C
D
Z
LUT implementation
Gate implementation
LookLook--up table up table sa sa NN--ulazaulaza momožžee bitibiti upotrebljenaupotrebljena za za implementaciju bilo koje kombinacione funkcijeimplementaciju bilo koje kombinacione funkcije odod N N ulazaulaza
LUT LUT sese programilaprogramila sa tabelom sa tabelom istinitostiistinitosti
=
LUT LUT ImplementacijaImplementacija
0/10/1
0/10/1
0/10/1
0/10/1
0/10/1
0/10/1
0/10/1
0/10/1
X1X2
X3
F
Configuration memorycells
PrimjerPrimjer: 3: 3--input LUTinput LUT
BBaziranaazirana nanamultipleksorimamultipleksorima((prekidaprekidaččkim kim tranzistorimatranzistorima))
SadrSadržžaj aj LUT LUT smjesmješštenten u u ććelijama konfiguracione elijama konfiguracione memorijememorije
PrograProgramabilnemabilne iinternterkonekcijekonekcije
LELE
LELE
LELE
LELE
LELE
LELE
SwitchMatrix
Switch Matrix
InterInterkonekcijskakonekcijska hihiararhijaararhija ((nijenije prikazanaprikazana)) BrzeBrze lokalne interkonekcijelokalne interkonekcije
HorizontalHorizontalnene ii vertivertikkalalnene linlinijeije razlirazliččite duite dužžineine
PrekidaPrekidaččka matricaka matrica
6 6 trtranzistoraanzistora ppo tao taččki ki interkonekcijeinterkonekcije
Tranzistori se ponaTranzistori se ponaššaju kao aju kao programabilni prekidaprogramabilni prekidaččii
““GatoviGatovi”” dranzistora su spojeni dranzistora su spojeni na bitove konfiguracione na bitove konfiguracione memorijememorije
Poslije programiranjaPrije programiranja
FPGA FPGA –– AlteraAltera FLEX 8000FLEX 8000
- od 4000 do 15000 logickih kapija, izgled jedne makro ćelije
(MC) ili logičkog elementa (LE)
FPGA FPGA –– ALTERA ALTERA Cyclone Cyclone SeriaSeria Cyclone FPGA familija je bazirana na 1.5V, 0.13um, SRAM
procesu sa gustinom do 20060 logičkih elemenata (LEs) i do 288 Kbita RAMa. Takodje posjeduje PLL strukture i veliki brojdodatnih pogodnosti. Ova familija je pogodna zainterkonekciju različitih periferija, gdje podržava brzinetransfera do 311 megabita po sekundi.
Cyclone ugradjena memorija se sastoji od banaka (kolona) M4K blokova. Svaki M4K blok može implementirati različitetipove memorije sa ili bez parnosti, uključujući i nekoliko vrstadual port and single port RAM, ROM i FIFO. Ukupno sadrži4,608 RAM bitova.
U Cyclone arhitekturi konekcija izmedju LEta, M4K memorijskih blokova i I-O pinova je omogućena pomoćuMultiTrack interconnect structure sa DirectDrive tehnologijom.
Konfigurisanje FPGA Konfigurisanje FPGA ččipovaipova
• Konfigurabilnost PLD kola omogućena je postojanjem internihprogramabilnih tačka koje, u suštini, predstavljaju prekidačkeelemente koji se mogu programirati tako da se ponašaju kaokratko-spojeni ili otvoreni prekidači. U fazi programiranja kola, signali koji se dovode na ulaz kola otvaraju i zatvarajuprogramabilne tačke (elektronske prekidače) i na taj načinostvaruju željene oblike povezivanja internih komponenta.• Kod prvih PLD kola za realizaciju programabilnih prekidačakorišćeni su poluprovodnički osigurači. Inicijalno svi osiguračisu "nesagoreni". Pobuđivanje kola nešto višim naponima odradnih uslovljava da kroz PLD protiču velike struje. Kao posledica, veze koje formiraju osigurači se raskidaju. Treba pri ovome naglasiti da ne postoji metod za rekonstrukciju(obnavljanje) stanja prekidača, tj. njegovo sagorevanje jetrajno ili bespovratno. Tipičan predstavnik ovakvihkola je programabilni ROM ili PROM.
Konfigurisanje FPGA Konfigurisanje FPGA ččipova...ipova... Danas, kod SPLD i CPLD kola, za realizaciju programabilnih prekidača,
preovladavaju tehnologije zasnovane na tranzistorima sa izolovanimgejtom (floating-gate) EPROM ili EEPROM tipa, dok se kod FPGA uglavnom koriste SRAM (Static RAM) i antifuse tehnologije.
SRAM tehnologija programiranja. Kod ove tehnologije, konfigurisanjekola se ostvaruje pomoću pass tanzistora i multipleksera koji se upravljaju SRAM ćelijama. Par “SRAM ćelija - pass tranzistor” se koristikao programabilna veza između dva žičana segmenta, slika.
Xilinix, Plessey, Algotronix,
Concurent Logic i Toshiba.
Konfigurisanje FPGA Konfigurisanje FPGA ččipova...ipova... Floating_Gate tehnologija. Radi se o istoj tehnologiji koja se sreće kod
EPROM i EEPROM memorija. Programabilni prekidač je tranzistor saizolovanim gejtom (EPROM tranzistor), koji se, programiranjem, možepermanentno zakočiti, slika. Ovo se postiže injektovanjemnaelektrisanja na izolovani gejt tranzistora (gejt 2). Do injektovanjanelektrisanja dolazi kada se između upravljačkog gejta (gejt 1) i drejnatranzistora dovede visok napon. Injektovano naelektrisanje povećavanapon praga tranzistora, tako da on, u normalnom režimu rada, ostajestalno zakočen (tj. neprovodan).
Altera, Plus Logic
Konfigurisanje FPGA Konfigurisanje FPGA ččipova...ipova... Antifuse tehnologija programiranja. Antifuse je komponenta sa dva
kraja koja u neprogramiranom stanju poseduje veoma veliku serijskuotpornost (tj. predstavlja otvoren prekidač). Antifuse se sastoji od tri sloja. Krajnji slojevi su provodni, a sloj u sredini je dialektrik. Anifuse se postavlja između dva žičana segmenta, slika. Programiranje se vršidovođenjem visokog napona (od 11 do 20V, što zavisi od tipa antifusa) na krajeve antifuse-a.
Actel, Quck Logic,Crosspoint
NaNaččini konfigurisanja FPGAini konfigurisanja FPGA
Moguće konfiguracione šeme
Inteligentni hostPPAPasivna paralelna asinhrona
Inteligentni hostPPSPasivna paralelna sinhrona
Serijski kanal podatakaPSPasivna serijska
Paralelni EPROMAPDAktivna paralelna donja
Paralelni EPROMAPUAktivna paralelna gornja
Konfiguracioni EPROMASAktivna serijska
Izvor podatakaAkronimKonfiguraciona šema
Eksterni kontroleri za konfiguracijuEksterni kontroleri za konfiguraciju U aplikacijama, koje zahtjevaju rekonfiguraciju u realnom vremenu
uredjaja najbolji izbor je ponovo pasivna konfiguraciona šema. Rekonfigurabilnost dozvoljava da se logički resursi iskoriste na drugačiji način umjesto da se dizajnira druga logika ili koristi više kola u sistemu.Pasivna konfiguracija lako podržava eventualnu potrebu za više izvora konfiguracionih podataka koja se može javiti .
PS konfiguraciona veza koristi eksterni kontroler za konfiguraciju npr. FLEX serije uredjaja sa serijskim nizom bitova. Pri tome se FPGA čip tretira kao slejv uredjaj sa petožičanim interfejsom ka eksternom kontroleru. Eksterni kontroler može biti :
Quartus II programer, korišten zajedno sa PL-MPU (Master Programming Unit), odgovarajućim adapterom i FLEX download kablom.
Inteligentni host kao što je mikrokontroler ili CPU. Altera “ByteBlaster download kabal. U našim primjerima korištena konfiguracija sa ByteBlaster kablom.
Podaci se sinhronizuju sa eksternim klokom iz izvora podataka. Pri tome se koristi ili Quartus II programer. Uredjaj se konfiguriše sa “SRAM Object File” (.sof) koji se generiše automatski u toku procesa kompalacije.
Izvodjenje konfiguracije, tajmingIzvodjenje konfiguracije, tajming
Šema veze FLEX 8000 za konfiguraciju u PS modu
PridruPridružživanje pinova i konfigurisanjeivanje pinova i konfigurisanje
Primjer, 4-bitni brojač pogonjen klokom 1Hz ili 2Hz.
- Pročitati poglavlje 2.9, skripta strana 132
PridruPridružživanje pinova i konfigurisanjeivanje pinova i konfigurisanje
UP3 – Edukaciona ploča Altera
FPGA FPGA ““Design FlowDesign Flow””......
XC4000XC4000XC4000
3
Design Entry direktno šema ili unošenje programa (koda), VHDL, and/or Verilog.
Implementation Analiza, simulacija, tajmming.
Download direktno u čipove, pomoću ISP iliprogramatora
1
2
VaVažžniji proizvodjaniji proizvodjačči FPGAi FPGA
ALTERA ALTERA -- www.altera.comwww.altera.com
XILINX XILINX –– www.xilinx.comwww.xilinx.com
CYPRESS CYPRESS –– www.cypress.comwww.cypress.com
ATMEL ATMEL –– www.atmel.comwww.atmel.com
LATTICELATTICE –– www.latticesemi.comwww.latticesemi.com
ZaZaššto to naprednnapredni dizajni dizajn??
Prosti FPGA dizajn ima odredjene mane i ne može se koristiti u profesionalne
svrhe. Optimalne performanse u procesu projektovanje FPGA kola mogu se
očekivati ako smo ispoštovali veliki broj pravila proisteklih iz znanja i iskustva.
Takva pravila se mogu ugraditi u VHDL kodu ili pak u šematskom prikazu. To se
odnosi na tehnike kao što su prednosti sinhronog u odnosu na asinhroni dizajn,
dupliciranje Flip-Flopova u svrhu smanjenja fan-outa, “Pipelining”, I/O Flip-Flops,
kola za sinhronizaciju i reset itd. Takodje su važne i tehnike koje smanjuju potrošnju
(konzumaciju) FPGA kola.
Sinhrona vs. asinhrona kolaSinhrona vs. asinhrona kola
Sinhrona kola su mnogo pouzdanija.
Glavni princip ovih kola je da su sva zbivanja sinhronizovana sa klokom.
Izlaz iz jednog logičkog stanja treba da ima jedan puni period
kloka da dodje do drugog.
“Skew faktor” – faktor skošenja, mora biti unutar istog klok
intervala. Generalno, gdje god je to moguće treba koristiti sinhroni pristup.
Asinhrona kola su manje pouzdana.
Uticaj kašnjenja je izražen (npr. 12ns).Višestruka kašnjenja mogu da dovedu do različitih
posledica(e.g. DATA dolazi 5ns prije SELECT)
Treba ih izbjegavati prilikom projektovanja
KKombinombinacioneacione PetljePetlje
Najčešći uzrok nestabilnosti i nepouzdanosti. Moraju se
izbjegavati gdje je to moguće.
Generatori impulsa i multivibratoriGeneratori impulsa i multivibratori
Asinhroni (ne preporučuju se). Koristiti sinhroni tamo gdje je to potrebno.
““ClockingClocking”” ššeme...eme...
Clock divider. Klasični (proizvodi clock “skew” izmedju CLK1 iCLK2)
Preporuceni (eliminisan) “clock skew”
““ClockingClocking”” ššeme...eme... Eliminacija “Glitcheva” Zato što su današnji klokovi kod FPGA veoma brzi, mogu izazvati pojavu kratkih
impulsa. Nikada ne snadbijevaj klok signal iz kombinacione logike. Moraju se uvesti tehnike “gated clock” radi eliminacije glitcheva.
“glitch”
Set/Reset Set/Reset ““GlitcheGlitchevivi””......
Glitch-glič, greška, neželjen impuls. Glitchevi na asinhronom clearu mogu izazvati probleme u kolu.
glitch
Set/Reset Set/Reset ““GlitcheGlitchevivi””......
Pretvoriti asinhroni u sinhroni set ili reset, gdje je moguće.
Clock Clock ““SkewSkew””......
skew –izvitoperiti.
Šift registar ne radi ispravno zbog clock “skew”a!
Expected operation
Clock
Q_A
Q_B
Q_C
3 cycles
Clock skewed version
A & C
Clock
Q_A
Q_B
Q_C
B Clock
2 cycles“kasnjenje”
DupliciranjeDupliciranje FlipFlip--FlopFlopova...ova...
Visoki-”fanout”, prekoračenje, može izazvati probleme (usporiti rad kola). (Fan - out) mogućnost opterećenjaizlaza, najveci broj standardnih kola koje je moguće vezati na izlaz datog kola (kao opterećenje).
Dupliciranje flip-flopa može pomoći.
KaKaššnjenjanjenja uu ““ppipelineipeline”” arhitekturamaarhitekturama
Svaka “pipelin” faza dodaje kašnjenje od jednog kloka. Tehnika “filling the pipeline” može pomoći.
““PipeliningPipelining”” PrimjerPrimjer
Originalno kolo
Dva logička nivoa izmedju SOURCE_FFS i DEST_FF
–fMAX= ~233 MHz, max frekvencija koja ne izaziva probleme.
““PipeliningPipelining”” Primjer...Primjer...
Filling Jedan logički nivo izmedju svakog seta flip-flopova –fMAX= ~385 MHz , max frekvencija koja ne izaziva probleme.
PrimjerPrimjer Problem pipelining u orginalnom kolu? Kako ga izbjeći? Šta je problem u “pipelined” circuit?
PrimjerPrimjer……
Dodavanje flip-flopa na SELECT otklanja problem. Svi ulazni podaci sada imaju isto kašnjenje.
Kola za sinhronizacijuKola za sinhronizaciju Circuit 1: Upotrebljava se kada će ulazni impulsi biti makar dužine kloka “extra” flip-flop protiv metastabilnosti.
Kola za sinhronizaciju...Kola za sinhronizaciju... Circuit 2: Ulazni signal može biti manji od dužine kloka. –FF1 “captures” (hvata) kratki impuls.
Kola za sinhronizaciju...Kola za sinhronizaciju... Capturing a Bus. “Leading edge detector”, ulazni impulsi biti makar
dužine kloka.
Kola za sinhronizaciju...Kola za sinhronizaciju...
“Leading edge detector” Ulazni signal može biti manji od dužine kloka
NapredniNapredni dizajndizajn
Primjer realizacije Fleksibilnog FPGAbaziranog IIR filtra. U okviru ovog paragrafa dat je primjerrealizacije jednog složenijeg sistema, konkretno IIR filtra.
Upoznajmo se prvo sa osnovnom funkcijomtj. jednačinom IIR sistema.
OpOpšštata forma forma funkcijefunkcije prenosaprenosadigitalnogdigitalnog sistemasistema
Svaki digitalni sistem se može predstavititakozvanom funkcijom prenosa, čiji je opšti oblikdat formulom.
Datoj funkciji prenosa u vremenskom domenu odgovara diferencna jednačina:
Kao sto se vidi sastavni djelovi su kolo za kasnjenje, mnozac i sabirac. Vise o realizacijidigitalnog filtra u FPGA tehnologiji, (Zoran_Jaksic _Diplomski _Rad .pdf)
0 1 1( ) ( ) ( 1) ... ( ) ( 1) ... ( )
N My n A x n A x n A x n N B y n B y n M= + − + + − + − + + −
Top Related