• No results found

Harald Stribén

N/A
N/A
Protected

Academic year: 2021

Share "Harald Stribén"

Copied!
42
0
0

Loading.... (view fulltext now)

Full text

(1)

EXAMENSARBETE

2004:250 CIV

Harald Stribén

USB-kommunikation med

programmerbar ultraljudssändare

CIVILINGENJÖRSPROGRAMMET

Luleå tekniska universitet

Institutionen för systemteknik, Avdelningen för datorteknik

2004:250 CIV • ISSN: 1402 - 1617 • ISRN: LTU - EX - - 04/250 - - SE

(2)

USB-Kommunikation med

programmerbar ultraljudssändare

Harald Stribén

Luleå University of Technology

Dept. of Computer Science and Electrical Engineering Luleå University of Technology

September 10, 2004

(3)

ii

(4)

A BSTRACT

In medical material science, injectable bone cements are being developed to fill and repair defective bones with minimal surgical procedure. The setting time determines the amount of time one have, working with the material and when it is possible to close the wound without complications. Therefore the accuracy of the measured setting time is important. A Method based on ultrasound is being developed for this purpose. A reliable method would be of direct help both to the surgeon and the people who develop these cements. This could lead to shorter operating time for the patients.

One of the problems with the ultrasonic pulse-echo technique used today is that it requires expensive equipment, and that the equipment used is not flexible enough. In other words, there is a need for a more flexible instrument that costs less money. This report will show how you could implement one part of such a meter.

The hardware used is a SDRAM memory module, a FPGA programmable logic device and a dedicated module for communication via USB. The work was mostly done in a hardware description language called VHDL. The task was analyzed and split into parts that could be solved and implemented separate and finally brought together to form the working meter.

The digital part of the meter is implemented, but to be able to build a whole meter a new lab card or custom made PCB have to be used that could utilize more of the FPGA’s IO pins.

From this thesis one could draw the conclusion that the FPGA and Memory module used are well suited for the task, and that now there is a platform to build a meter on.

(5)

iv

(6)

S AMMANFATTNING

Inom medicinsk materialteknik utvecklar man injicerbara ben-cement, att användas för att fylla och reparera defekter med minimala kirurgiska ingrepp. Härdningstiden bestämmer hur länge man kan arbeta med materialet, och när man kan sy ihop såret utan risk för medicinska komp- likationer. Det är därför av stor vikt att man kan bestämma denna tid så exakt som möjligt. En metod baserad på ultraljud håller på att tas fram för detta ändamål. En tillförlitlig mätmetod skulle vara till omedelbar hjälp både för medicinsk personal och de som utvecklar materialen, vilket skulle kunna innebära kortare operationstider för patienterna.

Ett av problemen med ultraljudseko-metoden idag är att den kräver dyr hårdvara, och att den hårdvara som finns idag inte heller är särskilt flexibel. Därför finns ett behov av att utveckla en billigare och mer flexibel mätutrustning. Detta arbete visar hur man kan bygga en del av denna mätutrustning.

Den hårdvara som används är ett RAM-minne av typen SDRAM, en FPGA och en modul för kommunikation via USB. Arbetet bestod till huvuddelen av programmering av FPGA:n i det hårdvarubeskrivande språket VHDL. Problemet delades upp i delar efter de arbetsuppgifter som FPGA:n har, för att kunna lösa dem separat och sedan sammanfoga dem till en enhet.

Den digitala delen av mätinstrumentet är implementerat, men för att kunna bygga en färdig mätare måste ett annat labbkort eller ett egenkostruerat kretskort användas som har möjlighet att använda fler av FPGA:ns datapinnar. Av detta arbete kan man dra slutsatsen att använd FPGA och Minnesmodul är väl valda för uppgiften och att det nu finns en plattform att bygga ett färdigt instrument på.

(7)

vi

(8)

I NNEHÅLL

KAPITEL1: INLEDNING 3

KAPITEL2: TEORI OCH FÖRUTSÄTTNINGAR 5

2.1 Härdningstid för bencement . . . 5

2.2 Ultraljudseko-metoden . . . 5

2.3 Problembestämning . . . 9

2.4 Analys . . . 10

KAPITEL3: HÅRDVARA OCH DESIGN 13 3.1 FPGA . . . 13

3.2 SDRAM . . . 13

3.3 USB till parallellt gränssnitt . . . 14

3.4 Prototypkort . . . 16

3.5 Designflöde . . . 17

3.6 Paketbaserad kommunikation . . . 18

3.7 Design . . . 19

KAPITEL4: IMPLEMENTATION OCH RESULTAT 27 4.1 Koppling . . . 27

4.2 Verifiering av hårdvara . . . 27

4.3 Kommunikation . . . 28

4.4 Minne . . . 28

4.5 Mätning . . . 29

KAPITEL5: DISKUSSION OCH SLUTSATSER 31 5.1 Mätinstrumentet . . . 31

5.2 Möjliga förbättringar . . . 31

5.3 Fortsatt arbete . . . 32

(9)

viii

(10)

F ÖRORD

Denna rapport är skriven som examensarbete på civilingenjörsprogrammet datateknik med in- riktning mot datorteknik på avdelningen för "Embedded Internet Systems" (EISLAB), Luleå Tekniska Universitet (LTU).

Efter att ha pratat med Jonas Thor, doktorand på avdelningen EISLAB, om att göra ett exa- mensarbete inom datorteknik, så lade han ut en förfrågan på avdelningen för systemteknik om det fanns något intressant projekt som sökte arbetskraft. Johan Carlson, universitetslektor på avdelningen för signalbehandling, kom med ett förslag om att göra en del av en mätutrustning.

Jonas blev min handledare, Johan blev examinator och resten är historia.

Harald Stribén Luleå, Augusti 2004.

(11)

2 INLEDNING

(12)

K APITEL 1 Inledning

Inom medicinsk materialteknik utvecklar man injicerbara ben-cement, att användas för att fylla och reparera defekter med minimala kirurgiska ingrepp. Ett cement karaktäriseras bland an- nat utifrån sina mekaniska egenskaper som hållfasthet, porösitet, densitet och härdningstid.

Härdningstiden bestämmer hur länge man kan arbeta med materialet, och när man kan sy ihop såret utan risk för medicinska komplikationer. Det är därför av stor vikt att man kan bestämma denna tid så exakt som möjligt. Befintliga standardmetoder för att studera härdningstiden hos ett cement har visat sig ha dålig repeterbarhet och kräver stora säkerhetsmarginaler på grund av osäkerheter inbyggda i metoderna. En metod baserad på ultraljud håller på att tas fram och har visat lovande experimentella resultat. En tillförlitlig mätmetod skulle vara till omedelbar hjälp både för medicinsk personal och de som utvecklar materialen. Detta skulle också kunna innebära kortare operationstider för patienterna, eftersom en tillförlitlig mätmetod innebär att läkarna inte behöver lägga på samma säkerhetsmarginaler som idag.

Ett av problemen med ultraljudseko-metoden idag är att den kräver dyr hårdvara, och att den hårdvara som finns inte heller är flexibel. Därför finns ett behov av att utveckla en billi- gare och mer flexibel mätutrustning. Denna mätutrustning skulle bestå i en “svart låda” som till exempel kan kopplas till en bärbar dator. Lådan innehåller allt som behövs för att excitera ultraljudselementet på ett kontrollerat sätt och har även kapacitet att lagra ekot som återspeglas till elementet. Från datorn som styr lådan ska man kunna programmera den med en skräd- darsydd exciteringspuls, det ska gå att ställa ingångsförstärkningen och man ska kunna läsa av mottagna data. Allt detta via en standard USB (Universal Serial Bus) kabel.

Den svarta lådan kan delas upp i två huvuddelar: En helt digital del som innehåller kom- munikation via USB och hantering av Minne. Och en analog del som innehåller förstärkare, analog till digital och digital till analog omvandlare. Detta arbete syftar till att designa och im- plementera den digitala biten av mätutrustningen, så att den passar i en programmerbar logisk krets.

Teori och förutsättningar innehåller information om använda teorier och vad arbetet har bestått i och hur det har delats upp. Hårdvara och design beskriver den hårdvara som används i projektet och designarbetet. Implementation och Resultat beskriver sedan arbetet och resultatet därav. Slutligen kommer Diskussion och slutsatser som diskuterar utkomsten av detta arbete, möjliga förbättringar och fortsättningar på arbetet.

(13)

4 TEORI OCH FÖRUTSÄTTNINGAR

(14)

K APITEL 2 Teori och förutsättningar

I detta kapitel förklaras teorier och metoder använda i detta arbetet. Först kommenteras exis- terande standardmetoder för att estimera härdningstiden hos bencement. Sedan beskrivs grun- derna i den metod som detta arbete grundar sig på, nämligen ultraljudseko-metoden. Slutligen beskriver jag vad arbetet går ut på och hur det delades upp.

2.1 Härdningstid för bencement

Cement som skall användas i medicinska sammanhang måste noggrant undersökas och karak- täriseras utifrån sina mekaniska egenskaper. En av de viktigaste egenskaperna är härdningsti- den. Den avgör hur länge man kan arbeta med materialet, och när man kan sy ihop såret utan risk för medicinska komplikationer.

Idag finns det två standardmetoder för att studera härdningsprocessen. Båda dessa metoder går ut på att utsätta cementytan för ett visst tryck och sedan studera ytan för att se hur den påverkats. Om man förenklar lite så anses cementen ha stelnat när man inte längre lämnar några märken på ytan. Dessa metoder[1] heter the Gillmore needles method och the Vicat needle.

Med hjälp av ultraljudseko så kan man studera härdningsprocessen mer ingående samtidigt som man inte gör någon åverkan på själva cementet.

2.2 Ultraljudseko-metoden

Denna princip finns beskriven i flera rapporter, till exempel "Monitoring the setting of in- jectable calcium-based bone cements using pulse-echo ultrasound" [2] och "Monitoring the setting of calcium-based bone cements using pulse-echo ultrasound" [3].

Principen bakom metoden är att mäta två storheter. Man mäter upp ljudhastigheten i ce- mentprovet, och man mäter den akustiska impedansen vid gränsen mellan ett buffertmate- rial med kända akustiska egenskaper, och cementprovet. Dessa två storheter används för att

(15)

6 TEORI OCH FÖRUTSÄTTNINGAR

Figur 2.1: Labbutrustning för att mäta med ultraljudseko metoden

Figur 2.2: Exempel på reflekterad puls

(16)

2.2. ULTRALJUDSEKO-METODEN 7

beräkna den momentana densiteten. När en ljudvåg kommer till en gräns mellan två material med olika akustiska egenskaper, så reflekteras en del av vågen tillbaka medan resten av vågen fortsätter in i det nya materialet. Hur mycket av vågens energi som reflekteras beror på skill- naden i specifik akustisk impedans. Den specifika akustiska impedansen, z, för ett material har enheten tryck/partikelhastighet (Pa s) och är användbar vid beräkningar av hur mycket av ljudvågens energi som fortsätter genom en gräns mellan två material in i det andra materialet, och hur mycket som reflekteras.

För att genomföra mätningarna används labbuppställningen i figur 2.1. Ultraljudsgivaren används först för att skicka ut en kort ultraljudspuls. Sedan används samma givare som en mottagare för att lyssna på de återspeglade ekon som kommer tillbaka. Den elektriska pulsen som mottagits av givaren samplas sedan för att slutligen hamna i en dator.

Figur 2.2 visar ett exempel av en mottagen signal från en mätning på ett cementprov. Första ekot x1(t) kommer från gränsen mellan Bufferten och provet och det andra ekot kommet från gränsen mellan provet och reflektorn. Förhållandet mellan amplituden hos det första ekot x1(t) och motsvarande eko från en kalibreringsmätning med vatten istället för cement i mätutrust- ningen ger den specifika akustiska impedansen för cementprovet. Tiden mellan de två ekona är tiden det tar för ljudet att gå igenom cementprovet två gånger, avståndet är känt vilket då ger ljudhastigheten i provet. Dessa två storheter kan användas för att ta fram densitet för cement- provet.

Reflektionskoefficienten Rp,c definieras som mängden reflekterad energi från gränsen mel- lan bufferten och cementprovet.

Rp,c = Ac

AWRp,w (2.1)

Ac är amplituden hos det första ekot x1(t) från gränsen mellan buffert och cementprov.

Rp,w är reflektionskoefficienten för gränsen mellan buffert och vatten, och Aw är amplituden hos första ekot vid kalibreringsmätningen med vatten. Reflektionskoefficienten hos vatten ges av:

Rp,w = zw− zp

zw+ zp (2.2)

där zw och zp är kända specifika akustiska impedansen för vatten respektive bufferten.

Amplituden hos ekona är beräknade genom att först transformera de samplade pulserna med diskret fouriertransform, sedan beräkna amplitudförhållandet Ac/Aw för alla frekvenser inom bandvidden för pulserna. Slutligen beräknas medelvärdet för att få ett medelvärde på dämpningen.

När man känner reflektionskoefficienten kan den akustiska impedansen beräknas:

zc = zp1 + Rp,c

1 − Rp,c (2.3)

För att bestämma ljudhastigheten i cementprovet korskorreleras de två ekona x1(t) och x2(t). Maxvärdet hos korskorrelationen motsvarar tidsskillnaden ∆t mellan pulserna. Efter- som sträckan som pulsen passerat är känd, d2, är ljudhastigheten:

(17)

8 TEORI OCH FÖRUTSÄTTNINGAR

Figur 2.3: Exempel på den specifika akustiska impedansen i ett prov, som funktion av tiden

Figur 2.4: Exempel på ljudhastigheten i ett prov, som funktion av tiden

(18)

2.3. PROBLEMBESTÄMNING 9

Figur 2.5: Exempel på densitet i ett prov, som funktion av tiden

c = 2d2

∆t (2.4)

Från ljudhastigheten, c, och cementprovets specifika akustiska impedans, zc(Ekvation 2.3), kan densiteten, ρ beräknas:

ρ = zc

c (2.5)

Denna metod ger inte bara härdningstid och densitet, den ger även en möjlighet att studera hela härdningsförloppet. Figur 2.3 visar ett exempel på den specifika akustiska impedansen i ett prov, som funktion av tiden. Figur 2.4 visar ett exempel på ljudhastigheten i ett prov, som funktion av tiden. Figur 2.5 visar ett exempel på densitet i ett prov, som funktion av tiden

En stor fördel med metoden är att den är helt objektiv och därför gör det lätt för oberoende forskare att genomföra experimentet och sedan jämföra resultaten.

2.3 Problembestämning

Detta arbete syftar till att ta fram en del av en mätutrustning. Hela mätutrustningen kan ses i figur 2.6. En mätning ska gå till på det viset att man från PC:n laddar ned en skräddarsydd exciteringskurva till RAM-minnet. RAM-minnet är uppdelat i en sändbank och en bank för

(19)

10 TEORI OCH FÖRUTSÄTTNINGAR

Power Amp Pre Amp

FPGA

PC USB

RAM

Filter

DA AD

I/O Sw

Digital Analog

Figur 2.6: Systemskiss av mätutrustning

mottagna mätdata. Sedan kan en mätning startas vilket innebär att den data som finns i sänd- banken skickas genom digital till analog omvandlaren (DA), den analoga signalen passerar sedan genom en effektförstärkare (Power Amplifier), för att slutligen omvandlas till ultraljud i ultraljudsgivaren. När data är skickat slår utrustningen om till mottagning, och det ultraljud som kommer tillbaka till ultraljudsgivaren filtreras och förstärks innan det passerar genom en analog till digital omvandlare (AD), för att sedan lagras i mottagningsbanken i RAM-minnet.

Nu kan man från PC:n läsa ut färdig mätdata. Kommunikationen med PC:n sker som nämnts tidigare genom USB. Den övre delen av figur 2.6 är den analoga delen, och den nedre delen är den digitala.

Detta arbete visar hur man kan implementera den digitala delen i en FPGA. Funktion- aliteten är beskriven i VHDL, ett hårdvarubeskrivande språk. I denna rapport så kommer jag dock bara att beskriva designen på en högre nivå i termer av block och gränssnitt.

2.4 Analys

Hårdvarumässigt består den digitala delen av mätutrustningen av en FPGA, ett RAM-minne och en modul för kommunikation via USB. RAM-minnet och FPGA:n sitter redan på ett pro- totypkort. Sammankopplingen av de två korten, prototypkortet och USB-modulen togs fram innan fortsatt arbete med programmering av FPGA:n kunde göras. FPGA:n skall utföra flera uppgifter:

• Styra förstärkningsfaktorn för ingångsförstärkaren.

(20)

2.4. ANALYS 11

• Ställa om mellan sändning och mottagning.

• Skriva och läsa RAM-minnet från PC.

• Styra överföring av data från RAM-minnet till DAC:en.

• Spara undan data från ADC:en i RAM-minnet.

Block som uppenbart behövs är dels ett som pratar med USB-kontrollern och ett som sköter SDRAM-modulen. Sedan behövs Styrning av mätarens olika funktioner. Mer om vilka block och gränssnitt som skapats i kapitel 3.7.

(21)

12 HÅRDVARA OCH DESIGN

(22)

K APITEL 3 Hårdvara och design

Detta kapitel beskriver först den hårdvara och några av de principer som användes vid utföran- det av detta arbete. Hårdvaran som använts i arbetet var en FPGA, en kommunikationskrets för USB och ett prototypkort med en FPGA och SDRAM på. Sedan beskrivs designflödet som används vid implementation av hårdvara med hjälp av VHDL. Den för projektet valda kommunikationsprincipen beskrivs. Sist i kapitlet redovisas den valda designen för projektet.

3.1 FPGA

Det finns olika typer av programmerbar logik på marknaden (Programmable Logic Devices, PLD). En typ av PLD är en FPGA, vilket står för “Field Programmable Gate Array”. En FPGA består av ett mönster av konfigurerbara logikblock (Configurable Logic Blocks, CLB), omgivna av programmerbara I/O-block (IO Blocks, IOB), och sammankopplade med programmerbara kopplingar som kan ses i figur 3.1. Antalet CLB:er i en FPGA varierar mellan några få och flera tusen. Prestanda hos en FPGA beror i stor utsträckning på funktionen hos CLB:erna och möjligheten att med så lite delay som möjligt sammankoppla CLB:er och IOB:er. De flesta FPGA:er är SRAM baserade. En FPGA baserad på SRAM kan programmeras om obegränsat antal gånger, men den måste programmeras varje gång efter man slår på strömmen.

FPGA:n som används i detta arbete heter SPARTAN-II XC2S50. Dess CLB-mönster är 16 × 24 stort och har således 382 st CLB:er. Den har 176st användbara I/O-pinnar. Och kan, beroende på implementerad konstruktion, klockas upp till 200 MHz

3.2 SDRAM

SDRAM står för Synchronous Dynamic Random Access Memory. SDRAM använder en klockpuls för synkronisering, medan standard DRAM är ett icke-synkront minne. SDRAM arbetar med höghastighets-åtkomst, så kallad “burst mode”, vilken använder sig av en intern

“adress-kolumngenerator”. När den första adresskolumnen för åtkomst är bestämd, kan de

(23)

14 HÅRDVARA OCH DESIGN

Figur 3.1: Generaliserad FPGA-struktur

följande adresserna automatiskt tas fram av den interna kolumngeneratorn. Mode-registret tar emot den begärda informationen och styr i turordning minnet i enlighet med informationen.

Ett SRAM är ett minne som hela tiden håller sitt data så länge strömmen är påslagen, men det tar stor yta på kretsens kiselyta. DRAM är en typ av minne som tar betydligt mindre yta än SRAM, men håller inte kvar sin data hur länge som helst. Därför behöver DRAM uppdateras eller refreshas. SDRAM är som nämnt ovan ett utökat DRAM, så det behöver också refreshas.

Det SDRAM som används i detta arbete heter K4S641632F-TC75 från Samsung[4]. Det kan klockas upp till 133 MHz och är uppbyggt av fyra banker med vardera 1Mbit x 16 min- nesceller. Antal på varandra följande läsning eller skrivningscykler initierade av ett enda kom- mando “Burst length” är 1, 2, 4, 8 eller “Full page”(det vill säga hela raden 16bitar). Refresh perioden, det vill säga tiden från en refresh till dess att minnet måste refreshas igen.

3.3 USB till parallellt gränssnitt

“USB to FIFO Parallel Interface Module”, DLP-USB245M[5] är en färdig modul för att under- lätta kommunikation via USB. Den har färdiga drivrutiner att installera i datorn som maskerar

(24)

3.3. USBTILL PARALLELLT GRÄNSSNITT 15

RXF# Låg när åtminstone en byte finns i receivebuffer.

5..25 >80

>50 >50

<30 >10

D[7..0]

RD#

RXF#

Valid data

D[7..0]

TXE#

Valid data WR

FIFO Read Cycle

igen när data är läst.

FIFO Write Cycle 5..25 >80

>50 >50

<20 >10

När TXE# är hög så är utFIFO:n full.

För att skriva till utFIFO:n sätts först WR hög. Sedan läggs datat ut på datapinnarna, WR sätts låg för att läsa av datat.

Datapinnarna släpps.

Dra RD# låg för att läsa första värdet i inFIFO:n, sätt den hög

Figur 3.2: DLP-USB245M Hårdvaruinterface

hårdvaran som en vanlig RS232 seriell port, men med mycket högre hastighet (så kallad “baud rate” inställning ignoreras). På hårdvarusidan har den ett gränssnitt för att läsa och skriva parallell (8 bitar) data åt gången som kan ses i figur 3.2.

(25)

16 HÅRDVARA OCH DESIGN

VHDL kodeditering

Funktions−simulering ModelSim

syntes Synplify Begränsningar

(Constraints)

Statisk timing−

"Back annotation" Timing−simulering Mappning

översättning

analys Place and route

Figur 3.3: Designflöde

3.4 Prototypkort

Prototypkort XSA-50 Från XESS Corp.[6]. Kortet är bestyckat med en Spartan-II (XC2S50) FPGA från Xilinx[7]. FPGA:n är kombinerad med ett 8 Mbyte stort Synkront DRAM. Bit- strömmen man vill programmera FPGA:n med kan sparas i ett Flash minne, så att FPGA:n blir konfigurerad så fort strömmen slås på. Kortet har även en parallellport genom vilken man kan ladda FPGA:n med hjälp av verktyg framtagna av XESS Corp. Kortet har även en program- merbar oscillator på 100 MHz, frekvensen kan ställas i jämna delar av 100 MHz till exempel 50, 25, 12.5, 6.25 MHz. För detta projekt krävs möjlighet att komma åt många av FPGA:ns pinnar från resterande hårdvara. Kortet har 84 anslutningar för att kunna kommunicera med ytterligare elektronik, men med olika restriktioner.

(26)

3.5. DESIGNFLÖDE 17

9

Data−esc Vänta−esc

Data Vänta

1

2

3

4 5

6 7

8

Figur 3.4: Tillståndsmaskin för avkodning av paketerade meddelanden

3.5 Designflöde

Det syntesverktyg jag använt heter Synplify[8], och är även det program jag använt för att skriva och editera koden. För att simulera koden har ett program som heter Modelsim[9] an- vänts. Slutligen har Xilinx[7] mjukvara använts för att kompilera nätlistor till bitmönster att programmera FPGA:n med.

Här följer en genomgång av stegen från VHDL kod till färdig kretsbeskrivning i bitströms- form. Stegen kan även följas i figur 3.3.

Först kommer funktionssimulering, som används för att kolla att VHDL beskrivningen är korrekt och beter sig på det vis man tänkt. I detta läge kan man dock inte testa tidsberoendet, det vill säga inte hitta fel som uppkommer av för stora delayer eller dylikt.

Syntes kan definieras som att konstruera en mål-specifik nätlista från en beskrivning skriven i ett hårdvarubeskrivande språk till exempel VHDL. Synplify är ett program speciellt gjort för syntes och optimering för FPGA och avancerade PLD:er. Det finns flera steg i syntesen.

Första steget är språksyntes; det hårdvarubeskrivande språket kompileras till kända byggstenar.

Andra steget är optimering, där algoritmer används för att göra kretsen så liten och snabb som möjligt. Första optimeringen är oberoende av målteknologin och därför enkel, medan resten av optimeringen är gjord under sista steget. Sista steget är mappning till målteknologin.

Målspecifika tekniker används, och en nätlista genereras i ett format som till exempel Xilinx

“place and route” verktyg kan läsa.

Xilinx mjukvara gör också den saker i flera steg. Första steget är översättning, där program-

(27)

18 HÅRDVARA OCH DESIGN

met läser nätlistan från syntesprogramvaran och översätter den till ett för verktyget specifikt binärt format. Andra steget är Mappning, det vill säga att tilldela kretsens logiska byggstenar till specifika fysiska element, så som CLB:er och IOB:er. Tredje steget består av två delar nämligen “place and route” eller placering och sammankoppling. Placeringen består i att plac- era ut de block som under mappningen tilldelades uppgifter. Sammankopplingen är sedan just kopplingen mellan dessa logiska block. Efter dessa steg är implementationen klar och statisk tidsanalys kan göras. Man kan även utföra en så kallad “Back annotation” då den implementer- ade kretsen konverteras till en VHDL-nätlista och tidsdata är uttagna till en “standard delay format”(SDF) fil. Detta görs för att kunna göra tidssimuleringar av den färdiga implementatio- nen, viket görs för att kolla att funktionen är den rätta och att det inte finns några tidsproblem i den färdiga designen.

3.6 Paketbaserad kommunikation

För att skapa en fungerande kommunikation bör den ske i paketform, det vill säga ett paketfor- mat definieras, vilket sedan går att följa för att avkoda de olika meddelanden som kan skickas över USB-porten. Enligt den definition av paketformat jag använt behövs ett escapetecken, en början respektive slut sekvens och ett id, alla delar är av bytestorlek. Till exempel:

• Paket innehållande ett kommando identifierat genom “Id”.

[Esc][Begin][Id][Esc][End]

• Paket innehållande data identifierat genom “Id”.

[Esc][Begin][Id][Data0][Data1]...[Datan][Esc][End]

Id-byten talar om vad det är för paket som har överförts. Eftersom escapetecknet även måste användas i datat då det representerar ett värde, måste man behandla dem på ett särskilt sätt. Varje gång man vill skicka värdet som escape-tecknet representerar måste man sända två escape-tecken efter varandra, för att det inte ska feltolkas som en början- eller slutsekvens.

I figur 3.4 beskrivs uppackning av ett paket konstruerat enligt ovan angivna format. Det kan dock påpekas att vid denna uppackning tas ingen hänsyn till idtecken, vilket resulterar i att man efter uppackning får en rad med bytes av vilka den första är idtecknet och eventuell fortsättning är data. Här kommer en beskrivning av villkor och resultat av tillståndsbyten i maskinen:

1. Maskinen står kvar iVänta-lägeså länge det inte kommer ett escapetecken.

2. Om ett escapetecken mottagits går maskinen till lägetVänta-esc.

3. I det fall att man i Vänta-esc tillståndet får det tecken som tillsammans med es- capetecknet formar börjasekvensen går man vidare för att vänta på innehållet i paketet.

4. Så länge ny data innehållande vilket tecken som helst, för utom escapetecknet så fortsät- ter maskinen iData-tillståndet och sparar undan de tecken som mottages.

5. I det fall ett escapetecken mottages så går maskinen till lägetData-escför att kunna avgöra om det är en databit eller en styrsignal, till exempel början eller slut sekvens.

(28)

3.7. DESIGN 19

DATA IO gränssnitt usb_cntr

rx/tx fifo gränssnitt

mem_usb_bridge

registers

config värden

measure_cntr

SDRAM gränssnitt

xsasdramcntl

USB245M SDRAM

main 50MHz

AD/DA frekvens

Figur 3.5: Block och gränssnitt i FPGA:n

6. Om det i en dataföljd kommer två på varandra följande escapetecken så representerar det värdet hos escapetecknet, och maskinen återgår till att vänta på data. Om man av någon anledning skulle få en startsekvens under Data-esctillståndet, vilket man inte bör få om allt fungerar som det ska, så måste databufferten tömmas innan maskinen går tillData-tillståndet för att ta emot det nya paketet.

7. När slutsekvensen kommer så har man ett helt paket och kan gå vidare till att processa den data man fått eller gå tillbaka tillVäntatillståndet, för att invänta nästa paket.

8. Om man i Vänta-esc inte erhåller ett tecken som tillsammans med escapetecknet bildar börjasekvensen så återgår man tillVäntalägeför att invänta början på ett paket.

9. I det fall att ett escapetecken mottages iVänta-esctillståndet så står maskinen kvar i Vänta-escdå det kan vara början på en börjasekvens.

3.7 Design

För att förklara funktionaliteten ska jag här beskriva vilka block jag valt att dela upp konstruk- tionen i. Hur blocken pratar med varandra dvs deras gränssnitt. Detta utan att gå ner på allt för djup nivå, se figur 3.5.

(29)

20 HÅRDVARA OCH DESIGN

3.7.1 Block

Inneslutande alla andra block har jag toppblocket, som jag kallat "main". För att prata med USB kontrollern har jag sedan "usb_cntr". Som SDRAM modul använder jag en något mod- ifierad och buggfixad variant av en färdig SDRAM kontroller hämtad från XESS hemsida, de kallar den för "xsasdramcntl". Sedan har vi själva funktionaliteten hos mätaren, för att det inte ska bli för otymplig kod har jag valt att dela upp hanteringen av olika kommandon i tre block.

Dessa block är mem_usb_bridge, register och measure_cntr vilkas funktion beskrivs nedan.

3.7.1.1 main

Huvudblocket main representerar hur de övriga blocken ska kopplas samman och hur de ska kopplas till omvärlden. Detta block kan ses i figur 3.5, allt inom den grövre streckade linjen är main blocket. Denna figur beskriver mycket av den funktion main blocket har.

3.7.1.2 usb_cntr

Denna enhet tar emot kommando och data paket skickade från PC:n och sänder även till- baka svar till PC:n från de tre styrblocken. Innehåller mottagande och sändande först in först ut buffertar, så kallade FIFO buffertar. Har hand om kommunikationen med USB enheten, DLP-USB245M. DLP-kretsen innehåller även den två köer (FIFO) en för sändning och en för mottagning. Dessa fungerar som en buffert mot USB-porten så att man inte behöver synkronis- era med datorn. DLP enheten kräver en specifik styrning och synkronisering som kunde ses i figur 3.2. Det är dock en klar fördel att inte behöva hantera USB-portens protokoll utan istället kunna läsa och skriva en byte åt gången. Detta block innehåller uppackning av paket på det sätt som fins beskrivet i kapitel 3.6.

3.7.1.3 mem_usb_bridge

Styrblock nummer ett är dedikerat åt att låta PC:n skriva och läsa i SDRAM minnet. När detta block blir aktiverat för att läsa eller skriva så börjar det med att avkoda kommandot som skickats. Vid läsning så kommer först startadressen, på vilken position i minnet det första värdet ska läsas ifrån. Sedan kommer stopadressen, på vilken läsningen från minnet ska avs- lutas. Vid skrivning kommer först en startadress på vilken det första värdet ska skrivas, sedan kommer datat. Vid en läsning så läses alla värden från minnet som ligger mellan start och slutadressen och placeras i sändfifon hos usb_cntr, vid en skrivning så placeras alla data som finns i usb_cntr:s mottagningsbuffert från startadressen och framåt i minnet.

3.7.1.4 registers

Styrblock nummer två innehåller register som kan hålla konfigurationsdata som skickas från PC:n, vilka används vid mätning. SDRAM minnet är, som tidigare nämnt, uppdelat i Mot- tagande, Rx, och sändande, Tx, del. Den sändande delen är där instrumentet tar den stimuli som skickas till ultraljudsgivaren vid excitering. De ekon som sen mottages samplas till den mottagande delen av minnet. Här följer en lista med de register som finns och vad deras kon- figurationsvärde representerar.

(30)

3.7. DESIGN 21

• RxBufferBegin

Adressen för början på det mottagande minnet.

• RxBufferEnd

Adressen för slutet på det mottagande minnet.

• TxBufferBegin

Adressen för början på det sändande minnet.

• TxBufferEnd

Adressen för slutet på det sändande minnet.

• RxGain

Förstärkningsgraden hos den ingående förstärkaren.

• TriggerDelay

Den tid instrumentet ska vänta från det att den sänt allt i sändbufferten tills dess att den ska börja sampla nya invärden.

3.7.1.5 measure_cntr

Styrblock nummer tre är det som styr själva mätningen. När en mätning aktiveras så är det detta block som tar kommandot i FPGA:n och ser till att mätningen utförs enligt plan. Ultraljudsgi- varen exciteras med signalen som finns i SDRAM, sedan ställs mätaren om till mottagning och ekot sparas i en annan del av SDRAM minnet. Även förstärkningen hos ingångsförstärkaren ställs in i enlighet med konfigurationen.

3.7.1.6 xsasdramcntl

En SDRAM kontroller från labbkortstillverkaren har använts. Application Note av D. Vanden Bout, “XSA Board SDRAM Controller”[10] innehåller en fungerande kontroller och ett test- program. Kontrollern finns för att underlätta läsning och skrivning mot SDRAM modulen, och för att underhålla den med refresch signaler inom rätt intervall. Mer om SDRAM modulen hittas i kapitel 3.2.

3.7.2 Gränssnitt

Vi kan dela in gränssnitten i externa och interna gränssnitt. De externa gränssnitten är det som usbmodulen, DLP-USB245M, använder, det som SDRAM minnet använder och slutligen gränssnittet mot DA och AD omvandlare, Data IO. Dessa externa gränssnitt är det vi har att arbeta mot. De interna gränssnitten däremot är skapade för att separera funktionaliteten hos instrumentet på ett så logiskt och lättarbetat sätt som möjligt. De interna gränssnitten har jag döpt till rx/tx fifo och r/w SDRAM. Nedan följer en beskrivning av dessa gränssnitt.

(31)

22 HÅRDVARA OCH DESIGN

modulens funktion 1

2

3

5 4

6 Vänta

Kolla Klar

Styrning av

Figur 3.6: rx/tx fifo-gränssnitt, för styrblocken

3.7.2.1 DLP-USB245M

Ett externt gränssnitt som implementerats i usb_cntr blocket och som beskrivs närmare i kapitel 3.3.

3.7.2.2 rx/tx fifo

När ett helt paket är mottaget så flaggar usb_cntr för att ett nytt kommando ligger och väntar.

Då kollar alla styrblocken om det är ett kommando de ska ta hand om, annars går de och vilar igen. Från usb_cntr:ens sida väntar den bara på en klar signal från någon av styrenheterna, för att sedan åter vara beredd att motta fler paket. Usb_cntr kontrollerar vid klarsignal om sin sändfifo är tom annars sänds det som ligger i fifon innan den åter väntar på nästa anländande paket.

För att svara mot detta gränssnitt har alla styrblock samma grund i sina tillståndsmaskiner.

Denna grund kan ses i figur 3.6. Denna tillståndsmaskin fungerar på följande sätt (siffror i figuren):

1. Väntar på att få reda på att ett paket är mottaget

2. När ett nytt paket är mottaget så är första biten i rxfifon idbiten och alla styrblock kan se den. Alla går till kontrolltillståndet för att se om det är det som ska vakna.

3. Om Id:t inte känns vid av det aktuella blocket så går det åter och väntar på nästa paket.

(32)

3.7. DESIGN 23

clk

A1 A2 A3

D(A3) D(A2)

D(A1)

rd

0 1 2 3 4 5 6 7 8

done hDOut earlyOpBegun hAddr

Figur 3.7: SDRAM-kontroller läsoperation

clk

hAddr

0 1 2 3 4 5

hDIn D1 D2 D3

A1 A2 A3

earlyOpBegun hAddr wr

Figur 3.8: SDRAM-kontroller skrivoperation

4. När ett paket har ett id som blocket känner igen så vaknar det upp och utför sin uppgift.

5. Efter att blocket utfört sin uppgift så går den till ett tillstånd för att signalera att uppgiften är slutförd, så att instrumentet kan fortsätta med nästa uppgift.

6. Efter att ha signalerat "uppgift slutförd" så återgår blocket till att vänta på nästa paket.

3.7.2.3 r/w SDRAM

SDRAM kontrollern xsasdramcntl[10] har ett gränssnitt som lättast beskrivs med några kurvor.

Figur 3.7 visar hur läsning av i det här fallet tre värden från minnet går till. Man börjar med att sätta hAddr till den första adressen man vill läsa, och sätter rd till 1. earlyOpBegun talar om ifall adressen har mottagits och man kan byta adress till nästa klockcykel. om inte early- OpBegun är hög så får man vänta tills den är aktiveras innan man går vidare och byter adress.

Data finns sedan att hämta från hDout när done-signalen är hög. Figur 3.8 visar en skrivning av tre data till minnet går till. Adressen man vill skriva till läggs på hAddr och datat man vill

(33)

24 HÅRDVARA OCH DESIGN

Tecken Värde(Dec) Värde(Hex)

[Esc] 16 10

[Begin] 2 02

[End] 3 03

Tabell 1: ASCII-värden valda för paketkommunikation

skriva läggs på hDIn, sedan sätter man wr hög och byter till nya data med respektive adress om earlyOpBegun är hög. Detta gränssnitt gör det möjligt att skriva eller läsa data nästan på varenda klockcykel, så länge minnet inte behöver göra refreschcykler.

3.7.2.4 SDRAM

Det externa gränssnitt mellan minnesmodulen och FPGA:n som i detta arbete implementeras av ett färdigt block från tillverkaren av prototypkortet. Blocket kallas xsasdramcntl. Minnes- modulen beskrivs i kapitel 3.2.

3.7.2.5 DATA IO

Detta interface är inte riktigt färdigdefinierat då den analoga sidan av instrumentet inte är färdigt. I specifikationen så anges en 12 bitars analog till digital omvandlare, som använder en klockfrekvens på 65 MHz. På grund av att minnet ska hinna med kommer instrumentet att använda en annan klockfrekvens än omvandlaren. Instrumentet måste klockas snabbare än omvandlaren för att hinna spara undan de data som kommer från den. En asynkron fifo an- vänds för att synkronisera mellan de två klockdomänerna. Om man i framtiden vill använda en 16 bitars omvandlare är det också möjligt då jag bara bortser från de extra bitar som finns tillgängliga. Gränssnittet har två 16 bitars asynkrona fifos, en för in och en för ut data så att både analog till digital och digital till analog omvandlaren existerar i 65 MHz-domänen. De två klockdomänerna kan ses i fig 3.5.

3.7.3 Kommunikation

Kommunikationen mellan datorn och mätutrustningen görs i paketform, som beskrivet tidigare (kapitel 3.6). Detta paketsystem är uppbyggt på escapesekvenser. Med Värden enligt Tabell 1.

Escapesekvenserna är:

[Esc][Begin] - Börjasekvensen, som alla paket inleds med.

[Esc][End] - Slutsekvensen, som avslutar alla paket.

[Esc][Esc] - Om man i ett paket vill få med värdet av escapetecknet så måste man skicka det som två på varandra följande escapetecken.

Olika kommandon har olika id, så här följer en lista på de kommandon som instrumentet svarar på, vilket id de har och vad de representerar. Id:t är skrivet både som decimaltal och hexadecimalt på formen Dec(xHex). Vad de olika registren representerar kan ses i kapitel 3.7.1.4.

(34)

3.7. DESIGN 25

• setRxBufferBegin

Id: 20(x14). Kommandot skriver ett 32 bitars konfigurationsvärde till RxBuffertBegin registret.

• getRxBufferBegin

Id: 21(x15). Kommandot läser ut ett 32 bitars konfigurationsvärde från RxBuffertBegin registret.

• setRxBufferEnd

Id: 22(x16). Kommandot skriver ett 32 bitars konfigurationsvärde till RxBuffertEnd registret.

• getRxBufferEnd

Id: 23(x17). Kommandot läser ut ett 32 bitars konfigurationsvärde från RxBuffertEnd registret.

• setTxBufferBegin

Id: 24(x18). Kommandot skriver ett 32 bitars konfigurationsvärde till TxBuffertBegin registret.

• getTxBufferBegin

Id: 25(x19). Kommandot läser ut ett 32 bitars konfigurationsvärde från TxBuffertBegin registret.

• setTxBufferEnd

Id: 26(x1A). Kommandot skriver ett 32 bitars konfigurationsvärde till TxBuffertEnd reg- istret.

• getTxBufferEnd

Id: 27(x1B). Kommandot läser ut ett 32 bitars konfigurationsvärde från TxBuffertEnd registret.

• setRxGain

Id: 30(x1E). Kommandot skriver ett 16 bitars konfigurationsvärde till RxGain registret.

• getRxGain

Id: 31(x1F). Kommandot läser ut ett 16 bitars konfigurationsvärde från RxGain registret.

• setTriggerDelay

Id: 32(x20). Kommandot skriver ett 16 bitars konfigurationsvärde till TriggerDelay reg- istret.

• getTriggerDelay

Id: 33(x21). Kommandot läser ut ett 16 bitars konfigurationsvärde från TriggerDelay registret.

• start

Id: 44(x2C). Kommandot startar en mätning, förutsatt att konfigurationsvärden är satta rätt så genomförs en mätning.

(35)

26 IMPLEMENTATION OCH RESULTAT

• writeMemory

Id: 50(x32). Skriver data till minnet. Tar först ett 32 bitars värde som anger startadressen.

sedan följer 16 bitars data, så många man vill skriva.

• readMemory

Id: 51(x33). Läser data från minnet. Tar två 32 bitars värden, där det första är star- tadressen och det andra är stopadressen. Kommandot returnerar alla 16 bitars värden mellan de två adresserna.

(36)

K APITEL 4 Implementation och resultat

Kapitlet redogör för hur implementationen gått och de resultat som uppnåtts. Först det fysiska byggandet av labbsystemet, sedan verifiering av detsamma. Slutligen implementationen av de olika delarna av designen.

4.1 Koppling

Sammankopplingen av de två korten, XSA-50-kortet och DLP-USB245M-kortet gjordes på ett prototypkort. Ett problem för kopplingen mellan de två är att hitta oanvända pinnar från FPGA:n, som även är uttagna till XSA-kortets prototypanslutningar. Vid en snabb titt, närmare bestämt när det beslutades att detta kort skulle användas för framtagning av utrustningen, så såg det ut att inte vara något problem, sådär en 50-60 pinnar såg ut att vara nåbara. Det har dock visat sig att många av FPGA:ns pinnar används för kopplingar till de kretsar som redan finns på XSA-kortet, helt obundna är endast nio av pinnarna. Detta i kombination med att pinnarna från FPGA:n är utdragna till prototypanslutningarna på ett sådant sätt att de inte är i ordning, gör planeringen av kopplingarna komplicerad. För att kunna använda de resterande pinnarna måste man ta särskild hänsyn och även skriva in rutiner för att kunna använda vissa.

4.2 Verifiering av hårdvara

För detta arbete så finns det två distinkta delar som måste fungera för att arbetet ska gå att genomföra, nämligen minnet och kommunikationen genom usb.

Att testa om minnet fungerar eller inte gick att genomföra med exempelkod tillhandahållen av labbkortstillverkaren. Dock var denna kod dåligt dokumenterad så det krävdes laborerande innan det gick att avgöra att minnet var ok.

Det var lite svårare att avgöra om kommunikationen via usb fungerar då det inte finns någon färdig kod för detta, och då man måste ha något sätt att avgöra om man lyckas överföra något. Ett annat problem var att de fanns olika drivrutiner till USB-modulen. En drivrutin som simulerar att den är en comport fick jag slutligen att fungera tillsammans med programmet som körs på PC:n för att kommunicera med modulen.

(37)

28 IMPLEMENTATION OCH RESULTAT

En enkel kommunikationskod för att ta emot data från datorn skrevs och även en modul för att kunna visa tal på den på labbkortet inbyggda lysdiodsdisplayen. Fel uppstod till synes slumpmässigt och djupare undersökning krävdes. Kod för att kunna sända data till datorn skrevs och det var nu lättare att felsöka kommunikationen. Efter många försök visade det sig att två ledningar som valts inte var lämpliga eftersom de var beroende respektive användes till lysdiodsdisplayen. Manualen till labbkortet luslästes och två nya ledningar valdes. Vid dessa test hade en annan än den önskade klockfrekvensen använts och koden fungerade bara vid denna frekvens, men den kunde i alla fall påvisa att hårdvaran för USB-kommunikationen fungerade som den ska.

4.3 Kommunikation

Komplexiteten i att designa ett kommunikationssystem är ganska stor när man ska göra det i hårdvara, så denna del krävde noga planering och många test.

4.3.1 testbänk

För att kunna testa om kommunikationen fungerar genom simulering kräver det att man skriver en testbänk. I detta fall behövs en testbänk som simulerar USB-modulens funktionalitet.

4.3.2 utveckling och simulering

Efter ovärderlig hjälp från min handledare, fungerar nu kommunikationen felfritt. Förbät- tringar är möjliga, mer om det nämns senare i raporten i kapitlet diskussion och slutsatser.

4.3.3 test på hårdvara

Från början användes ett testprogram som tillverkaren av DLP-USB245M modulen tillhan- dahåller. Denna var dock något instabil och var inte så lämpad för uppgiften. För att kunna testa kommunikationen på ett mer systematiskt sätt så skrevs ett litet Java-program som kom- municerar med instrumentet via drivrutinen som maskerar usb:n som en comport.

Javaprogrammet utökades ytterligare för att kunna användas som modul för Matlab. Denna modul har genomgått test, i form av slumptal som skrivits till minnet och sedan lästs tillbaka för att slutligen jämföras med den data som skrevs till minnet. Hela minnet skrevs och lästes upprepade gånger i överföringar av skiftande storlek, inga fel uppstod.

4.4 Minne

Minnesmodulen SDRAM minnet krävde en del arbete trotts att jag här använde en “färdig”

kontroller.

(38)

4.5. MÄTNING 29

4.4.1 testbänk

Från Samsung så fick jag tag i en verilog-modell av minnet som gick att simulera emot. Efter att ha justerat min testbänk att lägga in en viss fördröjning mellan minnet och FPGA:n så fungerade den.

4.4.2 utveckling och simulering

Application Note av D. Vanden Bout, “XSA Board SDRAM Controller”[10] innehåller en fungerande kontroller och ett testprogram. Dock hade jag problem att simulera kontrollern, men efter att ha rättat några småfel i deras kod så fungerar den i simulatorn.

4.4.3 test på hårdvara

Kontrollern fungerade redan utan korrigeringar i hårdvaran, men jag antar att det inte spelar någon roll om den får göra åtskilliga instruktioner i början för att en räknare "slår över". En räknare som ska vara 0 blir satt till räknarens maxvärde av misstag under initieringen, och så många instruktioner utförs.

4.5 Mätning

Då det inte finns tillräckligt med pinnar på labbkortet för att fysiskt kunna koppla in riktiga AD- och DA-omvandlare så får det bli någon annans uppgift att ta ett annat labbkort som är mer lämpat för uppgiften och bygga ihop den färdiga mätaren. Dock tänker jag genom simulering visa att koden har stöd för de funktioner som då kommer att behövas.

4.5.1 testbänk

Utökas med möjlighet att läsa indata från en fil. Enkla modeller för AD- och DA-omvandlarna har även skapats.

4.5.2 utveckling och simulering

Styrning av mätförloppet. measure_cntr-blocket som styr hela mätningen börjar med att läsa från minnet de data som ligger på adresserna mellan txBufferBegin och txBufferEnd. Datat matas in i en asynkron fifo som används för att länka mellan de två klockdomänerna. När fifon är full eller när det är slut på data att skicka, vilket som händer först, så börjar instrumentet skicka data till ultraljudsgivaren. När fifon är tom så väntar instrumentet ett förutbestämt antal klockcykel, triggerDelay. Sedan aktiveras analog till digital omvandlaren och en mottagande asynkron fifo börjar fyllas, samtidigt som instrumentet skriver data till minnet så fort det finns data i fifon. Datat skrivs från adressen rxBufferBegin och framåt. En räknare håller reda på hur många mätvärden som läses in, det vill säga hur många klockcykler som passerar i omvandlarnas tidsdomän från det att AD-omvandlaren aktiveras. När önskat antal mätningar

(39)

30 DISKUSSION OCH SLUTSATSER

gjorts, det vill säga rxBufferEnd-rxBufferBegin så avslutas mätningen och instrumentet återgår till viloläge.

(40)

K APITEL 5 Diskussion och slutsatser

Detta kapitel behandlar det slutliga resultatet och vad som skulle gå att göra bättre. Slutligen nämns även möjligheter till fortsatt arbete.

5.1 Mätinstrumentet

Omfattningen av detta exjobb var att implementera den digitala delen av ett mätinstrument för mätning enligt ultraljudseko-metoden. Instrumentet ska kunna utföra följande.

• Styra en 12 bitars ADC, klockad i 65 MHz.

• Styra förstärkningsfaktor hos ingångsförstärkaren.

• Styra mätningsförloppet, med sändning fördröjning och mottagning.

• Konfigureras och ange aktuell konfiguration.

• Bli initierad med exciteringsdata, och läsa tillbaka exciteringsdata redan i minnet.

• läsa ut mottagen data, och skriva över den mottagna datan.

Då endast den digitala delen av instrumentet är färdig finns ingen AD eller DA att testa mot, men dessa delar är testade med simulering. Övriga delar fungerar enligt ovan.

För att kunna bygga en färdig mätare måste ett annat labbkort eller ett egenkostruerat kret- skort användas som har möjlighet att använda fler av FPGA:ns datapinnar. Av detta arbete kan man dra slutsatsen att använd FPGA och Minnesmodul är väl valda för uppgiften och att det nu finns en plattform att bygga ett färdigt instrument på.

5.2 Möjliga förbättringar

SDRAM minnet borde gå att använda som buffert för usbkommunikationen förutsatt att inte hela minnet används just vid det tillfället, som till exempel vid laddning av exciteringspuls till

(41)

32 DISKUSSION OCH SLUTSATSER

instrumentet. Detta skulle göra att hela pulsen kunde skickas i ett stort paket utan att tumma på paketprotokollet.

Som designen är nu finns det möjlighet att låsa instrumentet så att man måste starta om det.

Detta skulle gå att komma runt men kräver omstruktureringar.

5.3 Fortsatt arbete

Detta arbete blir lite haltande fram till dess att någon tar sig an att göra den analoga sidan av mätinstrumentet. Jag hoppas därför att någon tar sig an denna uppgift så snart som möjligt.

(42)

Referenser

[1] J. Carlson, M. Nilsson, E. Fernández, and J. Planell, “Monitoring the setting of injectable calcium-based bone cements using pulse-echo ultrasound,” in IEEE Int. Ultrason. Symp., (Munich, Germany), pp. 1261–1264, 2002.

[2] M. Nilsson, J. Carlson, E. Fernández, and J. Planell, “Monitoring the setting of calcium- based bone cements using pulse-echo ultrasound,” Journal of Materials Sience, vol. 37, no. 13, pp. 1135–1141, 2002.

[3] J. Carlson, M. Nilsson, E. Fernández, and J. Planell, “An ultrasonic pulse-echo technique for monitoring the setting of CaSO4-based bone cement,” Biomaterals, vol. 24, no. 1, pp. 71–77, 2003.

[4] S. electronics, “http:/www.samsung.com,” 2004.

[5] D. D. Inc, “http:/www.dlpdesign.com,” 2004.

[6] X. E. S. S. Corp., “http:/www.xess.com,” 2004.

[7] X. Inc, “http:/www.xilinx.com,” 2004.

[8] S. Inc, “http:/www.synplicity.com,” 2004.

[9] M. T. Inc, “http:/www.model.com,” 2004.

[10] D. V. Bout, “Xsa board sdram controller,” application note, XESS Corp., 2004.

References

Related documents

Därför är det anmärkningsvärt att bara en fjärdedel av verksamheterna har tydliga riktlinjer som stöd för personalens arbete med att se till att barn med

Bristen på kulturpolitik Evelyn menar att ingen av regeringarna som suttit vid makten sedan 1990 har haft en poli- tisk vilja till att verkligen utveckla kulturen, till att ge

Ursprungsfolksorganisationer från hela den andinska regionen samlades då för att gemensamt diskutera problem som beror på att ursprungsfolk marginaliseras och diskrimineras i

utmaningar som finns för demokratiarbetet framåt; vilka möjligheter medborgare har och hur organiseringen av människor i samhället är utformad. Därför bör regeringen överväga

Myndigheter bör aldrig på kartbilder eller på annat sätt presentera utpekanden, målsättningar eller liknande för specifika områden på enskilt ägd mark utan uttryckligt stöd i

För många barn är detta fenomen som vi skall undersöka något som barn inte kommer i kontakt med på vardaglig basis.. Enligt Johansson och Pramling Samuelsson (2007)

Using the 3D world positioning of the match from the image analysis and the limitation of only analysing frames when a match should be in the vicinity the false positives can be kept

Genom att skapa ökad förståelse kring idrottares upplevelser under rehabiliteringsperioden vill författaren bidra till att tränare och aktiva kan få en tydligare bild