eské vysoké uení technické v Praze Fakulta elektrotechnická
Diplomová práce Pattern generátor
2008
Lukáš Mitáek
Anotace Tato diplomová práce se zabývá návrhem pattern generátoru a jeho realizací, s tím také souvisejícím rozborem možností a zpsob ešení hardwaru a implementace ídicích ásti. Rozbor návrhu probíhá hlavn se zetelem na frekvenci výstupních vektor pattern generátoru, potu jeho výstupních kanál, kapacity pamti a možnosti komprimace generovaných vektor.
Abstract This thesis concerns a pattern generator design and realization, an analysis of hardware solutions and possibilities of control functions implementation. The design analysis is especially provided regarding to maximal output frequency, bit-width of output pattern and capacity of internal memory. There is also discussed a way of data compression.
estné prohlášení Prohlašuji, že jsem zadanou diplomovou práci zpracoval samostatn a používal jsem literaturu v této diplomové práci uvedenou. Dále prohlašuji, že nemám námitek pro pjování nebo zveejování mé diplomové práce nebo jejich ástí a využití výsledk této diplomové práce VUT – Fakultou elektrotechnickou se souhlasem katedry mení.
Datum:.............................
Podpis diplomanta: ................................
Tímto bych chtl podkovat své mamince za její vytrvalou podporu bhem mého studia, a dále pak panu Ing. Jiímu Novákovi, Ph.D. za cenné rady a pipomínky pi vzniku této práce.
Obsah 1
Úvod ................................................................................................................................... 8
2
Teoretický úvod................................................................................................................ 10 2.1
Komunikaní rozhraní USB........................................................................................ 10
2.2
Hradlová pole FPGA................................................................................................... 15
3
Rozbor ešení.................................................................................................................... 24 3.1
Realizace s FPGA ....................................................................................................... 24
3.2
Realizace s FPGA a vnjší pamtí .............................................................................. 27
3.3
ízení toku vektor..................................................................................................... 30
3.4
Realizace výstupních budi....................................................................................... 33
3.5
Realizace komunikace USB........................................................................................ 35
3.6
Shrnutí rozboru ešení................................................................................................. 41
4
Hardwarové ešení............................................................................................................ 42 4.1
Blokové schéma .......................................................................................................... 42
4.2
ídicí a transportní FPGA ......................................................................................... 43
4.3
RAM ........................................................................................................................... 45
4.4
FTDI USB................................................................................................................... 47
4.5
Výstupní blok.............................................................................................................. 48
5
Implementace FPGA ........................................................................................................ 53 5.1
Implementace komunikace s FTDI............................................................................. 53
5.2
Komunikaní protokol ................................................................................................ 54
5.3
Režimy generování výstupních vektor...................................................................... 57
5.4
Píkazy a instrukce...................................................................................................... 60
5.5
ízení transportního FPGA......................................................................................... 62
6
Software ........................................................................................................................... 64
7
Výsledné parametry.......................................................................................................... 65 7.1
Obecné parametry pístroje......................................................................................... 65
7.2
Parametry výstupních obvod..................................................................................... 65
8
Závr................................................................................................................................. 70
9
Seznam použité literatury................................................................................................. 71
10
Píloha.............................................................................................................................. 72
Seznam tabulek...................................................................................................................... 72 Seznam obrázk..................................................................................................................... 73 Deska plošného spoje ............................................................................................................ 74 Generované prbhy.............................................................................................................. 77
-7-
1 Úvod
Pattern generátor
1 Úvod Název pattern generátor zahrnuje více pojm a princip, které s logickým pattern generátorem, jímž se zabývá tato práce, souvisí jen vzdálen. V anglické terminologii je tímto názvem velmi asto oznaen nástroj pro vytváení dvourozmrných obrazc, jako nap. fraktálních obrazc, masek pro výrobu plošných spoj, apod. Pekladem samotného anglického pojmu pattern do eštiny je slovo vzor, obrazec nebo také forma. Proto není nijak pekvapující, když je tímto pojmem oznaen také nástroj pro generování binárních vektor, jehož úelem je testování elektronických íslicových zaízení. Pattern generátor je pístroj, který se pímo podílí na diagnostice íslicových blok zaízení, podobn jako se generátor analogových signál využívá pi testování analogových obvod. S prudkým rozvojem digitální techniky, která v sob zahrnuje vývoj stále komplikovanjších obvod, nap. mikroprocesor, hradlových polí, pamtí, D/A pevodník a mnoha dalších, souvisí poteba tyto obvody náležit testovat, což klade urité nároky na testovací zaízení. V souasné dob vyrábné pattern generátory, asto spojené s logickým analyzátorem v jeden celek, musí splovat adu parametr od požadované frekvence generování signálu, pes požadavek na úrove výstupních signál až po poet použitelných kanál. Uživatelsky pívtivé grafické rozhraní pro pohodlné a názorné zadávání dat je samozejmostí. Ve své diplomové práci jsem se zamil na návrh pattern generátoru a na základ rozboru zohledující dále uvedené podmínky, jsem tento pattern generátor realizoval. Nakolik byla tato moje realizace úspšná, je na základ srovnání definovaných a konených parametr pojednáno v závru této práce.
-8-
1 Úvod
Pattern generátor
Vymezení podmínek návrhu V tomto oddílu jsou vymezeny požadavky a konené parametry, které by ml realizovaný pattern generátor splovat nebo se k nim minimáln blížit. Na základ tchto požadavk a konených parametr pístroje je v závru této práce provedeno zhodnocení. Základním požadavkem pro realizaci pattern generátoru je použití ipu FPGA, který by v sob implementoval logiku ízení a komunikace. Implementace bude popsána v jazyce VHDL. Tento ip ovšem nesmí být uložen v pouzde BGA, které by vyžadovalo realizaci nákladné šestivrstevné desky. Komunikace s pattern generátorem bude probíhat výhradn na základ sbrnice AMBA bus APB, jejíž komunikaní modul bude pipojen pímo na desku pattern generátoru. Vzhledem k tomu, že tento komunikaní modul je zatím ve vývoji a samotnou funkci pístroje by nebylo možné takto otestovat, realizuje se navíc za tímto úelem komunikaní rozhraní USB. Z hlediska frekvence generovaných vektor na výstupu je stanovena minimální rychlost zmny výstupu kanálu na 10 MHz. Hodnotu výstupní frekvence bude dále možné softwarov snižovat až k úrovni jednotek Hz. Maximální šíka výstupního vektoru by se mla pohybovat v rozmezí 32 bit až 64 bit (4 až 8 výstupních bran po 8 bitech). Poet aktivních bran bude pitom možné mnit softwarov. Úrove výstupního naptí bude pro každou bránu zvláš digitáln nastavitelná s požadovanými úrovnmi 1,8 V, 2,0 V, 3,0 V, 3,6 V, 5,0 V. Koncepce musí podmiovat další rozšíení o mezilehlé nap ové úrovn. Minimální požadovaná hloubka pamti je stanovena na 2 Mb pi plném využití výstupních bran a bude závislá na potu aktivních bran.
-9-
2 Teoretický úvod
Pattern generátor
2 Teoretický úvod V této ásti je provedeno piblížení oblastí, které s návrhem pattern generátoru pímo souvisejí. Jedná se pedevším o komunikaci USB a hradlová pole FPGA, na jejichž možnosti a parametry bude odkazováno v dalších kapitolách této práce.
2.1 Komunikaní rozhraní USB Za zrodem komunikaní sbrnice USB stojí nkolik dvod, které mly za cíl optimalizovat komunikaci PC a pipojených jednotek. Jedním z prvotních dvod bylo propojení telefonních a poítaových systém jednotným a levným zpsobem. Další z píin, která stála za vznikem sbrnice USB v podob jaké byla specifikována, byl problém s nemožností jednoduché konfigurace pipojených zaízení z pohledu koncového uživatele. Cílem vývoje se stalo dosažení atributu plug&play sbrnice, což znamená automatickou detekci a konfiguraci pipojeného zaízení v okamžiku jeho pipojení, které mže být provedeno za chodu systému PC, tzv. hot swapping. Nedostatek obousmrných, levných a dostaten rychlých externích periferií bránilo v dalším užívání a rozvoji zaízení jako telefon, fax apod., což mlo být odstranno s nástupem USB. Tyto dvody a další stály za specifikací verze USB1.0 a USB1.1 (zveejnna 1998), která byla pozdji rozšíena o verzi USB 2.0 (2000). Pvodn definované rychlosti byly stanoveny na 12 Mbit/s (full speed) a na 1,5 Mbit/s (low speed). Základní rozšíení spoívalo v pidání dalšího komunikaního módu s rychlostí komunikace pipojeného zaízení na 480 Mbit/s (high speed). Zaízení ve verzi 2.0 jsou zptn kompatibilní. V souasné dob se pracuje na specifikaci verze 3.0, která by oproti dívjší verzi mla dosahovat rychlosti komunikace až 4,8 Gbit/s, k dispozici by mla být v polovin roku 2008. Sbrnice USB
je charakterizována jako poloduplexní, izochronní, nízkonákladové,
dynamicky konfigurované, sériové rozhraní k PC.
2.1.1 Topologie sít Topologie sbrnice USB má hvzdicovitou strukturu (viz obr. 2.1). Fyzicky je sí tvoena temi základními elementy – host, hub, funkní jednotka, které jsou mezi sebou propojeny zpsobem point-to-point (pímé propojení element) - host je pipojen k hub nebo funkní
-10-
2 Teoretický úvod
Pattern generátor
jednotce, hub je pipojen k hubu nebo funkní jednotce. Vzhledem ke zpoždním pi prchodu signálu je tato sí omezena do úrovn 7 (vetn).
obr. 2.1 Topologie USB
USB host figuruje v celém systému pouze jednou a ídí veškerou komunikaci na sbrnici. USB hub slouží pro pipojení dalších funkních jednotek, které nelze pipojit pímo k host nebo jejich pipojení je pes hub výhodnjší. USB funkní jednotka je koncové zaízení uživatele, jako nap. scanner, myš, atd. USB hub a USB funkní jednotku oznaujeme souhrnn jako USB zaízení.
2.1.2 Fyzická vrstva Propojovací kabel Spojení mezi jednotlivými zaízeními je zprostedkováno tyvodiovým kabelem o délce 3 až 5 metr, který krom vodi napájení a zem disponuje dvma datovými vodii, které spolu vytváejí jeden pár diferenního vodie. Podle požadavk na rychlost penosu (full/high speed) mže být tato dvojice kroucená a stínná.
-11-
2 Teoretický úvod
Pattern generátor
obr. 2.2 Kabel USB pro full/high speed
Napové úrovn na sbrnici Napájecí naptí na sbrnici USB má hodnotu +5 V. Podle požadavku USB zaízení, mže být tímto napájecím naptím dodáváno až 0,5 A, o urení maxima tohoto odbru rozhoduje USB host. Pro datový signál D se odvozují tyi základní úrovn naptí – dv pro vysílací zaízení (VOH a VOL) a další dv pro pijímací stranu, a to z dvodu zachování šumové imunity (VIH a VIL).
Tabulka tab. 2.1 informuje o hodnot tchto úrovní, na základ kterých se dále
definují stavy na sbrnici.
pijíma VIH VIHZ VIL vysíla VOH VOL VOSE1
min. 2.0 2.7
max. 3.6 0.8
V V
2.8 0.0 0.8
3.6 0.3
V V V
tab. 2.1 Mezní nap. úrovn na sbrnici pozn. výše uvedené úrovn platí pouze pro komunikaci full speed a low speed
Interpretace stav na sbrnici Podle výše definovaných úrovní a asových parametr interpretujeme stavy na sbrnici podle tabulky tab. 2.2. Rozlišení typu zaízení na full speed (nebo high speed - vzájemné rozlišení pi konfiguraci) resp. low speed je zajištno hardwarov, a to pipojením 1,5 k pull-up rezistoru k D+ vodii, resp. k D- vodii. Pro USB jsou dále definovány stavy SE1, J-state, K-state, Resume state, Start-of-Packet, End-of-Packet, Reset.
-12-
2 Teoretický úvod
Pattern generátor
Stav sbrnice
Úrovn naptí vysíla (zdrojový
pijíma (koncový konektor)
konektor )
vyžadováno
difer. „1“
D+ > VOHmin a D- < VOLmax
difer. „0“
D- > VOHmin a D+ < VOLmax
akceptováno
(D+) – (D-) > 200 mV D+ > VIHmin (D-) – (D+) > 200 mV D- > VIHmin
(D+) – (D-) > 200 mV
(D-) – (D+) > 200 mV
idle NA
Low-speed Full-speed
D- > VIHZmin a D+ < VILmax
D- > VIHZmin a D+ < VIHmin
D+ > VIHZmin a D- < VILmax
D+ > VIHZmin a D- < VIHmin
D- a D+ < VILmax
D- a D+ < VIHmin
SE0
D- a D+ < VOLmax
SE1
D- a D+ > VVOSE1 min
D- a D+ > VILmax
disconnect
NA
SE0 > 2.5 µs
connect
NA
Idle > 2 ms
Idle > 2.5 µs
tab. 2.2 Interpretace stav na sbrnici pozn. pro komunikaci high speed jsou stavy difer. „1“ a difer. „0“ definovány odlišn
2.1.3 Komunikaní protokol USB Komunikace mezi USB funkní jednotkou a USB host probíhá pomocí penos dat, které jsou realizovány pes tzv. roury. Rourami nazýváme spojení softwaru USB host a koncového bodu (endpoint) funkní jednotky, které mže být jednosmrné nebo obousmrné. Každé funkní zaízení disponuje koncovým bodem 0, který slouží výhradn pro úely poátení konfigurace a je obousmrný, dále pak koncovými body 1 až 15 s nastavením pro smr penosu. Každá roura je jedinená tím, že pesn definuje smr komunikace, zaízení, koncový bod daného zaízení a navíc také typ penosu. Protokol sbrnice USB podporuje celkem tyi typy penos podle charakteru penášených dat: kontrolní (Control Transfer) – zpravidla konfiguraní data provádná pi pipojení jednotky hromadný (Bulk Data Tranfer) – penos bloku dat (nap. ze scanneru apod.) perušení a stav (Interrupt Data Transfer) – zpráva o zmn stavu (nap. polohy myši) izochronní (Isochronous Data Transfer) – kontinuální tok dat s možnou chybovostí (videokonference apod.)
-13-
2 Teoretický úvod
Pattern generátor
Kontrolní, hromadný, perušení a stav penosy bývají oznaovány jako zprávy (messages) podle pevn stanovené struktury penášené informace. U tohoto typu probíhá kontrola chybn pijatých dat s možností opakování penosu. Naopak izochronní penos bývá oznaován jako proud (stream) vzhledem k nedefinované struktue a nutnosti penášet data v reálném ase. Jakkoliv špatn pijatá data nejsou u tohoto typu opakována.
Každý penos se skládá z jedné nebo nkolika transakcí. Transakce se zpravidla sestávají ze tí paket v následujícím poadí vysílání – Token paket, Data paket, Handshake paket. Token paket na zaátku komunikace vysílá USB host a definuje tím smr penosu a typ transakce, adresuje pitom zaízení a jeho koncovou jednotku. Podle smru penosu dále pokrauje v penosu Data paketu nebo penechá vyslání paketu na adresované funkní jednotce. Transakce se v pípad zprávy uzavírá vysláním Handshake paketu ze strany píjemce dat (pokud byla tato data poskytnuta). Pro ilustraci je uveden hromadný penos (viz obr. 2.3).
obr. 2.3 Sekvence hromadného penosu (pouze full speed a low speed)
Vysvtlivky DATA0/DATA1 – znaení sudého nebo lichého paketu – souást kontroly pijatých paket ACK – potvrzení o správn pijatém paketu NAK – data nebyla pijata (posílá píjemce dat), žádná data pro odeslání (odesílatel) STALL – indikuje nepodporovaný požadavek na koncový bod funkního zaízení nebo nemožnost data pijmout
-14-
2 Teoretický úvod
Pattern generátor
Jednotlivé pakety, potažmo transakce, jsou rozvrženy do asových rámc, které v pípad full a low speed odpovídají dob trvání 1 ms, pro high speed trvají 125 μs. Ve specifikaci USB je dále uvedeno, jakým zpsobem je pidlován prostor (frame bandwidth) jednotlivým transakcím v rámci, pednostní právo pro píjem a vysílání, maximální možné penosové rychlosti podle potu bajt v Data paketu, atd. Kóduje se systémem NRZI s využitím tzv. bit stuffingu.
2.2 Hradlová pole FPGA Hradlová pole FPGA jsou velmi efektivním nástrojem pi vytváení ešení v oblasti digitální techniky, kde je poteba realizovat datové toky s pomrn velkým množstvím signál a souasn potebou jejich rychlého zpracování. Zpravidla se využívají tam, kde procesorové systémy svým výkonem nestaí. FPGA (Field Programmable Gate Array) jsou programovatelné integrované obvody, sestávající z konfigurovatelných blok o rzném stupni hustoty integrace a propojovacími cestami. Jejich obliba v poslední dob roste v závislosti na zvyšujícím se množství vnitních konfigurovatelných blok, stoupající taktovací frekvenci, potu vstupn/výstupních jednotek, klesající cen a v neposlední ad snižujícími se náklady na vývoj implementace požadovaného ešení. Zvlášt v malosériové výrob dostávají pednost ped dražšími zákaznickými nebo polozákaznickými obvody. Velkou výhodou tchto ip je jejich možnost programování pímo v systému (ISP - In System Programming), což usnaduje ladní a pípadnou opravu chyb. Stejn tak užitená je možnost modifikování funkního ešení pomocí pozdjších upgrad. Na druhou stranu ve vtšin pípad nejsou dostatenou zárukou ochrany duševního vlastnictví - vtšina FPGA má informaci o struktue ešení uloženou ve vnitní volatilní pamti, takže je nutné pi každém restartování systému danou informaci nahrát prostednictvím vnjší pamti. Toto riziko bývá u nkterých ip dodaten sníženo kryptováním konfiguraních dat. V pípad velkosériové výroby se dává pednost zákaznickým nebo polozákaznickým (ASIC) obvodm, a už z dvodu nižších náklad nebo optimalizace daného ešení.
V dnešní dob na trhu FPGA dominantn figurují pedevším výrobci Xilinx (zaujímá tém polovinu trhu) a Altera. Obvody tchto výrobc se v uritých ohledech liší, ovšem celkový pohled na vnitní architekturu tchto obvod je velmi podobný. Z tohoto dvodu bude možné
-15-
2 Teoretický úvod
Pattern generátor
piblížit vlastnosti a funkci jednotlivých blok na vybrané rodin ip FPGA. Pro demonstraci této architektury byl vybrán ip rodiny Xilinx Spartan 3E.
2.2.1 Architektura FPGA Architektura je tvoena nkolika základními jednotkami, které se liší jak svým umístním na ipu, tak potem jejich zastoupení. Jádro pro vytváení logických funkcí (nap. stavových automat, adi, posuvných registr apod.) tvoí konfiguraní logické bloky (CLB - Configuration Logic Blocks). Pro penášení dat a signál mezi okolím ipu a jeho vnitními CLB slouží vstupn/výstupní bloky (IOB – Input/Output Blocks). Na ipu jsou dále zastoupeny bloky pro úpravu hodinového (taktovacího) signálu - správce hodinového signálu (DCM - Digital Clock Manager), bloky pamti RAM a bloky aritmetické násobiky. Rozložení tchto blok je vidt na níže uvedeném obrázku.
obr. 2.4 Rozložení blok na ipu
U nkterých obvod FPGA se bloky RAM a aritmetické násobiky nemusí objevit, ovšem z hlediska vyšší variability a efektivity jsou tyto bloky vtšinou na ipu zastoupeny.
2.2.1.1 Konfiguraní logické bloky (CLB – Configuration Logic Blocks) Tyto bloky slouží k implementaci synchronních obvod nebo kombinaních obvod. Bloky CLB jsou uspoádány do matice o stanoveném potu ádk a sloupc, od ehož se také odvíjí hustota integrace blok na ipu. Podle potu CLB (který mže být dále pepoítán na poet
-16-
2 Teoretický úvod
Pattern generátor
ekvivalentních logických bunk) odhaduje návrhá na základ své zkušenosti, jaká mže být maximální možná složitost implementace ešení. Obecn platí, že ipy s vyšší hustotou integrace jsou dražší, takže z hlediska náklad je výhodné vybírat ipy s nejnižší dostaující možnou integrací bunk CLB.
Každý blok CLB v sob zahrnuje: Look-up Tables (LUT) - bloky, které vytváejí logickou funkci nebo slouží jako distribuovaný blok RAM o kapacit 16x1 bit nebo jako posuvný 16-bitový registr (v pípad Spartan 3E) registry, které mohou sloužit jako D-klopné obvody nebo jako latch-klopné obvody multiplexery logiku podporující penosy pi aritmetických operacích. Obrázek obr. 2.5 poskytuje uritou pedstavu o propojení tchto ástí. Výše uvedené zastoupení blok v CLB platí obecn pro obvody FPGA. Co se týká obvod FPGA pouze firmy Xilinx, bylo by z hlediska úplnosti vhodné uvést, že každý blok CLB vytváí 4 tzv. slice – 2 levé a 2 pravé, teprve souástí tchto slice jsou všechny zmínné elementy vetn LUT (každá slice obsahuje po 1 páru LUT).
obr. 2.5 Blokové schéma propojení v CLB
-17-
2 Teoretický úvod
Pattern generátor
2.2.1.2 Vstupn/výstupní bloky (IOB - Input Output Blocks) Vstupn/výstupní bloky slouží jako rozhraní pro pipojení vnjších signál na konfiguraní logické bloky. IOB jsou programovatelné obvody, které se dají nastavit podle smru penášeného signálu na vstupní, výstupní a obousmrné. Stejn tak je podporováno nastavení I/O budi podle rzných standard jako v pípad single-ended standard - LVTTL, CMOS18, CMOS25, atd., nebo diferenních standard - LVDS_25, RSDS_25 atd. Zakonovací rezistory jsou souástí IOB podle obrázku obr. 2.6. Souasn s nastaveným standardem musí souhlasit také úrove napájecích naptí tchto blok. IOB bloky jsou rozdleny do nkolika bank (4 v pípad Xilinx) podle oddlených napájecích naptí. Tento fakt umožuje situaci, kdy jednotlivé banky mohou používat vzájemn odlišné I/O standardy vyžadující rzné napájecí úrovn.
obr. 2.6 Koncové pizpsobení diferenních standard obr. 2.7 Rozložení bank na ipu
Standardy LVCMOS a LVTTL umožují ve svém výstupním módu nastavit rychlost výstupní hrany (SLOW, FAST) a stanovit maximální odbr budi podle peddefinovaných šesti úrovní (2, 4, 6, 8, 12, 16 mA). Nastavení proudového odbru budi ovlivuje strmost výstupních bran. Obecn platí, že se zvyšující se hodnotou odbru výstupního budie roste také rychlost nábžných a spádových hran vlivem pebíjení parazitních kapacit. Proto by se pi nastavování kombinace obou parametr mlo dodržovat doporuení na co nejnižší rychlost hran, která je v daném zapojení únosná. Sníží se tím spoteba a úrovn rušení na desce DPS (desce plošného spoje). Souástí IOB blok jsou pam ové elementy, které se uplatují zejména pi tení a zápisu s vlastností DDR (Double Data Rate – validní data pi nábžné i spádové hran). Jejich další význam souvisí s prevencí ped nedefinovanými stavy v pípad asynchronního vzorkování a úspoe prostedk logických blok.
-18-
2 Teoretický úvod
Pattern generátor
Každý vstupní blok mže na svém výstupu zpožovat signál v dsledku zabudované zpožovací linky (viz obr. 2.8). Ta se skládá ze sériov zapojeného inicializaního zpožovacího lenu a následného 7 lenného kaskádního zpožovacího lenu. Kombinací nastavení tchto dvou len se docílí 14 hodnot možného zpoždní. Zpožovací len hraje svou významnou roli hlavn v pípadech podmínky dodržení pedstihu a pesahu vyítaných dat, která by bez nastavení zpoždní nemusela být splnna vlivem rzného zpoždní pi prchodu signálu.
obr. 2.8 Zpožovací len IOB
2.2.1.3 Správce hodinového signálu (DCM - Digital Clock Manager) Tento blok zajiš uje generování hodinového signálu pro synchronní obvody FPGA. Blok DCM v sob neobsahuje žádný oscilátor nebo jiný vnitní zdroj hodinového signálu, pouze upravuje referenní hodinový signál, který pivádíme extern na vyhrazené piny. Funkce DCM konkrétn zahrnuje následující úkoly.
Frekvenní syntéza Tou se rozumí možnost nastavovat hodnotu frekvence hodinového signálu. Spartan 3E dovoluje generovat hodinový signál podle vzorce f CLKFX
§n· f REF ¨ ¸ , kde f REF je frekvence ©m¹
referenního signálu a n, m jsou pirozená ísla v rozmezí 1 až 32. Souasn s tímto hodinovým signálem je možno dále do obvodu pivádt nap. samotný hodinový signál f REF ,
2x f
REF
,
f REF f nebo také jejich negaci ( s výjimkou REF ). Podmínkou ovšem zstává 2 2
maximální poet 4 souasn generovaných hodinových signál z jedné jednotky DCM, což mže být pomrn omezující podmínka pi požadavku na více frekvenních domén designu ešení.
-19-
2 Teoretický úvod
Pattern generátor
Fázové posuvy Touto funkcí se realizuje nap. invertování hodinového signálu, což odpovídá fázovému posunu signálu o 180 , dále je možné generovat signál s posunem o 90 , 270 nebo voliteln se statickým asovým zpoždním t PS
§ n posun ¨¨ © 512
· ¸¸ TREF , kde hodnota nposun je v rozmezí 1 až ¹
511. Krom toho lze nastavovat zpoždní také dynamicky v prbhu bžícího systému.
Eliminace zpoždní Vlivem rzn dlouhých tras hodinového signálu dochází ke snížení rychlosti hrany hodinového signálu. Tato skutenost zpsobuje faktické zpoždní signálu a bez konkrétního opatení by vedla k nedodržení dob pedstihu a pesahu. Konkrétním opatením je zptné zavedení hodinového signálu po prchodu ipem do bloku DCM a jeho fázové zarovnání na vstupní referenní hodinový signál.
Na blok DCM bezprostedn navazuje distribuní sí hodinového signálu, která zajiš uje minimální zpoždní a degradaci hodinových hran.
2.2.1.4 Bloková pam RAM Ve vtšin dnes nabízených obvod FPGA je zabudován blok pamti RAM, který mže v pípad implementovaného mikrokontroléru sloužit jako pam instrukcí, v pípad datového penosu mezi dvma a více rzn rychlými zaízeními jako rychlá vyrovnávací pam apod. Výhodou tchto pamtí je krátká pístupová doba a možnost voliteln nastavit šíku slova (šíku vektoru dat nebo instrukcí). Naopak tyto pamti nedisponují nijak vysokou kapacitou – ádov jednotky až stovky kB.
2.2.1.5 Aritmetická násobika Nemusí být zastoupena u všech obvod FPGA. Tento blok se uplatuje zejména pi aritmetických operacích jako souást implementace aritmeticko-logické jednotky, pípadn mže sloužit jako dodatená pam nebo posuvný registr. Násobení je zpravidla optimalizováno na 18-bitová slova. Vzájemným propojením blok násobiky se bitová šíka initel zvyšuje.
-20-
2 Teoretický úvod
Pattern generátor
2.2.1.6 Propojovací sí Ke vzájemnému propojení jednotlivých blok slouží propojovací sí . Ta disponuje nkolika typy propojovacích vedení z dvodu optimalizace signálových cest a k jednotlivým blokm je pipojena pes propojovací matice (Switch Matrix). Potebné spojení sousedních bunk realizují krátké pímé spoje, naopak propojení nkolika vzdálených bunk se provede dlouhým vedením.
obr. 2.9 Propojovací sí
Propojovací sít obvod Xilinx v sob zahrnují speciální signálové cesty, které se uplatují hlavn pi konfiguraci ipu: GSR (Global Set/Reset) – pi konfiguraci asynchronn nastaví všechny pam ové elementy (s výjimkou bunk pamti RAM) na definovanou úrove (vtšinou log. 0), takže nedochází ke startu sekvenních automat z neznámého stavu (pokud použitý syntetizér kóduje stavy od poátení hodnoty 0, první uvedený stav v každém stavovém automatu bude souasn startovacím stavem) GTS (Global Three State) – ped samotnou konfigurací a v jejím prbhu udržuje I/O piny ve stavu vysoké impedance
2.2.2 Konfigurace FPGA Konfiguraní data struktury implementovaného ešení, tedy informace o použitých blocích, jejich nastavení a celkovém propojení, je u vtšiny nabízených obvod uložena v blocích vnitní pamti. Protože se jedná o volatilní pam , je nutné pi každém restartu systému nahrát konfiguraní data z externí pamti, a to nkolika možnými zpsoby. Následující tabulka zohleduje možné zpsoby konfigurace a jejich vlastnosti.
-21-
2 Teoretický úvod
Pattern generátor
Master Serial
SPI
BPI
Šíka dat
1 bit
1 bit
8 bit
Hodinový
interní
interní
interní
zdroj
FPGA
FPGA
FPGA
8
13
46
standardní
stand. NOR
SPI Flash
Flash, XpF
Poet uživ. I/O blok Možnost
Xilinx platforma
realizace
Flash (XpF)
Slave
Slave
Parallel
Serial
8 bit
1 bit
1 bit
externí
externí
externí
21
8
0
CPU,
CPU,
mikrokontrolér,
mikrokontrolér,
XpF
XpF
JTAG
CPU, mikrokontrolér
tab. 2.3 Možnosti konfigurace FPGA
Konfiguraní data mají podobu bitstreamu s pevn stanoveným datovým objemem souvisejícím s typem FPGA, pro který je bitstream generován. Na základ této hodnoty se obvykle vybírá externí pam ový blok tak, aby sploval požadavek na velikost kapacity pamti pro uložení bitstreamu. Režim v jakém se bude FPGA konfigurovat, je definován v dob inicializace vnitních registr FPGA podle logických úrovní naptí na vyhrazených vstupních pinech. Podle toho pizpsobí ip svoje IOB bloky (vstupní, výstupní, High-Z) a zvolí píslušný stavový automat pro komunikaci.
Píklad konfiguraní sekvence ip Xilinx Konfiguraní sekvence zaíná uvolnním signálu POR (Power On Reset) pi restartu systému, kdy napájecí úrovn dosáhly svých požadovaných hodnot, nebo pi resetu ipu zpsobeného pivedením log. úrovn 0 na pin PROG_B (intern pipojen pull-up rezistor). Jedním nebo druhým zpsobem se docílí mazání konfiguraní pamti indikované úrovní log. 0 na pinu
INIT_B. Na konci tohoto cyklu, kdy INIT_B pechází na log. úrove 1, ovzorkují se úrovn signál na vstupech M0, M1, M2 a HSWAP. Kombinace M0 až M2 stanoví zpsob konfigurace, signál HSWAP urí, zda mají být bhem konfigurace k vstupn/výstupních pinm vnitn pipojeny pull-up (nebo pull-down) rezistory. Signál DONE v log. 1 informuje o dokonení konfigurace FPGA a o souasném spuštní implementovaného designu.
-22-
2 Teoretický úvod
Pattern generátor
2.2.2.1 JTAG Asi nejužívanjší systém pro programování zabudovaných ip v systému (In System Programming) je sériové komunikaní rozhraní JTAG (Join Test Action Group). Jeho pedností je krom nízkého potu potebných pin pro komunikaci (4) zejména možnost etzit jednotlivá zaízení do jedné komunikaní smyky. Pomocí tohoto rozhraní lze rovnž provádt diagnostiku zapojených obvod.
-23-
3 Rozbor ešení
Pattern generátor
3 Rozbor ešení Obecn se dá íct, že pattern generátor je zaízení, které na svém vstupu pijímá vektory dat a na svém výstupu tyto vektory generuje. Provádí tak uritou konverzi mezi formami pijímaných a následn vysílaných dat. V této práci je brán zetel hlavn na formu výstupních dat. Z principu funkce je pattern generátor složen z tchto schématických blok – komunikaní rozhraní, ídicí jednotka, pam a výstupní obvody. Realizace tchto blok a jejich vzájemné propojení nabízí nepeberné množství ešení a s tím souvisejících výsledných parametr pístroje. I tady ovšem platí osvdené rení „nco za nco“. Vzhledem k požadavku realizace pattern generátoru prostednictvím FPGA, který sám o sob disponuje (nebo mže disponovat) výše zmínnými bloky pattern generátoru, omezím se pro zaátek na realizan nejjednodušší variantu.
3.1 Realizace s FPGA Výchozím stavem je nejjednodušší varianta návrhu, a to pouze s použitím jednoho ipu FPGA, bez jakýchkoliv pídavných pamtí nebo výstupních obvod. Potom bude blokové schéma vypadat podle obr. 3.1. ipy v zapouzdení BGA jsou pedem vyloueny z výbru, nebo vedou v dsledku na nákladnou výrobu šestivrstevných (a více) desek plošného spoje.
Pattern generátor
NAPÁJECÍ BLOK
RAM
USB k. r.*
PC
VÝST. BUDIE
DUT
ÍDÍCÍ BLOK
USB k.r. - KOMUNIKANÍ ROZHRANÍ USB
obr. 3.1 Blokové schéma ešení * tento blok je probrán v kap. 3.5
Po prostudování nabídky výše zmínných elních výrobc FPGA byla sestavena tabulka s nejvyššími nalezenými hodnotami pro vybrané parametry (výbr nejvyšší hodnoty daného
-24-
3 Rozbor ešení
Pattern generátor
parametru pro všechny ipy picházející do úvahy, tedy nezapouzdené v BGA) a s typickými hodnotami pro každého výrobce zvláš . V této tabulce není ani tak zajímavé vzájemné srovnání jednotlivých pedstavitel, jako spíš pedstava o možnostech této realizace.
Xilinx Spartan
XC3S250E
Cyclone
EP2C20
10476
5508
39600
18752
kBit
360
216
1134
240
185
142
MHz
320
256
195
ekvivaletní logické bloky vnitní pam ipu
Altera
poet uživ. I/O bunk
158
max. frekvence tení RAM
240
tab. 3.1 Parametry ip Xilinx a Altera
3.1.1 Vnitní pam ipu Z tabulky je zejmé, že maximální možná hloubka pamti je 1134 kbit. Na základ grafu 3.1 lze pibližn stanovit výslednou hloubku pamti v závislosti na ukládané šíce dat. Bloková pam je optimalizována pro šíku 18 bit, v jiných pípadech nemusí syntetizátor využít všech bitových bunk. Tato pam se sice ješt dá rozšíit o pam ové bloky tvoené nevyužitými CLB bukami, ale vzhledem k tomu, že zatím není možné dostaten odhadnout složitost implementace ešení, nebude tento pípad uvažován. Tato dodatená pam by ostatn navýšila kapacitu maximáln o 33%. 160
hloubka pamti [kbit ]
140 120 100 80 60 40 20 0 0
8
16
24
32
40
48
56
šíka vektor [bit]
graf 3.1 Závislost hloubky pamti na šíce dat
Nap. pro šíku dat 32 bit je možno uložit mén než 40 000 vektor.
-25-
64
3 Rozbor ešení
Pattern generátor
3.1.2 Poet uživatelských I/O bunk Poet I/O bunk je omezen v nejlepším pípad na 185 uživatelských pin, takže musí být omezena také šíka výstupního vektoru. Podle zpracované minitabulky bude možné rozhodnout, kolik pin lze vyhradit pro tento úel.
Poet pin Poet uživ. I/O
185
AMBA BUS
-61
Rozhraní USB
-13*
Další využití
-10**
Max. šíka vektoru
101
tab. 3.2 Maximální poet vektor – odhad * poet jsme stanovili na základ rozvahy v kap. 3.5 ** zahrnuje odhad na pipojení vnjší pamti, tlaítek a led
Z tabulky je patrná maximální výstupní šíka vektoru 101 kanál.
3.1.3 Maximální frekvence Podle katalogových list je práv frekvence vyítání a zápisu dat do blokové pamti RAM tím nejpomalejším lánkem pi generování signálu. Nemusí být ovšem nutn nejpomalejší v celkovém ešení, nebo záleží také na syntetizátoru pro jaké maximálními frekvence se mu podaí navrhovaný design vygenerovat (vtšinou na základ jazyka VHDL), a dále na rychlosti výstupních budi FPGA (možnosti výstupních budi FPGA jsou popsány v kap. 3.4). Obecn však mže být brán parametr rychlosti tení a zápisu do interní pamtí SRAM jako dobré vodítko pro odhad frekvenních možností FPGA.
3.1.4 Shrnutí Podle hardwarové náronosti bude toto ešení zejm nejjednodušší, stejn jako implementace ešení vyžadující pouze komunikaci s vnitní pamtí SRAM, která je pro tento úel
-26-
3 Rozbor ešení
Pattern generátor
maximáln optimalizovaná a její implementace není nijak složitá. Nevýhodou je ale znan omezená kapacita pamti o maximální velikosti 1 Mbit. Podle maximální frekvence bude více omezujícím faktorem návrh samotné DPS a dalších signálových obvod, než samotná rychlost generování vektor na pinech FPGA. Šíka výstupního vektoru je prakticky libovolná (nepedpokládá se využití více jak 100 pin).
3.2 Realizace s FPGA a vnjší pamtí Ve shrnutí ešení v kap. Realizace s FPGA je jako hlavní nedostatek ešení uvádna nízká hodnota kapacity pamti. Tento fakt musí nutn vést k pipojení dodatené externí pamti k ídicí jednotce FPGA , která by uchovávala data vektor. V této kapitole bude rozhodnuto o typu vnjší pamti. Spíše než hledisko principu uchovávání dat uvnit pamti bude rozhodující její model z hlediska pístupu a formátu ukládání dat.
3.2.1 Pipojení pamti FIFO FIFO je dvoubránová sekvenní pam , jejíž data se vyítají ve stejném poadí, v jakém byla uložena. Z tohoto dvodu odpadá nutnost adresace jednotlivých bunk a ovládání pamti se výrazn zjednodušuje. ídicí sekvence zápisu resp. tení spoívá pouze v nastavení píslušného signálu WR (Write) resp. RD (Read) spolen s nastavením signálu CS (Chip Select). Pro kontrolu stavu pamti slouží podle typu nkolik málo výstupních kontrolních signál (nap. detekce prázdné pamti, zaplnní atd.).
NAPÁJECÍ MODUL
ÍDICÍ
FPGA DATA
FIFO
USB k. r. USB k.r. - KOMUNIKANÍ ROZHRANÍ USB
obr. 3.2 Pipojení FIFO
-27-
VÝST. BUDIE
3 Rozbor ešení
Pattern generátor
Hloubka resp. šíka této pamti mže být relativn jednoduše zvyšována paralelním resp. sériovým azením jednotlivých dílích FIFO modul a tím lineárn zvyšována celková kapacita pamti s ohledem na poet vyhrazených I/O pin (odhadem 90) a rozmry desky plošného spoje. Moduly rychlých FIFO pamtí jsou v dnešní dob bžn na trhu, takže limitujícím faktorem z hlediska maximální frekvence stále zstává realizace DPS. Implementace kódu není o mnoho složitjší oproti díve uvedenému ešení. Implementace zahrnuje navíc adi FIFO s pimen náronými požadavky na ízení pamti a signály pro ízení výstupních obvod.
3.2.2 Pipojení pamti RAM Pam RAM (Random Access Memory) je v souasné dob nejrozšíenjší pamtí vzhledem k její velké výhod možnosti pístupu na jednotlivé adresy pam ových bunk. Vtšinou se jedná o jednobránové pamti o urené datové šíce, potu adresovacích vodi Padr (podle nhož se dá bezpen urit hloubka pamti jako 2Padr ) a dalších nkolika ídicích signál. NAPÁJECÍ MODUL ÍDICÍ
DATA
VÝST. BUDIE
FPGA DATA
USB k. r.
ÍDICÍ
RAM
ADRESA
USB k.r. - KOMUNIKANÍ ROZHRANÍ USB
obr. 3.3 Pipojení RAM
U pamtí RAM stejn jako u FIFO mžeme zvyšovat šíku výstupních vektor paralelním azením blok pamtí. V tomto pípad se ale maximální možná šíka vektoru výrazn sníží, nebo krom datových vodi mezi FPGA a pamtí RAM musí být vedeny ješt adresové vodie, a dále pak datové vodie mezi FPGA a výstupními budii. Aby se pitom nesnížila maximální možná výstupní frekvence, musí mít datové vodie pamti RAM a výstupní budie stejnou šíku, tedy musí existovat vzájemn jednoznané piazení datového kanálu a pam ové buky. Tento fakt je dsledkem stejn rychlé komunikace mezi FPGA - RAM
-28-
3 Rozbor ešení
Pattern generátor
a FPGA - výstupní budie. Z následující tabulky je zejmé výše deklarované snížení maximální šíky vektoru.
Poet pin Poet uživ. I/O
185
AMBA BUS
-61
Rozhraní USB
-13
RAM – adres., ídicí Další využití
-25* -15**
Max. šíka vektoru
71/2
obr. 3.4 Maximální šíka vektoru - odhad * odhad ** zahrnuje odhad na pipojení vnjší pamti, tlaítek a led, ídicích signál pro výstupní budie
Po redukci na celonásobný poet 8-bitových bran (1 bajt), zstává celkem maximáln 32 výstupních bit (4 brány). Pam FIFO disponuje maximáln 11 branami. Pechod od FIFO k pamti RAM znamenal jednoznaný útlum maximální šíky vektoru. Naopak pamti RAM disponují vtší kapacitou pamti, podle typu i v rozdílu více jak jednoho ádu (DRAM). Výše uvedené blokové propojení s RAM nám navíc umožní dodaten zvyšovat hloubku pamti. Možné dodatené navýšení hloubky pamti je popsáno v kap. 3.3 ízení toku vektor.
SRAM versus SDRAM Oba typy pamtí mají pibližn stejnou rychlost vyítání dat, která se pohybuje pibližn v rozmezí 100 MHz až 200 MHz (asynchronní typy tchto pamtí jsou výrazn pomalejší). Pamti SRAM (synchronní statické pamti) mají menší kapacitu a souasn vyšší cenu než dynamické pamti SDRAM (synchronní dynamické pamti), které ovšem vyžadují složitjší obsluhu (minimáln z dvodu nutného cyklického oberstvování pam ových bunk). Podobným typem pamti jako SDRAM je pam DDR, která se liší hlavn možností dvojnásobn rychlého tení a zápisu pi zachování stejné taktovací frekvence. Tento typ pamtí ovšem vykazuje velkou náronost na dodržení podmínek pedstihu a pesahu dat.
-29-
3 Rozbor ešení
Pattern generátor
3.3 ízení toku vektor V této kapitole jsou popsány možnosti navýšení hloubky pamti v dsledku vhodné implementace ízení toku vektor. Implementace tchto zpsob ízení ovšem vyžaduje zapojení podle schématu na obr. 3.3 Pipojení RAM, což pedstavuje další dvod se piklonit k této variant zapojení.
3.3.1 Mnitelnost šíky vektoru U realizace pouze s ipem FPGA byla za jeden z pínos oznaena možnost mnit hloubku vstupních dat podle šíky výstupního vektoru. Tato možnost se týkala rekonfigurace vnitní pamti RAM, takže ji nebylo možné provádt za chodu systému. V této kapitole bude probrána možnost dosažení stejné variability hloubky pamti, navíc pímo za bhu celého systému. Obrázek 3.5 pedstavuje pam vektor o datové šíce n bajt a hloubce pamti m. Pokud se z ní budou vyítat data pro stejn široké výstupní slovo vektoru, bude každá adresa pedstavovat samostatný vektor. Ovšem v pípad, že nedojde k využití všech výstupních bran
n, mžou být využity uvolnné pam ové buky pro uložení dat jiné brány. Nap. pokud budou aktivní pouze 3 brány, budou v pamti tsn za sebou uloženy vektory práv pouze
§ n.m · § n.m · pro tyto 3 brány. Tímto se zvýší kapacita pamti na round ¨ ¸ , obecn platí round ¨ ¸, © 3 ¹ © u ¹ kde u je poet aktivních bran. Round znaí oíznutí desetinné árky. 1
2
n
1 2 3
m
obr. 3.5 Uložení dat - všechny brány 1
2
n
1 2 3
1 2 3
m
round mn 3
obr. 3.6 Uložení dat - píklad 3 brány
-30-
3 Rozbor ešení
Pattern generátor
Na obrázku výše je uvedený píklad možného uložení dat. Tento zpsob ešení by bylo možné implementovat za pomoci posuvných registr (viz obr. 3.7). Na každé uložení n bajt do registru (vertikální smr) by pipadlo nkolik posun v horizontálním smru.
pam
výst. budie
1
2
1
n
n
2
obr. 3.7 Posuvný registr – píklad pro 3 brány
Pi implementaci tohoto ešení je teba dbát na následující okolnosti: zmna šíky horizontálního posunu v závislosti na potu povolených bran nutný samostatný posun o délce n bit ped vysláním prvního vektoru synchronizace zápisu do výstupního budie podle poáteních a koncových dat
Tabulka níže udává procentuální navýšení hloubky pamti.
Požadovaný
1
poet bran
2
3
4
5
6
7
8
66
25
0
-
-
-
0
-
-
0
-
5
400 150
Maximální
6
500 200 100
50
20
poet bran
7
600 250 133
75
40 16
8
700 300 166 100 60 33 14
0
tab. 3.3 Procentuální pírstek hloubky pamti
3.3.2 Komprimace dat Komprimací je zde mínno ukládání opakujících se sekvencí vektor do blok a jejich cyklické volání. Tímto zpsobem je možno ušetit pomrn znanou ást hloubky pamti v závislosti na délce a potu opakujících se sekvencí vektor.
-31-
3 Rozbor ešení
Pattern generátor
ešení ovšem vyžaduje ukládání dodatených informací (instrukcí) ohledn adresace blok vektor, potu jejich opakování, apod. Zejm bude nutné pipojení pamti instrukcí, která bude zcela nezávislá na pamti vektor, tzv. Harvardská architektura. Vzhledem k tomu, že požadavky na kapacitu této pamti nemohou být nijak vysoké, využije se možnosti, která se pímo vybízí a v rozboru ešení už jednou zaznla – využít bloky pamti RAM samotného ipu FPGA, tentokrát jako pam instrukcí (viz obr. 3.8). Zpsob implementace tohoto ešení bude zejm komplikovanjší, ale poskytne v budoucnu mocný nástroj pro úsporu pamti. Dále se budu zaobírat návrhem ízení uložení a vyítání komprimovaných vektor, tedy z pohledu implementace se jedná o záležitost firmwaru. Samotná komprimace dat je záležitost ist softwarová a sama o sob vyžaduje pomrn širší rozbor. Z tohoto dvodu se jí zatím vnovat nebudu.
FPGA
USB kom. rozhr.
VEKTORY
ÍZENÍ + DA TA PA TH INSTRUKCE
RA M instrukce
ADRESA
ÍDICÍ
VÝST. BUDIE
VEKTORY
ADRESA
RAM - data
ÍDICÍ
obr. 3.8 Zapojení vnitní RAM
Z obrázku obr. 3.9 je patrné, že pod pojem instrukce jsme souasn zahrnuli také data, která daným instrukcím písluší. Postup pi generování výstupních vektor by spoíval v kontinuálním tení instrukní pamti a provádní píslušných operací (generování bloku, ekání, atd.) nad instrukcemi uloženými na tchto adresách. Oddlení samotných instrukcí a dat k nim píslušejících, tedy provedení sekundární komprimace už není uvažováno, i když by z principiálního hlediska bylo v budoucnu realizovatelné.
-32-
3 Rozbor ešení
Pattern generátor
pam instrukcí
pam dat
instr. OPAKUJ BLOK
.
.
poátení adresa – 0xC0
.
.
koncová adresa – 0xC3
0xC0
vektor A_1
poet opakování – 10
0xC1
vektor A_2
instr. EKEJ
0xC2
vektor A_3
délka ekání – 100
0xC3
vektor A_4
instr. OPAKUJ BLOK
0xC4
vektor B_1
poátení adresa – 0xC4
0xC5
vektor B_2
koncová adresa – 0xC6
0xC6
vektor B_3
.
.
.
.
.
.
obr. 3.9 Píklad uložení dat a instrukcí
3.4 Realizace výstupních budi V této ásti budou popsány možnosti výstupních budi FPGA.
Z hlediska pipojení pattern generátoru k DUT (Device Under Test) je rovnž podstatné se zabývat také statickými a dynamickými parametry generovaného signálu, jako je napíklad úrovní naptí v logické úrovni 1, proudovou zatížitelností, rychlostí hran signálu apod. Pro zaátek budou zhodnoceny možnosti samotných výstupních bran FPGA.
Xilinx Spartan podporované úrovn budi max. proudová zatížitelnost *
V mA
Altera
XC3S250E
1.2, 1.5, 1.8, 2.5, 3.3 24
Cyclone
EP2C20
1.2, 1.5, 1.8, 2.0, 2.5, 3.0, 3.3
1.5, 1.8, 2.5, 3.3
16
24
tab. 3.4 Výstupní parametry FPGA * závisí na nastaveném standardu výstupního budie a potu souasn spínaných výstup
Podle tab. 3.4 je možné u ip FPGA voliteln nastavovat výstupní úrovn naptí v rozsahu 1,2 V až 3,3 V (standardu LVCMOS). Mimo jiné jsou k dispozici další specializované standardy jako nap. PCI_66 nebo diferenní standardy apod.
-33-
Proudová zatížitelnost je
3 Rozbor ešení
Pattern generátor
rozdílná podle nastavených nap ových úrovní - nap. nastavení zatížitelnosti budie LVCMOS_x,x je uvedeno v tabulce níže.
V
1,2
1,5
1,8
2,5
3,3
Cyclone II
mA
-
8
12
26
24
Spartan 3E
mA
2
6
8
12
16
tab. 3.5 Max. zatížitelnost budie LVCMOS
Proudová spoteba pi vyšším souasném potu spínaných budi pedem omezuje vyšší hodnoty nastavitelných zatížitelností, což mže výrazn snížit poet souasn spínaných výstupních signál a tím také šíku generovaného vektoru. Pro standard LVCMOS a LVTTL navíc lze nastavovat rychlost výstupních hran, a to pibližn v jednotkách ns. Podle rychlosti nábžné hrany tn, spádové hrany ts a dále podmínek na minimální dobu trvání log. úrovn 1 t1 a log. úrovn 0 t0 hodinového signálu se stanoví maximální možná frekvence výstupního signálu jako f max
1 . V pípad stejné t n t s t1 t 0
doby nábžné a spádové hrany tns a požadavku na stídu hodinového signálu 1:1, takže t1= t0=t10, zjednodušuje se výraz na f max
1 . Protože se t10 volí libovoln (minimáln 2t ns t10
však 0 s), bude maximální výstupní frekvence záležet pedevším na rychlosti hrany. Ta se odvíjí od standardu zvoleného výstupního budie, realizace desky plošného spoje, vstupní kapacit pipojeného testovaného zaízení DUT píp. dalších výstupních blocích. Nap. Altera uvádí pro ipy rodiny Cyclone II maximální frekvenci spínání výstupních budi standardu LVTTL na 273 MHz. Tyto rychlosti ovšem pedstavují píliš rychlé hrany o hodnot 1 ns a menší, které by v pípad realizace DPS pedstavovaly velké rušení. Pímý údaj o rychlosti hrany není vtšinou v manuálech výstupních budi uveden. Naopak se asto setkáváme s parametrem zpoždní výstupního signálu proti vstupnímu signálu podle obrázku obr. 3.10. Nap. Xilinx Spartan 3E je pro svj nejrychlejší IO-standard schopen dosáhnout zpoždní signálu v rozmezí 0,9 ns až 2,58 ns. I další výrobci samostatných budících obvod nap. Texas Instruments udávají hlavn hodnotu zpoždní signálu, která ovšem kolísá podle velikosti napájecího naptí a teploty. Rozsah udávaného zpoždní mže z tohoto dvodu dosáhnout rozmezí až desítky ns.
-34-
3 Rozbor ešení
Pattern generátor
Samotný pattern generátor si z hlediska svého principu neklade žádné nároky na celkové zpoždní signálu. Vzájemné zpoždní mezi kanály by však nemlo být píliš vysoké, zejména pi generování krátkých puls by mohlo docházet k jejich významnému posunu. Hradlové pole Altera Cyclone disponuje možným volitelným posunem výstupních signál, ímž je možné dodaten srovnat pípadné zpoždní na kanálech jednotlivých výstupních obvod.
obr. 3.10 Zpoždní signálu na budii + testovací podmínky
Využít samotných budi pímo pro pipojení DUT je lákavá možnost vzhledem k popsaným výhodám, ovšem v pípad chybné funkce DUT nebo jeho poškození by mohlo dojít ke zniení ipu FPGA - jádra celého pattern generátoru. Z tohoto dvodu bude nutné pipojit samostatné externí budie.
3.5 Realizace komunikace USB Žádný z použitelných ip FPGA v sob nemá pímo zabudován adi pro komunikaci USB. V této kapitole budou probrány dv možnosti pipojení pamti USB.
3.5.1 Implementace modulu adie USB (pímé zapojení) Pímé zapojení signál D+ a D- sbrnice podmiuje splnní ady konkrétních požadavk na vstupn/výstupní obvody ipu, které budou sotva pesn splnitelné obvody FPGA vzhledem k jejich pedem stanoveným parametrm. Pesto má smysl se nad touto realizací zamyslet.
-35-
3 Rozbor ešení
Pattern generátor
Aby se adi USB dal vbec implementovat do struktury FPGA, musí být na jeho rozhraní dodrženy nap ové úrovn jak pro vstupní obvody, tak i pro výstupní. Vstupní budie musí být schopny detekovat diferenciální naptí na sbrnici a pitom musí být schopny rozeznat nap ové úrovn na jednotlivých datových vodiích D+ a D-. Vzhledem k omezeným možnostem FPGA budi a pomrn písným nap ovým mezím pro komunikaci v režimu high speed, bude ešena otázka možnosti realizace komunikace USB v režimu full speed.
Aby byla komunikace podle elektrických parametr realizovatelná, musí být splnny následující podmínky fyzické vrstvy: a) požadované nap ové úrovn pro pijímací a vysílací budie b) dodržení nábžné a spádové hrany c) dodržení tzv. Cross Over Voltage Range (COVR) d) výstupní impedance budi
obr. 3.11 Výstupní budie USB
a) Komunikace po obou signálových vodiích D+ a D- probíhá jak vyhodnocováním diference mezi obma signály, tak vyhodnocováním každého signálu zvláš . Z tohoto dvodu musíme na D+ a D- pipojit souasn jeden diferenní a dva single-ended standardy, abychom byli schopni rozpoznat všechny stavy sbrnice. Výstupní úrovn USB definované v tab. 3.6 odpovídají velmi dobe standardu LVCMOS33, který je souástí FPGA. Vstupním úrovním pro detekci stav odpovídají standardy LVCMOS33 a LVCMOS18. Pro diferenní vstupní budi je možné použít standard RSDS_25 s minimálním diferenním vstupním naptím 100 mV (USB specifikuje 200 mV).
-36-
3 Rozbor ešení
Pattern generátor
Detekce jednotlivých stav: difer. „0“, „1“ – RSDS_25, LVCMOS33 Idle – LVCMOS33 SE0 – LVCMOS33 SE1 – LVCMOS18
Stavy J-state, K-state, Resume state, Start-ofPacket,
End-of-Packet,
Disconnect
jsou
Reset,
odvozené
Connect, od
výše
jmenovaných, asto pouze doplnním o asové parametry. obr. 3.12 Schéma možného zapojení
SPEC. USB
min
max
LVCMOS33
min
max
pijíma VIH
[V]
2.0
VIHZ
[V]
2.7
VIL
[V]
2.0 typ. 3.3
3,6 0.8
0.8
vysíla VOH
[V]
2.8
3.6
2.9
3.3
VOL
[V]
0.0
0.3
0
0.4
VOSE1
[V]
0.8
2.0*
tab. 3.6 Napové úrovn specifikace USB a budie LVCMOS33
* úrove 0,8 V zajiš uje standard LVCMOS18
b) Dodržet rychlost hrany v rozsahu 4 ns až 20 ns není pro výstupní budie LVTTL (pípadn LVCMOS33) s nastavitelnou rychlostí hrany žádná pekážka (obvykle v jednotkách ns).
c) Cross Over Voltage Range (COVR) je definice nap ového rozmezí, v nmž by mlo dojít ke zkížení úrovní pi zmn stavu (pro výstupní budie mezi 1,3 V až 2 V) . Pokud je stejn rychlá spádová i nábžná hrana obou budi signál D+ a D-, musí pi souasné zmn
-37-
3 Rozbor ešení
Pattern generátor
signálu na vstupu tchto budi dojít k jejich souasné zmn na výstupu, což zpsobí protnutí úrovní pesn uprosted COVR. I pi uritém pedstihu jednoho signálu oproti druhému na vstupu budi D, dochází stále k protnutí uvnit COVR na výstupu budi. Pibližný maximální pípustný pedstih mže být definován takto: Z dvodu zjednodušení je definována dolní mez intervalu COVR v 1/3 úrovn napájení, stejn tak horní mez ve 2/3 úrovn napájení. Pokud budou považovány ob hrany za pibližn stejn rychlé, mže být vzájemné maximální možné zpoždní signálu 1/3 rychlosti hrany. Pi nejvyšší povolené rychlosti hrany signálu 20 ns dochází pibližn k 6 ns zpoždní, což je hodnota, kterou jsme schopni dodržet. Pesn by se zpoždní vyjádilo podle vztahu t zp
1,3 2 s n 3,3 3,3
1 1,3s 2n , 3,3
kde s je rychlost nábžné hrany, n je rychlost spádové hrany.
Vcc
D-/+ COVR
obr. 3.13 Ilustrace k COVR
d) Nominální hodnota výstupních impedancí pro Cyclone II je 25 a 50 , což mže být akceptováno. Pro další ipy FPGA nejsou tyto hodnoty známy, ovšem v pípad poteby by bylo možné jejich sériové pedazení.
Dalším aspektem, který je teba pi USB komunikaci ešit, je nutnost synchronizace USB host a funkní jednotky. Podmínkou pro full speed komunikaci je výstupní frekvence vysílaných dat v rozmezí 12,000 MHz
±0,25% s jitterem nepesahujícím ±1 ns. Použitý oscilátor
SG8002 má frekvenní stabilitu ±0,01% - tedy vyhovuje, jitter výstupních obvod katalog Xilinx rodiny Spartan ani Altera Cyclone neuvádjí. Na základ zkušenosti s tmito budii lze ovšem konstatovat, že by jeho hodnota rozhodn nemla pesáhnout danou mez. Synchronizace vstupního signálu mže být provedena pomocí implementovaného hranového detektoru bžícího na frekvenci 8 x 12 MHz, tedy s fázovým rozlišením 45°. Potom by vzhledem k nízké úrovni jitteru, zakomponované vlastnosti bit stuffing a nízkému rozdílu hodinových frekvencí USB host - funkní jednotka, nemla synchronizace init žádné problémy.
-38-
3 Rozbor ešení
Pattern generátor
Podle provedené úvahy by vtšina podmínek pro pímé pipojení byla splnna. Nkteré parametry sice pesn neodpovídají pesn specifikaci USB, ale na správné fungování komunikace by to vliv nemlo (došlo by nap. pouze k posunutí úrovn šumové imunity apod.).
3.5.2 Pevodník USB <-> FIFO Místo pímé komunikace USB mžeme zvolit ešení mnohem mén nároné, pesto však velmi efektivní. V dnešní dob existuje spousta obvod s integrovanými pevodníky sbrnice USB na jiný typ sbrnice nap. RS-232, GPIB atd. Smyslem tchto pevodník je rozdlit komunikaci mezi uživatelským zaízením a ídicím poítaem na dv oddlené ásti. V první z nich komunikuje uživatelské zaízení s pevodníkem po požadované sbrnici, ve druhé pevodník s USB hostem PC. Spolen
s tmito
pevodníky
jsou
dodávány
softwarové
ovladae
pro
snadnou
programovatelnost komunikace aplikaního programu a koncového zaízení pipojeného k USB pevodníku.
Výše uvedené ešení komunikace pomocí FTDI ipu se zdá být ideálním z nkolika hledisek : elektrické rozhraní USB pesn podle specifikace odpadá nutnost složit implementovat protokol USB funkní jednotce knihovní jednotky pro komunikaci aplikaního programu a USB host souástí
pevodníku
Nkteré obvody jsou ureny výhradn jako pevodníky mezi USB a jedinou další sbrnicí (nap. produkty firmy FTDI), jiné v sob zahrnují více komunikaních rozhraní a další souásti jako integrovaný mikroprocesor, pídavné pamti apod. (nap. Cypress). V souasné dob dostupné pevodníky USB poskytují komunikaci ve všech rychlostních režimech sbrnice (high/full/low speed). Na komunikaci pattern generátoru a ídicího poítae nejsou kladeny žádné rychlostní nároky a vzhledem k povaze této komunikace, která má pedevším sloužit za úelem otestování funknosti, je možné se spokojit s levnjší variantou ešení, tedy režimem full speed (12 Mbit/s).
-39-
3 Rozbor ešení
Pattern generátor
Zejm ideální z hlediska efektivity komunikace a složitosti implementace se nabízí komunikace prostednictvím paralelní synchronní komunikace a pamti FIFO, jejíž fyzická vrstva by byla realizována vstupn/výstupními standardy budi TTL nebo CMOS (tedy kompatibilními s budii FPGA). Nap. firma FTDI nabízí pevodník s tímto komunikaním rozhraním.
Následující dva asové diagramy poskytují informaci, jakým zpsobem probíhá komunikace mezi ídicím FPGA a pevodníkem FIFO. Z níže uvedeného je zejmé, že pjde o komunikaci pomocí dvou ídicích signál, dvou kontrolních signál a osmi datových, celkov tedy 12 vodi plus signál PWREN, který indikuje, jestli je funkní jednotka ve stavu resume nebo suspend.
obr. 3.14 Cyklus tení FIFO
obr. 3.15 Cyklus zápisu FIFO
Další parametry a popis chování viz. kap. 4.4 FTDI USB
-40-
3 Rozbor ešení
Pattern generátor
3.6 Shrnutí rozboru ešení Podle rozboru v kap. 3.4.1 Realizace komunikace USB jsem rozhodl o zapojení externího pevodníku sbrnice USB. S touto variantou souvisí implementace komunikaního rozhraní s FIFO pamtí pevodníku na základ definovaných signál a asových diagram. Dále jsem se v kapitole 3.2 Realizace s FPGA a vnjší pamtí jednoznan piklonil k variant pipojení pamti RAM (po úvaze v téže kapitole je realizována typem pamti SDRAM), ímž vyvstala nutnost implementovat adi pamti SDRAM vetn jeho oberstvovací funkce. Pipojením výše zmínné pamti bylo docíleno pomrn velké redukce výstupních kanál na 32. Vzhledem k tomuto faktu a vzhledem k totálnímu zaplnní tém všech uživatelských I/O pin 240-ti vývodového pouzdra FPGA, což by velkou mrou znesnadovalo praktickou realizaci DPS, sestává se výsledná realizace ešení ze dvou obvod FPGA. Jeden z ip slouží jako komunikaní-ídicí ip, druhý jako transportní. Na výstupy transportního modulu navazují výstupní budicí obvody pattern generátoru. Souástí ešení je využití vnitní pamti jednoho z FPGA k ukládání instrukcí komprimovaných vektor. O dalších implementovaných funkcích je pojednáno v kap. 5 Implementace FPGA. Stejn tak je v ásti 4 Hardwarové ešení detailnji rozebrána fyzická realizace vetn dalších blok, o kterých padla zmínka jen okrajov nebo nebyly zmínny vbec.
-41-
4 Hardwarové ešení
Pattern generátor
4 Hardwarové ešení V této ásti je detailnji popsána fyzická realizace pattern generátoru.
4.1 Blokové schéma Srdcem celého pattern generátoru je blok ídicího FPGA, který obstarává potebnou komunikaci po jednotlivých sbrnicích, ídí zápis a tení pamti RAM, peposílá data do transportního FPGA a nastavuje výstupní obvody. Tento obvod využívá navíc své interní pamti RAM. Naopak transportní FPGA figuruje v zapojení jako slave a podle ídicích signál z komunikaního FPGA smruje datový tok mezi pamtí RAM a výstupními obvody. Ob hradlová pole jsou programovatelná prostednictvím JTAG rozhraní nebo pes pipojené pamti Flash. Výstupní obvody A tvoí ptice výstupních bran, které se dají jednotliv odpojovat od testovaného zaízení (DUT), pitom se nepoítá s pipojováním/odpojováním v prbhu generování vektor. Naopak nap ové výstupy B tvoí 8 samostatných kanál, které na svém výstupu generují krom logické úrovn 1 a 0, také High-Z. Nap ová úrove logické hodnoty 1 je nastavitelná u obou typ výstupních budi. Komunikace s ídicím poítaem je realizovaná pomocí FTDI ipu, souástí hardwarového vybavení je také komunikaní rozhraní RS-232 prostednictvím pevodníku MAXIM a sbrnice AMBA bus APB. Pro poslední dv rozhraní zatím nebyla implementována komunikace. O napájení celého pístroje se starají ti nap ové lineární regulátory. NAPÁJECÍ MODUL RAM
AMBA BUS
VÝSTUPNÍ BLOK
FPGA transp.
FPGA ídící
FTDI USB
RS232 FLA SH
FLA SH
JTAG
obr. 4.1 Blokové schéma pattern generátoru
-42-
4 Hardwarové ešení
Pattern generátor
4.2 ídicí a transportní FPGA RAM
RAM osc
48
osc
23
AMBA 61
VÝST.BUDIE VÝST.BLOK 13
FPGA transportní
56
FPGA ídící
13
FTDI
10 4 RS-232 4 JTAG
5
8
FLASH
5
4
FLASH
JTAG
TLA+LED done
reset
done
obr. 4.2 Vývody FPGA – detailn
Konfigurace FPGA – master-serial Na základ tabulkytab. 2.3 Možnosti konfigurace FPGA jsem se rozhodl pro konfiguraci v režimu master-serial s co nejnižším potem konfiguraních pin. Na zaátku programovací sekvence je signál DONE v logické hodnot 0, ímž se nastavuje výbr pamti Flash. Než dojde k inicializaci vnitních pam ových bunk FPGA (INIT v log. 0), drží se výstupní piny pamti ve stavu HIGH-Z. Pi pechodu INIT do log. 1 detekuje FPGA logické úrovn na pinech M0, M1, M2. V pípad detekovaných úrovní 0 zane FPGA na svém výstupu generovat hodinový signál, na základ kterého zane pam vysílat data na svém pinu DO. Frekvence hodinového taktu je nastavitelná, pro tento typ konfigurace maximáln 25 MHz. Samotná pam Flash je programovaná pes rozhraní JTAG. Po dokonení konfigurace se nastavuje signál DONE opt na log. 1, ímž se souasn ruší výbr pamti. Tato úrove je navíc detekovaná rozsvícením led na desce PCB. ipy FPGA potebují pro svoji konfiguraci pibližn 1,3 Mb pamti, takže zbylý prostor pamti Flash (cca 0,7 Mb) zstává k dispozici pro uložení instrukního kódu, konstant apod.
-43-
4 Hardwarové ešení
Pattern generátor
obr. 4.3 Schéma zapojení pamti Flash a etzce JTAG
Oba ipy FPGA vytváejí se svými pam mi Flash samostatné etzce JTAG. Výbr programování (JTAG, Flash) se nastavuje ve spodní ásti desky PCB. (Rozhraním JTAG je možné programovat FPGA pi jakékoliv kombinaci úrovní na M0 až M2, takže pepínaem se pouze povoluje nebo zakazuje programování z Flash pamti). Pokud je nastavena konfigurace master-serial, dojde ke konfiguraci pi pipojení napájení k ipu nebo po stisknutí tlaítka reset.
Vzájemné propojení FPGA Oba ipy jsou propojeny svazkem 10 vodi, které slouží pro penos dat a ídicích signál z ídicího FPGA do transportního. Kterýkoliv z urených šesti vodi mže být použit pro penos hodinového signálu, a to z dvodu terminace k hodinovým pinm transportního bloku. Jeden konkrétní kanál ve svazku je stínn od ostatních a mže sloužit pro penos rychlých dat.
Použité ipy FPGA Xilinx rodiny Spartan 3E XC3S250E 158 uživatelských I/O 612 konfiguraních logických bunk 216 kb vnitní RAM napájení 1,2 V (vnitní logika) , 2,5 V (pomocné napájení, JTAG), 3,3 V
(vstupn/výstupní obvody) externí oscilátor 10 MHz
-44-
4 Hardwarové ešení
Pattern generátor
pouzdro PQ208 blokování keramickými a tantalovými kondenzátory (28 x 100 nF, 8 x 1 μF, 5 x 10
μF) pipojená non-volatilní pam Flash - XCF02S (2 Mb pamti)
4.3 RAM Externí pam RAM je realizována paralelním zapojením dvou blok SDRAM typu MT48LC2M32B2 o shodné výstupní šíce dat 32 bit (i pesto, že u jednoho bloku je využito pouze 16 bit). Hloubka této pamti je 2 Mb/kanál, celková kapacita obou blok tedy 12 MB.
obr. 4.4 Blokové schéma SDRAM
Jak je vidt ze schématu uvedeného níže, všechny ídicí signály jsou pipojeny na výstup ídicího FPGA, naopak všechny využité datové kanály jsou jednoznan pipojeny k transportnímu FPGA. Sériové pipojení obou modul je z hlediska ízení naprosto identické, zapisovat a vyítat se dá minimáln po dvou bajtech (každý bajt z jednoho modulu). Signály A0 až A10, BA0, BA1 slouží pro adresování pamti, signály CS, CLK a CKE slouží popoad jako výbr ipu, hodinový vstup a hradlování hodinového vstupu. Instrukce, na základ kterých se provádí jednotlivé operace nad pamtí jako tení, zápis, oberstvování
-45-
4 Hardwarové ešení
Pattern generátor
apod., jsou definovány kombinací signál CAS, RAS, WE. Pokud chceme adresovat jenom urité bajty využijeme signál DQM0 až DQM3. Podle taktovací frekvence je u tohoto typu pamti možné volit tzv. latency v rozmezí 1 až 3 hodinové takty. Tento parametr udává synchronní zpoždní výstupních dat oproti signálu read. Napíklad pro maximální rychlost 166 MHz by bylo nutné nastavit 3 hodinové takty zpoždní dat oproti inicializanímu píkazu read. Krom blokování 4 povinných napájecích pin kondenzátory 100 nF a 10 μF, byly navíc zablokovány další dva aditivní napájecí piny, které se uplatují za úelem nižšího šumového rušení.
obr. 4.5 Sériové zapojení SDRAM blok
Další parametry a vlastnosti pamti RAM synchronní RAM, data na nábžnou hranu hodin kontinuální tení a zápis programovatelná délka burstu – 1,2,4,8 a celá stránka obnovování náboje s maximální periodou 64 ms vstupy/výstupy kompatibilní s TTL napájení 3,3 V pouzdro TSOP86
-46-
4 Hardwarové ešení
Pattern generátor
4.4 FTDI USB Základní schéma zapojení obvodu FTDI FT245RL je na obr. 4.6. Obvod je v tzv. selfpowered módu a neodebírá žádný výkon ze sbrnice USB. Pipojení na napájecí vodi sbrnice je ovšem realizováno, a to z dvodu resetu ipu v pípad odpojení komunikaního kabelu. V pípad resetu jsou všechny výstupy ve stavu HIGH-Z, ovšem vnitn pipojeny na pull-up rezistor 200 k . Napájení vnitních ástí ipu a vstupn/výstupních obvod je zajištno napájecím naptím 3,3 V, tedy stejnou hodnotou jako obvody komunikaního FPGA. Podobn jako u pedcházejících integrovaných obvod je i toto naptí blokováno kapacitory.
obr. 4.6 Pipojení FTDI ipu
Význam jednotlivých pin RD#
- výstupní - tení dat z pamti FIFO, aktivní v log. 0
WR
- výstupní - zápis dat do pamti pi pechodu z log. 1 do log. 0
TXE#
- vstupní - ve stavu log. 1 se nesmí zapisovat do pamti
RXF#
- vstupní - ve stavu log. 1 je zakázáno íst z pamti
PWREN #
- vstupní - po nakonfigurování po pipojení nastavuje log. 0, pokud je zaízení v režimu suspend, nastavuje log. 1
D7 až D0
- datové vodie
RESET #
- vstupní – umožuje ídicí jednotce reset pamti
OSCI
- vstupní – vstup do buky oscilátoru pro externí hodinový oscilátor
OSCO
- výstupní – výstup z buky oscilátoru
3V3OUT
- výstupní – vtšinou nezapojován (pro napájení vnitních budi)
-47-
4 Hardwarové ešení
Pattern generátor
Další parametry obvodu FT245RL : zaízení USB2.0 full-speed ( 12 MBit/s) penos dat na základ hromadných penos komunikace s ídicím poítaem až 1 MB/s podpora napájení bus-powered a self-powered šíka dat uložených ve FIFO pamti 8 bit hloubka vstupní FIFO pamti 256 bajt, výstupní 128 interní oscilátor 12 MHz zápis a tení pomocí 4 signál napájení 3,3 V až 5 V
4.5 Výstupní blok Výstupní obvody jsou ešeny samostatn na desce plošného spoje a jejich funkcí je mimo jiné oddlení testovaného zaízení od procesního jádra pattern generátoru. Prostednictvím signál z ídicího FPGA je možno nastavit poet užívaných výstupních bran a velikost nap ových úrovní na každé brán zvláš . Celkov lze generovat výstupní vektor o maximální šíce 48 bit (6 bran).
výkonová ást 3x DAC ÍDÍCÍ FPGA ZESIL. BLOK
ZESIL. BLOK signální ást
výst. A
5x TRANSP. FPGA
DUT výst. B
1x
obr. 4.7 Blokové schéma Výstupního bloku
-48-
4 Hardwarové ešení
Pattern generátor
4.5.1 Nastavení hodnoty naptí – výkonová ást Základním obvodem pro nastavení nap ové úrovn je dvoukanálový DA pevodník, který komunikuje s ídicím FPGA prostednictvím 3 vodiového SPI (viz asový diagram).
obr. 4.8 asový diagram komunikace DA pevodníku
Protože se jedná o 8-bitový DA pevodník TLV5625 a jeho referencí je nap ová hodnota 3,3 V, nastavují se jednotlivé úrovn s krokem 25 mV (vzhledem k dvojnásobnému zesílení výstupní hodnoty).
Na výstup každého modulu DAC navazují dva bloky rail-to-rail
operaních zesilova TS922 a tranzistor NPN BCP55-10, jež ve vzájemné souinnosti zajiš ují výkonové posílení výstupního naptí pevodníku DA. Ten není samotný schopen dodávat potebný výkon výstupním budim. Naproti tomu tranzistor, jehož emitor je pipojen na záporný vstup operaního zesilovae, mže teoreticky dodat proud (kolektoremitor) až 1 A, což bude vzhledem k pipojeným obvodm dostatený limit. Naptí s oznaením VOLT_X definuje konenou hodnotu výstupní úrovn a slouží pro napájení výstupních budi v signální ásti.
obr. 4.9 Schéma výkonové ásti
-49-
4 Hardwarové ešení
Pattern generátor
Vybrané parametry a vlastnosti souástek: ADC TLV5625 8-bitový 2 kanály ustálení max. 10 μs max. hodnota výstupu 5,1 V
TS922 výstupní proud max. 80 mA napájení 2,7 V až 12 V rychlost 4MHz, 1,3 V/μs rail-to-rail – nap ový pokles na výstupu maximáln o 0,1 V za tchto definovaných
podmínek – zatžovací rezistor RL= 10 k , napájecí naptí Vcc = 5 V
4.5.2 Signální ást Výstupní budie A Jak již bylo naznaeno v pedchozích blokových schématech, na transportní FPGA navazuje pímo blok výstupních obvod. Ty jsou na svém vstupu tvoeny konkrétním 8-bitovým obvodem SN74LVCH8T245, který má funkci tzv. level-shifteru, tedy funguje jako pevodník logických nap ových úrovní. Konkrétn pevádí úrove signálu z hodnoty +3,3 V mezi FPGA a level-shifterem na nastavenou výstupní úrove VOLT_X mezi level-shifterem a koncovým 8-bitovým výstupním budiem CD74AC244. Spolen tyto obvody vytváejí jednu 8-bitovou bránu, kterou lze pepnout na svém výstupu do stavu HIGH-Z ídicím signálem EN_X (ídicí FPGA). Výstupní budie A tvoí celkov 5 níže uvedených bran.
-50-
4 Hardwarové ešení
Pattern generátor
obr. 4.10 Schéma signální ásti –výst. budie A
Výstupní budie B Vstupní ást výstupních budi typu B tvoí stejný level-shifter SN74LVCH8T245 jako u typu A. Rozdíl je ve výstupním budii, tentokrát realizovaném pomocí obvodu SN74AHC125. Tento typ budie disponuje pro každý kanál samostatným signálem pro pepínání výstupu do tetího stavu. Schéma tohoto zapojení je na obrázku obr. 4.11. Celkov se na tomto typu budi podílí dva level-shiftery a dva koncové výstupní budie o celkovém potu 8 kanál (1 brána).
obr. 4.11 Schéma signální ásti – výstupní budie B
-51-
4 Hardwarové ešení
Pattern generátor
Vybrané parametry a vlastnosti obvod: SN74LVCH8T245 – level shifter pevod úrovní v rozmezí 1,65 V až 5,5 V šíka 8 bit nastavitelný smr toku dat signálem DIR
SN74AHC125 – výstupní budi napájení 2 V až 5,5 V 4 bity + 4 signály pro uvedení výstupu do 3. stavu maximální výstupní proud 25 mA
CD74AC244 – výstupní budi napájení 1,5 V až 5,5 V 8 bit + 2 signály pro uvedení výstupu do 3. stavu maximální výstupní proud 50 mA
-52-
5 Implementace FPGA
Pattern generátor
5 Implementace FPGA V této kapitole je popsáno konkrétní ešení ízení a komunikace pattern generátoru. Popis implementovaného ešení probhl v jazyce VHDL, syntéza kódu pak ve vývojovém prostedí Xilinx ISE 9.2i. Nkteré ásti byly odladny pomocí nástroje Modelsim SE5.7g. Vzhledem k implementovanému rozsahu zde nebudou popsány všechny realizované bloky, pouze ty nejdležitjší.
5.1 Implementace komunikace s FTDI 5.1.1 USB_read Základní modul pro tení z jednotky FIFO FTDI ipu byl sestaven podle asového diagramu obr. 3.14. Tento modul poskytuje možnost vyíst jeden bajt z pamti FIFO, jednotlivé vstupy a výstupy tohoto modulu jsou znázornny na níže uvedeném obrázku.
regist_rd[7..0]
D[7...0]
FIFO
PWREN
USB_read
RXF TXE
rd_ok
WR
rd_alw
RD
obr. 5.1 Modul USB_read
Modul slouží jako komunikaní rozhraní pro nadazené moduly. Pokud tyto chtjí íst z pamti FIFO, nastaví signál rd_alw na hodnotu log. 0 a signálem rd_ok kontrolují, jestli je tení stále v procesu nebo již bylo dokoneno. Požadovaná data jsou pi signálu rd_ok v log. 0 k dispozici na výstupu regist_rd. Implementace ízení je realizována stavovým automatem, který vytváí odpovídající asový prbh tení. Na základ stavového automatu se vygeneruje ídicí signál rd pro FIFO pam a za dostaten dlouhou dobu 200 ns (minimální doba je 50 ns) se uloží data z datového vstupu D do registru regist_rd.
-53-
5 Implementace FPGA
Pattern generátor
RD_OK <= '1' sIDLE0
IF RD_ALW = '0'
sIDLE
IF PWREN = '0' AND RXF = '0'
sSIG
RD <= '0'
sTRIG
RD <= '0' trig <= '1'
sNTRIG
RD <= '0'
obr. 5.2 Stavový automat pro tení a jemu odpovídající asový diagram
Obdobn jako USB_read je také ešen cyklus USB_write.
5.2 Komunikaní protokol Na úvod této kapitoly je teba upozornit, že pojmy jako EOP, ACK atd. nemají žádnou souvislost s komunikací USB. Tyto pojmy jsou obecn používané v oblasti komunikaních rozhraní a v následujícím pípad slouží pro popis vlastní komunikace mezi aplikaním programem a ídicím FPGA. Základní komunikace mezi poítaem a pattern generátorem spoívá ve vysílání 10-bajtového tzv. píkazového paketu na stran poítae a jeho potvrzení pattern generátorem. Krom píkazových paket existuje pro komunikaci ješt paket datový o délce 7 bajt pro zápis vektor nebo instrukcí do pamti. Píkazový paket zaíná 1-bajtovým kódem definujícím tento píkaz, následuje dalších 8 bajt pro penos dat, ovšem pouze nkolik z nich nese informaci vztahující se k samotnému píkazu. Paket koní bajtem EOP (End Of Packet). Naopak všech 6 bajt v datovém paketu
-54-
5 Implementace FPGA
Pattern generátor
nese informaci, která je dále uložena bu v datové nebo instrukní pamti. Paket koní bajtem EOP. Podle pijatých dat vysílá pattern generátor jednobajtovou zprávu o píjmu dat. V pípad správn pijatého paketu vysílá zprávu ACK nebo zprávu KACK, pokud se jednalo o pijetí posledního datového paketu. Pokud v prbhu pijímání paketu došlo k njaké chyb – nap. vypršel timeout nebo nebyl pijatý bajt EOP, dojde k vyslání zprávy NACK. Pokud pattern generátor obdržel píkazový paket s neznámým kódem píkazu, vysílá se zpráva UC (Unknown Code). Podle výše uvedeného se tedy tém výhradn jedná o direktivní ízení pattern generátoru, takže veškeré nutné kontroly zadávaných dat, kontroly obsazení pamti, stavu krokování atd. musí zajistit programová aplikace poítae.
idle
datový paket
ACK
NACK
píkaz. paket
KACK
NACK
ACK
U C
vysílá poíta vysílá patt. gen.
obr. 5.3 Komunikace poítae a pattern generátoru
Výše zmínnou komunikaci na základ píkazových paket (s výjimkou zprávy UC) zajiš uje implementovaný stavový automat. Tento je periodicky volán nadízeným stavovým automatem, který slouží pro dekódování píkazu a spuštní odpovídající subrutiny (viz obr. 5.4). Na zaátku je nadízený stavový automat ve stavu sIDLE0, kdy kontroluje, jestli je automat pro píjem píkazového paketu aktivní. Pokud tento aktivní není, je aktivován a stavový automat se posouvá do dalšího stavu sWAIT, ve kterém eká na validní data pijatého paketu. Na základ prvního bajtu se dekóduje píkaz a zpsobem hot zero je vybrána odpovídající subrutina pro zpracování píkazu. Automat nakonec poká ve stavu sWAIT2 na dokonení píkazu (subrutiny) a vrací se do poáteního stavu.
-55-
5 Implementace FPGA
Pattern generátor
Práv výše probraný automat zajistí v pípad pijetí neznámého píkazu zavolání subrutiny pro zaslání zprávy UC.
sIDLE0
ekání na spuštní automatu
sWAIT
ekání na dokonení pijmu paketu
sDECOD
dekódování a spuštní subrutiny píslušného píkazu
sWAIT2
ekání na ukonení subrutiny
obr. 5.4 Stavový automat pro dekódování píkazu a spuštní subrutiny
Komunikace na základ datového paketu je souástí jedné ze subrutin, zavolané výše uvedeným automatem.
Pedstavu o rychlosti komunikace mezi poítaem a pattern generátorem je možné si udlat na základ tabulky tab. 5.1. Ta definuje možné datové rychlosti pro hromadný penos USB, na jehož základ komunikuje USB pevodník s píslušným ovladaem.
Nejvtší objem penesených dat je pi komunikaci aplikaního programu a ídicího FPGA zprostedkován 7 bajtovými datovými pakety. Podle níže uvedené tabulky pedstavuje tato komunikace maximální penosovou rychlost 426 kB/s (uplatuje se pouze 6 bajt, nikoliv 8). Pokud by bylo teba zaplnit celou vektorovou pam pattern generátoru (12 MB), dokonení penosu by zabralo pibližn 29 s. Pi požadavku na zkrácení této ekací doby by se musela zvýšit délka paketu v nejlepším pípad na 61 bajt (10x šíka vektoru a ukonovací znak). Potom by se ekací doba zkrátila na 11 s.
-56-
5 Implementace FPGA
Pattern generátor
poet bajt/ zprávu
max. dat. rychlost kbajty/s
prostor zpr. ve Frame
max. poet transakcí/ Frame
1
107
1%
107
2
200
1%
100
4
352
1%
88
8
568
1%
71
16
816
2%
51
32
1056
3%
33
64
1216
5%
19
tab. 5.1 Max. rychlost pro hromadný penos - Full speed
5.3 Režimy generování výstupních vektor Z pamti SDRAM mohou být data vyítána ve dvou rzných režimech – burst nebo single, tzn. bu se vyítají data pro každou nábžnou hranu hodinového signálu v rychlém sledu za sebou v burstu 2, 4, 8 nebo 256 bit, nebo se vyte pouze jeden bit (režim single). Burst mód je tak ze své podstaty výhodný pro generování vektor s vysokou frekvencí, omezením je pro nj kontinuální tení pamti a nemožnost generovat tato data delší dobu, než je definovaný interval pro obnovení náboje pamti (v pípad pamti Micron 64 ms). Naopak v režimu single odpadají poslední dv omezení, ovšem za cenu nižší rychlosti. Implementovány byly oba zpsoby.
5.3.1 Burst mód Tento mód implementuje ízení signál WR, CAS a RAS, které vytváejí jednotlivé ídicí píkazy pro pam RAM. Píkaz aktivace ádky a banky (active) se spustí ped samotným píkazem tení (read), po nmž pak následují výstupní data v definovaném potu. Ta jsou ovšem zpoždna o nastavený poet hodinových takt podle nastaveného registru latency, jehož hodnota je spolen s potem bit v burstu stanovena zápisem do registru módu pamti RAM. Tento zápis je nutný pi každé inicializaci pamti. V požadavcích na oberstvování pamti je uvedena maximální doba 64 ms na obnovu náboje každého ádku. Vzhledem k tomu, že pam obnovuje náboj svých ádk cyklicky v pevném poadí, musí být proto za dobu 64 ms posláno minimáln tolik oberstvovacích puls, kolik je
-57-
5 Implementace FPGA
Pattern generátor
ádk pamti (4096). Aby bylo možné generovat data v burst módu po tém maximální pípustnou dobou (64 ms), musí se ped samotným generováním vektor a ihned po nm oberstvit maximální možnou frekvencí všechny ádky pamti. Námi vybraná pam ovšem nepipouští vyšší frekvenci než 16 MHz pro obnovování náboje.
obr. 5.5 tení pamti v 4-bitovém burst módu
obr. 5.6 Refresh ped a po burstu
V tomto módu je dále možno nastavit poátení a koncovou adresu pamti vektor, takže se na výstupu objeví všechny vektory uložené mezi poátení a koncovou adresou (vetn).
5.3.2 Single-read mód Narozdíl od pedchozího módu lze v tomto módu generovat výstupní vektory neomezenou dobu a v jakémkoliv možném poadí. Proto je pípustné tento mód pímo spojit s možností generování vektor podle instrukního souboru uloženého v interní pamti RAM. Nevýhodou je ovšem desetkrát nižší maximální frekvence než u Burst módu. Jeden z dvod snížení frekvence tení ilustruje níže uvedený asový diagram. Z nj pímo vyplývá, že pro vytení jednoho vektoru dat musí být uplatnno minimáln 5 hodinových takt.
-58-
5 Implementace FPGA
Pattern generátor
obr. 5.7 tení z RAM v single módu
Samotné tení podle výše uvedeného asového diagramu je ešeno stavovým automatem režimu single (zkrácen SAS) doplnným o ekací smyku asového signálu (viz obr. 5.8). Tato smyka zajiš uje tení pamti s mnitelnou frekvencí. Stavový automat vyte pro probhnutí celého cyklu pouze jeden bit hloubky. V pípad spuštní Single-read módu generování vektor, je automat SAS periodicky spouštn automatem instrukní pamti a dekódování (zkrácen IPD). Ten práv provádí tení nad instrukní pamtí a podle natených instrukcí periodicky volá SAS a pedává mu hodnotu adresy tení. Oba automaty jsou vzájemn synchronizovány (ilustrace probíhajícími šipkami mezi automaty - obr. 5.8). O stabilní a souasn mnitelnou frekvenci generování vektor se stará jednotka generování asového signálu, která v sob zahrnuje registr, íta a komparátor – v souinnosti tchto tí blok se generuje po vypršení požadované doby puls, který spustí vytení jednoho vektoru pamti RAM. Aby nedošlo ke kolísání frekvence tení, musí se automat SAS nacházet ve svém stavu sPERIOD díve než dorazí asový impuls, tedy díve než svj cyklus provede SAS a IPD. Toto je další dvod pro zkrácení maximální frekvence tení.
Krom opakovaného tení bloku vektor, což bylo hlavní píinou implementace tohoto módu, lze také podle poteby snižovat frekvenci tení v prbhu generování signálu a to v celoíselném podílu základní frekvence. Pokud tedy systém pracuje na základní frekvenci 50 MHz a s implementací ítae 24 bit, mže být výstupní frekvence snížena až k hodnot 3 Hz. Navíc lze tuto zmnu frekvence provést pímo za chodu Single-read módu. Tento atribut zmny frekvence je souástí komprimace a mže výrazn ušetit kapacitu pamti. Seznam dalších instrukcí lze najít v kap. Píkazy a instrukce.
-59-
5 Implementace FPGA
Pattern generátor
IPD automat sIDLE
SAS automat
automat eká na spuštní
sIDLE není další instrukce
automat eká na spuštní
sINSTR
tení instr. RAM, dekódování instrukce
sSTART_SAS
spouštní SAS, pedání požadované adresy externí RAM
sPERIOD automat eká na asový signál
vykonání tení v single módu
sRAM
Generátor as. pulsu
synchronizace automat
obr. 5.8 Automaty Single-read módu a jejich synchronizace
5.4 Píkazy a instrukce V této kapitole je uveden kompletní seznam píkaz posílaných poítaem prostednictvím píkazových paket. Dále je uvedeno, jakým zpsobem jsou kódovány instrukce v instrukní pamti pro generování komprimovaných vektor na výstup pattern generátoru. Tyto instrukce jsou stejn jako samotné vektory pijímány v datovém paketu. Tabulka níže pedstavuje seznam píkaz doplnný o další informace.
-60-
5 Implementace FPGA
Pattern generátor
Píkaz
Kód
en_dis
0xF1
Význam píkazu - nastavení výst. bran na aktivní nebo High-Z
Poet bajt za kódem píkazu - 1 bajt
- nastavení režimu módu výst. B freq
0xF2
level
0xF4
wr_RAM
0xF8
wr_fam
0x1F
rd_RAM
0x2F
rd_slow_mach
0x4F
Název subrutiny - konkrétní funkce en_dis_isntr - nastavení píslušných ídicích pin - zápis do registru transport. FPGA
- nastavení - 1 bajt výstupní frekvence generov. vektor v režimu burst
freq_instr - zápis do registru
- nastavení - 6 bajt napových úrovní výstupních bran
level_instr - zápis hodnot na všechny kanály DAC
- zápis vektor do externí RAM
wr_RAM_instr - vyítání datových paket - zápis externí RAM - ízení transp. FPGA
- 3 bajt (urují poátení adresu)
- zápis instrukcí do - 0 bajt interní pamti (zápis od RAM adresy 0)
wr_fam_instr - vyítání datových paket - zápis interní RAM
- generování vektor na výstup v režimu burst
- 6 bajt (poátení a koncová adresa)
rd_RAM_instr - tení externí RAM - ízení transp. FPGA
- generování vektor na výstup v režimu singleread
- 4 bajty (poátení a koncová adresa interního RAM)
rd_slow_mach - tení externí RAM - tení interní RAM - ízení transp. FPGA
- režim komprimace vektor
tab. 5.2 Píkazy pattern generátoru
-61-
5 Implementace FPGA
Pattern generátor
Další tabulka pedstavuje kódování a význam nkolika instrukcí. Všechny instrukce se vetn dat k nim píslušejících ukládají do interní RAM o šíce 48 bit. První 4 bity definují instrukci, další bity jsou podle typu instrukce dekódovány rzn (viz Význam bit po kódu instrukce - tab. 5.3). Výjimkou je instrukce nap ové hodnoty, která v pamti zabírá 2 x 48 bit.
Instrukce
Kód
Význam instrukce
Význam bit po kódu instrukce
frekvence
0b000 - nastavení výstupních frekvencí pro režim single-read
napové hodnoty
0b001 - podobn jako - zabírá 2 adresy píkaz level - první adresa pouze kód nastaví napové - další adresa pouze data pro ADC úrovn výst. bran
cyklus 1
0b100 - tení bloku vektor
21 bit - start - fyzická adresa 10 bit – stop – offset vi fyzické start adrese 14 bit - íta
cyklus 2
0b101
10 bit - start - offset vi pedchozí stop adrese 21 bit – stop – fyzická adresa 14 bit - íta
cyklus 3
0b110
cyklus 4
0b111
8 bit - start - offset vi pedchozí stop adrese 16 bit – stop – offset vi fyzické start adrese 21 bit - íta 16 bit - start - offset vi pedchozí stop adrese 8 bit – stop – offset vi fyzické start adrese 21 bit - íta
- posledních 24 bit
tab. 5.3 Instrukce interní pamti
5.5 ízení transportního FPGA Význam transportního FPGA spoívá pedevším ve smrování vektor picházejících z ídicího FPGA na brány RAM pi zápisu a smrování vektor z pamti RAM na vstup výstupních budi pi tení. Tento proces je pitom kontrolován signály z ídicího FPGA.
-62-
5 Implementace FPGA
Pattern generátor
Synchronizace mezi obma FPGA je zajištna pivedením hodinového signálu z ídicího FPGA. Tento signál je oproti pvodnímu invertovaný, aby byl zajištn dostatený pedstih a pesah dat v pípad rzných zpoždní signál na penosové cest. Další vstupní signály a jejich význam jsou uvedeny v následující tabulce. Za povšimnutí stojí hlavn signál switch_sig, který pepíná významy nkterých signál. Celý design je synchronní na nábžnou hranu hodinového signálu.
Signál
clk
Popis
Událost
- synchronizaní hodiny nábžná hrana hod. signálu
switch_sig
- pepína významu signál v log. 0
v log. 1
write_sig
- aktivní v log. 0 - zápis
- nastaví registr výst. vektoru na brány RAM
- zapíše 4 bity do registru reg_mux
read_sig
- aktivní v log. 0 - tení
- zapíše data z brány RAM na brány výstup. budi
- nemá význam
shift_sig
- aktivní v log. 0 - posun
- posouvá registr výst. vektoru o 4 bity
- posune vnitní registr reg_mux o 4 bity
nybb_in
- penáší 4 bity - data
- výst. vektoru
- registru reg_mux
obr. 5.9 ídicí signály mezi FPGA
4-bitový signál nybb_in penáší ásti registru výstupního vektoru nebo registru reg_mux. Tyto registry jsou tvoeny jako posuvné registry, které kompletují data za pomoci signálu shift_sig. Registr reg_mux uchovává informaci o aktivních branách výstupních obvod A a informaci o režimu výstupních obvod B (aktivní, neaktivní, aktivní se 3. stavem). K jeho zápisu dochází pi vyslání píkazu en_dis aplikace programu.
-63-
6 Software
Pattern generátor
6 Software Aplikaní program pro pattern generátor byl vyvinut hlavn za úelem testování tohoto pístroje, ovšem vzhledem k jeho variabilit mže posloužit jako plnohodnotné ovládání pattern generátoru. Prvotní aplikaní program byl vytvoen ve vývojovém prostední LabWindows 7.1.0, následn probhl jeho pepis v programovacím prostedí C++ Builder 5.0, a to pedevším z dvodu jeho vtší uživatelské pívtivosti. Aplikaní program slouží hlavn pro naítání textových soubor požadovaných vektor a soubor s instrukcemi pro režim komprimace. Použitý formát uložených vektor definuje na každé ádce souboru jeden vektor nebo instrukci v zápisu šestnáctkové nebo binární soustavy. Dále nemá smysl se tímto formátem zaobírat, nebo bude v brzké dob nahrazen složitjším formátem popisu vektor tzv. stil generovaným speciáln pro elektronické testery. Pesto je možné využít souasného formátu pro generování libovolného prbhu vektor s nároky odpovídajícími parametrm pístroje.
Aplikace programu pitom disponuje následujícími funkcemi : nastavení aktivních výstupních bran nastavení výstupního naptí pro každou bránu zvláš nastavení výstupní frekvence v režimu Burst zápis do vektorové pamti RAM od nastavené adresy na základ stanoveného souboru
s výstupními vektory zápis do instrukní pamti RAM od adresy 0 na základ stanoveného instrukního
souboru spuštní pattern generátoru v módu Burst od nastavené poátení adresy vektorové
pamti do nastavené koncové adresy spuštní pattern generátoru v módu Single-read od nastavené poátení adresy
instrukní pamti po nastavenou koncovou adresu
-64-
7 Výsledné parametry
Pattern generátor
7 Výsledné parametry V tomto oddíle jsou shrnuty dosažené parametry realizovaného pattern generátoru.
7.1 Obecné parametry pístroje Pattern generátor disponuje vektorovou hloubkou pamti 2 Mb/kanál a maximální šíkou vektoru 48 bit. Maximální frekvence generovaných vektor dosáhla hodnoty 50 MHz, výstupní frekvenci je dále možné voliteln snižovat na 20 MHz, 10 MHz, 5 MHz atd. až k úrovni jednotek Hz. Komunikace s ídicím zaízením probíhá pes rozhraní USB2.0 full speed, realizovaný datový penos je pibližn 426 kB/s (maximální nastavitelná 1 MB/s). Dále existuje možnost realizace komunikace prostednictvím sbrnice RS232 a AMBA APB. Implementace FPGA umožuje generování komprimovaných vektor, pi které je využito vnitní pamti FPGA – SRAM o kapacit 24 kB. Pístroj podporuje režim krokování – spouštní a zastavování generovaných vektor na základ nastavených adres. Pattern generátor disponuje softwarovým nastavováním potu výstupních bran – maximální poet 6 souasn spínaných bran (48-bitový vektor). K dispozici je speciální 8-bitová brána s pepínáním výstupu do 3. stavu bhem generování výstupního vektoru. Výstupní úrovn jednotlivých bran je možné softwarov nastavit v rozmezí 1,8 V až 5,4 V podle napájecího naptí pattern generátoru. Stejnosmrné napájení pístroje se mže pohybovat v rozmezí 5 V až 6 V pi maximálním statickém odbru 210 mA. Po dosažení požadovaných napájecích úrovní a po automatické konfiguraci FPGA prostednictvím pamtí Flash je pístroj okamžit pipraven k použití.
7.2 Parametry výstupních obvod Výstupní obvody výstupního bloku pattern generátoru se skládají ze dvou rzných obvod – CD74AC244 (typ A) a SN74AHC125 (typ B). Proto byla další mení provedena pro oba tyto obvody souasn. Stejn tak byla provedena mení jak pro plný poet spínaných kanál (8) , tak pro jediný spínaný kanál obvodu pro úrovn napájecího naptí mezi hodnotami 1,8 V až 5,0 V. Pi mení výstupních signál byly sledovány pedevším tyto parametry rychlost nábžné a spádové hrany pekmit nábžné a spádové hrany
-65-
7 Výsledné parametry
Pattern generátor
vzájemné zpoždní výstupních hran obvod A a B
Podmínky mení K výstupním pinm byl pipojen zatžovací rezistor o jmenovité hodnot 500 (1000
pouze pro mení vzájemného zpoždní signál) a pasivní nap ová sonda o šíce pásma 500 MHz o celkové parazitní kapacit 18 pF (viz obr. 7.1). Pro samotné mení byl použit osciloskop Tektronix TDS7104 s šíkou pásma 1 GHz v režimu záznamové rychlosti 5 GS/kanál po dobu 100 ns.
RL= 500: (1000 :)
výst. obvod
C L=18pF
obr. 7.1 Testovací obvod
Pro každou kombinaci (nap ová úrove; spádová/nábžná hrana; typ obvodu; poet spínaných kanál) se provedlo 10 mení. Standardní odchylka od prmrné hodnoty nebyla u parametr rychlosti hrany a zpoždní vtší než 5%. Výjimkou byl parametr pekmitu, který u 78% mení dosahoval menší standardní odchylku než 10%. Namené stední hodnoty byly zpracovány do spojnicových graf s parametrem napájecího naptí Vcc. 8,00 7,00
spínaný 1 bit spínané 4 bity
Doba náb. hrany [ns]
6,00 5,00 4,00 3,00 2,00 1,00 0,00 1,5
2
2,5
3
3,5 Vcc [V]
-66-
4
4,5
5
5,5
7 Výsledné parametry
Pattern generátor
graf 7.1 Rychlost nábžné hrany SN74AHC125
35,00 spínaný 1 bit 30,00
spínané 4 bity
Pekmit [%]
25,00
20,00
15,00
10,00
5,00
0,00 1,5
2
2,5
3
3,5
4
4,5
5
5,5
5
5,5
Vcc [V]
graf 7.2 Pekmit nábžné hrany SN74AHC125 6,00 spínaný 1 bit
Doba náb. hrany [ns]
5,00
spínaných 8 bit
4,00
3,00
2,00
1,00
0,00 1,5
2
2,5
3
3,5
4
4,5
Vcc [V]
graf 7.3 Rychlost nábžné hrany CD74AC244
-67-
7 Výsledné parametry
Pattern generátor
40,00 35,00
spínaný 1 bit spínaných 8 bit
25,00 20,00 15,00 10,00 5,00 0,00 1,5
2
2,5
3
3,5
4
4,5
5
5,5
Vcc [V]
graf 7.4 Pekmit nábžné hrany CD74AC244
5,00 4,50 zpoždní náb. hran 4,00
zpoždní spád. hran
3,50 Zpoždní [ns]
Pekmit [%]
30,00
3,00 2,50 2,00 1,50 1,00 0,50 0,00 1,5
2
2,5
3
3,5
4
4,5
Vcc [V]
graf 7.5 Vzájemné zpoždní SN74AHC125 a CD74AC244
-68-
5
5,5
7 Výsledné parametry
Pattern generátor
Pi generování signál o nízkých nap ových úrovních je teba poítat s nízkou rychlostí výstupní hrany. Tento fakt prokazují grafy zobrazující závislost rychlosti nábžné hrany pro výstupní budi CD74AC244 (typ A) a SN74AHC125 (typ B) (grafy závislosti rychlosti spádové hrany tuto vlastnost potvrzují). Pomalá hrana pitom zpsobuje deformaci výstupního signálu na vyšších frekvencích pattern generátoru (viz Píloha – Prbh A). Se zvyšujícím se napájecím naptím výstupních obvod roste také rychlost hran. Zejm práv dsledkem toho se zvyšuje i hodnota pekmitu. U vyšších napájecích naptí je tato již nežádoucí. Proto by pi testování na tchto úrovních bylo vhodné pipojit dodatené paralelní kondenzátory k pinm DUT z dvodu snížení rychlosti hrany, a tedy i pekmitu. Další možností by byla výmna výstupních obvod za typy s pomalejší odezvou. Pokud se spíná souasn více kanál v jednom výstupním budii, je teba poítat s vyšším nap ovým pekmitem. Z posledního uvedeného grafu plyne, že se vzrstajícím napájecím, potažmo výstupním naptím klesá vzájemné zpoždní výstupních signál mezi obvody typu A a B.
Výstupní obvody obou typ budi byly zatíženy rezistory 500 resp. 1000 . Namený maximální pokles výstupního naptí vi napájecímu naptí pro obvody B inil 0,35 V resp. 0,17 V, pro obvod typu A pak 0,09 V resp. 0,03 V.
-69-
8 Závr
Pattern generátor
8 Závr Pi srovnání konených parametr pattern generátoru shrnutých v kap. 7.1 a pvodn definovaných parametr z úvodu této práce mohu konstatovat, že se podailo splnit tém veškeré požadavky kladené na realizovaný pístroj. Požadovaných hodnot bylo dosaženo u hloubky pamti a šíky výstupního vektoru. Maximální výstupní frekvenci se podailo zvýšit až na hodnotu 50 MHz. Jednotlivé brány je možno jednotliv aktivovat a souasn mnit jejich výstupní naptí tém libovoln v rozsahu 1,8 V až 5,4 V. Hlavní pínos pattern generátoru ovšem spoívá ve schopnosti generovat výstupní vektor s konstantní šíkou pulsu na hranici jitteru. Práv toho není schopna velká ást v souasné dob profesionáln vyrábných pístroj vzhledem k softwarovému zpracování výstupních vektor. Správné fungování pístroje bylo nkolikrát oveno generováním navolených blok vektor v módu Single-read i Burst za pomoci osciloskopu nebo logického analyzátoru.
-70-
9 Seznam použité literatury
Pattern generátor
9 Seznam použité literatury [1] Intel, Compact, Hewlett-Packard, etc..: Universal Serial Bus Specification, 2000. [2] Haasz, V., Roztoil, J., Novák, J.: íslicové mící systémy, Vydavatelství VUT, 2000. [3] Kocourek, P., Novák, J. : Penos informace, Vydavatelství VUT, Praha 2004. [4] Bayer, J., Hanzálek, Z., Šusta, R.: Logické systémy pro ízení, Vydavatelství VUT, 2000. [5] Š astný, J. : Programovatelná hradlová pole, Automatizace, 2008. [6] Záhlava, V.: Metodika návrhu plošných spoj, Vydavatelství VUT, 2000. [7] Vedral,J., Fischer,J.:Elektronické obvody pro mící techniku, Vydavatelství VUT, 2004. [8] Cohen, B.: VHDL Coding Styles and Methodologies, Kluwer Academic Publishers, 1997
Firemní literatura [9] Xilinx. Spartan-3 FPGA Family: Complete Data sheet, 2007. [10] Xilinx. Spartan-3E FPGA Family: Complete Data sheet, 2007 [online]. URL:< http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf >. [11] Xilinx. Platform Flash In-System Programmable Configuration PROMs, 2007. [12] Xilinx. Spartan-3 Generation Configuration User Guide, 2007. [13] Altera. Section 1.Cyclone FPGA Family Data Sheet, 2007. [14] Altera. Section 1. Cyclone II Device family Data sheet, 2007. [15] Micron. Synchronous SDRAM MT48LC2M32B2, 2001 [online]. URL:< http://download.micron.com/pdf/datasheets/dram/sdram/64MSDRAMx32.pdf >. [16] FTDI. FT245R USB FIFO I.C., 2005 [online]. URL:< http://www.ftdichip.com/Documents/DataSheets/DS_FT245R.pdf>. [17] FTDI. D2XX Programmer’s Guide, 2006 [online]. URL:< http://www.ftdichip.com/Documents/ProgramGuides/D2XXPG34.pdf>. [18] Texas Instruments. TLV5625, 2002 [online]. URL:< http://focus.ti.com/lit/ds/symlink/tlv5625.pdf>. [19] Texas Instruments. CD74AC244, 2004. [20] Texas Instruments. SN74LVCH8T245, 2007. [21] Texas Instruments. SN74AHC125, 2003. [22] STMicroelectonics. TS922, 1999.
-71-
10 Píloha
Pattern generátor
10 Píloha Seznam tabulek tab. 2.1 Mezní nap. úrovn na sbrnici .................................................................................... 12 tab. 2.2 Interpretace stav na sbrnici ...................................................................................... 13 tab. 2.3 Možnosti konfigurace FPGA....................................................................................... 22 tab. 3.1 Parametry ip Xilinx a Altera.................................................................................... 25 tab. 3.2 Maximální poet vektor – odhad............................................................................... 26 tab. 3.3 Procentuální pírstek hloubky pamti........................................................................ 31 tab. 3.4 Výstupní parametry FPGA.......................................................................................... 33 tab. 3.5 Max. zatížitelnost budie LVCMOS ........................................................................... 34 tab. 3.6 Nap ové úrovn specifikace USB a budie LVCMOS33 ......................................... 37 tab. 5.1 Max. rychlost pro hromadný penos - Full speed........................................................ 57 tab. 5.2 Píkazy pattern generátoru........................................................................................... 61 tab. 5.3 Instrukce interní pamti............................................................................................... 62
-72-
10 Píloha
Pattern generátor
Seznam obrázk obr. 2.1 Topologie USB ........................................................................................................... 11 obr. 2.2 Kabel USB pro full/high speed ................................................................................... 12 obr. 2.3 Sekvence hromadného penosu (pouze full speed a low speed)................................. 14 obr. 2.4 Rozložení blok na ipu.............................................................................................. 16 obr. 2.5 Blokové schéma propojení v CLB.............................................................................. 17 obr. 2.6 Koncové pizpsobení diferenních standard........................................................... 18 obr. 2.7 Rozložení bank na ipu............................................................................................... 18 obr. 2.8 Zpožovací len IOB.................................................................................................. 19 obr. 2.9 Propojovací sí ............................................................................................................ 21 obr. 3.1 Blokové schéma ešení ............................................................................................... 24 obr. 3.2 Pipojení FIFO ............................................................................................................ 27 obr. 3.3 Pipojení RAM............................................................................................................ 28 obr. 3.4 Maximální šíka vektoru - odhad................................................................................ 29 obr. 3.5 Uložení dat - všechny brány ....................................................................................... 30 obr. 3.6 Uložení dat - píklad 3 brány ...................................................................................... 30 obr. 3.7 Posuvný registr – píklad pro 3 brány......................................................................... 31 obr. 3.8 Zapojení vnitní RAM................................................................................................. 32 obr. 3.9 Píklad uložení dat a instrukcí..................................................................................... 33 obr. 3.10 Zpoždní signálu na budii + testovací podmínky ................................................... 35 obr. 3.11 Výstupní budie USB ............................................................................................... 36 obr. 3.12 Schéma možného zapojení........................................................................................ 37 obr. 3.13 Ilustrace k COVR...................................................................................................... 38 obr. 3.14 Cyklus tení FIFO..................................................................................................... 40 obr. 3.15 Cyklus zápisu FIFO .................................................................................................. 40 obr. 4.1 Blokové schéma pattern generátoru............................................................................ 42 obr. 4.2 Vývody FPGA – detailn............................................................................................ 43 obr. 4.3 Schéma zapojení pamti Flash a etzce JTAG.......................................................... 44 obr. 4.4 Blokové schéma SDRAM........................................................................................... 45 obr. 4.5 Sériové zapojení SDRAM blok ................................................................................ 46 obr. 4.6 Pipojení FTDI ipu .................................................................................................... 47 obr. 4.7 Blokové schéma Výstupního bloku ............................................................................ 48 obr. 4.8 asový diagram komunikace DA pevodníku............................................................ 49 obr. 4.9 Schéma výkonové ásti............................................................................................... 49 obr. 4.10 Schéma signální ásti –výst. budie A...................................................................... 51 obr. 4.11 Schéma signální ásti – výstupní budie B............................................................... 51 obr. 5.1 Modul USB_read ........................................................................................................ 53 obr. 5.2 Stavový automat pro tení a jemu odpovídající asový diagram ............................... 54 obr. 5.3 Komunikace poítae a pattern generátoru................................................................. 55 obr. 5.4 Stavový automat pro dekódování píkazu a spuštní subrutiny.................................. 56 obr. 5.5 tení pamti v 4-bitovém burst módu ........................................................................ 58 obr. 5.6 Refresh ped a po burstu ............................................................................................. 58 obr. 5.7 tení z RAM v single módu ....................................................................................... 59 obr. 5.8 Automaty Single-read módu a jejich synchronizace .................................................. 60 obr. 5.9 ídicí signály mezi FPGA .......................................................................................... 63 obr. 7.1 Testovací obvod .......................................................................................................... 66
-73-
10 Píloha
Pattern generátor
Deska plošného spoje Hlavní deska
-74-
10 Píloha
Pattern generátor
Hlavní deska
-75-
10 Píloha
Pattern generátor
Deska výstupních obvod
-76-
10 Píloha
Pattern generátor
Generované prbhy Prbh A - Frekvence 40 MHz, CD74AC244
Prbh B - Frekvence 1 MHz, CD74AC244
-77-
10 Píloha
Pattern generátor
Prbh C - Frekvence 10 MHz, CD74AC244
Prbh D - Frekvence 40 MHz, CD74AC244, nezapisovaná ást pamti RAM
-78-