Digitaalsüsteemide automaatprojekteerimine J.F. Wakerly “Digital Design: Principles and Practices” - 1.5, 1.8-12 L18.
Download ReportTranscript Digitaalsüsteemide automaatprojekteerimine J.F. Wakerly “Digital Design: Principles and Practices” - 1.5, 1.8-12 L18.
Digitaalsüsteemide automaatprojekteerimine
J.F. Wakerly “Digital Design: Principles and Practices” - 1.5, 1.8-12
L18. Digitaalsüsteemide automaat projekteerimine, sünteesi etapid.
L19. Süsteemi- ja kõrgtasemesüntees.
L20. Füüsikalise taseme projekteerimine. Kompleksete süsteemide iseärasused.
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 1
Automatiseerimine
… ja formaliseerimine Tootlikkuse puudujääk productivity gap 58% ja 21% aastas tehnoloogia suutlikkus transistori kristallil disaineri tootlikkus aeg täna Süsteemi disain
40
Simuleerimine
30 30
Loogika disain
60
Skeemi sisestus
50
Hierarhia, generaatorid
40
Füüsikalise taseme disain
70 2
Paigaldus ja trasseerimine
2
inimkuud / 20 000 l.lüli Loogikasüntees
30 2
Kõrgtasemesüntees / Süsteemitasemesüntees
10 2 3
Spetsialiseeritud kõrgtasemesüntees
2
< 1979 ~ 1983 1986 1988-92 1992-95 ~1996-...
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 2
Digitaalsüsteemi loomine
Kuidas saada hakkama
tootlikkuse puudujäägiga
?
Vaadelda süsteemi kui tervikut ülesande püstitamine riist- ja tarkvara koosdisain Olemasolevate lahenduste kasutamine olemasolevad algoritmid (tarkvara teegid) olemasolevad moodulid (riistvara “teegid”) IP-plokid [ IP = Intellectual Property ] Projekteerimine on jagatud sammudeks © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 3
Abstraktsioonitasemed
Süsteemi tase moodulid & infokanalid Algoritmi tase alam-moodulid & protokollid Register-siirete (RT) tase ALS-d, registrid & siinid Loogikatase skeem loogikaelementidest Füüsikatase skeem transistoridest kristalli pinnalaotus © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 4
Sünteesi tasemed
Süsteemi tase Algoritmi tase süntees Käitumuslik mõõde Struktuurne mõõde süsteemi spetsifikatsioon täpsustamine algoritm Register-siirete tase analüüs Loogika tase CPU, mälu protsessor, alamsüsteem register-siirete kirjeldus loogika-avaldised diferentsiaalvõrrandid ALU, register, MUX Skeemi tase loogikalüli, triger transistor optimeerimine abstraheerimine ristkülik / polügon genereerimine std.element / alam-element makro-element ekstraheerimine plokk / kiip kiip / trükkplaat © Peeter Ellervee Füüsikaline mõõde I207 - Digitaalloogika ja süsteemid - L18 5
Sünteesi-süsteemid
Süsteemi süntees Liideste süntees Kõrgtaseme süntees Formaalne süntees Registersiirete taseme süntees Loogika süntees Testi süntees Füüsikaline süntees © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 6
Sünteesi võlud
Automatiseerimine võimaldab vähendada projekteerimiskulusid kiirendada projekteerimist uusimate tehnoloogiate kasutamist formaliseeritus rohkem võimalikke lahendusvariante vähem vigu projekteerimisel © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 7
Otsustused sünteesil
Loogikatase tuhanded sõlmed mõni realiseerimisviis Register-siirete tase sajad sõlmed kümned realiseerimisviisid Käitumuslik ja süsteemi tase kümned sõlmed sajad realiseerimisviisid © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 8
Sünteesi valud
Loogikatase teisendus mõjutab ainult lähinaabreid lihtsad teisendusalgoritmid on ka efektiivsed Register-siirete tase teisenduse mõjutab suurem Käitumuslik ja süsteemi tase teisendus mõjutab praktiliselt kogu süsteemi puuduvad universaalsed (ja efektiivsed) teisendus-algoritmid © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 9
“Ränikompileerimine”
Kõrgtaseme süntees sisendiks riistvara kirjelduskeel väljundiks operatsioonide järjestus (mikro)programm
väljundiks mooduli arhitektuur
Tarkvara süntees (kompileerimine) sisendiks kõrgtaseme keel väljundiks operatsioonide järjestus (assembler) programm © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 10
Disaini / sünteesi etapid
Ideest realisatsioonini / töötava mudelini
Simuleeritava spetsifikatsioon loomine idee korrektsuse kontroll Spetsifikatsiooni tükeldamine hallatavus ja korduvkasutatavus Algoritmide täpsustamine arhitektuursete lahenduste valimine Spetsifikatsiooni teisendamine skeemiks süntees kitsamas tähenduses Realiseerimine / Prototüüpimine © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 11
Süntees ~~ Tükeldamine
Digitaalsüsteem = juhtosa + andmeosa + liides + mälusüsteem PE control C M PE control C M PE control C M PE control C M PE control C M © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 12
Esitusviisid
Algoritmid programmeerimiskeeled funktsionaalne tükeldamine algoritmi ja andmete täpsustamine riistvara kirjelduskeeled struktuursed, käitumuslikud ja sünteesitavad keeled plokk-diagrammid … ja nende sarnased StateChart, Behavioral FSM, jne.
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 13
Abstraktsed mudelid
Struktuurid naabrusmaatriks ahelaloend (netlist) lihtne esitada hierarhiat
1 1 1 1 1 0 0 1 1
n1 m1 p1 p6 p4 n2 n3 p2 p3 m2 p7 p5 m3 m1 m2 m3 n1 n2 n3 m2 m1 m3 Loogikavõrkgraafid struktuur + käitumine kombinatoorne sünkroonne © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 a b c a b c p=ac p q x y q=p+c x y 14
Abstraktsed mudelid
Automaadid
x1=a+b; x2=x1*c; x3=d+e; x4=x3*f; x=x2+x4;
Andmevoograafid otsene sõltuvus operatsioonide (ülesannete) vahel kontrollsõltuvused?
© Peeter Ellervee
c * a + b + x f d e + *
I207 - Digitaalloogika ja süsteemid - L18 15
Abstraktsed mudelid
DFG - Data-Flow Graph CFG - Control-Flow Graph CDFG - Control-and-Data-Flow Graph
nop
Hierarhia Kontrollsõltuvused call / return hargnemised tsüklid © Peeter Ellervee
* +
nop
*
br
I207 - Digitaalloogika ja süsteemid - L18
nop
*
nop
+
nop nop nop
16
Näiteülesanne
Valgusfoori kontroller vt. ka http://mini.li.ttu.ee/~lrv/tlc_xsa/
sidestreet_light highway_car highway_light
© Peeter Ellervee
sidestreet_car
I207 - Digitaalloogika ja süsteemid - L18 17
Vahendid
WebPACK (Xilinx, Inc., www.xilinx.com
) simulaator + süntesaator XSA-200 (XESS Corp., www.xess.com
) © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 18
VHDL-st skeemini
Ideest mudelini modelleeritav spetsifikatsioon käitumuslik VHDL Mudelist struktuurini struktuur register-siirete tasemel sünteesitav VHDL Struktuurist skeemini loogikaelemendid + ühendused sünteesi juhtimine Iteratsioonid!
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 19
Valgusfoori kontroller
Kiirtee ja kõrvaltee auto sensorid -- highway_car & sidestreet_car valusfoorid -- highway_light & sidestreet_light Tulede kombinatsioonid & lülitumiste järjekorrad kiirtee kõrvaltee kestus 1 roheline 2 vilkuv roheline 3 kollane 4 punane 5 punane 6 kollane punane punane kollane roheline piiramata 3 sek.
2 sek.
maksimaalselt 10 sek.
vilkuv roheline 3 sek.
kollane 2 sek.
Ooteajad: autole kõrvalteel - mitte üle 30 sekundi, kui kiirteel on autosid roheline kõrvalteele - 10 sekundit (pluss 3” vilkuvat rohelist) © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 20
Ideest mudelini
Modelleeritav spetsifikatsioon käitumuslik VHDL Liidese ja andmetüüpide deklareerimine abstraktsed andmetüübid Käitumusliku spetsifikatsiooni loomine kontrollvoog & keerukad ajakontrolli käsud Testkeskkonna loomine, simuleerimine lihtne testimine -- kiire, kuid ebapiisav...
põhjalik testimine -- keerukas ja aeglane...
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 21
Ideest mudelini
Andmetüübid (pkg-enum.vhd)
package TLC_data_types is -- Sensors type Sensor is (NoCar, Car); -- Lights type Light is (Red, Yellow, Green, GreenBlink); end TLC_data_types;
Olem (tlc-entity.vhd)
use work.TLC_data_types.all; entity TLC is port ( highway_car : in Sensor; sidestreet_car : in Sensor; highway_light : out Light := Red; sidestreet_light : out Light := Red ); end TLC;
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 22
Ideest mudelini
Kontrollvoog & ajakontrolli käsud
-- ...
-- Waiting for no more than 25 seconds ...
if highway_car = Car then wait until highway_car = NoCar for 25 sec; end if; -- ...
vt. tlc-bhv.vhd
Testimine kiire -- vali olem ja forsseeri signaalid [signals] sidestreet_car -> Edit > Force… raske kontrollida kriitilisi olukordi © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 23
Ideest mudelini
Testimine põhjalikum – testkeskkond fikseeritud autode saabumisjadaga (vt. tlc-qtst.vhd) universaalne – testkeskkond muudetava autode liikumisjadaga (vt. tlc-tst.vhd) Failid pkg-enum.vhd
cfg-[q]bhv.vhd
tlc-[q]tst.vhd
tlc-entity.vhd
tlc-bhv.vhd
(1) – pakett “TLC_data_types” (5) – konfiguratsioon (4) – testkeskkond (2) – olem “TLC” (3) – arhitektuur “BEHAVIOR” © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 24
Simuleerimine (Modelsim)
Andmed – loendustüüp © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 25
Mudelist struktuurini
Struktuur register-siirete tasemel sünteesitav VHDL (1) Riistvaralised andmetüübid loendusandmetüübid -> bititüübid (2) Käitumise täpsustamine #1 vilkuv roheline (3) Käitumise täpsustamine #2 taimer (2 Hz) ja loogika vilgutamiseks ajakontrollikäsud -> sünk.käsud+taimer (4) Sünteesitav VHDL (& struktuur) © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 26
Riistvaralised andmetüübid
Andmetüübid
-- Sensors -- Lights --
(pkg-bitv.vhd)
package TLC_data_types is subtype Sensor is bit; constant NoCar : Sensor := '0'; constant Car : Sensor := '1'; "red" - bit 0, i.e., the uppermost light - "yellow" - bit 1, i.e., the middle light - "green" - bit 2, i.e., the lowermost light subtype Light is BIT_VECTOR (0 to 2); constant Red : Light := "100"; constant Yellow : Light := "010"; constant Green : Light := "001"; constant GreenBlink : Light := "000"; end TLC_data_types;
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 27
Riistvaralised andmetüübid
Testimine identne esialgsega Failid pkg-bitv.vhd
cfg-[q]bhv.vhd
tlc-[q]tst.vhd
tlc-entity.vhd
tlc-bhv.vhd
(1) – pakett “TLC_data_types” (5) – konfiguratsioonid (4) – (2) – (3) – testkeskkonnad olem “TLC” arhitektuur “BEHAVIOR” Kõik uuesti kompileerida!
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 28
Simuleerimine (Modelsim)
Andmed – bit ja bit_vector © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 29
Käitumise täpsustamine #1
Rohelise tule vilkumine täpsustatud
highway_light<=GreenBlink; wait for 3 sec;
on asendatud tsükliga
for i in 1 to 6 loop highway_light <= GreenBlink; wait for 0.25 sec; highway_light <= Green; wait for 0.25 sec; end loop;
Uued failid cfg-bhv2.vhd
tlc-bhv2.vhd
© Peeter Ellervee – – konfiguratsioon (pikk test) arhitektuur “bhv_refined” I207 - Digitaalloogika ja süsteemid - L18 30
Simuleerimine (Modelsim)
Täpsustatud rohelise tule vilkumine © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 31
Käitumise täpsustamine #2
Esmane tükeldamine neljaks alamosaks: (1) Taimeri taktsignaal sagedusega 2 Hz (määratud rohelise tule vilkumissagedusega), kasutatav ka süsteemse taktina (2) ja (3) Sama-aegne protseduur vilkuvat roheliset tekitava kombinatoorse loogika jaoks (4) Kontrollvoog, kuhu on sisse toodud taktsignaal (timer) ja ajakontrolli käsud on asendatud sünkroniseerimiskäskude ja loenduri kombinatsiooniga Protseduur “WaitFor” asendamaks “wait for…” käske © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 32
Käitumise täpsustamine #2
Teisendusi
-- Waiting for no more than 25 seconds ...
if highway_car = Car then wait until highway_car = NoCar for 25 sec; end if;
on asendatud
-- Waiting for no more than 25 seconds ...
if highway_car = Car then for counter in 0 to 49 loop -- 25 seconds exit when highway_car = NoCar; wait on timer until timer='1'; end loop; end if;
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 33
Käitumise täpsustamine #2
Uued failid cfg-bhv-rtl.vhd
tlc-bhv-rtl.vhd
– konfiguratsioon (pikk test) – arhitektuur “bhv_rtl” Simuleerimine on oluliselt aeglasem Aeg vaja paikka panna –
run 400 sec
Kontrollvoole vastav protsess on põhimõtteliselt sünteesitav kõrgtasemesüntesaatori poolt Vajalikud võivad olla konkreetse sünteesivahendi iseärasustest tingitud muudatused © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 34
Simuleerimine (Modelsim)
Esmane struktuur + taktsignaalid © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 35
Sünteesitav VHDL
Struktuur esialgse tükeldamise täpsustus Täiendavad signaalid (nt. reset) Registersiirete tasemele vastav kirjeldus Sünteesitav enamike sünteesivahendite poolt (võib vajada pisitäpsustusi) nt. teisendus “integer range 0 to 63” -> “unsigned(5 downto 0)” (IEEE 1164) Kontrollvoog on asendatud automaadi ja loenduriga © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 36
Sünteesitav VHDL
Komponendid (1) Arhitektuur “RTL”, mis seob komponendid (fail “tlc-rtl.vhd”). Sünteesitav (RTL mõistes).
(2) Taktgeneraator (olem “clock(bhv)” failis “tlc-rtl.vhd”). Genereerib taimeri 2 Hz signaali, süsteemse taktsignaali (100 Hz) ja algnullimis signaali.
(3) Vilkuvat rohelist tekitav kombinatoorne loogika (olem “BlinkLights(bhv)” failis “tlc-rtl-blnk.vhd”).
Sünteesitav.
(4) Kontroller automaadi ja loendurina (olem “Controller(RTL)” failis “tlc-rtl-ctrl.vhd”). Sünteesitav.
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 37
Sünteesitav VHDL
BlinkLights highway Clock TLC Controller BlinkLights sidestreet
state highway_light_sgn sidestreet_light_sgn highway_light_new sidestreet_light_new next_state highway_car sidestreet_car reset timer clk
© Peeter Ellervee reg f-n
reset_counter
cnt
counter_out highway_light sidestreet_light
Controller(RTL)
I207 - Digitaalloogika ja süsteemid - L18 38
Sünteesitav VHDL
VHDL konstruktsioone automaadi olek
-- FSM state type state_type is (highway_green, highway_wait_25sec, highway_wait_25sec_loop, ...
sidestreet_yellow, sidestreet_yellow_loop); signal state, next_state: state_type;
abisignaalid register >komb.loogika: “highway_light_sgn” komb.loogika > register: “highway_light_new” taimeri väärtus & nullimine © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 39
Sünteesitav VHDL
VHDL konstruktsioone
next_state <= state; -- ...
case state is -- ...
-- Waiting for no more than 25 seconds ...
when highway_wait_25sec => if highway_car=NoCar then next_state <= highway_blink; end if; reset_counter <= '1'; next_state <= highway_wait_25sec_loop; when highway_wait_25sec_loop => if highway_car=NoCar or counter_out >= 50 then next_state <= highway_blink; end if; -- ...
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 40
Sünteesitav VHDL
Uued failid cfg-[q]rtl.vhd
tlc-rtl.vhd
tlc-rtl-blnk.vhd
tlc-rtl-ctrl.vhd
– – konfiguratsioonid arhitektuur “RTL” – vilkuv roheline [BinkLights(bhv)] – kontroller+taimer [Controller(RTL)] Simuleerimine on oluliselt aeglasem Aeg vaja paikka panna
run 50 sec run 400 sec
[konfiguratsioon “tlc-qrtl”] [konfiguratsioon “tlc-rtl”] © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 41
Simuleerimine (Modelsim)
Sünteesitav VHDL + kiire testpink © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 42
Süntees & prototüüpimine
Taktsignaal & taimer XSA plaadi taktigeneraator - 10 MHz 2 Hz genereerimine taktsignaalist 22-bitine loendur --> 4*2 20 --> 2,38 Hz
architecture behave of timer is signal count: std_logic_vector (21 downto 0); begin process begin wait on clk until clk='1'; count <= count + '1'; end process; blink <= To_Bit ( count (count'high) ); end behave;
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 43
Süntees & prototüüpimine
Väljaviikude määramine XSA plaadi piirangud Uued failid tlc-rtl-fpga.vhd
tlc-rtl-timer.vhd
– arhitektuur “RTL_fpga” – 2 Hz taimer [Timer(behave)] Etapid süntees (RTL kirjeldus --> CLB) paigaldus & trasseerimine FPGA konfiguratsiooni genereerimine 45 moodulit 768-st (5%) & 112 Mhz © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 44
WebPACK / ISE
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 45
FPGA sisu
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 46
FPGA detailsem sisu
© Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 47
Hilisemad muudatused
Täiustatud taimer 10 MHz / 5000000 ja 0,5 ne täitetegur (fail "tlc-rtl-timer2.vhd") Muudetud pakett "TLC_data_types“ kollase ja rohelise tule korraga põlemine (fail "pkg-bitv2.vhd") Muudetud kontroller 2 sek. vilkuv roheline, 3 sek. põlev kollane ja kollane põleb koos punasega enne rohelist (fail "tlc-rtl-ctrl2.vhd") © Peeter Ellervee I207 - Digitaalloogika ja süsteemid - L18 48