Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdJohanna Jacobs Laatst gewijzigd meer dan 10 jaar geleden
1
Een USB 2.0 oscilloscoop Bossuyt Frederick De Bock Steven
Doel van het project Een USB 2.0 oscilloscoop Bossuyt Frederick De Bock Steven Duchatelet Sven Werbrouck Steven
2
Inleiding Probleemstelling Doel van het project Aanpak
Overzicht gepresteerd werk Planning
3
Probleemstelling AD-convertor DA-convertor voeding
Doel van het project Probleemstelling AD-convertor DA-convertor voeding We krijgen een 8-lagen bord met daarop: 2 krachtige FPGA bouwstenen (elk 1,5 miljoen poorten) SDRAM (waar?? Op FPGA of apart?) AD-convertor om analoog signaal om te zetten naar het digitaal domein DA convertor (nut?) bijzonder accurate sampleklok (waar?) We hoeven slechts 1 FPGA te gebruiken De pinnen van de FPGA die we gebruiken worden geconnecteerd aan een USB-controller. Dit is een microcontroller die de interface vormt tussen de kaart en de PC. Die is nodig om de signalen op een correcte manier aan de PC af te geven (host is master en doet requests aan USB-device). We gebruiken een USB 2.0 connectie, zodat we aan 480 Mbps kunnen werken (40 keer sneller dan de USB 1.1 die werkte aan 12 Mbps). NB: de FX2 is wel backward compatibel zodat het kan werken aan: Low speed (1.5 Mbps): voor muis, keyboard en joystick Full speed (12 Mbps): voor modem, speakers en scanner High speed (480 Mbps): hard disk drives, cd-rom, videocamera, high resolution scanner… Hiermee trachten we een oscilloscoop te maken. Twee ingangskanalen worden gesampled aan 64 Msps met 14 bit resolutie. Op die manier slagen we erin om meetresultaten te bekomen die zeer nauwkeurig en gedetailleerd zijn. Probleem is dat het ruwe datadebiet te hoog is voor continu streamen naar de PC. Er is dus een noodzaak aan signaalverwerking op de FPGA (triggering, decimatie en buffering). signaal in- en uitgang 2 FPGA’s
4
Probleemstelling signaal beeldscherm PC
Doel van het project Probleemstelling PC signaalverwerking afbeelden resultaat signaal FPGA µ-controller Hiermee trachten we een oscilloscoop te maken. Twee ingangskanalen worden gesampled aan 64 Msps met 14 bit resolutie. Op die manier slagen we erin om meetresultaten te bekomen die zeer nauwkeurig en gedetailleerd zijn. Probleem is dat het ruwe datadebiet te hoog is voor continu streamen naar de PC. Er is dus een noodzaak aan signaalverwerking op de FPGA (triggering, decimatie en buffering). signaalverwerking interface beeldscherm AD-convertor sampling
5
Inleiding Probleemstelling Doel van het project Aanpak
Overzicht gepresteerd werk Planning
6
Doel van het project 1 single shot signaal van 20 MHz verwerken
korte reactietijden efficiënt gebruik van de FPGA hardware single shot = 1 keer een beperkt aantal samples inlezen en verwerken thesisonderwerp = continue signaalverwerking De einddoelstelling is om een demonstratie te geven, waarbij we een single shot signaal inlezen en afbeelden op een beeldscherm van een (Linux) PC. Het signaal zal een frequentie hebben van 20 MHz. Korte reactietijden en efficiënt gebruik van de hardware is natuurlijk gewenst. Het voordeel van het werken met single shot signalen is dat we slechts één keer hoeven te triggeren. We kunnen het volledige signaal vervolgens inlezen zonder ons zorgen te moeten maken over wat er later nog met het signaal gebeurt. In dit project is het dus niet nodig om functionaliteit te voorzien zodat het signaal continu gemonitord kan worden. Deze opdracht wordt gegeven in een thesisonderwerp bij Intec_Design.
7
Inleiding Probleemstelling Doel van het project Aanpak
Overzicht gepresteerd werk Planning
8
Aanpak HARDWARE: VHDL SOFTWARE: C++ bufferen signaal
Doel van het project Aanpak HARDWARE: VHDL bufferen signaal trigger: rising/falling edge pretrigger runtime (64/32/16/8/4/2/1 Mbps) eventueel een digitaal ruisonderdrukkingsfilter SOFTWARE: C++ 1 2 3 4 5 De signaalverwerking zal voor een stuk hardwarematig moeten gebeuren. Daarom moesten we het project opsplitsen in een hardware- en een softwarekant. De hardware zal gerealiseerd worden door Steven en Sven en houdt het volgende in: bufferen van het inkomend signaal instelling voorzien zodat getriggerd kan worden op de rising_edge of falling_edge pretrigger: enkele waarden voor en na het beoogde signaalvenster onthouden runtime kunnen instellen: 64 / 32 /16 / 8 / 4 / 2 / 1 Msps eventueel een digitaal ruisonderdrukkingsfilter… Deze zaken dienen in VHDL te worden geschreven. We maken daarbij gebruik van Xilinx 6.0. Aan de hand van ModelSim kunnen we simulaties uitvoeren die al rekening houden met de vertragingen van de FPGA. Daarvoor moeten we het correcte merk en type opgeven van de gebruikte FPGA (VertexII XC2V1500). Met Xilinx kan dan uiteindelijk ook een bitstream aangemaakt worden die de Field Programmable Gate Array configureert. De functionaliteit aan softwarezijde wordt door Frederick en Steven geïmplementeerd:
9
Aanpak Communicatie heel belangrijk!
Doel van het project Aanpak Communicatie heel belangrijk! wanneer wordt data getransporteerd? hoe wordt de data getransporteerd? interpretatie van de bits? Communicatie tussen software- en hardwarekant is heel belangrijk. Er zijn immers duidelijke afspraken nodig omtrent: wanneer de data getransporteerd wordt hoe de data getransporteerd wordt (vb: per 8 bits) hoe de doorgezonden bits moeten geïnterpreteerd worden (vb: 16-bit, 2-complement notatie)
10
Inleiding Probleemstelling Doel van het project Aanpak
Overzicht gepresteerd werk Planning
11
Overzicht gepresteerd werk: HARDWARE
Doel van het project Overzicht gepresteerd werk: HARDWARE geheugenstructuur: FIFO testen met binaire teller (= zelf aangemaakte data) omzetting parallelle naar seriële datastroom: USB = serieel! solderen van connecties tussen FPGA en µ-controller Als eerste opdracht stelden we het aanmaken van een geheugenstructuur. Een first-in-first-out buffer leek ons geschikt aangezien we inderdaad de samples in volgorde wensen te verwerken. Deze samples worden door de microcontroller in pakketjes van 8 bit opgevraagd. Aangezien de AD-convertor een analoge waarde omzet in een 14-bit 2-complementsgetal, zal iedere sample moeten worden uitgebreid naar een 16-bit getal en in twee stukken moeten worden doorgezonden. We werken momenteel nog met zelf kunstmatig aangemaakte samplewaarden via een 8-bit teller, zodanig dat we hier nog geen rekening mee moeten houden. De samples worden opgevraagd via de microcontroller op een seriële manier, USB is immers Universal SERIAL Bus. De FIFO levert echter 8 bit tegelijkertijd (dus in parallel). Het was dus noodzakelijk om een bufferstructuur op te stellen die de omzetting van parallelle communicatie (per 8 bit) omzet naar een seriële datastroom (bit per bit). Ten slotte hebben we ook een aantal solderingen moeten maken tussen de FPGA-connecties en de microcontroller. De juiste poorten van de FPGA moeten immers geconnecteerd worden op de µ-controller om de data en kloksignalen te kunnen doorgeven.
12
FIFO teller ainit dout 8bit empty full 8bit 8bit rd_clk rd_en 8bit din
Doel van het project ainit dout 8bit empty FIFO full 8bit 8bit BU F F E R 1 rd_clk BU F F E R 2 rd_en 8bit din Hier zien we een totaalbeeld van wat al gerealiseerd werd aan de hardwarekant. De geheugenstructuur is dus een FIFO waarop de volgende signalen voorkomen: ainit: asynchrone initialisatie signaal rd_clk en wr_clk: kloksignalen waarop respectievelijk gelezen en geschreven wordt rd_en en wr_en: controlesignalen om aan te geven wanneer gelezen en geschreven mag worden empty en full: controlesignalen die aangeven wanneer de FIFO respectievelijk leeg of vol is (bij leeg mag niet meer gelezen worden, bij vol mag niet meer geschreven worden) din en dout: de data-in- en uitgang Op de figuur is te zien dat we inderdaad nog een teller gebruiken om de data-ingang te vullen. De wr_clk gaat aan 64 MHz, zodat er 64 Megasamples per seconde kunnen worden ingelezen. De rd_clk wordt aangelegd door de µ-controller. Deze begint te toggelen wanneer er bits opgevraagd worden. Op het moment dat er dus een rising_edge is van deze klok zal aan de ingang van de µ-controller een bit uitgelezen worden. Er wordt dus verondersteld dat die bit een correcte en (belangrijker) een stabiele waarde is. Dat bit bevindt zich aan de uitgang van ons systeem: usb_data. Om het mogelijk te maken dat steeds een correct bit klaar staat aan deze uitgang, hebben we gebruik gemaakt van een dubbele bufferstructuur. Bij initialisatie wordt BUFFER1 volgeschreven met correcte databits. Na deze initialisatie mag de data opgevraagd worden. Vanaf het moment dat het eerste bit uit BUFFER1 uitgelezen wordt, start een proces dat er voor zorgt dat BUFFER2 volgeschreven wordt met de volgende 8 correcte databits. Wanneer BUFFER1 volledig is uitgelezen, kan er onmiddellijk verder gegaan worden met het uitlezen van BUFFER2 aangezien die ondertussen is volgeschreven met de volgende 8 bits. Op dat moment start een analoog proces om BUFFER1 weer vol te schrijven… wr_clk wr_en teller usb_data
13
Overzicht gepresteerd werk: SOFTWARE
Doel van het project Overzicht gepresteerd werk: SOFTWARE
14
Inleiding Probleemstelling Doel van het project Aanpak
Overzicht gepresteerd werk Planning
15
Doel van het project Planning: HARDWARE doorvoeren van een volledige test met zelf aangemaakte data implementeren van interface ADC – FPGA runtime kunnen inlezen runtime kunnen veranderen Eerstdaags zullen we eens een eerste volledige test doorvoeren, waarbij door de teller zelf aangemaakte data in de FIFO geschreven wordt, omgezet wordt naar seriële bitstroom, afgegeven via de microcontroller tot aan de PC en afgebeeld wordt op het scherm. Eenmaal dit op een voldoende manier werkt, kunnen we de interface tussen de AD-convertor en FPGA implementeren. Op die manier is het dan mogelijk om echte signalen binnen te trekken. Verder moeten we natuurlijk op de hardwarekant wat signaalverwerkende functies implementeren. Een trigger zal moeten voorzien worden, die aangeeft vanaf wanneer we het signaal willen binnentrekken. Ook een pretrigger moet nog voorzien worden. Andere controlesignalen moeten ook behandeld kunnen worden. Zo kan de runtime ingesteld worden. Als er nog tijd overschiet aan de hardwarekant, dan kan eventueel nog een digitaal ruisonderdrukkingsfilter in VHDL gemaakt worden, zodat de signalen minder last hebben van storingen.
16
Doel van het project Planning: SOFTWARE
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.