Afstudeer verslag

advertisement
HiSPARC – USB2FPGA
Afstudeer verslag
Nathan baars
03-Jun-10
Naam:
Student no.:
Email:
Instituut:
Opleiding:
Major/Minor:
Bedrijf:
Begeleider:
Begeleider opleiding:
Nathan Baars
500238476
[email protected]
Hogeschool van Amsterdam
E-Technology
Embedded Systems / Mechatronica
Nikhef
Hans Verkooijen
Wim Dolman
[HISPARC – USB2FPGA] June 3, 2010
Samenvatting
(summary english next page)
Dit verslag beschrijft de afstudeerstage die ik gedaan heb bij het onderzoeksinstituut Nikhef. De
afstudeeropdracht was deel van het HiSPARC project. Binnen het HiSPARC project worden door een
netwerk van detectoren de oorsprong van kosmischestraling gezocht. Deze detectoren zijn geplaatst
bij onderzoeksinstellingen en middelbare scholen.
Het hart van deze detectoren is een FPGA. Deze FPGA communiceert met een PC doormiddel van
USB. Een FPGA moet geconfigureerd worden voordat de FPGA een functie kan vervullen. In de
huidige detectors gaat dit configureren met een speciale programmer en met ingewikkelde
software. Ook moet de behuizing van de detector elektronica verwijdert worden voordat de
programmer verbonden kan worden met de FPGA. Voor een herontwerp van de detector
elektronica is gekozen om dit gebruiksvriendelijker te maken.
Door het configureren van de FPGA mogelijk te maken over de USB verbinding wordt de detector
elektronica gebruiksvriendelijker. Door gebruik te maken van de FT2232H van FTDI kan een dubbele
USB verbinding gerealiseerd worden over één kabel. Een verbinding zal gebruikt worden om de
FPGA te configureren de andere verbinding zal voor de data communicatie gebruikt worden die er in
het huidige ontwerp al is.
Om de FPGA te configureren zijn vijf signalen nodig: een klok, data, twee status en een control
signaal. Deze signalen zijn aangesloten op kanaal A van de FT2232H. De Windows applicatie
fpgaConfigApp is ontwikkeld om over USB via de FT2232H een FPGA te configureren. Met deze
applicatie kan je met enkele klikken en binnen een paar seconden een FPGA Configureren.
Het is van groot belang dat bestaande software die gebruikt wordt om de HiSPARC detectoren uit te
lezen moet blijven werken met de nieuwe elektronica. Deze software is ontwikkeld in LabVIEW en
het is een doel dat deze software niet hoeft worden aangepast. Om te testen of dit het geval is, is
een kleine test applicatie gemaakt met LabVIEW die dezelfde componenten gebruikt als de
bestaande.
2
[HISPARC – USB2FPGA] June 3, 2010
Summary
This report describes the assignment I completed during my internship at the research institute
Nikhef. The assignment was part of the HiSPARC project. The goal of the HiSPARC project is finding
the origin of cosmic rays. To do this a network of detectors are placed at secondary schools and
research institutes.
The core of a HiSPARC detector is a FPGA. The FPGA communicates with a PC trough USB. Before a
FPGA can do the task it is supposed to do, it has to be configured. In the current deployed detectors
the FPGAs configuration is done with special programmers en complex software. Also the housing of
the detector electronics has to be removed before the special programmer can be attached. For the
next redesign of the HiSPARC electronics it has been decided that this has to be more user-friendly.
Making it possible to configure the FPGA trough USB is going to make the system more userfriendliy. The FTDI FT2232H is able to create two USB channels over one cable. One channel will be
used for configuring the device, the other channel is for the data communications already present in
the current design.
Five signals are necessary for configuration of the FPGA: a clock, data, two status and a control
signal. These five signals are connected to channel A of the FT2232H. The Windows application
fpgaConfigApp is developed to configure a FPGA trough USB via the FT2232H. With this application it
is possible to configure a FPGA in a matter of seconds and with just a few clicks.
It is very important that the existing software that is being used to collect data from the HiSPARC
detectors keeps on working with the new hardware without modifications to it. The existing
software is developed in LabVIEW. To test if the new hardware will work with the existing software a
test application is created. The test application uses the same components as the existing software
to communicate with the HiSPARC electronics.
3
[HISPARC – USB2FPGA] June 3, 2010
Inhoud
Samenvatting .......................................................................................................................................... 2
Summary ................................................................................................................................................. 3
Inleiding................................................................................................................................................... 5
Nikhef ...................................................................................................................................................... 6
Afstudeeropdracht .................................................................................................................................. 7
HiSPARC Theorie ..................................................................................................................................... 8
- Kosmische straling ............................................................................................................................ 8
HiSPARC hardware ................................................................................................................................ 10
Blokschema ........................................................................................................................................... 11
De Altera Cyclone.................................................................................................................................. 12
FT2232................................................................................................................................................... 14
Software ................................................................................................................................................ 16
-fpgaConfigApp ................................................................................................................................. 16
-fpgaDisplayApp ................................................................................................................................ 21
Labview Software .................................................................................................................................. 22
Conclusie ............................................................................................................................................... 23
Nabeschouwing..................................................................................................................................... 24
Bijlagen.................................................................................................................................................. 25
4
[HISPARC – USB2FPGA] June 3, 2010
Inleiding
Dit verslag is geschreven naar aanleiding van de afstudeer stage. Deze liep van 1 december tot juni.
Om preciezer te zijn was de afstudeerstage op de ET afdeling van het Nikhef, waarin ET staat voor
Electronics Technology. De opdracht was een manier te bedenken om via een dubbele USB
verbinding over één USB kabel om via de ene verbinding een FPGA te configureren en via de ander
data communicatie te realiseren. In de komende hoofdstukken zal de organisatie structuur van het
Nikhef beschreven worden en wat het Nikhef doet. Vervolgens komt er een omschrijving van de
afstudeeropdracht en hoe deze is uitgevoerd. Om de reden en het doel van de opdracht te begrijpen
wordt begonnen met een theoretische inleiding, waarna de benodigde hardware, voor het
realiseren van de theorie, beschreven wordt. Als laatste onderdeel wordt de software, voor het
programmeren van de hardware, beschreven. De opdracht bestond uit een deel hardware en een
veel groter software deel, zoals het schrijven van een applicatie.
5
[HISPARC – USB2FPGA] June 3, 2010
Nikhef
Het Nikhef is het nationaal instituut voor subatomaire fysica. Het Nikhef is een instituut van het
FOM, De Stichting voor Fundamenteel Onderzoek der Materie. Het instituut doet onderzoek op het
gebied van (astro)deeltjesfysica op subatomair niveau. Het Nikhef is een samenwerkingsverband
tussen de stichting voor Fundamenteel Onderzoek der Materie (FOM) en vier universiteiten: de
Radboud Universiteit in Nijmegen, de Universiteit van Amsterdam, de Universiteit Utrecht en de
Vrije Universiteit in Amsterdam.
Het Nikhef werkt mee aan veelal internationale projecten en onderzoeken. Zo helpt Nikhef mee met
drie van de vier grote experimenten aan de Large Hadron Collider. De Large Hadron Collider(LHC) is
de naam van de deeltjes versneller bij CERN, Genève, Zwitserland. Het Nikhef is betrokken bij de
experimenten ATLAS, ALICE en LHCb aan de LHC. Een ander groot project dat liep tijdens mijn stage
is het KM3NeT project. Binnen dit project wordt een neutrino telescoop diep in de zee ontwikkelt.
Deze neutrino telescoop zal uit eindelijk een kubieke kilometer groot worden.
Figuur 1. Organogram Nikhef.
6
[HISPARC – USB2FPGA] June 3, 2010
Afstudeeropdracht
Projectomschrijving USB naar FPGA.
Voor het HiSPARC(High School project on Astrophysics Research with Cosmics) project is een
detector ontwikkeld. Het HiSPARC project is er op gericht om samen met middelbare scholen en
wetenschappelijke instellingen een netwerk op te zetten om kosmische straling met extreem hoge
energie te kunnen meten en registreren.
Het Nikhef heeft hiervoor een detector ontwikkeld. De elektronica van de HiSPARC-detector vervult
de rol van digitale oscilloscoop die data via USB naar een PC stuurt.
Het hart van de elektronica is een FPGA. Een FPGA moet geconfigureerd worden voordat deze een
functie uit kan voeren. In het huidige ontwerp moet de FPGA geconfigureerd worden via een
externe JTAG-Programmer. De mensen die de HiSPARC-detector installeren zijn: studenten, leraren
en onderzoekers. Voor hun is het configureren van de FPGA met de JTAG-Programmer niet
gebruiksvriendelijk en soms zelfs eng.
De opdracht is om een prototype te maken van een schakeling met bijbehorende software om een
FPGA te configureren(programmeren) met een PC via USB. Datacommunicatie over dezelfde
verbinding, die er in het huidige ontwerp al is, moet mogelijk blijven.
Punten die uitgezocht moeten worden:
1. Hoe moet een dual USB chip aan een Altera FPGA bedraad worden? M.a.w. welke pennen
van de USB chip en FPGA moeten met elkaar verbonden worden.
2. In welke programmeermode moet de FPGA dan staan?
3. Wat voor soort firmware file moet er in de FPGA geladen worden.
4. Hoe wordt deze file via een computer (PC) en USB chip in de FPGA geladen.
5. Kan met de bestaande LabView VI’s voor een USB1 chip ook met deze nieuwe USB2 chip
gecommuniceerd worden?
Punten die gedaan moeten worden:
1. Modificeer een bestaande PCB met FPGA, zodat de FPGA in de goede programmeermode
staat en maak de goede programmeer aansluitingen.
2. Verbind het gemodificeerde bord met een evaluatie module met USB chip. Dit zijn de
programmeer lijnen en de datalijnen met besturingssignalen (write,read,full en empty).
3. Maak een programmeer mogelijkheid om de firmware in de FPGA te laden. (Windows
Applicatie)
4. Zorg dat data communicatie nog steeds mogelijk is. Bedien bijvoorbeeld LEDjes op het bord
door een toets van het keyboard en lees een schakelaarstand van het bord uit.
5. Schrijf een klein LabView programma om te zien of de oude LabView VI’s werken. Zo niet,
dan hoeven er geen nieuwe gemaakt worden.
7
[HISPARC – USB2FPGA] June 3, 2010
HiSPARC Theorie
De theorie en werking van de detector (de hardware) zijn beschreven om een idee te krijgen hoe het
HiSPARC project in elkaar zit en is nodig om een beeld te krijgen waar deze afstudeeropdracht voor
is. Het is voor het verslag niet noodzakelijk precies de theorie, noch de werking van de detector, te
begrijpen. Het geeft echter een inzicht van het geheel, waarvan de afstudeeropdracht een geheel is.
HiSPARC staat voor: High School project on Astrophysics Research with Cosmics. Binnen dit project
vormen middelbare scholen samen met wetenschappelijke instellingen een netwerk om kosmische
straling met extreem hoge energie te kunnen meten en registreren.
Door dit project hoopt men meer te weten te komen over kosmische straling en vooral waar het
vandaan komt. Ook is het bedoeld om middelbare scholieren dingen te laten leren over het heelal en
kosmische straling.
- Kosmische straling
De aarde wordt continu gebombardeerd met allerlei verschillende deeltjes vanuit de ruimte. Van
een groot aantal deeltjes is bekend waar deze vandaan komen. Zowel de zon als de sterren om ons
heen zenden laagenergetische deeltjes uit. Hoogenergetische deeltjes raken ook de aarde, en deze
zijn afkomstig van supernova’s. Een supernova is een verschijnsel dat ontstaat als een hele zware
ster op zijn levenseinde is. De ster explodeert dan met gigantisch veel energie. Echter er bereiken
deeltjes de aarde die nog veel meer energie bezitten. Deze deeltjes komen van buiten ons
melkwegstelsel maar de oorsprong is onbekend.
Tijdens het passeren van de dampkring zullen hoogenergetische deeltjes botsen met zuurstof- en
stikstofatomen. De deeltjes die bij deze botsing ontstaan zullen weer botsen met andere atomen. Zo
ontstaat er dus een regen van atomen. Dit effect wordt ook wel een airshower genoemd. Hoe groter
de energie van het primaire deeltje hoe groter de airshower zal zijn.
De meeste deeltjes die ontstaan in de airshower zullen nooit het aardoppervlak bereiken. De
deeltjes vervallen, worden verstrooid of ze worden opgenomen in de dampkring. Alleen de deeltjes
met zeer veel energie, of een lange ‘levensduur’ zullen de grond bereiken. Dit zijn meestal muonen.
In figuur 2 is een plaatje van een gesimuleerde airshower te zien.
8
[HISPARC – USB2FPGA] June 3, 2010
Blauw: elektronen/positronen
Cyaan:
fotonen
Rood:
neutronen
Oranje:
protonen
grijs:
mesonen
groen:
muonen
Figuur 2. Simulatie van een airshower.
Door op verschillende plekken de muonen van zo’n airshower te detecteren kan berekend worden
waar het originele deeltje vandaan kwam. Met genoeg meetgegevens kan uit eindelijk dan een map
gemaakt worden met plekken waar de meeste van deze deeltjes vandaan komen. Op deze plekken
kan dan bijvoorbeeld een telescoop of iets dergelijks gericht worden.
9
[HISPARC – USB2FPGA] June 3, 2010
HiSPARC hardware
De HiSPARC detectie opstelling bestaat uit drie delen: scintillator, Photo Multiplier Tube, en de
elektronica. Een scintillator is een materiaal dat licht uitstraalt als het geraakt wordt door een
deeltje. De scintillator die in de HiSPARC detector wordt gebruikt is gemaakt van een speciaal soort
plastic. Als muonen hier doorheen schieten ontstaan er fotonen. De Photo Multiplier Tube(PMT) die
aan de scintillator vast zit zet deze fotonen om in een elektrisch signaal.
Figuur 3. Schema Foto multiplier en Scintillator.
De scintillator zet het geladen deeltje om in een licht signaal. Dit signaal wordt versterkt en omgezet
in een elektrisch signaal door een Photo Multiplier Tube. Dit elektrische signaal wordt gemeten door
de elektronica. De elektronica is in principe een twee kanaals 400MHz digitale oscilloscoop.
Het hart van de oscilloscoop is een FPGA. Deze FPGA leest een 12 bits ADC uit. Als het gemeten
signaal voldoet aan bepaalde trigger voorwaarden, wordt deze informatie voorzien van een
nauwkeurige tijdsstempel en via USB naar een PC gestuurd. Het nauwkeurige tijdsstempel wordt uit
een GPS ontvanger gehaald en is op enkele nanosecondes nauwkeurig. Voor de USB communicatie
wordt een FT245 van FTDI gebruikt. Dit is een USB naar parallel FIFO interface chip. In figuur 4 is
een plot te zien van het elektrische signaal waar de FPGA op triggert.
Figuur 4. Plot van uitgang PMT.
10
[HISPARC – USB2FPGA] June 3, 2010
Blokschema
Hieronder in figuur 5 is weergegeven hoe de verbindingen met de PC lopen in het huidige HiSPARC
elektronica ontwerp. De “USB Blaster“ is niet standaard aanwezig. De behuizing van de elektronica
moet voor een deel worden verwijdert voordat de “USB Blaster“ kan worden aangesloten. Na
configuratie van de FPGA is het de bedoeling dat de “USB Blaster“wordt ontkoppeld en de
behuizingen weer gesloten wordt.
In figuur 6 is het nieuwe ontwerp weergegeven. Nu is er geen “USB Blaster“ meer nodig en de
behuizing hoeft niet meer open.
Figuur 5. Figure 5. Situatie van de huidige detector elektronica (HiSPARC II).
Figuur 6. Gewenste situatie van de toekomstige detector elektronica (HiSPARC III).
11
[HISPARC – USB2FPGA] June 3, 2010
De Altera Cyclone
Het hart van de HiSPARC elektronica is een Altera Cyclone FPGA. FPGA staat voor Field
Programmable Gate Array. Het is een programmeerbaar IC dat gebruikt wordt om complexe logische
bewerkingen uit te voeren. Het programmeren van een FPGA wordt ook wel configureren genoemd.
Als een FPGA van stroom wordt voorzien is hij ongeconfigureerd. Om de FPGA te configureren kan
er gebruik worden gemaakt van een JTAG programmer of de FPGA kan de configuratie laden vanaf
extern geheugen.
De Altera Cyclone FPGA gebruikt in de HiSPARC elektronica heeft drie mogelijk heden om
geconfigureerd te worden. Namelijk via:



JTAG gebaseerd configureren
o Een extern stuk hardware maakt gebruik van het JTAG interface om de FPGA te
configureren.
Active Serial configureren (AS)
o Via een simpel synchrone seriële verbinding kan de FPGA de configuratie laden
vanaf een extern geheugen. De Cyclone maakt de klok.
Passive Serial configureren (PS)
o Zelfde als Active Serial configureren maar nu moet de klok extern worden
aangeleverd.
Voor het selecteren van het configuratie interface worden de MSEL pinnen op de FPGA gebruikt.
MSEL0
0
0
1
MSEL1
0
1
1
Configuration Scheme
Active Serial
Passive Serial
Serial Interface Disabled
Tabel 1. MSEL Pin opties.
Algemeen gezien wordt het meest gekozen voor het active serial configureren. Het configuratie
bestand staat dan opgeslagen op een externe EEPROM. Als de FPGA opstart wordt de configuratie
geladen. In het geval van de HiSPARC detector is er geen EEPROM aanwezig. Het is de bedoeling dat
de PC de FPGA configureert. Daarom is er gekozen voor het Passive Serial configureren omdat de
USB chip de klok dan genereert. Zo kan de PC de transmissie regelen. JTAG wordt meestal alleen
gebruikt in de ontwikkelings fase van een product om de FPGA en de firmware te debuggen.
Figuur 7. Configuratie golfvorm.
12
[HISPARC – USB2FPGA] June 3, 2010
In figuur 7 is de configuratie golfvorm tijdens de Passive Serial configuratie te zien. nCONFIG is een
ingang op de FPGA. Als deze ingang van laag naar hoog wordt gezet gaat de FPGA in de configuratie
modus. nSTATUS is een uitgang van de FPGA. Als nSTATUS hoog is, staat de FPGA klaar om de
configuratie data te ontvangen. Nu kan er data worden in geklokt door middel van de DCLK en DATA
lijn. Als nSTATUS laag gaat tijdens het in klokken is er iets mis gegaan tijdens het configureren.
Configuratie zal nu vanaf het begin opnieuw moeten beginnen. Als CONF_DONE, ook een uitgang
van de FPGA, hoog gaat is de configuratie klaar en succesvol verlopen. De FPGA doet nu waar die
geconfigureerd voor is.
Altera heeft de ontwikkel omgeving “Quartus II” gecreëerd om firmware te ontwikkelen voor
FPGA’s. Binnen deze set van applicaties kan een gedragsbeschrijving worden gemaakt en
gesimuleerd om vervolgens te worden gesynthetiseerd naar configuratie data. Deze configuratie
data wordt opgeslagen in verschillende bestandsformaten, onder andere het RBF formaat. RBF staat
voor Raw Binary File en dit formaat bevat alleen de ruwe configuratie data. De data die de FPGA in
moet.
13
[HISPARC – USB2FPGA] June 3, 2010
FT2232
Als interface tussen de FPGA en de PC is gekozen voor de FT2232 van FTDI. Deze chip maakt een
dubbele USB verbinding over één draad mogelijk. Één verbinding gaat gebruikt worden voor
communicatie, via de andere verbinding moet het mogelijk worden om de Altera te programmeren.
Het grote voordeel van het gebruik van de dubbele USB verbinding is dat er zo goed als niks hoeft te
worden gewijzigd in de bestaande PC software die nu wordt gebruikt om de detector uit te lezen.
Figuur 8. Aansluit schema FT2232H en FPGA
Configuratie
FT2232 Pin Naam Cyclone Pin Naam
ADBUS0
DCLK
ADBUS1
DATA0
ACBUS0
nCONFIG
ACBUS1
CONF_DONE
ACBUS2
nSTATUS
Tabel 2. Aansluittabel kanaal B FT2232H naar FPGA.
FT2232 Pin
Naam
BDBUS0
BDBUS1
BDBUS2
BDBUS3
BDBUS4
BDBUS5
BDBUS6
BDBUS7
BCBUS0
BCBUS1
BCBUS2
BCBUS3
Communicatie
Cyclone Pin Naam op
testbord
D0 (IO45)
D1 (IO42)
D2 (IO39)
D3 (IO36)
D4 (IO33)
D5 (IO30)
D6 (IO27)
D7 (IO24)
RXF# (IO21)
TXE# (IO18)
RD# (IO15)
WR# (IO14)
Tabel 3. Aansluittabel kanaal A van FT2232H naar FPGA.
14
[HISPARC – USB2FPGA] June 3, 2010
De FT2232 heeft twee kanalen. Ieder kanaal kan worden gebruikt in verschillende modes. Voor de
communicatie tussen de FPGA en de PC wordt channel B gebruikt. Channel B Staat in de 245FIFO
mode, zie bijlagen B voor uitleg over het 245FIFO protocol.
De mode kan op twee verschillende manier ingesteld worden. Standaard wordt de mode ingesteld
via een externe EEPROM, maar via software aan de PC kant kan de mode ook verandert worden.
Channel A wordt voor de configuratie van de FPGA gebruikt. Channel A wordt in de MPSSE mode
gezet. MPSSE staat voor Multi-Protocol Synchronous Serial Engine. Deze mode is alleen
beschikbaar op channel A, dat is ook de reden waarom channel A voor het configureren gebruikt
wordt.
De MPSSE maakt het mogelijk synchrone seriële signaal te maken en te ontvangen. MPSSE kan
onder andere overweg met JTAG, I2C en SPI protocollen. Naast een klok en een datalijn kan de
MPSSE twaalf General Purpose Input/Outputs aansturen.
Met de juiste instellingen wordt er via de data en de klok uitgangen configuratie data verzonden
naar de FPGA.
15
[HISPARC – USB2FPGA] June 3, 2010
Software
Voor het USB2FPGA project zijn twee Windows applicaties geschreven. Eén applicatie die het
mogelijk maakt om een nieuwe configuratie in de FPGA te laden, “fpgaConfigApp” geheten. Een
tweede applicatie is geschreven om datacommunicatie tussen de FPGA en de PC te demonstreren,
“fpgaDisplayApp”
Beide Windows applicaties zijn gecreëerd met Labwindows CVI. LabWindows/CVI is een ANSI C
ontwikkel omgeving die een set programeer tools levert die het makkelijk maakt om test en control
applicaties te maken voor elektronica. Zo is er via een simpele drag-en-drop bediening, een
graphical user interface in elkaar te zetten. Ook zijn er verschillende software libraries voor meet- en
regel toepassingen beschikbaar.
-fpgaConfigApp
Met deze applicatie kan de FPGA geconfigureerd worden. Door middel van een graphical user
interface kan een configuratie bestand geselecteerd worden waarna na één simpele muisklik de
FPGA geconfigureerd wordt.
Figuur 9. Interface van fpgaConfigApp.
16
[HISPARC – USB2FPGA] June 3, 2010
In figuur 9 zie je het userinterface van fpgaConfigApp . In het bovenste venster worden
gedetecteerde devices weergegeven. Door hier op een naam te klikken word een device
geselecteerd. Daarna kan met de Open File knop een rbf bestand worden geselecteerd. Als nu op de
program knop wordt gedrukt zal de FPGA worden geconfigureerd. Een handleiding voor het gebruik
van deze aplicatie is te vinden in bijlagen A. Met de gedachten dat van boven naar beneden en van
links naar rechts wordt gewerkt is de user
Tabel 4.Software Lagen
interface opgezet.
fpgaConfigApp maakt gebruik van de FTCSPI
library om met de USB chip te communiceren. De
FTCSPI library heeft de FTD2XX library nodig om
deze communicatie tot stand te brengen. Deze
library zorgt namelijk voor het interface met de
FTDI driver. (zie tabel hiernaast)
5
fgpaConfig Application
Applicatie
4
FTCSPI.DLL
Libary
3
FTD2XX.DLL
libary
2
FTDIBUS.SYS
Driver
1 USB Host Controller Driver
Driver
DE FTCSPI library levert een aantal functies die het opzetten van SPI bus makkelijker maakt. Beide
libraries zijn aangeleverd door de producent van de USB chip, namelijk FTDI. De documentatie van
de libraries is echter erg slecht en hier en daar incompleet.
De libaries worden dynamisch geladen en dus niet mee gecompileerd. Het voordeel hiervan is dat
vannuit het programma een waarschuwing gegeven kan worden dat bepaalde drivers niet zijn
geïnstalleerd. Eventueel zou in de toekomst kunnen worden toegevoegt dat fpgaConfigApp de
drivers dan zelf installeert. Dit zou het programma gebruiksvriendelijker kunnen maken. Het nadeel
wat hier tegenoverstaat is dat voordat een functie uit een libary wordt aangeroepen altijd eerst het
adres van die functie moeten worden gezocht. Hier onder een voorbeeld.
SPI_GetDllVersion = (TYPESPI_GetDllVersion)GetProcAddress(hinstFTCSPI,
"SPI_GetDllVersion");
Met de functie ”GetProcAddress” wordt het adres van de functie "SPI_GetDllVersion" geladen uit de
“hinstFTCSPI” libary het adres word opgeslagen in de variabel SPI_GetDllVersion. “hinstFTCSPI” is
een variabele die verwijst naar de FTCSPI.DLL.
17
[HISPARC – USB2FPGA] June 3, 2010
In figuur 8 wordt door middel van een flowchart weer gegeven hoe de FPGA geconfigureerd wordt.
Figuur 10. Flowchart van configureer functie.
18
[HISPARC – USB2FPGA] June 3, 2010
De specificeke functie die echt de data wegschrijft is hieronder weergegeven. Deze komt overeen
met het blok “Send data buffer” uit de flowchart in figuur 10.
int writeDevice(FTC_HANDLE ftHandle, BYTE *data, DWORD dataSize)
{
DWORD i;
FTC_STATUS ftStatus;
FTC_INIT_CONDITION initPins;
TYPESPI_GetHiSpeedDeviceGPIOs SPI_GetHiSpeedDeviceGPIOs;
TYPESPI_WriteHiSpeedDevice SPI_WriteHiSpeedDevice;
FTH_LOW_HIGH_PINS ioState;
FTC_WAIT_DATA_WRITE waitStruct;
FTH_HIGHER_OUTPUT_PINS transferPins;
//check if FTD2XX.dll and FTCSPI.dll are loaded
if(!(hinstFTD2XX && hinstFTCSPI))
return -1;
//get address of function in FTCSPI.dll
SPI_GetHiSpeedDeviceGPIOs =
(TYPESPI_GetHiSpeedDeviceGPIOs)GetProcAddress(hinstFTCSPI,
"SPI_GetHiSpeedDeviceGPIOs");
if(SPI_GetHiSpeedDeviceGPIOs == NULL)//check if function is found in dll
return -1;
//get address of function in FTCSPI.dll
SPI_WriteHiSpeedDevice = (TYPESPI_WriteHiSpeedDevice)GetProcAddress(hinstFTCSPI,
"SPI_WriteHiSpeedDevice");
if(SPI_WriteHiSpeedDevice == NULL)//check if function is found in dll
return -1;
memset(&initPins, 0, sizeof(initPins));
memset(&waitStruct, 0, sizeof(waitStruct));
memset(&transferPins, 0, sizeof(transferPins));
dataSize -=1;
ftStatus = (SPI_WriteHiSpeedDevice)(ftHandle, &initPins, 0, 0, 8,
(PWriteControlByteBuffer)data, 1, 1, dataSize*8, (PWriteDataByteBuffer)(data+1),
dataSize, &waitStruct, &transferPins);
if(ftStatus)
return -1;
ftStatus = (SPI_GetHiSpeedDeviceGPIOs)(ftHandle, &ioState);
if(ftStatus)
return -1;
//check nSTATUS pin. If nStatus == 0 fpga configuration failed
if(ioState.bPin3LowHighState == FALSE)
return -2;
//check CONF_DONE pin. if CONF_DONE == 1 fpga configuration completed and
succesfull
if(ioState.bPin2LowHighState == TRUE)
return 1;
return 0;
}
In het eerste gedeelte van de functie wordt er gechecked of the dlls geladen zijn. Vervolgens worden
de adressen van twee functies geladen die ik verderop in de functie ga gebruiken. Vervolgens
worden drie data structuren met de “memset” functie allemaal op nul gezet. Deze data structuren
bepalen de status van de GPIO pins, DATAOUT pin en de CLOCK pin van de FT2232H voordat, tijdens
en nadat de data is verzonden .
Hierna wordt de data werkelijk verzonden met de functie “SPI_WriteHiSpeedDevice”:
19
[HISPARC – USB2FPGA] June 3, 2010
dataSize -=1;
ftStatus = (SPI_WriteHiSpeedDevice)(ftHandle, &initPins, 0, 0, 8,
(PWriteControlByteBuffer)data, 1, 1, dataSize*8, (PWriteDataByteBuffer)(data+1),
dataSize, &waitStruct, &transferPins);
if(ftStatus)
return -1;
De functie “SPI_WriteHiSpeedDevice” uit FTCSPI.dll is niet handig opgezet. Maar het scheelt wel een
hele hoop werk door die functie te gebruiken in plaats van zelf een functie te schrijven. De
“SPI_WriteHiSpeedDevice” functie gaat er vanuit dat eerst een aantal control bits moeten worden
verstuurt en daarna data. Omdat er in deze toepassing alleen data verstuurd hoeft te worden, wordt
de eerste byte van de data in de control buffer gezet. De rest van de data wordt wel verstuurd via
de databuffer.
Vervolgens wordt met de “SPI_GetHiSpeedDeviceGPIOs” gekeken of de nSTATUS pin en CONF_DONE
pin van de FPGA laag of hoog zijn. In bijlage D is de complete broncode van het programma te
vinden.
20
[HISPARC – USB2FPGA] June 3, 2010
-fpgaDisplayApp
Dit programma is geschreven om de data communicatie over de tweede USB verbinding te testen.
Dit programma maakt geen gebruik van de DLLs. In plaats daarvan maakt dit programma gebruik van
de VCP driver van FTDI. VCP staat voor Virtual Com Port. Via deze driver kan windows de FT2232
benaderen alsof het een seriële COM port is. Dit programma is alleen geschreven om op een visuele
manier de data weer te geven die uit de FPGA komt. Het programma heeft verder niks te maken met
het HiSPARC project.
Figuur 11. fpgaDisplayApp.
De ontvangen data wordt weergegeven in de grafiek. Iedere byte die binnen komt zet een puntje in
de grafiek tussen 0 en 255 zoals te zien in figuur 11. Met behulp van de send button kan data
verstuurd worden. De
21
[HISPARC – USB2FPGA] June 3, 2010
Labview Software
De bestaande software die gebruikt wordt om de HiSPARC detector uit te lezen is ontworpen in
LabVIEW. Een onderdeel van de afstudeeropdracht is om te onderzoeken of het bestaande
programma blijft werken met de nieuwe FT2232H.
In LabVIEW programeer je door blokken te slepen en met elkaar te verbinden. Deze blokken worden
VI’s genoemd. VI staat voor Virtual Instruments. In de bestaande software worden verschillende VI’s
van FTDI gebruikt voor de datacommunicatie. Het doel is om te testen of deze VI’s blijven werken
met de FT2232H. Blijven de VI’s werken dan zal ook de bestaande software blijven werken. Om de
VI’s te testen is met LabVIEW een test applicatie gecreëerd die gebruik maakt van de betreffende
VI’s. De applicatie staat in bijlagen E. Deze applicatie zoekt naar een USB device met de naam
“Nikhef HiSPARC B” opent deze en gaat vervolgens alle binnenkomende data wegschrijven naar een
bestand.
De FPGA zend via usb een 8bits teller uit. De data in het door de test applicatie gecreëerde bestand
komt hiermee overeen. De applicatie werkt en dit geeft aan de FTDI VI’s werken met de FT2232H. In
de bestaande software zal alleen de naam van het USB device, waar gezocht naar wordt, moeten
worden aangepast. In figuur 12 is dit weergegeven. De ‘B’ in “HiSPARC III Master B” staat voor kanaal
B van de FT223H.
Figuur 12. Enige verandering in bestaande LabVIEW software.
22
[HISPARC – USB2FPGA] June 3, 2010
Conclusie
Het is mogelijk om met een FT2232H zonder extra microcontrollers een FPGA te configureren. Met
een maximale datatransmissie snelheid van bijna 1.8 MB per seconden zijn zelfs de grotere Altera
FPGAs binnen enkele seconden te programmeren. Omdat het configureren nu via USB gaat hoeft het
HiSPARC detector niet meer open. Leraren, studenten en onderzoekers hoeven niet meer met
ingewikkelde software en met JTAG programmers te werken. Hier naast blijft de datacommunicatie
ook gewoon werken. En de bestaande labview applicatie om de data af te handelen hoeft zo goed
als niet aangepast te worden.
23
[HISPARC – USB2FPGA] June 3, 2010
Nabeschouwing
Mijn stage op het Nikhef is goed bevallen. Erg veel geleerd over veel verschillende natuurkundige
verschijnselen. De opdracht zelf leverde geen problemen op en het was misschien leuker geweest als
er iets meer uitdaging in had gezeten. Dus vooral veel geleerd buiten mijn opdracht.
24
[HISPARC – USB2FPGA] June 3, 2010
Bijlagen





Bijlage A : Handleiding fpgaConfigApp
Bijlage B : Parallel FIFO protocol
Bijlage C : Hardware schema
Bijlage D : Software broncode
Bijlage E : LabVIEW Schema
25
Download