ra čunarsko projektovanje elektronskih kola 2009.pdfra čunarsko projektovanje elektronskih kola...

182
Ra Ra č č unarsko unarsko projektovanje projektovanje elektronskih elektronskih kola kola Postdiplomske Postdiplomske studije studije , , smjer smjer elektronika elektronika Prof Prof d d r Radovan Stojano r Radovan Stojano vi vi ć ć Univerzitet Crne Gore, ETF Podgorica Univerzitet Crne Gore, ETF Podgorica www.apeg.ac.me www.apeg.ac.me , , stox stox @ac.me @ac.me

Upload: others

Post on 25-Dec-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

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)

Intel Pentium (IV) Microprocessor

AD AD -- MooreMoore’’s Laws Law

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

Ekonomski aspektiEkonomski aspekti

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

--Tri Tri elementaelementa

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 IIIrimjer III

xy

enablecarry

result

- polu-sabirač

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;

SSeekvencijalnokvencijalno modelovanjemodelovanje Processes If-then-else Case For While

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...

FOR Petlja

Standardna For petlja

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

PodPod--programi...programi...

Primjer pozivanja funkcije za konverziju tipa

Ugradjenja u

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

EPM7000 Series Block Diagram

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.

Cyclone SeriCyclone Serie e -- LELE

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

NaNaččini konfigurisanja FPGAini konfigurisanja FPGA Principijelna šema Byte Blastera MV.

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””

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

NapredneNapredne tehniketehnikeprojektovanjaprojektovanja FPGA kolaFPGA kola

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”” ššemeeme

“Registrovanje” izlaza kombinacione logike prije korišćenja kloka.

““ClockingClocking”” ššeme...eme...

Clock divider. Klasični (proizvodi clock “skew” izmedju CLK1 iCLK2)

Preporuceni (eliminisan) “clock skew”

““ClockingClocking”” ššeme...eme... Multiplexiranje clocka, pogodno za telekomunikacione šeme.

““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”

““ClockingClocking”” ššeme...eme...

Eliminacija “Glitcheva”, gornja funkcija, ali bez glitcheva.

““ClockingClocking”” ššeme...eme...

“Gated clock”

““ClockingClocking”” ššeme...eme...

Preporučena “Clock-Gating” tehnika.

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.

““PipeliningPipelining”” KKonceptoncept......

pipe-line, cjevovod

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= + − + + − + − + + −

OstaliOstali primjeriprimjeri

Digitalna obrada slike (M_Zogovic_Diplomski.pdf). Instrumentacija (Banjevic_Davidovic_FM.pdf). Energetska elektronika (Milic_ETRAN_2006.pdf). (Pogledati radove na ovu temu, date u prilozima).