´ UCEN ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA ELEKTROTECHNIKY ˇ ´ICH TECHNOLOGI´I A KOMUNIKACN ´ ˇ RIC ˇ ´I TECHNIKY USTAV AUTOMATIZACE A ME FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF CONTROL AND INSTRUMENTATION
ˇ ´ SBERNICE PCI EXPRESS MODUL LOGICKEHO ´ ANALYZATORU LOGIC ANALYZER MODULE BASED ON PCIE CARD
´ RSK ˇ A ´ PRACE ´ BAKALA BACHELOR’S THESIS
´ AUTOR PRACE
´S ˇ JUR ˇ´IK TOMA
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2010
ˇ ING. SOBESLAV VALACH
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřicí techniky
Bakalářská práce bakalářský studijní obor Automatizační a měřicí technika Student: Ročník:
Tomáš Juřík 3
ID: 109667 Akademický rok: 2009/2010
NÁZEV TÉMATU:
Sběrnice PCI express modul logického analyzátoru POKYNY PRO VYPRACOVÁNÍ: Ve studijní fázi projektu se seznamte se sběrnicí PCIe a jejími základními charakteristikami. Ve druhé fázi projektu implementujte PCIe core do hradlového pole a prověřte chová systému zda odpovídá teoretickým předpokladům. V poslední fázi vytvořte jednoduchý modul, který bude sloužit jako logický analyzátor připojený k rozhraní PCIe. Funkci ověřte jak na reálných tak i na syntetických datech. Zadání bude realizováno na platformě FPGA Xilinx Spartan3 nebo Virtex5. DOPORUČENÁ LITERATURA:
Termín zadání:
8.2.2010
Termín odevzdání:
Vedoucí práce:
Ing. Soběslav Valach
31.5.2010
prof. Ing. Pavel Jura, CSc. Předseda oborové rady
UPOZORNĚNÍ: Autor bakalářské práce nesmí při vytváření bakalářské práce porušit autorská práva třetích osob, zejména nesmí zasahovat nedovoleným způsobem do cizích autorských práv osobnostních a musí si být plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení části druhé, hlavy VI. díl 4 Trestního zákoníku č.40/2009 Sb.
ABSTRAKT C´ılem t´eto pr´ace je implementace jednoduch´eho logick´eho analyz´atoru do hradlov´eho pole pˇripojen´eho k sbˇernici PCI-Express. D´ale jsou vytvoˇreny moduly ˇctyˇr ˇc´ıtaˇc˚ u pro generov´an´ı testovac´ıch dat. V pr´aci je popis´an princip funkce logick´eho analyz´atoru. Je tak´e rozebr´ana v´yvojov´a v´yvojov´a karta Spartan-3 PCI Express Starter Kit a architektura hradlov´ych pol´ı Xilinx Spartan-3. Uvedeny jsou jednotliv´e kroky v´yvoje souˇc´ast´ı logick´eho analyz´atoru.
ˇ ´ SLOVA KL´ICOV A Logick´y analyz´ator, FPGA, PCI Express, Link, Lane, Xilinx, Spartan-3, XC3S1000, ISE, CORE Generator, WinDriver
ABSTRACT The goal of this bachelor’s thesis is to implement simple FPGA-based logic analyzer connected to PCI-Express bus. Furthermore four counters are implemented to generate testing dataset. This thesis describes a fundamental priciple and use of logic analyzer. An overview of Spartan-3 PCI Express Starter Kit development board and Xilinx Spartan-3 field-programmable gate array anrchitecture is given. Stages of logic analyzer development are detailed as well.
KEYWORDS Logic analyzer, FPGA, PCI Express, Link, Lane, Xilinx, Spartan-3, XC3S1000, ISE, CORE Generator, WinDriver
ˇ´IK, T. Sbˇernice PCI express modul logick´eho analyz´atoru. Brno: Vysok´e uˇcen´ı techJUR nick´e v Brnˇe, Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı, 2010. 44 s. Vedouc´ı bakal´aˇrsk´e pr´ace Ing. Sobˇeslav Valach.
´ SEN ˇ ´I PROHLA Prohlaˇsuji, ˇze svou bakal´aˇrskou pr´aci na t´ema Sbˇernice PCI express modul logick´eho ” analyz´atoru“ jsem vypracoval samostatnˇe pod veden´ım vedouc´ıho bakal´aˇrsk´e pr´ace a s pouˇzit´ım odborn´e literatury a dalˇs´ıch informaˇcn´ıch zdroj˚ u, kter´e jsou vˇsechny citov´any v pr´aci a uvedeny v seznamu literatury na konci pr´ace. Jako autor uveden´e bakal´aˇrsk´e pr´ace d´ale prohlaˇsuji, ˇze v souvislosti s vytvoˇren´ım t´eto bakal´aˇrsk´e pr´ace jsem neporuˇsil autorsk´a pr´ava tˇret´ıch osob, zejm´ena jsem nezas´ahl nedovolen´ym zp˚ usobem do ciz´ıch autorsk´ych pr´av osobnostn´ıch a jsem si plnˇe vˇedom n´asledk˚ u poruˇsen´ı ustanoven´ı § 11 a n´asleduj´ıc´ıch autorsk´eho z´akona ˇc. 121/2000 Sb., vˇcetnˇe moˇzn´ych trestnˇepr´avn´ıch d˚ usledk˚ u vypl´yvaj´ıc´ıch z ustanoven´ı § 152 trestn´ıho z´akona ˇc. 140/1961 Sb.
V Brnˇe dne 31. kvˇetna 2010
.................................. (podpis autora)
ˇ ´ ´I PODEKOV AN Dˇekuji vedouc´ımu bakal´aˇrsk´e pr´ace Ing. Sobˇeslavu Valachovi za u´ˇcinnou metodickou, pedagogickou a odbornou pomoc a dalˇs´ı cenn´e rady pˇri zpracov´an´ı m´e bakal´aˇrsk´e pr´ace.
V Brnˇe dne 31. kvˇetna 2010
.................................. (podpis autora)
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
6
OBSAH ´ Uvod 1
2
3
4
9
Logick´y analyz´ator
10
1.1
Definice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.2
Typy anal´yz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.3
Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.4
Existuj´ıc´ı ˇreˇsen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Hardwarov´e prostˇredky
14
2.1
Spartan-3 PCI Express Starter Kit . . . . . . . . . . . . . . . . . . . . .
14
2.1.1
Relevantn´ı komponenty v´yvojov´eho kitu . . . . . . . . . . . . .
15
2.1.2
Zdroje nap´ajen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.1.3
Konfigurace FPGA . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.2
Obecn´a architektura FPGA . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.3
Architektura Spartan-3 XC3S1000 . . . . . . . . . . . . . . . . . . . . .
19
2.3.1
Hlavn´ı rysy hradlov´eho pole XC3S1000 . . . . . . . . . . . . . .
19
2.3.2
CLBs (Configurable Logic Blocks) . . . . . . . . . . . . . . . .
20
2.3.3
Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.3.4
IOBs (Input/Output Blocks) . . . . . . . . . . . . . . . . . . . .
22
2.3.5
DCM (Digital Clock Manager) . . . . . . . . . . . . . . . . . . .
22
2.3.6
Propojovac´ı s´ıt’ . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.3.7
Distribuˇcn´ı s´ıt’ hodinov´eho sign´alu . . . . . . . . . . . . . . . . .
25
Sbˇernice PCI Express
26
3.1
Vrstvy sbˇernice PCI Express . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2
Propojen´ı FPGA a PX1011A PHY . . . . . . . . . . . . . . . . . . . . .
29
Aplikace FPGA
30
4.1
Hierarchie modul˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
4.2
ISE WebPack 11.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.3
CORE Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
5
6
7
4.4
Stavov´e registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.5
Implementace triggeru . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.6
Rychlost bˇehu a vyuˇzit´ı zdroj˚u . . . . . . . . . . . . . . . . . . . . . . .
36
ˇ ıd´ıc´ı software R´
37
5.1
Model komunikace s WinDriver . . . . . . . . . . . . . . . . . . . . . .
37
5.2
Uˇzivatelsk´e rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Z´avˇer
40
Literatura
41
˚ veliˇcin a zkratek Seznam symbolu,
43
Seznam pˇr´ıloh
44
Pˇr´ılohy
44
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
8
´ ˚ SEZNAM OBRAZK U 1.1
Logick´y analyz´ator Tektronix TLA5000 [7] . . . . . . . . . . . . . . . .
10
1.2
Diagram propojen´ı ChipScope modul˚u . . . . . . . . . . . . . . . . . . .
12
1.3
Grafick´e rozhran´ı analyz´eru ChipScope Pro . . . . . . . . . . . . . . . .
13
2.1
Prosotrov´e uspoˇra´ d´an´ı v´yvojov´e karty [1] . . . . . . . . . . . . . . . . .
16
2.2
Typick´a architektura obvodu FPGA [9] . . . . . . . . . . . . . . . . . . .
18
2.3
Typick´a struktura logick´eho bloku . . . . . . . . . . . . . . . . . . . . .
19
2.4
Organizace rozloˇzen´ı d´ılˇc´ıch blok˚u pro architekturu rodiny Spartan-3 [3] .
20
2.5
Uspoˇra´ d´an´ı ˇrez˚u uvnitˇr CLB [3] . . . . . . . . . . . . . . . . . . . . . .
21
2.6
Datov´e cesty dual-port blokov´e RAM [3] . . . . . . . . . . . . . . . . .
22
2.7
DCM funkˇcn´ı blok [3] . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.8
Zjednoduˇsen´e sch´ema DLL [3] . . . . . . . . . . . . . . . . . . . . . . .
23
2.9
Long Line [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.10 Hex Line [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.11 Double Line [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.12 Direct Line [3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.13 Glob´aln´ı propojovac´ı s´ıt’ hodinov´eho sign´alu [3] . . . . . . . . . . . . . .
25
3.1
PCI Express Link [5] . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.2
Vrstvy sbˇernice PCI Express [5] . . . . . . . . . . . . . . . . . . . . . .
27
3.3
Grafick´e zn´azornˇen´ı kompozice a dekompozice souˇca´ st´ı paketu [5] . . . .
28
3.4
Propojen´ı Spartan-3 FPGA a PX1011A PHY [1] . . . . . . . . . . . . . .
29
4.1
Zjednoduˇsen´a hierarchie modul˚u logick´eho analyz´eru . . . . . . . . . . .
31
4.2
V´yvojov´e prostˇred´ı ISE WebPack 11.1 . . . . . . . . . . . . . . . . . . .
32
4.3
Nastaven´ı identifikace karty . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.4
V´yvojov´e prostˇred´ı ISE WebPack 11.1 . . . . . . . . . . . . . . . . . . .
33
4.5
Hlavn´ı okno CORE Gener´atoru . . . . . . . . . . . . . . . . . . . . . . .
33
5.1
Model komunikace s pouˇzit´ım WinDriveru . . . . . . . . . . . . . . . . .
37
5.2
Grafick´e zn´azornˇen´ı zaznamenan´ych pr˚ubˇeh˚u pro BCD cˇ´ıtaˇc . . . . . . .
38
5.3
Tabulka zaznamenan´ych vzork˚u pro BCD cˇ´ıtaˇc . . . . . . . . . . . . . .
39
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
9
´ UVOD C´ılem t´eto pr´ace je vytvoˇren´ı jednoduch´eho modulu logick´eho analyz´atoru do hradlov´eho pole. Pouˇzit´ı klasick´ych logick´ych analyz´ator˚u nebo osciloskop˚u tu selh´av´a. Tento fakt je d´an t´ım, zˇ e vˇetˇsina dˇeje se odehr´av´a uvnitˇr cˇ ipu a sond´am jsou tak poˇzadovan´e sign´aly nepˇr´ıstupn´e. Vyveden´ı sign´al˚u na v´ystupn´ı piny je m´alo aplikovateln´e ˇreˇsen´ı. V´ystupn´ıch pin˚u je omezen´e mnoˇzstv´ı a poˇcet vnitˇrn´ıch propojek je o nˇekolik ˇra´ d˚u vyˇssˇ´ı. S nˇekter´ymi ˇ sen´ım je, naprogramovat logick´y analyz´er pouzdry je pˇripojen´ı sond dokonce nemoˇzn´e. Reˇ pˇr´ımo do int´ern´ı logiky hradlov´eho pole a komunikaˇcn´ım kan´alem monitorovat vnitˇrn´ı stavy. V n´asleduj´ıc´ıch kapitol´ach jsou pops´any jak hardwarov´e, tak softwarov´e n´astroje pouˇzit´e pˇri implementaci. Definov´any jsou z´akladn´ı vlastnosti logick´eho analyz´atoru a jeho rozd´ıly s osciloskopem. Rozhran´ı PCI-Express je rozebr´an v takov´e m´ıˇre, abychom ho mohli implementovat s modulem logick´eho analyz´atoru.
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
10
´ ´ ANALYZATOR LOGICKY
1 1.1
Definice
Logick´y analyz´ator je zaˇr´ızen´ı, kter´e se pouˇz´ıv´a k zobrazen´ı a anal´yze sign´al˚u. Jedn´a se o sign´aly logick´ych u´ rovn´ı o kmitoˇctech zpravidla daleko pˇresahuj´ıc´ı pozovac´ı schopnost cˇ lovˇeka. Omezen´ı pozorovatele se obch´az´ı pomoc´ı realtime z´aznamu sign´al˚u do pamˇeti a n´asleduj´ıc´ım offline zpracov´an´ı a vykreslen´ı pr˚ubˇeh˚u. Logick´y analyz´ator je tedy v´yvoj´aˇru˚ v apar´at urˇcen´y k ladˇen´ı chov´an´ı integrovan´ych obvod˚u a desek ploˇsn´ych spoj˚u. Na prvn´ı pohled m˚uzˇ e zd´at, zˇ e logick´y analyz´ator m´a stejnou funkci jako osciloskop, ale nen´ı tomu tak. Osciloskop je vˇetˇsinou vybaven dvˇema cˇ i cˇ tyˇrmi analogov´ymi kan´aly. Logick´y analyz´ator m´a naopak vstupy bin´arn´ı cˇ asto v poˇctu 16, 32 a v´ıce. Existuj´ı i zaˇr´ızen´ı kombinuj´ıc´ı tyto funkce v podobˇe tzv. osciloskop˚u sm´ısˇen´ych sign´al˚u.
Obr´azek 1.1: Logick´y analyz´ator Tektronix TLA5000 [7]
Logick´e analyz´atory m˚uzˇ ou b´yt v podobˇe samostan´eho pˇr´ıstroje s obrazovkou nebo pouze jako vstupn´ı zaˇr´ızen´ı pˇripojen´e k PC napˇr. pˇres USB. Zobrazen´ı a rozbor sign´al˚u je proveden pomoc´ı specifick´eho programu. Tato pr´ace se ale zab´yv´a implementac´ı analyz´atoru pro intern´ı sign´aly hradlov´eho pole. Tyto sign´aly nejsou vyvedeny na piny integrovan´eho obvodu a nedok´azˇ eme je tedy pˇripojit sondami ani jin´ymi fyzick´ymi vodiˇci. Jedn´a se tedy cˇ istˇe o softwarov´y n´astroj.
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
1.2
11
Typy anal´yz
Pˇri pouˇzit´ı analyz´atoru rozliˇsujeme typ anal´yzy: ˇ Casov´ a – Pozorov´an´ı synchronnosti v´ıcevodiˇcov´e sbˇernice, korelaci v˚ucˇ i hodinov´emu sign´alu a detekce vzniku poruchov´ych impluz˚u (tzv. Glitch). Stavov´a – Rozbor komunikace sbˇernic (napˇr. sledov´an´ı reakce datov´e sbˇernice na zmˇenu ˇr´ıd´ıc´ı). Sign´aly by mˇely b´yt synchronn´ı.
1.3
Trigger
Na sbˇernic´ıch v pr˚ubˇehu testov´an´ı se obvykle mˇen´ı obrovsk´e mnoˇzstv´ı stav˚u, nicm´enˇe v´yvoj´aˇre zaj´ım´a jeden urˇcit´y konkr´etn´ı. Logick´y analyz´er data cyklicky zapisuje do pamˇeti a pˇrepisuje nejstarˇs´ı zaznamenan´e vzorky. Pro zastaven´ı z´apisu se vyuˇzije pˇredem definovan´e ud´alosti v podobˇe tzv. triggeru (z angl. trigger = spouˇst’). Pouˇz´ıvaj´ı se dvˇe z´akladn´ı triggrovac´ı podm´ınky (angl. trigger condition): Pattern trigger – Spouˇst’ je citliv´a na logick´e u´ rovnˇe kan´al˚u podle dan´eho vzoru. Edge Trigger – Hranov´y trigger pozoruje v´yskyt n´astupn´e cˇ i sestupn´e hrany. Spojen´ım z´akladn´ıch podm´ınek, kombinaˇcn´ı a sekvenˇcn´ı logiky vznikaj´ı sofistikovan´e triggery. Pˇr´ıkladˇem m˚uzˇ e b´yt napˇr´ıklad sledov´an´ı TCP a HTTP protokol˚u. Trigger je tedy ud´alost, kter´a pˇri v´yskytu umoˇznˇ uje logick´emu analyz´eru dokonˇcen´ı zaplnˇen´ı pamˇeti a zastaven´ı mˇeˇren´ı.
1.4
Existuj´ıc´ı rˇ eˇsen´ı
Nejzn´amˇejˇs´ı n´astroj pro anal´yzu intern´ıch sign´al˚u FPGA je software ChipScope od firmy Xilinx. Skl´ad´a se ze dvou hlavn´ıch cˇ a´ st´ı: Embedded IP core – Vloˇzen´y modul do n´avrhu zachyt´av´a hodnoty vzork˚u uvnitˇr FPGA nebo ovl´ad´a virtu´aln´ı vstupy a v´ystupy (modul VIO – Virtual Input/Output core). Software na hostitelsk´em poˇc´ıtaˇci – Naˇc´ıt´a a vizualizuje uloˇzen´e vzorky.
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
ChipScope obsahuje mnoˇzstv´ı embedded modul˚u pro ladˇen´ı r˚uznorod´ych typ˚u sbˇernic. Pro funkci univerz´aln´ıho logick´eho analyz´eru je urˇcena kombinace tˇechto modul˚u: • ICON (Integrated CONtroller): Modul ˇradiˇce, kter´y poskytuje komunikaci mezi hostitelsk´ym PC a embedded ChipScope moduly (napˇr. VIO a ILA). V sys´emu je vˇzdy jen jedna instance. • ILA (Integrated Logic Analyzer): Modul, kter´y umoˇznˇ ujˇe z´aznam hodnot vstupn´ıch sign´al˚u a um´ıstˇen´ı triggeru. Vzorky jsou ukl´ad´any do blokov´ych RAM z prostˇredk˚u FPGA. Modul˚u m˚uzˇ e b´yt vloˇzeno i nˇekolik, jsou vz´ajemnˇe nez´avisl´e. V´yhoda pouˇzit´ı ChipScope modul˚u leˇz´ı v moˇznosti zaznamen´avat i vstupnˇe/v´ystupn´ı sign´aly z hardwaru pˇri bˇehu zaˇr´ızen´ı. Dosaˇzeno je to t´ım, zˇ e tyto moduly jsou vlastnˇe standardn´ı HDL moduly, kter´e jsou syntetizov´any a implementov´any z´aroveˇn s vlastn´ım n´avrhem. Simulac´ı jsme sice schopni dos´ahnou vytvoˇren´ı umˇel´ych sign´al˚u pro top-level modul, ale je to velmi obt´ızˇ n´e. Na obr. 1.2 je zobrazen propojovac´ı zˇ etˇezec pˇri pouˇzit´ı jednoho ILA modulu. USB
Hostitelský PC s ChipScope
JTAG
Xilinx Platform Cable USB
FPGA top-level modul
...
Pozorovaný modul
bit 0 bit 1 bit n
ILA Modul
control 36
ICON Controller
Obr´azek 1.2: Diagram propojen´ı ChipScope modul˚u Pro pˇripojen´ı k PC je pouˇzit USB JTAG debugger, kter´y se soubˇezˇ nˇe pouˇzije jako program´ator (viz 2.1.3). Moduly ILA a ICON jsou generov´any v programu ChipScope Core Generator pro danou architekturu hradlov´eho pole. Pˇred generov´an´ım se vol´ı velikost pamˇeti vzork˚u, poˇcet vstupn´ıch kan´al˚u a typ triggeru. Do top-level modulu jsou vloˇzeny jako uzavˇren´e (tzv. blackbox) instance.
12
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Vlastnosti ChipScope Pro [8] • 1 aˇz 4096 vstupn´ıch kan´al˚u. • Pamˇet na 256 aˇz 131 072 vstupn´ıch vzork˚u. ˇ ırˇka triggeru aˇz 256 kan´al˚u. • S´ • Vˇsechny funkce triggeru a ukl´ad´an´ı dat jsou synchronn´ı s frekvenc´ı aˇz do 500 MHz. • Vloˇzen´ı aˇz 15 instanc´ı ILA modulu. • Sign´al pro potvrzen´ı triggrovac´ı podm´ınky m´a zpoˇzdˇen´ı 10 hodinov´ych cykl˚u od odpov´ıdaj´ıc´ıch vstupn´ıch dat.
Obr´azek 1.3: Grafick´e rozhran´ı analyz´eru ChipScope Pro
13
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
14
ˇ HARDWAROVE´ PROSTREDKY
2
Pro implementaci logick´eho analyz´ator byla vybr´ana platforma Xilinx Spartan-3 v podobˇe v´yvojov´e karty Spartan-3 PCI Express Starter Kit. Ta je pˇr´ımo urˇcena k v´yvoji aplikac´ı zaloˇzen´ych na rozhran´ı PCI Express. Je moˇznost ji vyuˇz´ıt ale i k obecn´emu v´yvoji pro FPGA. Na testov´an´ı i v´yvoj byl pouˇzit poˇc´ıtaˇc se z´akladn´ı deskou ASRock A330ION. Tato deska byla vybr´ana pro sv˚uj mal´y form´at Mini-ITX a vyveden´emu rozhran´ı PCI Express 2.0 x16, coˇz u tohoto form´atu nen´ı bˇezˇ n´e. Procesor je integrovan´y typu Intel DualCore Atom 330 se z´akladn´ım taktem 1.6 GHz. Pamˇeti jsou pouˇzity v konfiguraci 2x 2 GB DDR3 taktovan´ych na frekvenci 1066 MHz. Volba v´yvojov´eho poˇc´ıtaˇce m´a podstatn´y v´yznam pro rychlost sestaven´ı programu. V popsan´e konfiguraci sestaven´ı fin´aln´ıho bitstreamu pro FPGA tvrv´a pˇribliˇznˇe 15 minut. K programov´an´ı hradlov´eho pole byl pouˇzit origin´aln´ı program´ator od firmy Xilinx s n´azvem Platform Cable USB. K poˇc´ıtaˇci je pˇripojen pomoc´ı rozhran´ı USB 2.0 a k v´yvojov´e desce pˇres standardizovan´e rozhran´ı JTAG. Prim´arn´ı pouˇzit´ı rozhran´ı JTAG je testov´an´ı integrovan´ych obvod˚u a ploˇsn´ych spoj˚u, ale pouˇz´ıv´a se i k programov´an´ı pamˇet´ı pomoc´ı pˇridruˇzen´ych standard˚u (napˇr. IEEE 1532). Identifik´ator modelu pouˇzit´eho program´atoru je DLC9.
2.1
Spartan-3 PCI Express Starter Kit
Vybran´a v´yvojov´a deska poskytuje vhodn´e prostˇred´ı k okamˇzit´emu v´yvoji rozmanit´ych zaˇr´ızen´ı s aplikaˇcn´ı logikou um´ıstˇenou v FPGA a komunikuj´ıc´ıch pˇres rozhran´ı PCI Express. Tato komunikace je umoˇznˇena pomoc´ı integrovan´eho obvodu Philips PX1011A PCI Express PHY, kter´y obsluhuje n´ızko´urovˇnov´e sign´aly a cˇ a´ st protokolu sbˇernice PCI Express. Podrobˇejˇs´ımu popisu tohoto obvodu a komunikaˇcn´ıho modelu je vˇenov´ana kapitola 3.2. Typick´e c´ılov´e aplikace v´yvojov´eho kitu • Komunikaˇcn´ı karty, VGA grafick´e adapt´ery, instrumentace
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
• Digital Signal Processing (DSP) a dalˇs´ı pˇr´ıdavn´e PC karty
2.1.1
Relevantn´ı komponenty v´yvojov´eho kitu
• Xilinx Spartan-3 XC3S1000 FPGA [2] – 676-pin FBGA pouzdro – 391 uˇzivatelsk´ych I/O pin˚u – 1920 CLB blok˚u – 54 kB blokov´e RAM – 4 DCM bloky • Pamˇet’ konfigurace – Xilinx 8 Mbit Platform Flash configuration PROM • Zdroje hodinov´eho sign´alu – PCIe RX Clock – 50 MHz crystal clock oscillator • Konektory a rozhran´ı – Philips Semiconductors 2.5 Gbps PCI Express single lane PHY – PCI Express X1 Card Edge Pro implementaci logick´eho analyz´atoru nen´ı tedy potˇrebn´y zˇ a´ dn´y z´akrok ze strany hardwaru. Jedinou nezbytnost´ı je korektn´ı nastaven´ı vstupu nap´ajen´ı a zp˚usobu programov´an´ı FPGA. Tyto kroky jsou pops´any v n´asleduj´ıc´ıch podkapitol´ach. Prosotrov´e uspoˇra´ d´an´ı v´yvojov´e karty Spartan-3 PCI Express Starter Kit je zobrazeno na obr. 2.1. Relevantn´ı komponenty jsou pro zv´yraznˇen´ı vykresleny cˇ ervenou barvou.
2.1.2
Zdroje nap´ajen´ı
V´yvojov´a deska m˚uzˇ e b´yt nap´ajena nˇekolika moˇzn´ymi zp˚usoby: • 3.3V PCI Express edge konektor • 5V ATX standardn´ı konektor pro jednotky o velikosti 5,25 palc˚u • 5V kulat´y konektor
15
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
16
Pˇri volbˇe zp˚usobu nap´ajen´ı je nutn´e zkontrolovat zapojen´ı pojistek F1 a F2 podle uveden´ych pravidel v [1]. Pˇri nespr´avn´em zapojen´ı tˇechto pojistek a pouˇzit´em nap´ajen´ım dojde k nen´avratn´emu poˇskozen´ı souˇca´ st´ı karty. Pro realizaci je zvoleno nap´ajen´ı pomoc´ı PCIe konektoru. Pojistka je tedy um´ıstˇena pouze do konektoru F2. V F1 nesm´ı b´yt um´ıstˇena. Nap´ajen´ım z PCIe rozhran´ı je i zajiˇstˇen soubˇezˇ n´y start a vypnut´ı karty s poˇc´ıtaˇcem. Poloha pˇrep´ımaˇce ON/OFF (SW6) pˇri pouˇzit´ı tohoto typu nap´ajen´ı nem´a zˇ a´ dn´y vliv. O spr´avn´em nap´ajen´ı jsme informov´ani LED dio-
JTAG Socket (J2)
JP2 2 3
Disk Drive Power (J1)
JP4
D11 D12
EXP Connector (JX2)
1
AF1
J3
1 3 5 2 4 6
2.5V Regulator
Clock Socket (U10)
Spartan-3 FPGA FG676 (U18)
Mode (JP3)
JP6 1 2 3
A26
U20 50MHz AF26
1.2V Regulator
F1
Platform Flash
3.3V Regulator
F2
Serial Flash Programming Socket (J6)
J4
PX1011A X1 PCIe PHY
JP10
D14 Done
Serial Flash JP9
D15
Video DAC
JP11
VGA (P2)
EXP Connector (JX1)
JP8 3 2 1
RS232 (P1)
M2 M1 M0
JP5 1 2 3
32Mx16 DDR SDRAM
A1
DIPs SW5 1 2 3 4
D13
LED8
LED7
1
JP7
32Mx16 DDR SDRAM
LED6
JP1 2 3
LED5
1
LED4
SW4 Reset
LED3
SW3 Push2
LED2
SW2 Push1
D1
SW1 PROG
LED1
dou D1, pˇr´ıpadnˇe diodami stabiliz´ator˚u vstupn´ıho napˇet´ı D11, D12 a D13.
Xilinx Spartan-3 PCI Express Starter Board Revision 1
ON
Barrell Jack Power (J5)
SW6
Obr´azek 2.1: Prosotrov´e uspoˇra´ d´an´ı v´yvojov´e karty [1] Relevantn´ı komponenty jsou pro zv´yraznˇen´ı vykresleny cˇ ervenou barvou.
2.1.3
Konfigurace FPGA
Hradlov´e pole Spartan-3 XC3S1000 pouˇz´ıv´a ke konfiguraci statickou pamˇet’ RAM. To znamen´a, zˇ e po pˇripojen´ı nap´ajen´ı je nutn´e vˇzdy nahr´at znovu konfiguraci. V´yvojov´a deska n´am nab´ız´ı dvˇe moˇzn´e ˇreˇsen´ı:
OFF
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
• St´ahnut´ı konfigurace program´atorem pˇres JTAG rozhran´ı. Pouˇzit´ım t´eto metody je ale nutn´e m´ıt st´ale pˇripojenen´y program´atora a spustit konfiguraci po kaˇzd´em zapnut´ı hradlov´eho pole. • Naprogramovat Platform Flash PROM a nastavit konfiguraˇcn´ı m´od tak, aby se hradlov´e pole konfigurovalo z t´eto pamˇeti. Pˇri kaˇzd´em dalˇs´ım restartu se pouˇzije obraz t´eto pamˇeti a nen´ı potˇreba program´atoru. Uvˇedom´ıme-li si, zˇ e hradlov´e pole mus´ı b´yt schopno komunikaci ihned po zapnut´ı poˇc´ıtaˇce (nap´ajen´ı), aby se karta zapsala v syst´emu a byl j´ı vyhrazen pamˇet’ov´y prostor, tak se mus´ı pouˇz´ıt moˇznost druh´a. K tomu je vyuˇzit obvod Xilinx XCF08P Platform Flash PROM. To uˇz je permanentn´ı pamˇet’ o dostatenˇcn´e velikosti 8 Mb. Je pˇripojena do JTAG ˇretˇezce spoleˇcnˇe s hradlov´ym polem a pro pˇripojen´ı program´atoru slouˇz´ı konektor J2. Na desce je um´ıstˇen indetick´y konektor J6, ten je ale Pro nastaven´ı poˇzadovan´eho konfiguraˇcn´ıho m´odu jsou na desce um´ıstˇeny pˇr´ısluˇsn´e piny M2, M1 a M0 konektoru JP3. Dle [1] je vybr´an m´od Master Serial uzemnˇen´ım vˇsech pin˚u toho konektoru. Tedy M2=M1=M0=0. Pokud je potˇreba vyvolat konfiguraci ruˇcnˇe, tak je moˇzn´e pouˇz´ıt tlaˇc´ıtko SW1 (PROG), kter´e spust´ı znovunaˇcten´ı obrazu. Po stlaˇcen´ı tohoto tlaˇc´ıtka zhasne modr´a LED dioda D14 DONE a je vyvol´an nucen´y restart. Po u´ spˇesˇn´e konfiguraci se opˇetovnˇe LED dioda rozsv´ıt´ı.
17
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
2.2
Obecn´a architektura FPGA
Field Programmable Gate Array - specifick´a tˇr´ıda IO obvod˚u, kter´a je navrˇzena tak, aby umoˇznila realizovat elektronick´y syst´em v jedin´em IO nastaven´ım propojen´ı mezi jednotliv´ymi logick´ymi bloky. Propojen´ı logick´ych blok˚u je moˇzn´e mnohokr´at mˇenit a to je taky hlavn´ı v´yhodou proti klasick´ym integrovan´ym obvod˚um ASIC (Application-Specific Integrated Circuit). Na Obr. 2.2 je zn´azornˇena typick´a struktura FPGA. Kapacita FPGA se ud´av´a v poˇctu syst´emov´ych hradel. Tento poˇcet je ale pouze orientaˇcn´ı, nebot’ jejich poˇcet zahrnuje i kompletn´ı rozsah intern´ı logiky vˇcetnˇe konfiguraˇcn´ıch prostˇredk˚u a nav´ıc v´yrobc˚um p˚ujde cˇ asto i o marketing a z toho d˚uvodu se snaˇz´ı vypoˇc´ıtat co nejvˇetˇs´ı cˇ´ıslo. Pˇri znalosti struktury m´a pro vyˇssˇ´ı vypov´ıdaj´ıc´ı hodnotu poˇcet logick´ych blok˚u.
Obr´azek 2.2: Typick´a architektura obvodu FPGA [9] Z´akladem kaˇzd´eho FPGA je • Matice Logick´ych Blok˚u - Tyto bloky prov´ad´ı jednoduch´e logick´e funkce. Sloˇzitˇejˇs´ı funkce se realizuj´ı ve v´ıce LB (Logick´y Blok) propojen´ych najednou. • Vstupnˇe/v´ystupn´ı bloky (IOB) – obvod pro kaˇzd´y pin FPGA. • Propojovac´ı matice – Slouˇz´ı jednak k propojen´ı LB mezi sebou a tak´e k propojen´ı mezi LB a IOB.
18
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
19
Vˇsechny bloky mohou b´yt r˚uznˇe propojeny glob´aln´ı propojovac´ı matic´ı. Nejpouˇz´ıvanˇejˇs´ı struktura konfigurovateln´eho logick´eho bloku je zn´azornˇena na obr. 2.3.
Obr´azek 2.3: Typick´a struktura logick´eho bloku
Na LUT (Look-Up Table) jsou pˇr´ımo pˇripojeny vstupn´ı linky, kter´e funguj´ı jako adresov´a sbˇernice. V´ystup LUT je1-bitov´a hodnota. Pomoc´ı LUT se nech´a vytvoˇrit jak´akoli funkce cˇ tyˇr nez´avisl´ych promˇenn´ych. LUT tak´e m˚uzˇ e b´yt konfigurov´ana jako distribuovan´a pamˇet’ RAM velikosti 16 x 1 bit nebo jako 16-bitov´y posuvn´y registr. FPGA obvykle umoˇznˇ uj´ı propojit nˇekter´e sign´aly logick´ych blok˚u pˇr´ımo se sousedn´ım bez nutnosti vyuˇz´ıvat glob´aln´ı propojovac´ı matici. Takov´eto spoje maj´ı mnohem menˇs´ı zpoˇzdˇen´ı.
2.3
Architektura Spartan-3 XC3S1000
2.3.1
Hlavn´ı rysy hradlov´eho pole XC3S1000
• jeden mili´on syst´emov´ych hradel, 17280 logick´ych bunˇek, 1920 CLBs • 391 I/O pin˚u s maximem 175 diferenˇcn´ıch p´ar˚u • 18 jednopinov´ych (single-ended) a osm rozd´ılov´ych (differential) I/O • 432Kb blokov´e RAM • 120Kb distribuovan´e RAM
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
20
• osm glob´aln´ıch hodinov´ych linek, cˇ tyˇri bloky Digital Clock Manager (DCM) • Vestavˇen´e n´asobiˇcky 18x18 bit˚u Podobnˇe jako je tomu u jin´ych obvod˚u FPGA, jsou obvody ˇrady Spartan-3 organizov´any jako pole konfigurovateln´ych logick´ych blok˚u (CLB) obklopen´ych vstupnˇe/v´ystupn´ımi ˇ ast plochy cˇ ipu zab´ıraj´ı specializovan´e strukturn´ı prvky pro zrychlen´ı bloky (IOB). C´ cˇ innosti obvodu a rozˇs´ıˇren´ı funkˇcnosti. ˚ Architektura je sloˇzena z pˇeti funkˇcn´ıch/logick´ych bloku: • IOBs (Input/Output Blocks) ˇr´ıd´ı tok dat mezi I/O pinem a vnitˇrn´ı logikou • CLBs (Configurable Logic Blocks) obsahuje LUT tabulky • Block RAM je blok urˇcen´y k ukl´ad´an´ı dat • N´asobiˇcky umoˇznˇ uj´ıc´ı vyn´asoben´ı dvou 18-bitov´ych cˇ´ısel • DCM (Digital Clock Manager) poskytuje autokalibraci, plnˇe digit´aln´ı ˇreˇsen´ı distribuce zpoˇzdˇen´ı, n´asoben´ı, dˇelen´ı a f´azov´y posun hodinov´eho sign´alu
Obr´azek 2.4: Organizace rozloˇzen´ı d´ılˇc´ıch blok˚u pro architekturu rodiny Spartan-3 [3]
2.3.2
CLBs (Configurable Logic Blocks)
CLB je tvoˇrena cˇ tyˇrmi LC (Logic Cell), kter´e jsou uspoˇra´ d´any do dvojic (ˇrezy) tak, zˇ e dan´a dvojce m´a spoleˇcn´y carry pˇrenos. Oba ˇrezy obsahuj´ı dva logick´e funkˇcn´ı gener´atory
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
21
LUT, dva ukl´adac´ı elementy, multiplexer, carry logiku. Tˇemito bloky jsou tvoˇreny logick´e, aritmetick´e a pamˇet’ov´e funkce. Lev´y p´ar m´a nav´ıc dalˇs´ı dvˇe funkce pouˇzit´ı: ukl´adan´ı dat pomoc´ı distribuovan´e RAM a posun dat s 16-bitov´ym registrem.
Obr´azek 2.5: Uspoˇra´ d´an´ı ˇrez˚u uvnitˇr CLB [3] Souˇca´ st´ı CLB jsou tak´e sbˇernice propojuj´ıc´ı jednotliv´e funkˇcn´ı bloky. Existuj´ı cˇ tyˇri druhy propojen´ı: long lines, hex lines, double lines a direct lines. Tyto propojen´ı umoˇznˇ uj´ı vytvoˇren´ı sloˇzitˇejˇs´ıch sekvenˇcn´ı/kombinaˇcn´ıch funkc´ı. Do CLB tak´e vstupuje osm glob´aln´ıch hodinov´ych sign´al˚u z glob´aln´ı s´ıtˇe hodinov´eho sign´alu. Propojen´ı pro rozvod vysokofrekvenˇcn´ıho hodinov´eho sign´alu jsou speci´alnˇe vytvoˇreny s minim´aln´ı kapacitou a zpoˇzdˇen´ım (low-skew).
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
2.3.3
Block RAM
Vˇsechny obvody rodiny Spartan-3 obsahuj´ı blokovou RAM uspoˇra´ danou po bloc´ıch velikosti 18Kbit. Pro uloˇzen´ı velk´eho mnoˇzstv´ı dat je efektivnˇejˇs´ı pouˇz´ıt blokovou RAM neˇz distribuovanou RAM. Spartan-3 XC3S1000 obsahuje 24 RAM blok˚u ve dvou sloupc´ıch s celkov´ym poˇctem 442 368 adresovateln´ych bit˚u. Pamˇet’ tak´e umoˇznˇ uje dvouportov´y pˇr´ıstup – m˚uzˇ e b´yt konfigurov´ana jako Single-Port nebo Dual-Port RAM. Pamˇet’ je na cˇ ipu rozm´ıstˇena po bloc´ıch tvoˇr´ıc´ı sloupce. Pamˇet’ lze konfigurovat do r˚uzn´ych rozmˇer˚u“. Dle ” sˇ´ıˇrky datov´eho slova odpov´ıd´a sˇ´ıˇrka adresov´e sbˇernice. Dva identick´e porty A a B dovoluj´ı nez´avisl´y pˇr´ıstup do sd´ılen´e blokov´e RAM: (1) z´apis a cˇ ten´ı z portu A, (2) z´apis a cˇ ten´ı z portu B, (3) pˇrenos dat z portu A do B, (4) pˇrenos dat z portu B do A.
Obr´azek 2.6: Datov´e cesty dual-port blokov´e RAM [3]
2.3.4
IOBs (Input/Output Blocks)
IOB poskytuje programovateln´e obousmˇern´e rozhrann´ı mezi I/O pinem a intern´ı logikou FPGA. Architekrura Spartan-3 nab´ız´ı nastaven´ı jednoho z 18 moˇzn´ych u´ rovˇnov´ych standard˚u pro jednotliv´e piny (single-ended) a jedenoho z osmi pro rozd´ılov´y v´ystup (differential).
2.3.5
DCM (Digital Clock Manager)
DCM ˇr´ıd´ı, upravuje a distribuuje hodinov´y sign´al po cel´em cˇ ipu. Pln´ı tˇri z´akladn´ı funkce: eliminace cˇ asov´eho zpoˇzdˇen´ı, frekvenˇcn´ı synt´eza, f´azov´y posun sign´alu. Obvod Spartan-3 XC3S1000 obsahuje cˇ tyˇri DCM funkˇcn´ı bloky.
22
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Obr´azek 2.7: DCM funkˇcn´ı blok [3] DCM se skl´ad´a ze cˇ tyˇr z´akladn´ıch blok˚u: DLL (Delay-Locked Loop), DFS (Digital Frequency Synthesizer), PS (Phase Shifter), Status Logic. Z´akladn´ı funkce DLL je vyrovn´av´an´ı cˇ asov´eho zpoˇzdˇen´ı a generov´an´ı f´azovˇe posunut´ych sign´al˚u. DLL m´a dva hodinov´e vstupy a sedm hodinov´ych v´ystup˚u.
Obr´azek 2.8: Zjednoduˇsen´e sch´ema DLL [3]
23
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
2.3.6
Propojovac´ı s´ıt’
Propojovac´ı s´ıt’ (matice) je tvoˇrena cˇ tyˇrmi druhy propojovac´ıch linek • Long line – vhodn´e pro distribuci glob´aln´ıho vysokofrekvenˇcn´ıho sign´alu s mal´ym zpoˇzdˇen´ım, propojuje kaˇzdou sˇestou CLB –2.9 • Hex line – tak´e vhodn´e pro veden´ı rychl´ych sign´al˚u s mal´ym zpoˇzdˇen´ım, nav´ıc umoˇznˇ uje efektivnˇejˇs´ı propojen´ı, protoˇze jsou spojeny s kaˇzdou tˇret´ı CLB –2.10 • Double line – spojuj´ı kaˇzdou druhou CLB s vysokou flexibilitou propojen´ı -2.11 • Direct line – propojuje nejbliˇzsˇ´ıch sousedn´ıch osm CLB –2.12
Obr´azek 2.9: Long Line [3]
Obr´azek 2.10: Hex Line [3]
Obr´azek 2.11: Double Line [3]
Obr´azek 2.12: Direct Line [3]
24
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
2.3.7
Distribuˇcn´ı s´ıt’ hodinov´eho sign´alu
FPGA Spartan-3 obsahuj´ı osm glob´aln´ıch hodinov´ych sign´al˚u GCLK0-GCLK7. Ty vstupuj´ı do pole multiplexer˚u kde jsou pˇrepnuty a pokraˇcuj´ı do DCM nebo do glob´aln´ı s´ıtˇe hodinov´eho sign´alu. V DCM jsou upraveny a vedou zpˇet do pole multiplexer˚u a pokraˇcuj´ı do glob´aln´ı s´ıtˇe hodinov´eho sign´alu. Tato propojovac´ı s´ıt’ je speci´alnˇe vytvoˇrena s minim´aln´ı kapacitou a zpoˇzdˇen´ım sign´alu.
Obr´azek 2.13: Glob´aln´ı propojovac´ı s´ıt’ hodinov´eho sign´alu [3]
25
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3
26
ˇ SBERNICE PCI EXPRESS Sbˇernice PCI-Express (je zn´am´a tak´e jako 3GIO = 3rd Generation I/O) je pokraˇcov´an´ım
implementace sbˇernice PCI. Pouˇz´ıv´a existuj´ıc´ı komunikaˇcn´ı standardy – je vˇsak zaloˇzena na mnohem rychlejˇs´ı s´eriov´e komunikaci. Na standardu PCI-Express zaˇcala jako prvn´ı pracovat spoleˇcnost Intel. Komunikaˇcn´ı kan´al mezi dvˇema zaˇr´ızen´ımi sbˇernice PCI Express reprezentuje PCI Express Link. Z´akladn´ı link je tvoˇren ze dvou diferenci´aln´ıch p´ar˚u a to vys´ılaj´ıc´ıho a pˇrij´ımac´ıho ˇ oznaˇcovan´eho jako Lane. Cinnost vys´ılaˇce i pˇrij´ımaˇce je na sobˇe nez´avisl´a a link tvoˇr´ı plnˇe duplexn´ı komunikaˇcn´ı kan´al.
Obr´azek 3.1: PCI Express Link [5]
Z´akladn´ı vlastnosti komunikaˇcn´ıho kan´alu Link: • Z´akladn´ı link se skl´ad´a ze dvou jednosmˇern´ych diferenci´aln´ıch p´ar˚u v kaˇzd´em smˇeru, reprezentuj´ıc´ı pˇrij´ımac´ı a vys´ılac´ı p´ar. • Kaˇzd´y link mus´ı podporovat alespoˇn jeden Lane. Pro zv´ysˇen´ı pˇrenosov´e rychlosti je moˇzn´e vyuˇz´ıt sdruˇzov´an´ı lanes do link˚u v povolen´e sˇ´ıˇrce. Obvykle se jedn´a o hodnoty x1, x2, x4, x8, x12, x16 a x32. Stejn´a sˇ´ıˇrka mus´ı byt dodrˇzena jak pro pˇrij´ımac´ı, tak vys´ılac´ı cˇ a´ st. Bˇehem hardwarov´e inicializace linku se vyjedn´a pracovn´ı frekvence a poˇcet lanes sestavuj´ıc´ıch link.
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.1
27
Vrstvy sbˇernice PCI Express
PCI Express je jako protokol zaloˇzen´y na vrstv´ach skl´adaj´ıc´ı se z Transaction Layer (transakˇcn´ı vrstva), Data Link Layer (linkov´a vrstva) a Physical Layer (fyzick´a vrstva). Linkov´a vrstva obsahuje jeˇstˇe MAC (media access control) vrstvu. Fyzick´a vrstva je rozdˇelena na logickou a elektrickou podvrstvu. N´azvoslov´ı je podobn´e jako v ISO-OSI modelu.
Obr´azek 3.2: Vrstvy sbˇernice PCI Express [5]
Transakˇcn´ı vrstva Nejvyˇssˇ´ı vrstvou architektury je transakˇcn´ı vrstva. Tato vrstva je zodpovˇedn´a za zpracov´an´ı (kompozici a dekompozici) paket˚u TLP (Transaction Layer Packet). Tyto pakety nesou informaci o typu prov´adˇen´e operace, jako je cˇ ten´ı, z´apis, zpr´ava nebo operace s IO prostorem. Pakety, kter´e v´yzˇ aduj´ı potvrzen´ı jsou implementov´any jako dvˇe transakce (request/completion). Paket transakˇcn´ı vrstvy se skl´ad´a z hlaviˇcky (TLP Header) a vlastn´ıch dat. Hlaviˇcka se skl´ad´a z ˇr´ıd´ıc´ıch informac´ı o typu pˇrenosu. Linkov´a vrstva Linkov´a vrstva je vloˇzen´a mezi transakˇcn´ı a fyzickou vrstvu. Jej´ım u´ kolem je zajiˇst’ov´an´ı integrity dat, detekce a oprava chyb. Data pˇrijat´a z transakˇcn´ı vrstvy jsou opatˇrena kon-
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
troln´ım k´odem, identifikaˇcn´ım cˇ´ıslem a posl´ana do fyzick´e vrstvy. Naopak data pˇrijat´a z fyzick´e vrstvy jsou otestov´ana, zda neobsahuj´ı nˇejakou chybu a jsou posl´ana do transakˇcn´ı vrstvy. V pˇr´ıpadˇe v´yskytu chyby, vrstva zajiˇst’uje opakovan´y poˇzadavek na data, dokud nejsou poˇzadovan´a data pˇr´ıtomn´a. Fyzick´a vrstva Fyzick´a vrstva zajiˇst’uje veˇsker´e obvody nutn´e pro pˇripojen´ı k linku. Jsou to buffery, s´erio-paraleln´ı a paralelnˇe s´eriov´e pˇrevodn´ıky a logiku pro inicializaci a udrˇzov´an´ı spojen´ı na linku (vyjedn´an´ı pˇrenosov´e rychlosti, form´atu pˇrenosu dat). Paket pˇrijat´y z linkov´e vrstvy je doplnˇen o k´ody zaˇca´ tku konce paketu podobnˇe, jako je tomu u s´ıt’ov´ych paket˚u (Ethernet). D´ale jsou do paketu doplnˇeny dalˇs´ı informace zajiˇst’uj´ıc´ı synchronizaci. Potom je paket pˇreveden na s´eriov´y k´od a odvys´ıl´an do pˇr´ısluˇsn´eho Lanu. Pˇrij´ımac´ı cˇ a´ st fyzick´e vrstvy postupuje opaˇcn´ym zp˚usobem. Dek´oduje pˇrijat´y paket na ˇr´ıd´ıc´ı k´ody a data. Pokud je r´amec paketu v poˇra´ dku a odpov´ıd´a kontroln´ı souˇcet, je odesl´an do linkov´e vrstvy, d´ale je tak´e odesl´ano potvrzen´ı o pˇrijet´ı dat zdroji transakce. Pokud pˇrijdou data s chybou, odes´ıl´a se do zdrojov´eho portu poˇzadavek na opakov´an´ı transakce.
Obr´azek 3.3: Grafick´e zn´azornˇen´ı kompozice a dekompozice souˇca´ st´ı paketu [5]
28
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
3.2
29
Propojen´ı FPGA a PX1011A PHY
Jak uˇz bylo dˇr´ıve zm´ınˇeno deska je osazena integrovan´ym obvodem Philips PX1011A PCI Express PHY. Tento obvod n´am zprostˇredkov´av´a pˇrevod mezi MAC vrstvou a fyzickou vrstvou PCIe rozhran´ı. Obsluhuje tedy low level sign´aly a komunikaˇcn´ı protokol PCIe. Jsou to funkce jako serializaci a de-serializaci dat, enk´odov´an´ı, detektor pˇr´ıchoz´ıch dat, obsluha modulace a demodulace vstupn´ıch a v´ystupn´ıch p´ar˚u. Aby komunikace spr´avnˇe prob´ıhala, tak mus´ı b´yt FPGA nakonfigurov´ano tak, aby obsahovalo PCIe PIPE (PHY Interface for PCI Express) endpoint core. Je to vlastnˇe obsluˇzn´y blok obvod˚u, kter´y um´ı zpracovat komunikaci na PXPIPE rozhran´ı. Philips PX1011A tak´e obsahuje zdroj synchronn´ıch hodin pro vys´ıl´an´ı a pˇrij´ım´an´ı dat. 8-bitov´e datov´e rozhran´ı pracuje na 250MHz se standardem napˇet’ov´ych hladin SSTL 2 (Stub Series Terminated Logic). Napˇet’ov´e u´ rovnˇe SSTL 2 jsou podporov´any i na stranˇe ˇ ano z [1] a [4]. Xilinx Spartan-3 FPGA pomoc´ı nastaven´ı vstupn´ıch port˚u IOB. Cerp´ Na Obr. 3.4 je vyobrazen blokov´y diagram propojen´ı Spartan-3 FPGA a PX1011A PHY. PXPIPE Interface U18
PCI Express Link P3
U35 TX_P TXD[7:0]
TX_N
RXD[7:0] RX_P
Xilinx Spartan-3 FPGA
Command
Philips PX1011A PHY
RX_N
Status
CLK_P
PHY Reset
CLK_N
PCI Express Edge Connector
JTAG
PCIe Reset
Obr´azek 3.4: Propojen´ı Spartan-3 FPGA a PX1011A PHY [1] V naˇsem pˇr´ıpadˇe je pouˇzito propojen´ı PCIe x1. Link tedy obsahuje jeden lane, kter´y se skl´ad´a ze dvou p´ar˚u diferenci´alnˇe zapojen´ych vodiˇcu˚ . Podle specifikace m˚uzˇ e rychlost jednom smˇeru dos´ahnou aˇz 2,5Gbitu/s (s k´odov´an´ım pˇribliˇznˇe 250MB/s), pˇriˇcemˇz komunikace m˚uzˇ e nez´avisle prob´ıhat obˇema smˇery, rozhran´ı je plnˇe duplexn´ı. [6]
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
4
30
APLIKACE FPGA Pro implementaci logick´eho analyz´atoru byla pouˇzita referenˇcn´ı aplikace dod´avan´a
s v´yvojovou kartou, ve kter´e je vytvoˇren z´akladn´ı engine pro ˇr´ızen´ı odes´ıl´an´ı a pˇrij´ıman´ı informac´ı pomoc´ı PCIe endpoint core. Komunikaˇcn´ı RX a TX moduly dok´azˇ´ı obsluhovat TLP pakety s velikost´ı obsahu (payload) jednoho dvojslova. Pˇrenos je umoˇznˇen pouze jako neblokov´y. Kaˇzd´y pˇr´ıstup tedy vˇzdy pˇrenese pˇresnˇe 32bit˚u. Pro aplikaci logick´eho analyz´atoru byl vybr´an programovac´ı jazyk Verilog pro jeho podobnost s jazykem C a taky fakt, zˇ e referenˇcn´ı aplikace je tak´e vytvoˇren´a ve Verilogu. Byl vytvoˇren modul logick´eho analyz´atoru a modul pro generov´an´ı demostraˇcn´ıch dat. Ty jsou pouˇzita jako vstupn´ı data do logick´eho analyz´atoru. Generovan´e jsou pomoc´ı cˇ tyˇr druh˚u cˇ´ıtaˇcu˚ : bin´arn´ı, BCD, Gray˚uv a Johnson˚uv.
4.1
Hierarchie modulu˚
V top-level modulu je um´ıstˇena instance modulu PCI-Express 1 Lane PIPE Endpoint Core. Pro uˇzivatele vytv´aˇr´ı transakˇcn´ı rozhran´ı nad PCI-Express sbˇernic´ı. Tento modul je vygenerov´an pomoc´ı n´astroje CORE Gener´ator ze softwarov´eho bal´ıku ISE (viz 4.3). Vstupy a v´ystupy jsou namapovan´e IO piny v souboru xilinx 1 lane epipe ep-XC3S1000 -FG676-4.ucf a pˇresnˇe definovan´e rozs´ahl´e rozhran´ı pro aplikaˇcn´ı logiku. Modul se pro uˇzivatele jev´ı jako tzv. blackbox a jeho vnitˇrn´ı algoritmy nezmˇen´ıme. Na rozhran´ı Endpoint Core jsou napojeny moduly PIO, PIO EP. Jsou to komponenty, kter´e odlehˇcuj´ı n´ızˇ e poloˇzen´ym modul˚um komunikaci s Endpoint Core a rozdˇeluj´ı kompetence. Pouˇzit´ı rozdˇelen´ı kompetenc´ı umoˇznˇ uje vytv´aˇret jednoduˇs´ı a specifiˇctˇejˇs´ı moduly, coˇz vede na pˇrehlednˇejˇs´ı v´yvoj. Modul PIO TO CTRL (Programmable Input Output Turn Off Control) kontroluje zda jsou pˇrenesena vˇsechny data a jednotka se m˚uzˇ e vypnout. Moduly RX s TX ENGINE sestavuj´ı hlaviˇcku a data pro transakˇcn´ı rozhran´ı Endpoint Core. Funkce logick´eho analyz´atoru je um´ıstˇena do modulu LOGIC ANALYZER. Vstupuj´ı do nˇej 16-ti bitov´a data z vybran´eho cˇ´ıtaˇce modulu INPUT SOURCE. Analyz´ator je tedy vytvoˇren se 16 vstupn´ımi kan´aly. Tyto data jsou cyklicky ukl´ad´any do dvouportov´e blokov´e RAM a souˇcasnˇe pˇrivedeny do modulu TRIGGER, kde je zjiˇstˇeno zda je
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Top-level modul PCI-Express 1 Lane PIPE Endpoint Core
LOGIC_ANALYZER RX_ENGINE
INPUT_SOURCE
PIO_TO_CTRL
BINARY_COUNTER TRIGGER
JOHNSON_COUNTER BCD_COUNTER
TX_ENGINE
BRAM PIO_EP
GRAY_COUNTER PIO
Obr´azek 4.1: Zjednoduˇsen´a hierarchie modul˚u logick´eho analyz´eru splnˇena triggrovac´ı podm´ınka (viz 4.5). Blokov´a RAM je pouˇzita s bitovou sˇ´ıˇrkou 32 bit˚u a velikost´ı 2kB. Poˇcet uloˇziteln´ych vzork˚u je d´an n´asleduj´ıc´ımi skuteˇcnostmi. V syst´emu m´a karta mapov´an 1kB pamˇet’ov´y prostor, vyuˇzijeme tedy pouze horn´ı polovinu blokov´e RAM. Na jednotlivou adresu zapisujeme vˇzdy po dvou vstupn´ıch vzorc´ıch. Adresa 0x00h je vyuˇzita pro specifick´y stavov´y registr logick´eho analyz´atoru. Maxim´aln´ı poˇcet uloˇziteln´ych vzork˚u je t´ımp´adem 511. Tento poˇcet nen´ı dan´y omezen´ım kapacity harwaru, ale pouˇzit´ym n´avrhem pro demonstrativn´ı implementaci. Limit by sˇel velmi jednosuˇse zv´ysˇit pouˇzit´ım vˇetˇs´ıho adresovac´ıho prostoru a zapojen´ım v´ıcero multiplexovan´ych BRAM.
4.2
ISE WebPack 11.1
Pro v´yvoj aplikace FPGA bylo pouˇzito n´avrhov´e prostˇred´ı ISE v11.1 od firmy Xilinx. Toto prostˇred´ı je uvolnˇeno i ve verzi WebPack, kter´e je zdarma k pouˇzit´ı. Protoˇze ISE je produktem firmy Xilinx, tak um´ı nejenom prov´est synt´ezu na obecn´e bloky, ale tak´e dok´azˇ e pˇrev´est na bloky specifick´eho hradlov´eho pole od t´ezˇ e firmy. V´ystupem je tedy bitstream optimalizovan´y na rozm´ıstˇen´ı a propojen´ı. Tento bitstream m˚uzˇ eme nahr´at pˇr´ımo pomoc´ı prgramu iMPACT do hradlov´eho pole, nebo ho zkonvertovat a nahr´at do Platform Flash.
31
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Obr´azek 4.2: V´yvojov´e prostˇred´ı ISE WebPack 11.1
4.3
CORE Generator
CORE Gener´ator je jedna z souˇca´ st´ı v´yvojov´eho syst´emu ISE. Obsahuje velk´e mnoˇzstv´ı pˇredpˇripraven´ych blok˚u. Jejich vloˇzen´ım do n´avrhu m˚uzˇ eme okamˇzitˇe z´ıskat potˇrebnou funkcionalitu. Jedn´a se o bloky matematick´ych funkc´ı, pamˇet´ı, DSP a sbˇernic. V naˇsem n´avrhu logick´eho analyz´atoru je pouˇzit pr´avˇe jeden takov´y blok. Jedn´a se o PCI Express PIPE verze 1.7. Blok je propojen s extern´ım integrovan´ym obvodem Philips PX1011A, jehoˇz sign´aly spracov´av´a a uˇzivateli nab´ız´ı transakˇcn´ı rozhran´ı sbˇernice PCIExpress. Pro vygenerov´an´ı tohoto bloku pro pouˇzit´ı v hardware je potˇreba minim´alnˇe evaluation licence. Tu je zapotˇreb´ı z´ıskat z webu firmy Xilinx.
Obr´azek 4.3: Nastaven´ı identifikace karty
32
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Pˇri generov´an´ı core vol´ıme tak, jak chceme, aby se karta identifikovala v syst´emu. Tato situace je zachycena na obr. 4.3. Dva hlavn´ı parametry jsou Vendor ID a Device ID. Vendor ID je identifik´ator v´yrobce zaˇr´ızen´ı a je pˇridˇelov´an spoleˇcenstv´ım skupiny PCI-SIG. Device ID je identifik´ator zaˇr´ızen´ı a je volen v´yrobcem. Pro logick´y analyz´ator jsou identifik´atory (Vendor ID=0x1597; Device ID=0x0301) pˇreneseny z referenˇcn´ı aplikace pro v´yvojovou kartu. Zmenˇs´ıme tak riziko pˇr´ıpadn´e kolize. Na obr. 4.4 je zachyceno nastavov´an´ı mapov´an´ı adresovac´ıch prostor˚u. V naˇsem pˇr´ıpadˇe vyhrazujeme 1kB adresovac´ıho prostoru typu memory. Nastaven´ı prefetchable, urˇcuje zda m˚uzˇ ou b´yt data naˇc´ıt´any i bez pˇr´ım´eho uˇzivatelova poˇzadavku do mezipamˇeti. Pokud se data mˇen´ı na z´akladˇe cˇ ten´ı, tak nesm´ı m´ıt adresovac´ı prostor pˇr´ıznak nastaven.
Obr´azek 4.4: V´yvojov´e prostˇred´ı ISE WebPack 11.1
Obr´azek 4.5: Hlavn´ı okno CORE Gener´atoru
33
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
4.4
Stavov´e registry
Pro komunikaci se softwarem na hostitelsk´e poˇc´ıtaˇci je zapotˇreb´ı pˇren´asˇet kromˇe vzork˚u i informace a pˇr´ıkazy pro ˇr´ızen´ı analyz´atoru. Je k tomu pouˇzit 32-bitov´y registr na adrese 0x00h. [0x00h]Horn´ıch 16 bitu˚ je urˇceno ke cˇ ten´ı a maj´ı n´asleduj´ıc´ı strukturu: bit cˇ .
31
30 29 – 25
n´azev trigger is set mem is full
24 23 – 16
voln´e addr0 hi
addr0
V´yznam jednotliv´ych pozic: trigger is set – bit je nastaven´y v log. 1 pˇri splnˇen´ı triggerovac´ı podm´ınky mem is full – pamˇet’ je zaplnˇen´a vzorky a pˇripravena ke cˇ ten´ı addr0 hi – definuje, zda je na addr0 nult´y vzorek v horn´ıch nebo doln´ıch 16-ti bitech addr0 – adresa nult´eho vzorku v pamˇeti (0x01 – 0xFF) [0x00h] Doln´ıch 16 bitu˚ je urˇceno k z´apisu a maj´ı n´asleduj´ıc´ı strukturu: bit cˇ . 15 – 10 n´azev
voln´e
9–8
7–2
0
input choice o voln´e trigger arm
V´yznam jednotliv´ych pozic: input choice o – dvoubitov´a hodnota nastavuje kter´y cˇ´ıtaˇc m´a b´yt pouˇzit´y jako vstupn´ı trigger arm – z´apisem log. 1 spust´ı povol´ı kontrolov´an´ı triggerovac´ı podm´ınky Pro z´apis tiggrovac´ıho vzoru a masky je pouˇzit´a adresa 0x01h. Pˇri cˇ ten´ı je ale navr´acen klasick´y vzorek. Tento register mus´ı b´yt zaps´an pˇred bitem trigger arm. [0x01h] Pˇri z´apisu 32 bitu˚ je pouˇzita n´asleduj´ıc´ı struktura: bit cˇ .
31 – 16
15 – 0
n´azev input pattern i input mask i V´yznam jednotliv´ych pozic: input pattern i – stav vstupn´ıch kan´al˚u, kter´y nastav´y trigger input mask i – maska vyb´ır´a bity, kter´e chceme porovn´avat
34
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
4.5
35
Implementace triggeru
Vytvoˇren je jednoduch´y trigger, kter´y porovn´av´a logick´e u´ rovnˇe vstupn´ı 16-ti bitov´e hodnoty s nastavenou sˇablonou. Pokud chceme porovn´avat pouze nˇekter´e bity, tak m˚uzˇ eme pouˇz´ıt masku a do ignorovan´ych pozic bit˚u nastavit nulu. Zapnut´ı triggeru je ˇr´ızeno vstupn´ım sign´alem arm i. Pokud’ je v logick´e 1, vezme se vstupn´ı hodnota a provede se bitov´a operace XOR s nastaven´ym vzorem. V´ysledkem je opˇet 16-ti bitov´a hodnota s log. 1 na pozic´ıch, kde se vyskytoval rozd´ıl. Proveden´ım logick´eho souˇcinu s maskou dos´ahneme toho, zˇ e pozice, kter´a n´as nezaj´ım´a je vˇzdy v log. 0. Pokud jsou vˇsechny bity rovny log. 0, nastav´ıme v´ystup run o. D´ame t´ım najevo logick´emu analyz´atoru, provedl jeden necel´y cyklus z´apisu. T´ım zˇ e nepˇrep´ısˇeme celou pamˇet 511 vzork˚u, ale pouze napˇr. 501 z´ısk´ame 10 vzork˚u pˇred triggerem. V´ystup se resetuje, aˇz kdyˇz je arm i v log. 0. Pˇr´ıklad jednoduch´eho modulu triggeru 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
module TRIGGER ( clk , arm i , input i , input mask i , input pattern i , run o
// // // //
I I [15:0] I [15:0] I [15:0]
// O
); input input input [15:0] input [15:0] input [15:0] output reg
clk ; arm i ; input i ; input mask i ; input pattern i ; run o ;
always @(posedge clk) begin if (arm i) run o <= run o || ((( input i ˆ input pattern i ) & input mask i ) == 16’b0); else run o <= 1’b0; end endmodule
Definice modulu zaˇc´ın´a deklarac´ı vstupn´ıch, v´ystupn´ıch s´ıt´ı (angl. net) a jejich sˇ´ıˇrek. Vstupy jsou implicitnˇe typu wire. V´ystup si nastav´ıme na typ reg. Rozd´ılem mezi tˇemito typy je v moˇznosti pouˇzit´ı sekvenˇcn´ıho anebo kobinaˇcn´ıho pˇriˇrazen´ı. V cyklicky prov´adˇen´em bloku allways se pouˇz´ıv´a podm´ınka a tud´ızˇ se jedn´a o sekvenˇcn´ı proces, kter´y probˇehne s n´abˇezˇ nou hranou hodinov´eho sign´alu clk.
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
4.6
Rychlost bˇehu a vyuˇzit´ı zdroju˚
Pˇri synt´eze a sestavov´an´ı bitstreamu urˇcen´eho k bˇehu na FPGA je urˇcena maxim´aln´ı frekvence bˇehu programu. Pro implementovan´y logick´y analyz´er je to 63,299 MHz. Tato frekvence se m˚uzˇ e porovnat s frekvenc´ı transakˇcn´ıho rozhran´ı PCIe Core. Ta je pevnˇe d´ana jako 62,50 MHz. Je vidˇet, zˇ e tyto frekvence si jsou velmi bl´ızk´e. Tato skuteˇcnost by se dala vysvˇetlit t´ım, zˇ e cˇ asov´a optimalizace se ukonˇc´ı v momentu, kdy je poˇzadovan´a frekvence dosaˇzena a uˇz nen´ı potˇreba d´ale optimalizovat. Kdyby optimalizace selhala, tak nezb´yv´a nic jin´eho neˇz upravit n´avrh. Napˇr´ıklad se mohou rozloˇzit dlouhotrvaj´ıc´ı sekvenˇcn´ı kroky rozloˇzit do kratˇs´ıch synchronn´ıch. Pˇrehled vyuˇzit´ych zdroj˚u FPGA je vyps´an v tabulce 4.1. Typ bloku Vyuˇzito Celkem V procentech DCM
1
4
25%
IOB
34
391
8%
RAMB16
9
24
37%
Slices
4602
7680
59%
Tabulka 4.1: Pˇrehled vyuˇzit´ych zdroj˚u FPGA
36
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
ˇ ID ´ IC ´ I´ SOFTWARE 5 R Pro v´yvoj uˇzivatelsk´eho ˇr´ıd´ıc´ıho programu logick´eho analyz´atoru byl zvolen framework .NET a v´yvojov´e prostˇred´ı Visual Studio 2008 spoleˇcnosti Microsoft. Proramovac´ım jazykem byl zvolen C#, kter´y je pro .NET framework jedn´ım z nejrozˇs´ıˇrenˇejˇs´ıch v uˇzit´ı. Zvolen´ım tˇechto n´astroj˚u se velmi zefektivnil v´yvoj uˇzivatelsk´eho rozhran´ı a logick´eho analyz´atoru jako celku. D˚uleˇzit´e je podotknout, zˇ e bˇeh programu vyˇzaduje pˇr´ıtomnost WinDriveru a pˇr´ıtomnost v´yvojov´e karty.
5.1
Model komunikace s WinDriver
Pˇri vytv´aˇren´ı ovladaˇcu˚ pro hardware poˇc´ıtaˇce je potˇreba, aby v´yvoj´aˇr znal vnitˇrn´ı chov´an´ı syst´emu, umˇel naprogramovat ovladaˇc pro kernel mode a teprv´e pot´e vytvoˇrit aplikaci komunikuj´ıc´ı s ovladaˇcem. Cel´y v´yvoj je potˇreba nebot’ uˇzivatelsk´e programy nemaj´ı dostateˇcn´a opr´avnˇen´ı od operaˇcn´ıho syst´emu, aby pˇristupovaly pˇr´ımo k hardwaru. Pro zjednoduˇsen´ı tohoto procesu se vyuˇzije univerz´aln´ıho ovladaˇce WinDriver firmy Jungo. Tento ovladaˇc je v pln´e verzi velmi drah´y, a tak pouˇzijeme trial WinDriver ve verzi v10.11. Nejdˇr´ıve je programem DriverWizard vytvoˇren ovladaˇc a z´akladn´ı diagnostick´a aplikace ve zvolen´em programovac´ım jazyku. Pˇri programov´an´ı nad .NET frameworkem se do komunikace s WinDriverem vsouv´a dalˇs´ı vrstva rozhran´ı. Model pouˇzit´e komuniˇ ano z [10]. kace je zn´azornˇen na obr. 5.1. Cerp´ Vytvořený program LogicAnalyzer.exe
WinDriver .NET Wrapper API wdapi_dotnet.dll
WinDriver high-level API wdapi.dll User Mode Kernel Mode WinDriver low-level API ovladač LogicAnalyzer.inf, windrvr6.sys
HARDWARE
Obr´azek 5.1: Model komunikace s pouˇzit´ım WinDriveru
37
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Na vrcholu modelu sed´ı naˇse uˇzivatelsk´a aplikace bˇezˇ´ıc´ı nad .NET frameworkem. Pomoc´ı proxy knihovny wdapi dotnet.dll se pˇristupuje k syst´emov´e knihovnˇe wdapi.dll. Toto je jiˇz komponenta, kter´a sv´ym API nab´ız´ı pˇr´ıstup k informac´ım, jako jak´e PCI zaˇr´ızen´ı jsou pˇripojeny na sbˇernici. Zjiˇst’ovat velikosti I/O a pamˇet’ov´ych adresovac´ı prostor˚u. V tˇechto prostorech cˇ´ıst a zapisovat. Jedinou podm´ınkou je zaveden´ı ovladaˇce windriver.sys k hardware, se kter´ym chceme komunikovat. Na nejniˇzn´ı u´ rovni komunikace jiˇz leˇz´ı hardware poˇc´ıtaˇce.
5.2
Uˇzivatelsk´e rozhran´ı
Uˇzivatelsk´e rozhran´ı programu je vytvoˇren pomoc´ı WinForms, jednoho z grafick´ych rozhran´ı, kter´e .NET framework nab´ız´ı. Okno se skl´ad´a z vrchn´ıho p´asu, kde je moˇznost vybrat cˇ´ıtaˇc, kter´y bude generovat vstupn´ı data, pˇredlohu a masku pro trigger. Parametry triggeru se zad´avaj´ı jako 16-ti bitov´a cˇ´ısla v sˇestn´actkov´e soustavˇe (ˇctyˇri znaky 0–F).
Obr´azek 5.2: Grafick´e zn´azornˇen´ı zaznamenan´ych pr˚ubˇeh˚u pro BCD cˇ´ıtaˇc
38
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
Pˇri zm´acˇ knut´ı tlaˇc´ıtka Arm se zap´ısˇe do bitu trigger arm log. 1, nastaven´ı sˇablony a masky do pˇr´ısluˇsn´ych registr˚u v hradlov´em poli (viz 4.4). V tomto momentˇe se tak´e nastav´ı pˇr´ıznak, zˇ e se m´a kontrolovat bit mem is full. T´ımto pˇr´ıznakem je probuzeno vl´anko bˇezˇ´ıc´ı na pozad´ı aplikace. Registr mem is full je cyklicky kaˇzdou sekundu vyˇc´ıt´an (angl. je tato metoda oznaˇcov´ana jako pooling). V okamˇziku naˇcten´ı log. 1 je vl´akno usp´ano a je naˇcten obsah pamˇeti blokov´e ram hradlov´eho pole. Adresovac´ı rozsah pro vyˇcten´ı vzork˚u je 0x004h aˇz 0x3FFh. N´aslednˇe jsou data zobrazeny a je zaps´ana log. 0 do registru trigger arm. Triggrovac´ı podm´ınka je resetov´ana a logick´y analyz´er je pˇripraven k dalˇs´ımu pouˇzit´ı. Vl´ankno bˇezˇ´ıc´ı na pozad´ı programu a synchronizaˇcn´ı ud´alosti jsou nutn´e, aby pˇri cyklick´em kontrolov´an´ı registru mem is full nedoˇslo k zamrznut´ı GUI.
Obr´azek 5.3: Tabulka zaznamenan´ych vzork˚u pro BCD cˇ´ıtaˇc
39
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
6
´ ER ˇ ZAV ´ Uvod pr´ace se zab´yv´a popisem z´akladn´ıch princip˚u logick´eho analyz´atoru. Je zde
vysvˇetlen z´akladn´ı princip triggeru a nast´ınˇeny stavov´e a cˇ asov´e anal´yzy. D´ale je pops´ano existuj´ıc´ı ˇreˇsen´ı v podobˇe mod˚ul˚u ChipScope ILA od firmy Xilinx. Rozbor komunikaˇcn´ıho ˇretˇezce a hiearchie modul˚u naˇcrtla podobu vlastn´ı implementace logick´eho analyz´eru. Dalˇs´ı cˇ a´ st je vˇenov´ana hardwarov´ym prostˇredk˚um. Jako v´yvojov´a platforma byla zvolena karta s hradlov´ym polem z rodiny Xilinx Spartan-3. U v´yvojov´e karty jsou vhodnˇe vybr´any reˇzimy nap´ajen´ı a konfigurace. Toto spoleˇcnˇe s podrobn´ym popisem architektury rodiny Spartan-3 vytvoˇrilo dobr´y z´aklad pro v´yvoj s HDL jazykem a prochopen´ı vnitˇrn´ıch mechanism˚u hradlov´ych pol´ı. Pro sezn´amen´ı se sbˇernic´ı PCI-Express jsou definov´any z´akladn´ı pojmy a vysvˇetleny u´ lohy jednotliv´ych vstev. Celkov´y pohled na rozhran´ı komunikace n´am vyjasn´ı vysvˇetlen´ı u´ cˇ elu integrovan´eho obvodu Philips PX1011A. Dalˇs´ı dvˇe kapitoly jiˇz popisuj´ı samotnou implementaci logick´eho analyz´atoru. Nejdˇr´ıve bylo nakonfigurov´ano a vygenerov´ano PCI-Express Endpoint core. Byl pouˇzit 1 kB adresovac´ı pamˇet’ov´y prostor. Analyz´ator m´a 16 vstupn´ıch kan´al˚u a podporuje trigger reaguj´ıc´ı na logick´e u´ rovnˇe. Vzorky jsou cyklicky ukl´ad´any do blokov´e ram s celkovou kapacitou 511 vzork˚u. Pro ovˇeˇren´ı spr´avn´eho chodu uˇzivatelsk´e aplikace a programu uvnitˇr FPGA byly vytvoˇreny cˇ tyˇri cˇ´ıtaˇce. Na jejich zn´am´ych posloupnostech se d´a jednoduˇse ovˇeˇrit funkˇcnost triggerua z´aznamu vzork˚u. Vlastn´ım testov´an´ım byla plnˇe ovˇeˇrena. Mysl´ım si tedy, zˇ e zad´an´ı pr´ace bylo splnˇeno. Pokraˇcov´an´ı pr´ace by mˇelo b´yt zamˇeˇreno na vytvoˇren´ı pokroˇcil´ych triggerovac´ıch podm´ınek. D´ale by bylo vhodn´e upravit hierarchii aby se daly analyzovat sign´aly v toplevel modulu. Inspirac´ı m˚uzˇ e b´yt napˇr´ıklad hierarchie pouˇzit´a u analyz´atoru ChipScope.
40
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
41
LITERATURA [1] Xilinx, Inc. Xilinx UG256, Spartan-3 Starter Kit Board for PCI-Express User Guide v1.3 [online]. UG256 May 23, 2007 [cit. kvˇeten 2010]. Dostupn´e z URL:
. [2] Xilinx, Inc. Xilinx UG331, Spartan-3 Generation FPGA User Guide [online]. UG331 (v1.6) December 3, 2009 [cit. kvˇeten 2010]. Dostupn´e z URL: . [3] Xilinx, Inc. Xilinx DS099, Spartan-3 FPGA Family data sheet [online]. DS099 December 4, 2009 [cit. kvˇeten 2010]. Dostupn´e z URL: . [4] Philips Semiconductors PX1011A/PX1012A PCI Express stand-alone X1 PHY [online]. Rev. 02 – 18 May 2006 [cit. kvˇeten 2010]. Dostupn´e z URL: . [5] National Instruments PCI Express – An Overview of the PCI Express Standard [online]. 13. 8. 2009 [cit. kvˇeten 2010]. Dostupn´e z URL: . [6] VALACH, Sobˇeslav. Technologie: Sbˇernice PCI Express [online] 18. 5. 2005 [cit. kvˇeten 2010]. Dostupn´e z URL: . [7] Tektronix, Inc. Your Guide to Selecting the Right Logic Analyzer [online] 3. 2. 2009 [cit. kvˇeten 2010]. Dostupn´e z URL: . [8] Xilinx, Inc. Xilinx UG029, ChipScope Pro 12.1 Software and Cores [online]. UG029 (v12.1) April 19, 2010 [cit. kvˇeten 2010]. Dostupn´e z URL: .
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
42
[9] PECH, Jan. Nebojte se FPGA [online]. 5. 1. 2004 [cit. kvˇeten 2010]. Dostupn´e z URL: . [10] Jungo Software Technologies Ltd. WinDriverTM PCI/ISA/CardBus User’s Manual [online]. Version 10.1.1, 17. 1. 2010 [cit. kvˇeten 2010]. Dostupn´e z URL: .
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
ˇ ˚ VELICIN SEZNAM SYMBOLU, A ZKRATEK ASIC – Application Specific Integrated Circuit CLB – Configurable Logic Block DCM – Digital Clock Manager DDL – Dekay-Locked Loop DDR – Double Data Rate FPGA – Field-Programmable Gate Array GUI – Graphical User Interface HDL – Hardware Description Language I/O – Inputs and Outputs IEEE – Institute of Electrical and Electronics Engineers IOB – Input Output Block IP – Intellectual property ISE – Integrated Software Environment JTAG – Joint Test Advisory Group LUT – Look Up Table MAC – Media Access Control PCI Express – Peripheral Component Interconnect Express PHY – PHYsical layer PIPE – PHY Interface for the PCI Express SSTL 2 – Stub Series Terminated Logic for 2.5 Volts
43
´ ˇ I´ TECHNIKY USTAV AUTOMATIZACE A MEˇ RIC Fakulta elektrotechniky a komunikaˇcn´ıch technologi´ı Vysok´e uˇcen´ı technick´e v Brnˇe
ˇ ILOH ´ SEZNAM PR Pˇr´ıloha 1 – CD Pˇr´ıloha 2 – Fotografie v´yvojov´e desky a poˇc´ıtaˇce
ˇ ILOHY ´ PR Pˇr´ıloha 1 CD vloˇzeno do kapsy v´ytisku pr´ace. Obsahuje tuto pr´aci v elektronick´e verzi, zdrojov´e k´ody aplikace pro FPGA a grafick´eho rozhran´ı. Pˇr´ıloha 2
44