Digitaalsüsteemide automaatprojekteerimine  J.F. Wakerly “Digital Design: Principles and Practices” - 1.5, 1.8-12  L18.

Download Report

Transcript 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