Mikrorendszerek felépítésének általános modellje Fehér Béla
Mikrorendszerek felépítésének általános modellje
Fehér Béla
Hardver lehetıségek • Régebben :
– 1-2 mikron CMOS technológia
– 50 – 100 mm2 felület
– 100000-300000 tranzisztor
– 20-50 MHz, 1-2 W
• Ma:– 0.1-0.03 mikron, 10-20 mm2 felület
– 5 -20 millió tranzisztor, 500-1000 MHz
FPGA fejlıdés
• 1985: Elsı FPGA példányok 1000 kapu
• 1990: XC4000 sorozat 10000-50000 kapu
• 2000: Virtex sorozat 1000000 kapu
• 2002: Virtex Pro legújabb 8000000 kapu
• 2009: Virtex 5, Virtex6 ??????
• A félvezetı technológia motorja
A probléma
• A tervezési olló egyre tágul– a technológia 5 év alatt 7-10 szeresre javul
– a rendelkezésre álló kapuszám több mint 50x
– a tervezésre fordítható idı folyamatosan csökken (évrıl-évre 20-25%), ez kb. 2x
– új verziók kiadása még gyorsabban
• KÖVETKEZTETÉS: Ma a tervezés 100x hatékonyabb?
Mi a megoldás?
• A (nyers) HW olcsó és elérhetı
• Hogyan használjuk ki?
• Hogyan tervezhetık hatékonyan ilyen komplexitású berendezések?
• Hogyan ellenırizhetı a mőködés?
• Hogyan lehet különbözı verziókat gyorsan, olcsón fejleszteni?
Példa az igényekre
• Képfeldolgozó rendszer (pl. tömörítés)– Folyamatos feldolgozás a bejövı adatokon
– Mintavételi sebesség 10 – 100 MHz
– Mintánként 1000-10000 mővelet
• Összesen 1010 – 1011 mővelet ( +, *, stb.)– Pl. 200MHz CPU-ból kell 50-500 db!!!
• ALAPVETİEN NEM ALKATRÉSZ GOND!
Rendszerterv variációk
• Adott tengernyi logikai kapu
• Tervezzünk funkcionálisan, alulról építkezve?– Milyen mélyrıl induljunk?
– Milyen korábbi eredmények használhatóak újra?
– Mi biztosítja az új rendszer helyes mőködését?
Tervezési lépések
• Az algoritmus és architektúra elemzése
• Kezdetben figyelembe veendı az összes alternatíva
• Folyamatos finomítás a paraméterek területén, választás az egyesített tulajdonságok alapján
Lehetséges opciók
• Tervezés adatfolyam modell alapján– Absztrakciós szint alacsony
– Alkalmazandó eszköz: bit szintő tervezést biztosító, konfigurálható áramkör ASIC/FPGA
• Tervezés mőveleti igények alapján– Byte/szó alapú ALU-k, ezek hálózata és
centralizált/decentralizált vezérlés
– Alkalmazandó eszköz: Byte granularitásuFPGA-k
Lehetséges opciók (2)
• Egyetlen nagyteljesítményő processzor– VLIW Very Long Instruction Word– Tipikusan mikroprogramozott, Harvard
felépítéső– Optimális jel és képfeldolgozásra– Superscalar processzor: általános célú
nagyteljesítményő feldolgozó
• Legfıbb elıny: Könnyő alkalmazás, hatékony fejlesztési támogatás (fordító)
Lehetséges opciók (3)
• Multiprocesszor hálózat– Nincs igazán gyıztes modell– Egyszintő mátrix elrendezés, azonos elemek– Hierarchikus hálózat master és slave
egységek
• Rendszer felépítés elsı közelítésben egyszerő, a gondok rejtve vannak– Kommunikáció, szinkronizáció, – Teherelosztás statikus, dinamikus
Flexibilitás - hatékonyság
Ellentmondó fogalmak
Hatékonyság
Flexibilitás
Dedikáltlogika
CPU
PR MEM
Teljesen HW
Konfigurál-ható HW
DSP+Szoftver
Általános Célú RISCProc.
CPUF1
F3
PR MEMCPU
MACADR
MEM
F2
Konfigurálható processzorok
• Alkalmazás függı paraméterek– esetlegesen adatméret (fixpontos
jelfeldolgozásnál 12, 16, 18, 24 bit)
– kivételkezelés közvetlenül, automatikusan (nincs feltételes elágazás, jitter a végrehajtási idıben)
– leginkább ismétlıdı, adatfolyam jellegőfeldolgozásra jók (pl. video, audio, hálózati csomagfeldolgozás)
Példa
• Egyszerő vektorszorzó• Z[i] = a*X[i] + b*Y[i] és i >>> 1
• Lehetıségek– Közvetlen SW, RISC processzoron
• Neumann struktúra, regiszter mőveletek
– DSP-szerő specializált SW• Harvard struktúra (MAC + MEM blokkok +
címlogika)
HW megvalósítás
• Felépítjük az áramkört– Nincs utasítás elıvétel
– Nincs regiszter töltés
– Közvetlen adatfolyam
– Esetleg a, b paraméterekre optimalizálás
Ábra
• Közvetlen leképezés interfész elemekkel
X[i]
* a
+
Y[i]
* b
Z[i]
Megvalósítás
• Az FPGA-k kínálják ezt a lehetıséget– Alacsonyszintő erıforrás hozzáférés
– Nagy komplexitás
• Tipikus módszer napjainkban– Algoritmus leírása HDL nyelven
– Szintézis, elhelyezés, letöltés
• Általában külsı memória szükséges– Input, output
FPGA CLB felépítés
• Alacsonyszintő logikai elem– Nem mőveleti szint, bár van rá támogatás
– 2 LUT + 2 FF
– A teljes áramkör ennek szimmetrikus ismétlése
– HUZALOZÁS
– Intelligens logikai szintézer, intelligens tervezı
– Többlépcsıs leképezés,
ASIC < - > FPGA
• Kb. egy nagyságrend eltérés
FUNKCIÓ
FPGArealizáció ASIC
ASIC < - > FPGA
• Programozhatóság/konfigurálhatóság ára– Nagyobb chipméret
– Nagyobb fogyasztás
– Kisebb mőködési frekvencia
• Programozhatóság/konfigurálhatóság elınye– Gyors fejlesztés, alacsony költség
– Javíthatóság, módosíthatóság
Rendszerszintő igények
• Feldolgozási feladatokra– Közvetlen adatfolyam leképezés optimális
– Kevés erıforrás, hatékony mőködés
– Aritmetikai – logikai – kommunikációs funkciók
• Vezérlési és management funkciók– Kisebb állapotgépek OK
– Néhány 10 állapotra strukturális vezérlık
Rendszerszintő feladatok
• Közvetlen igény belsı vezérlık megvalósítására
• Példa:– Önálló labor feladat 1994
– HIFI Audio tesztminta generátor 20-20K• Torzítás (Lineáris, intermodulációs, stb.)
• Jelgenerálás egyszerő DDS + ∆Σ konverter
• XC4005 + külsı A/D + LCD kijelzı + gombok
Tanulság 09.12.
• Tervezési folyamat– DDS Jelgenerátor OK
– A/D + Analóg kiegészítık OK
– Kezelıi felület ??????• Menürendszer összetettsége
– Fımenő + almenük + paraméterek tárolása
• Kijelzés komplexitása– Feliratok + poziciók
– XC4005 196 CLB ~ 5000 kapu
PicoBlaze alkalmazási példa
Napjaink
• Átlagos FPGA áramkörök:– Komplexitás kb. 100 – 300 ezer kapu
– Belsı memória blokkok 4k-16k bit, 6-12 db
– Órajel 100-200 MHz
• Lehetıség a belsı programvezérelt kontrollerek kialakítására
FPGA Soft Cores
• Lágy processzor mag– Teljes mértékben az általános erıforrások
felhasználására épül
– HDL RTL szintő leírásból, szintézis útján
– Az architektúra paraméterei fejlesztési idıben módosíthatók
• Memória méret
• Utasítás szerkezet
• I/O kiegészítı funkciók
Tipikus példák
• Oktatási mintapéldák– GNOME (4 bit adat), DWARF (8 bit)
• Egyedi, nyílt kódú fejlesztések– MicroRISC, MiniRISC, OpenRISC, > 25 db
• Valódi, szabvány processzorok verziói– 8 bit, 8051, PIC16xx, Z80
– 16 bit ????
– 32 bit MIPS, DLX
Gyári processzor struktúrák
• Altera Nios, újabb verzió Nios II– Két változat: 16 és 32 bites architektúra
– 50-70 MHz mőködési sebesség
– Speciális busz struktúra (Avalon)
– Teljes HW és SW támogatás• Konfigurációs minták
• Kiegészítı rendszer elemek
• Fordítási eszközök
• Debug és hibakeresési eszközök
Gyári processzor struktúrák
• Xilinx MicroBlaze– 32 bites architektúra
– 100-150 MHz sebesség
– IBM Core Connect busz struktúra (OPB)
– Teljes HW és SW támogatás• Konfigurációs minták
• Kiegészítı rendszer elemek
• Fordítási eszközök
• Debug és hibakeresési eszközök
Felsı kategória
• FPGA-ba ágyazott valódi processzorok
• A legnépszerőbb típusok:– ARM, MIPS, PowerPC
• Elıny:– Garantált viselkedés és teljesítmény
– Szabvány, eredeti áramkör, a szokásos konfigurációkban
– Nem használ FPGA erıforrást
Néhány eszköz áttekintése
• Xilinx PicoBlaze– 1994 Dynamic Microcontroller (XC4000)– 2000 KCPSM (Virtex)– 2002 PicoBlaze (Virtex)– 2003 PicoBlaze3 (Spartan3, VirtexII)
• Tervezési cél:– Általános célú programozható vezérlı (PSM)– Egyszerőbb alkalmazásokhoz flexibilis
komponens, minimális erıforrásigénnyel
PicoBlaze alkalmazási példa
Interfész paraméterek
Jellemzık
• Programmemória– Utasításformátum 16 bit, laza kódolás
– Maximum 256 utasításnyi program méret
– Megvalósítás: belsı blokk memória (4096 bit)
– Lehetne CLB ROM is, de akkor precízebb kódolás kellene
– Szinkron memória, 1 extra pipe-line fokozat (PC -> cím -> ROM -> utasításkód)
Utasításkészlet
• 49 utasítás, szükséges funkciók lefedve– Aritmetikai (+, -), logikai (&, #, $)
– Regiszter kezelı (shift, load)
– Be- kimeneti adatmozgató
– Programvezérlés (ugrás, szubrutin hívás) normál és feltételes módban
– Megszakítás kezelés (engedélyezés/tiltás, visszatérés)
Utasításformátum
• Fix 16 bit hosszúság, egyszerő dekódolás
Interrupt és visszatérés kód
UtasításcímVezérlés utasítás kód
0R(ind.cím)Reg_adrI/O kód
Portcím (utasításból)Reg_adrI/O kód
kód0Reg_adrSHR pref
kódReg_2Reg_1A / L pref
Konstans értékReg_adrA / L kód
Adatstruktúra• Egyszerő, optimalizált belsı felépítés
Regiszterkészlet
• 16 belsı 8 bites regiszter
• Szinkron CLB dual port LUT RAM– 2 olvasás / 1 írás port
– Mőveleti operandus és eredmény helye
– Indirekt cím forrása I/O port mővelethez
– Azonos használat, nincs akkumulátor
Adatmemória
• Nincs adatmemória– nem is kell, nem lenne gazdaságosan értelme
– a belsı regiszterkészlet használható
– az I/O portok rovására külsı regiszterek használhatóak (lényegében azonos módon)
• Szubrutinhívások, megszakítás??– Független HW stack, 16x8 méret
– Maximum 16 szint, nincs ellenırzés,
Utasítások végrehajtása
• Minden utasítás 2 órajel ciklus, függetlenül a funkciójától
• Determinisztikus mőködés, idızítés vezérelt alkalmazásokhoz is
• Input portok csak szinkronizálás után használhatóak MINT MINDEN MÁS RENDSZERBEN!!!
Megszakítás kiszolgálás
• Gyors reakcióhoz elengedhetetlen
• Alaphelyzetben tiltott
• Megszakítás elfogadás késleltetése – INT bemenet mintavételezése (max. 2 ciklus)
– Ugrás a vektorcímre, fix 0xFF ( 2 ciklus)
– Ugrás a kiszolgáló rutin belépési pontjára, tetszıleges helyen, 0x01- 0xFE címre
– Végrehajtás, visszatérés
– Interrupt (újra) engedélyezése
Használat
• A rendszerbe illesztés a be- és kimeneti portokkal történik – Input: adatok és feltételek
– Output: adatok és vezérlı ill. engedélyezıjelek
• WR és RD idızítı pulzusok
• Nincs busz, nincs semmi komplikált illesztési probléma
Idızítési viszonyok• Bemenet olvasása
• Kimenet irása
Használat (2)
• Áramköri szempontból 2 extra modul– A vezérlı egység (35 CLB)
– A program memória, mint blokk RAM (1 blokk)
– A bemeneti és kimeneti regiszterek részben a vezérlı, részben a céláramkör részei (?? CLB)
– A két modul EDIF formátumban adott• Ezek mint fekete-doboz illeszthetık be a tervbe
• A vezérlı fix konfigurációjú, két verzióban: egyszerőés elhelyezés paraméterekkel (RPM)
Használat (3) 09. 16.
• A programmemória modul EDIF filememória tartalma alkalmazás specifikus
• Az assembler automatikusan generálja a blokkot inicializáló EDIF file-t.
• Ezt a két modult kell a teljes tervbe integrálni
• Az EDIF formátum miatt szimuláció csak a teljes szintézis – elhelyezés - huzalozás után lehetséges
Szoftver támogatás• Egyszerő vezérlı, nem túl bonyolult
alkalmazások• Kódfejlesztés -> assembler szinten• Utasítás mnemonikok (LOAD, ADD, CALL)
regiszter azonosítók (S0, S1,…SE, SF)• Konstans deklarációk
– CONSTANT MAX_LIMIT, 1– CONSTANT STATUS_REG, 13
• Címkék: START, CIKLUS, KIIR
MNEMONIKOK (1)
• Arithmetic Group
• 4xkk ADD sX,kk• 5xkk ADDCY sX,kk• 6xkk SUB sX,kk• 7xkk SUBCY sX,kk• Cxy4 ADD sX,sY• Cxy5 ADDCY sX,sY• Cxy6 SUB sX,sY• Cxy7 SUBCY sX,sY
• Logical Group
• 0xkk LOAD sX,kk• 1xkk AND sX,kk• 2xkk OR sX,kk• 3xkk XOR sX,kk• Cxy0 LOAD sX,sY• Cxy1 AND sX,sY• Cxy2 OR sX,sY• Cxy3 XOR sX,sY
MNEMONIKOK (2)
• Shift and Rotate Group
• Dx0E SR0 sX• Dx0F SR1 sX• Dx0A SRX sX• Dx08 SRA sX• Dx0C RR sX• Dx06 SL0 sX• Dx07 SL1 sX• Dx04 SLX sX• Dx00 SLA sX• Dx02 RL sX
• Input/Output Group
• Axpp INPUT sX,pp• Bxy0 INPUT sX,(sY)• Expp OUTPUT sX,pp• Fxy0 OUTPUT sX,(sY)
• Interrupt Group
• 80F0 RETURNI ENABLE• 80D0 RETURNI DISABLE• 8030 ENABLE INTERRUPT• 8010 DISABLE INTERRUPT
MNEMONIKOK (3)
• Program Control Group
• 81aa JUMP aa• 91aa JUMP Z,aa• 95aa JUMP NZ,aa• 99aa JUMP C,aa• 9Daa JUMP NC,aa• 83aa CALL aa• 93aa CALL Z,aa• 97aa CALL NZ,aa• 9Baa CALL C,aa• 9Faa CALL NC,aa
• 8080 RETURN• 9080 RETURN Z• 9480 RETURN NZ• 9880 RETURN C• 9C80 RETURN NC
Assembler minta (1)• ;program example for PSMDEBUG• ;• LOAD sF,80 ;walking '1' register• LOAD sB,00 ;reset accumulator lower byte• LOAD sC,00 ;reset accumulator upper byte• ENABLE INTERRUPT• ;main program to produce walking '1'• main: OUTPUT sF,01• ;software delay loop• LOAD s1,43• slow_loop: LOAD s0,FF• fast_loop: SUB s0,01• JUMP NZ,fast_loop
SUB s1,01• JUMP NZ,slow_loop
Assembler minta (2)• ;walk the '1' to the right• RR sF• JUMP main• ;interrupt service routine• ADDRESS D0• int_routine: INPUT sA,10 ;read value• ADD sB,sA ;16 bit accumulation• ADDCY sC,00• OUTPUT sB,20 ;output 16 bit value• OUTPUT sC,40• RETURNI ENABLE• ;interrupt vector• ADDRESS FF• JUMP int_routine
A program használata
Fordítás eredménye• KCPSMBLE log file for program 'debug.psm'.• Generated by KCPSMBLE version 1.00.• Ken Chapman (Xilinx Ltd) 1999.• Addr Code• 00 ;program example for PSMDEBUG• 00 ;• 00 0F80 LOAD sF,80 ;walking '1' register• 01 0B00 LOAD sB,00 ;reset accumulator lower byte• 02 0C00 LOAD sC,00 ;reset accumulator upper byte• 03 8030 ENABLE INTERRUPT• 04 ;main program to produce walking '1'• 04 EF01 main: OUTPUT sF,01• 05 ;software delay loop• 05 0143 LOAD s1,43• 06 00FF slow_loop: LOAD s0,FF• 07 6001 fast_loop: SUB s0,01• 08 9507 JUMP NZ,fast_loop• 09 6101 SUB s1,01• 0A 9506 JUMP NZ,slow_loop
Kód beillesztése az EDIF file
• Kód beillesztése az EDIF file-ba• ……..• (direction OUTPUT))• (port (rename INSTRUCTION9 "INSTRUCTION<9>")• (direction OUTPUT)))• (contents• (instance (rename &_I17 "$I17")• (viewRef net • (cellRef RAMB4_S16 ))• (property (rename &_EXPORT "$EXPORT") (string "NO"))• (property INIT_00 (string
"0000000000008104DF0C950661019507600100FF0143EF0180300C000B000F80"))• (property INIT_01 (string
"0000000000000000000000000000000000000000000000000000000000000000"))• (property INIT_02 (string
"0000000000000000000000000000000000000000000000000000000000000000"))• ……….
Elızetes teszt • Szoftver szimulátor
Mit segít a szimulátor?
• Csak a program kód végrehajtását mutatja
• A környezet természetesen hiányzik
• Input adatok manuálisan, nem tud file-bóldolgozni (jó lenne!)
• Interrupt manuális, ez OK, lehetne persze idızített, vagy utasításciklus szám
Egy lehetséges alkalmazási példa
• PROFIBUS Slave eszköz
• PROFIBUS: egyik legelterjedtebb terepbusz
• Soros busz topológia, esetleges ismétlıkkel fa struktúra (max. 3 ismétlı)
• Adatátviteli sebesség 9,6kb/s …..12 Mb/s
• Fizikai közeg: RS 485, árnyékolt csavart érpár
• Maximális állomásszám: 127, szegmensenként 32 (az ismétlı is számít!)
A PROFIBUS család felépítése
• 3 változat : DP, PA, FMS
• Kétfajta állomás: Master + Slave
• Masterek: – Logikai győrő a buszon,
– vezérjel továbbadásos buszhozzáférés elosztás
– Egyenrangú partnerek
– DPMaster2 diagnosztikára és paraméterezésre
• Garantált vezérlıjel körülfordulási idı
PROFIBUS család
• Master – Slave kapcsolat– A vezérlıjelet birtokló állomás aktív
– A Slave-k mindig passzívak
– Egy-egy master-hez rendeltek (konfiguráció)
– Kommunikáció üzeneteken keresztül
– 4 adatkapcsolat• SDA Send Data with Acknowledge
• SDR Send and Request Data with reply
• SDN Send Data with No acknowledge
• CSRD Cyclic SRD
PROFIBUS adatátvitel
• Alapvetıen egyszerő aszinkron adatátvitel
• 4 fajta adatkeret + 1 rövid üzenet
• A keretek karakterekbıl épülnek fel
• A karakterek: 11 bites UART karakterek– START+8 adatbit+Paritás+ STOP
– START=”0”, STOP=”1”, paritás páros, LSB first,
– Karakterek között nincs szünet, back-to-backátvitel
Keretformátumok (1)
• Fix hosszúság
– SD1 = Start Delimiter 10H
– DA, SA Destination and Source Address
– FC Frame Control
– FCS Frame Check Sequence
– ED End Delimiter
• Short Acknowledment E5H
EDFCSFCSADASD1
SC
Keretformátumok (2)
• Fix hosszú, adatmezıvel
• Adatmezı hossza 8 karakter
• SD3 = A2H
EDFCSDATAFCSADASD3
Keretformátumok (3)
• Változó hosszúságú keret
• Maximum 256 byte mindennel együtt
• SD2 = 68H
• LE, LEr redundáns hosszinformáció
EDFCSDATASADASD2LErLESD2
Keretformátumok (4)
• Vezérlıjel
• SD4 = DCH
• Csak a Master-ek használják
SADASD4
Adatbiztonság
• A keretek kezdı karakterei 4 Hammingtávolságú értékek és eltolásra is biztonságos
• A FCS ellenırzı összeget a DA, SA, FC és esetleges DATA mezıkre kell számolni
• A vevık ellenırzik korrekt karaktereket, kereteket és idıréseket
• Keretek elıtt - között a busz inaktív – Min. 33 ill. 11 bitidı, maximum a válaszidı
Mi a feladat ?
• PROFIBUS Slave funkció
• Passzív állomás– Busz figyelése, forgalom elemzése, (esetleg
buszsebesség automatikus detektálása)
– Állomás cím fogadása, ha konfigurálható(a default 127-es címen)
– Keretek vétele, ellenırzése adatbiztonságra, (értelmezése), címzés esetén válasz
– Válasz lehet nyugtázás vagy valódi válaszkeret
Mi a feladat ?
• PROFIBUS mőködés fontos jellemzıje– Buszsebesség / busz kihasználtság javítása– Ezért a gyors válaszadásra optimalizált– Slave eszközök válaszoljanak/hatnak azonnal
• Nyugtázás + nincs kész adat• Elıre elkészített válaszkeretek
– Ciklikus lekérdezés, a Master addig ismétel, amíg nincs teljes válasz
– Kommunikáció un. Hozzáférési pontokon keresztül (SAP) max. 63, min. 9
Slave funkcionális egységek
• UART adó / vevı– Fix adatformátum, konfigurálható bitsebesség
– Esetleg redundáns vevı, az átviteli hibák által okozott kiesés csökkentésére
– Idızítı egységek (Watchdog, válaszidı, szünetek, stb.) Busz sebességfüggı
– Keret feldolgozó és ütemezı
– Adat mozgató
Blokkvázlat• A tervezett HW blokkvázlat
UART RX
UART TX
TIMERS
CONT-ROL
MEM
IF
BUSZ
Fı paraméterek
• Általános követelmények– TX, RX hardverben támogatott
– Paritás, FCS on-line generálás ill. ellenırzés
– 12MHz mőködés, gyors válaszidı
– Egyszerő puffer mechanizmus• Blokk RAM használata (4096 bit => 512 byte)
• 1 db RX/TX puffer pár, 2 kellene (1 aktív + 1 tartalék)
• Mindig az aktív használt, kivéve a torlódást– (TRT idı múlva jön a következı üzenet, általában)
Puffer használat
• Master ismétli az üzenetet, amíg nem kap érvényes választ– A vett üzenetek vétel közben ellenırizhetık,
”egymásra” másolhatók
– A válasz eközben elıkészíthetı (Mi van a beírással?)
– Ha esetleg másik Master küld (DPM2) üzenetet, (Bármilyen gyorsan!!), akkor az mehet a tartalék pufferbe
Puffer használat
• Blokk RAM Dual port struktúra
Blokk RAM4096 bit
2x256 byte2 db RXpuffer
Blokk RAM4096 bit
2x256 byte2 db TXpuffer
SYSTEM
BUSZ
Puffer használat
• Írás/olvasás függetlenül, két portról
Puffer használat
• Az aktív TX puffer elsı byte-ja SC-t tartalmaz – Azonnal visszaküldhetı (pozitív nyugtázás SDA-ra,
negatív nyugtázás SDR-re)
– Kivéve a Státusz lekérdezést, ekkor egy szabványos (valódi információt tartalmazó) nyugtázás kell
– Ezt össze kell állítani szoftverbıl (SD1, DA, SA, ED ismert, FC= 00 00 0000, FCS számolandó)
EDFCSFCSADASD1
Mőködés• A SYSTEM ellenırzi a mőködést, beállítja az
alapvetı paramétereket (buszsebesség, állomás cím, idızítések), engedélyezi a busz figyelését
• A PicoBlaze a parancsregiszter engedélyezése alapján indítja vételt (figyelést)
• Indítja az idızítıket: Szoftver + hardver– Rövid, busz szinkron idık -> HW
• RIT Responder Idle Time (11T), (Slave válasz szünetidı)• SYN Syncronisation Timer (33T), (Master szünetidı, nem kell)• SIT Synchron Interval Time (11385T) (Egy üzenet 2816T)
– Hosszabb, általános idızítık -> SW• TOT Time Out Timer (n * TSL, Slot timer, rendszer paraméter)• TSDR maximum Responser Station Delay Timer (1 .. 65535T)
Vétel
• Karakter vétel -> HW UART RX – 4x mintavételi frekvencia, esetleg redundáns
mintavétel – Vételi mód azonnali jelzése (START bit)– Párhuzamos kimenet (8 bit adat + 2 státusz)– FCS folyamatos számolása
• Ha hiba, vétel leáll, idızítık újraindulnak• Vett karakterek ellenırzése és másolása a
puffer RAM vételi részébe
Vételi algoritmus
• 12Mb/s-on 1bitidı 83.3ns, 1 karakter idı 916ns
– PicoBlaze max. 70MHz, 2 órajelciklus/utasítás• 28.5 ns / instruction -> 32 utasítás / karakter
• Talán jobb a 48 MHz, kvázi szinkron mőködés– Nem kell az aszinkron idızítés miatt újramintavételezni
• Ezzel már csak 22 utasítás / karakter
– 3 üzemmód, idıben elkülönül egymástól• Szünet, vétel, adás
Keretek
EDFCSFCSADASD1
EDFCSDATAFCSADASD3
EDFCSDATASADASD2LErLESD2
SADASD4 SC
Vételi algoritmusEgyszerősített ábra
NEW CH
START
SD2
LEr=LE
SD1,3LE store
LE=f(SD1,3)
DA=ADR
SA = CM
DATA -> MEM
LE = 0
FCS = FCS
ED
SA = DPM2
IDL TMR?
RX OK
Vétel részletek
• Teljes vételi kód kb. 100 utasítás– Kissé sok, nem hatékony
– Felesleges adatmozgatások, rossz feltétel tesztelés
– INPUT használat nehézkes, OUTPUT írás OK
– Adás kb. ugyanennyi, ha közben ott is tesztelünk (ne menjen ki hibás üzenet)
– Programmemória kevés
– Utasítások lehetnének jobbak
– Státusz lekérdezés felismerése nincs benne
Egyebek
• SW idızítık, (timerek) kezelése– Több bájtos regiszterek, ADDCY/SUBCY
mővelet
– Megfelelı idıpont megkeresése, nehogy az adminisztráció miatt lemaradjunk valamirıl
– Rövid, HW idızítık lekérdezése• Idle Timer 11 bitidı
• SIT Timer 11385 bitidı
Egyebek
• Adatcsere szinkronizáció a SYSTEM-mel– Folyamatos hand-shake kapcsolat– Igen, de a busz aszinkron, nem látható elıre
mikor fog újra RX ill. ezután TX fázis következni
– Javaslat: TX végén jelzés és TRT (TokenRotation Time, teljes buszlekérdezés) idı alatt minden tevékenység elvégzése
• Válasz beírása az adó pufferbe
• Vezérlı regiszter struktúra
Picoblaze2 PicoBlaze3
• Spartan2, Virtex
• 256 utasítás
• 16 regiszter
• HW Stack 16 szintő
• Méret 76 slice
• Utasítás 16 bites
• Spartan3,Virtex 2
• 1024 utasítás
• 16 regiszter + 64 tároló
• HW Stack 32 szintő
• Méret 96 slice
• Utasítás 18 bites
• Új utasítások: TEST, COMPARE, PARITY