480 likes | 673 Views
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.
E N D
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. I207 - Digitaalloogika ja -süsteemid - L18
Süsteemi- disain Loogika- disain Füüsikalise taseme disain 40 60 70 < 1979 Skeemi sisestus Paigaldus ja trasseerimine Simuleerimine 30 30 30 50 40 2 2 2 2 2 ~ 1983 Hierarhia, generaatorid tehnoloogia suutlikkus 1986 transistori kristallil Loogikasüntees 1988-92 Kõrgtasemesüntees / Süsteemitasemesüntees disaineri tootlikkus 1992-95 10 Spetsialiseeritud kõrgtasemesüntees inimkuud / 20 000 l.lüli aeg ~1996-... täna 3 Automatiseerimine • … ja formaliseerimine • Tootlikkuse puudujääk • productivity gap • 58% ja 21% aastas I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
Süsteemi tase Algoritmi tase süntees Käitumuslik mõõde Struktuurne mõõde Register-siirete tase analüüs süsteemi spetsifikatsioon CPU, mälu Loogika tase täpsustamine algoritm protsessor, alamsüsteem register-siirete kirjeldus ALU, register, MUX Skeemi tase loogika-avaldised loogikalüli, triger optimeerimine diferentsiaalvõrrandid transistor abstraheerimine ristkülik / polügon genereerimine std.element / alam-element makro-element ekstraheerimine plokk / kiip kiip / trükkplaat Füüsikaline mõõde Sünteesi tasemed I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
Sünteesi võlud • Automatiseerimine võimaldab • vähendada projekteerimiskulusid • kiirendada projekteerimist • uusimate tehnoloogiate kasutamist • formaliseeritus • rohkem võimalikke lahendusvariante • vähem vigu projekteerimisel I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
“Ränikompileerimine” • Kõrgtaseme süntees • sisendiks riistvara kirjelduskeel • väljundiks operatsioonide järjestus • (mikro)programm • Tarkvara süntees (kompileerimine) • sisendiks kõrgtaseme keel • väljundiks operatsioonide järjestus • (assembler) programm • väljundiks mooduli arhitektuur I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
control control control control control PE PE PE PE PE M M M M M C C C C C Süntees ~~ Tükeldamine • Digitaalsüsteem = juhtosa + andmeosa + liides + mälusüsteem I207 - Digitaalloogika ja -süsteemid - L18
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. I207 - Digitaalloogika ja -süsteemid - L18
n1 p m2 a p2 x p3 b n2 p1 y m1 p4 c q p6 n3 p5 m3 p7 n1 m1 1 1 1 1 1 0 0 1 1 m1 m3 m2 m2 n2 n3 m3 a p=ac x b q=p+c y c Abstraktsed mudelid • Struktuurid • naabrusmaatriks • ahelaloend (netlist) • lihtne esitada hierarhiat • Loogikavõrkgraafid • struktuur + käitumine • kombinatoorne • sünkroonne I207 - Digitaalloogika ja -süsteemid - L18
a b d e c f x + + + * * Abstraktsed mudelid • Automaadid • Andmevoograafid • otsene sõltuvus operatsioonide (ülesannete) vahel • kontrollsõltuvused? x1=a+b; x2=x1*c; x3=d+e; x4=x3*f; x=x2+x4; I207 - Digitaalloogika ja -süsteemid - L18
br nop nop nop nop nop nop nop * * * + + Abstraktsed mudelid • DFG - Data-Flow Graph • CFG - Control-Flow Graph • CDFG - Control-and-Data-Flow Graph • Hierarhia • Kontrollsõltuvused • call / return • hargnemised • tsüklid I207 - Digitaalloogika ja -süsteemid - L18
Näiteülesanne • Valgusfoori kontroller • vt. ka http://mini.li.ttu.ee/~lrv/tlc_xsa/ sidestreet_light highway_car highway_light sidestreet_car I207 - Digitaalloogika ja -süsteemid - L18
Vahendid • WebPACK (Xilinx, Inc., www.xilinx.com) • simulaator + süntesaator • XSA-200 (XESS Corp., www.xess.com) I207 - Digitaalloogika ja -süsteemid - L18
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! I207 - Digitaalloogika ja -süsteemid - L18
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 punane piiramata 2 vilkuv roheline punane 3 sek. 3 kollane kollane 2 sek. 4 punane roheline maksimaalselt 10 sek. 5 punane vilkuv roheline 3 sek. 6 kollane kollane 2 sek. • Ooteajad: • autole kõrvalteel - mitte üle 30 sekundi, kui kiirteel on autosid • roheline kõrvalteele - 10 sekundit (pluss 3” vilkuvat rohelist) I207 - Digitaalloogika ja -süsteemid - L18
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... I207 - Digitaalloogika ja -süsteemid - L18
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; I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
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 (1) – pakett “TLC_data_types” • cfg-[q]bhv.vhd (5) – konfiguratsioon • tlc-[q]tst.vhd (4) – testkeskkond • tlc-entity.vhd (2) – olem “TLC” • tlc-bhv.vhd (3) – arhitektuur “BEHAVIOR” I207 - Digitaalloogika ja -süsteemid - L18
Simuleerimine (Modelsim) • Andmed – loendustüüp I207 - Digitaalloogika ja -süsteemid - L18
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) I207 - Digitaalloogika ja -süsteemid - L18
Riistvaralised andmetüübid • Andmetüübid (pkg-bitv.vhd) package TLC_data_types is -- Sensors subtype Sensor is bit; constant NoCar : Sensor := '0'; constant Car : Sensor := '1'; -- Lights -- "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; I207 - Digitaalloogika ja -süsteemid - L18
Riistvaralised andmetüübid • Testimine identne esialgsega • Failid • pkg-bitv.vhd (1) – pakett “TLC_data_types” • cfg-[q]bhv.vhd (5) – konfiguratsioonid • tlc-[q]tst.vhd (4) – testkeskkonnad • tlc-entity.vhd (2) – olem “TLC” • tlc-bhv.vhd (3) – arhitektuur “BEHAVIOR” • Kõik uuesti kompileerida! I207 - Digitaalloogika ja -süsteemid - L18
Simuleerimine (Modelsim) • Andmed – bit ja bit_vector I207 - Digitaalloogika ja -süsteemid - L18
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 – konfiguratsioon (pikk test) • tlc-bhv2.vhd – arhitektuur “bhv_refined” I207 - Digitaalloogika ja -süsteemid - L18
Simuleerimine (Modelsim) • Täpsustatud rohelise tule vilkumine I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
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; I207 - Digitaalloogika ja -süsteemid - L18
Käitumise täpsustamine #2 • Uued failid • cfg-bhv-rtl.vhd – konfiguratsioon (pikk test) • tlc-bhv-rtl.vhd – 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 I207 - Digitaalloogika ja -süsteemid - L18
Simuleerimine (Modelsim) • Esmane struktuur + taktsignaalid I207 - Digitaalloogika ja -süsteemid - L18
Sünteesitav VHDL • 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) • Struktuur • esialgse tükeldamise täpsustus • Täiendavad signaalid (nt. reset) • Kontrollvoog on asendatud automaadi ja loenduriga I207 - Digitaalloogika ja -süsteemid - L18
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. I207 - Digitaalloogika ja -süsteemid - L18
state highway_light_sgn sidestreet_light_sgn highway_light_new sidestreet_light_new next_state BlinkLights highway Clock Controller BlinkLights sidestreet highway_car sidestreet_car reset cnt reg f-n TLC highway_light sidestreet_light timer reset_counter counter_out clk Controller(RTL) Sünteesitav VHDL I207 - Digitaalloogika ja -süsteemid - L18
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 I207 - Digitaalloogika ja -süsteemid - L18
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; -- ... I207 - Digitaalloogika ja -süsteemid - L18
Sünteesitav VHDL • Uued failid • cfg-[q]rtl.vhd – konfiguratsioonid • tlc-rtl.vhd – arhitektuur “RTL” • tlc-rtl-blnk.vhd – vilkuv roheline [BinkLights(bhv)] • tlc-rtl-ctrl.vhd – kontroller+taimer [Controller(RTL)] • Simuleerimine on oluliselt aeglasem • Aeg vaja paikka panna • run 50 sec [konfiguratsioon “tlc-qrtl”] • run 400 sec [konfiguratsioon “tlc-rtl”] I207 - Digitaalloogika ja -süsteemid - L18
Simuleerimine (Modelsim) • Sünteesitav VHDL + kiire testpink I207 - Digitaalloogika ja -süsteemid - L18
Süntees & prototüüpimine • Taktsignaal & taimer • XSA plaadi taktigeneraator - 10 MHz • 2 Hz genereerimine taktsignaalist • 22-bitine loendur --> 4*220 --> 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; I207 - Digitaalloogika ja -süsteemid - L18
Süntees & prototüüpimine • Väljaviikude määramine • XSA plaadi piirangud • Uued failid • tlc-rtl-fpga.vhd – arhitektuur “RTL_fpga” • tlc-rtl-timer.vhd – 2 Hz taimer [Timer(behave)] • Etapid • süntees (RTL kirjeldus --> CLB) • paigaldus & trasseerimine • FPGA konfiguratsiooni genereerimine • 45 moodulit 768-st (5%) & 112 Mhz I207 - Digitaalloogika ja -süsteemid - L18
WebPACK / ISE I207 - Digitaalloogika ja -süsteemid - L18
FPGA sisu I207 - Digitaalloogika ja -süsteemid - L18
FPGA detailsem sisu I207 - Digitaalloogika ja -süsteemid - L18
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") I207 - Digitaalloogika ja -süsteemid - L18