Faculteit Ingenieurswetenschappen
Vakgroep Informatietechnologie Voorzitter: Prof. Dr. Ir. P. LAGASSE
DIGITALE GENERATIE EN VERWERKING VAN ULTRASOONSIGNALEN VOOR VROEGTIJDIGE AMBULANTE DETECTIE VAN BORSTKANKER door Frederick Bossuyt en Stijn Vancoillie
Promotor: Prof. Dr. Ir. J. VANDEWEGE Copromotor: Ir. K. Van Renterghem Begeleiders: Dr. Ir. J. Bauwelinck en Ir. E. De Backer
Scriptie ingediend tot het behalen van de academische graad van BURGERLIJK ELEKTROTECHNISCH INGENIEUR
Academiejaar 2005-2006
Voorwoord ”De enige plaats waar succes eerder komt dan werk is in het woordenboek.” V. Sassoon Toen we vorig jaar ons thesisonderwerp moesten kiezen, hebben we niet lang getwijfeld. Het onderwerp ”Hoe spoor ik vroegtijdig borstkanker op” sprak tot de verbeelding. Enerzijds het belangrijke maatschappelijk aspect, want borstkanker is een van de belangrijkste doodsoorzaken bij vrouwen. Anderzijds de enorme uitdaging om een draagbaar systeem te ontwerpen dat borstkanker kan detecteren.
Na een jaar hard werken en met veel vallen en opstaan, kunnen we met een gerust gemoed omkijken. Toch was het niet altijd even makkelijk om onderzoek te doen in een nieuw domein. Het resultaat van onze unieke samenwerking mag er gerust zijn. Het belangrijkste is natuurlijk de kennis die we hebben opgedaan tijdens dit leerrijk en uitdagend jaar. Daarom willen we van deze gelegenheid gebruik maken om een woordje van dank te richten aan allen die hiertoe hebben bijgedragen.
Eerst en vooral bedanken we Professor Lagasse en Professor Vandewege voor het ter beschikking stellen van hun infrastructuur. In het bijzonder wensen we onze promotor, Prof. Dr. Ir. J. Vandewege, te bedanken om ons de kans te geven dit onderwerp te bestuderen en uit te werken, alsook voor zijn steun en interesse gedurende het verloop van de thesis. Daarnaast willen we onze copromotor Ir. Koen Van Renterghem bedanken voor het vele geduld en de hulp bij het ontwerp van de digitale elektronica, alsook voor het lezen en verbeteren van deze tekst. Ook de begeleiders Dr. Ir. Johan Bauwelinck en Ir. Els De Backer willen we danken voor de hulp bij onze thesis en voor het lezen en verbeteren van deze tekst. Ing. Jan Gillis wensen we te bedanken voor de hulp bij het praktische werk. Zowel bij het solderen als bij het debuggen van de elektronica heeft hij ons meermaals uit de nood geholpen. Verder danken we ook alle andere personen van INTEC design, voor de hulp en de aangename momenten. Een speciaal woordje van dank willen we richten tot Philippe Poelaert. Samen met ons heeft hij het aangedurfd om deze ambitieuze thesis tot een goed einde te brengen. De lange uren die we samen in het labo hebben doorgebracht werden mede dankzij hem minder zwaar.
Ook onze collega-thesisstudenten, Tom Degryse en Pieter-Jan Busschaert, die samen met ons het hele jaar gewerkt hebben, willen we bedanken voor de vele aangename momenten in het labo. En tenslotte wensen we onze ouders en vriendin nog te bedanken voor de jarenlange steun gedurende onze studies.
Frederick Bossuyt en Stijn Vancoillie, mei 2006
Toelating tot bruikleen “De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopi¨eren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie.”
Frederick Bossuyt en Stijn Vancoillie, mei 2006
DIGITALE GENERATIE EN VERWERKING VAN ULTRASOONSIGNALEN VOOR VROEGTIJDIGE AMBULANTE DETECTIE VAN BORSTKANKER door Frederick Bossuyt en Stijn Vancoillie Scriptie ingediend tot het behalen van de academische graad van BURGERLIJK ELEKTROTECHNISCH INGENIEUR Academiejaar 2005–2006 Promotor: Prof. Dr. Ir. J. VANDEWEGE Copromotor: Ir. K. Van Renterghem Begeleiders: Dr. Ir. J. Bauwelinck en Ir. E. De Backer Faculteit Ingenieurswetenschappen Universiteit Gent Vakgroep Informatietechnologie Voorzitter: Prof. Dr. Ir. P. LAGASSE
Samenvatting Dit project kadert in een groter geheel. Het eerste deel behandelt de analoge elektronica en de codegeneratie en wordt beschreven in de thesis van Philippe Poelaert: Codering en analoge verwerking van ultrasoonsignalen voor vroegtijdige ambulante detectie van borstkanker. In deze thesis wordt de digitale elektronica en de signaalverwerking besproken. Een eerste belangrijk deel is de bespreking van het gebruik van de transducers. De eigenschappen van deze componenten worden onderzocht en er worden twee methodes voorgesteld om metingen te doen. Een tweede belangrijk deel van deze thesis bestaat uit de beschrijving van een model dat nodig is voor de signaalverwerking. In dit model wordt, met behulp van stralingstheorie, reflecties en transmissies van de signalen, uitgestuurd door de transducers, berekend. Met behulp van deze signalen wordt dan een schatting van de positie van een vreemd object gemaakt. Een derde belangrijk deel van deze thesis is de digitale elektronica. In dit deel wordt uitgelegd hoe de analoge data afkomstig van de transducers wordt omgezet in digitale data en hoe deze wordt overgebracht naar de computer voor verdere verwerking. In het vierde en laatste belangrijk deel worden de ontvangen signalen, zowel vanuit het model als vanuit de metingen, verwerkt om een positieschatting van een vreemd object te doen.
Trefwoorden borstkanker, ultrasound, pi¨ezo-elektrische transducers, stralingstheorie, MATLAB, FPGA, VHDL, correlatie, beeldvorming
Digital generation and processing of ultrasonic signals for ambulant breast cancer detection in an early stage Frederick Bossuyt and Stijn Vancoillie Supervisor(s): Prof. J. Vandewege, Ir. K. Van Renterghem, Dr. Ir. J. Bauwelinck, Ir. E. De Backer Abstract— The design of digital electronics and signal processing algorithms is presented. Together with some analog electronics and piezoelectric transducers, they form the basis of a system to detect a breast tumor in an early stage. First, a model that describes the propagation of acoustic signals in a particular tissue is presented. Second, the design of the digital electronics and the transfer of the analog data to the computer is depicted. In the last part, algorithms to detect the tumor are explained. Finally, some experimental results of the complete system are presented. Keywords— breast cancer, ultrasound, transducer, correlation, image forming
y
α
γ γ δβ γ
ψ
ϕ
x
ψ
I. I NTRODUCTION Worldwide, breast cancer is the most common form of cancer with females. By detecting the cancer in an early stage, surviving chances are strongly improving. However, up to now this requires a regular screening. Hence, the idea rose to design a wearable system, that can detect a breast tumor in an early stage using ultrasonic techniques. Different types of configurations using piezoelectric transducers were studied. These ultrasonic elements are able to transmit ultrasonic waves and are being controlled electronically using an FPGA and simple analog electronics. By gathering the reflected and transmitted signals from present objects, and averaging the different measurements, one can derive an estimation of the size and position of the strange object.
Fig. 1. Base of the model
one transducer is displayed here). In a first design one uses a half duplex system, so the transmitting and receiving channel have to be isolated. To isolate the send and the received signals, a 2:1 multiplexer is used. Fast switching from transmit mode to receive mode is needed, to capture as much reflections as possible. TX
Analoog Circuit
II. P ROPAGATION M ODEL Transducer
A MATLAB model was developed to simulate the propagation of the acoustic signals. When a transducer sends acoustic signals, this model computes the reflected and transmitted signals that are formed by a strange object somewhere between the transducers (Figure 1). The model is based on the reflection and refraction laws and on the properties of the acoustic signals in tissue, like propagationspeed, attenuation, etc. Keeping all these parameters in mind, the model calculates every signal that is received by a single transducer. III. D IGITAL E LECTRONICS The backbone of the digital system is a complex 8-layer board with e.g. an A/D-converter, an FPGA and an interface between the board and USB. All measured data is sent to the computer through the USB-interface. The most important part of this design is the FPGA. From the FPGA, every signal in the system can be controlled. With the use of analog electronics [1], the signals processed on the FPGA can be sent and received from four transducers (Figure 2, only
FPGA
MATLAB
RX
Fig. 2. Scheme of the whole system
A. Transmitter The purpose was to implement as much as possible on the FPGA. This to improve the accuracy of the measurements and to improve the ability of reproducing easily the system. The transducer specific codes are BPSK-modulated on a frequency of 2 MHz, the resonance frequency of the transducers, and then translated to Pulse Width Modulation signals. These PWMsignals are stored on the FPGA and when a measurement starts, the memory is read. The PWM-signals are sent through a low pass filter, that reconstructs the wanted analog signal. If the complete code is sent, the FPGA switches the multiplexer and the system is changed from transmit mode to receive mode. B. Receiver The analog signals coming from the transducers, are converted to digital signals, using an A/D-converter with a sampling frequency of 8 MHz. The converted signals are stored in a FIFO
structure so they can be transferred from the clock domain of the receiver, to the clock domain of the USB-interface. If all the necessary data is stored in the FIFO, the transfer to the computer starts.
800
C. MATLAB
200
400
Magnitude (mV)
An interface between MATLAB and FPGA was made to automate the measurement procedure. The functions necessary to read the data from the FPGA and to send control signals to the FPGA, were written in C code and controlled, using MEX-files. This is a build-in interface, that makes it possible to write functions in C code that can be controlled in MATLAB.
600
0
−200
−400
−600
−800
IV. S IGNAL P ROCESSING When the reflected and the transmitted signals are available, they need to be processed in order to extract the useful information. In Figure 3, a received signal is presented. The different parts of the signal are explained. With the aid of the electrical coupling, one can determine when the transmitting of the code is started. This is necessary to have an exact time reference to determine the time delays.
0
1000
2000
3000 Samples
4000
5000
6000
Fig. 4. Correlation function of a received signal with the original code
pattern, the information of the time delay (= distance to the reflector), only gives metric places with possible positions of the strange object. When one combines the different metric places, an estimation of the location of the strange object can be made (Figure 5).
Reflection due to an object
Reflection at the opposite wall
Damping oscillation from the back of the transducer Electrical coupling
Fig. 5. Calculation of metric places and position of strange object Fig. 3. Signal received from a transducer
V. C ONCLUSIONS The codes described in [1] were chosen to have a low cross correlation and a high autocorrelation. To detect the time delay between sending and receiving the acoustic signal, one calculates the correlation of the received signal and the different codes. Detection of a peak in these correlations, means that that code is received on the transducer. Every transducer has its own specific code, so by calculating the correlation functions (Figure 4), one can determine where the received signal comes from. If there is no peak in a certain correlation function, it means that the specific code is not received and that the signal of the corresponding transducer is reflected in a different way. With the aid of these correlation functions one can determine the delay of the code between sending and receiving. Because the transducers are assumed to have an omnidirectional beam
A system processing ultrasonic signals was realised for the ambulant detection of breast cancer in an early stage. It was shown that only a small number of transducers are required to do an accurate measurement. The required algorithms ans software were developed for different platforms. Experimental results were demonstrated to validate the concept. The system’s distance measurement precision was determined to be approximately 0.01 mm. It’s possible to detect an object with a cross section of 2 mm. R EFERENCES [1] Philippe Poelaert, Codering en analoge verwerking van ultrasoonsignalen voor vroegtijdige ambulante detectie van borstkanker, Afstudeerwerk, Faculteit toegepaste wetenschappen INTEC.
INHOUDSOPGAVE
v
Inhoudsopgave Tabel van afkortingen en symbolen 1 Inleiding 1.1
1.2
1
Doel van de thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.1.1
Codegeneratie in MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.1.2
FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.1.3
Analoge elektronica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.1.4
Transducers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.1.5
Signaalverwerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
Onderwerp van de thesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2 Borstkanker en ultrasound 2.1
2.2
3.2
5
Borstkanker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.1
Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.2
Bestaande methodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Ultrasound in medische beeldvorming . . . . . . . . . . . . . . . . . . . . . . . .
11
2.2.1
Geluid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.2.2
Ultrasone transducers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3 Studie van de transducer als meetinstrument 3.1
ix
24
Pi¨ezo-elektrische transducer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.2
Pi¨ezo-elektrisch effect . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.3
Elektrisch model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3.1.4
Transducer karakteristieken . . . . . . . . . . . . . . . . . . . . . . . . . .
27
Methodes om artefacten op te sporen m.b.v. transducers . . . . . . . . . . . . . .
32
INHOUDSOPGAVE
vi
3.2.1
Transducer arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.2.2
Satelliet transducers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4 Propagatiemodel in Matlab
40
4.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.2
Configuratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.3
Werkingsprincipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
4.3.1
Initialisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
4.3.2
Bepaling stralingspaden . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
4.3.3
Bepaling ontvangen signalen . . . . . . . . . . . . . . . . . . . . . . . . . .
54
5 Hardware
59
5.1
Overzicht van de belangrijkste digitale componenten . . . . . . . . . . . . . . . .
59
5.2
Analoog naar Digitaal Convertor: AD6645 . . . . . . . . . . . . . . . . . . . . . .
61
5.3
FPGA: Xilinx Virtex II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.4
Cypress FX2 en USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
5.5
Digitaal Controleerbare Versterker: AD8370 . . . . . . . . . . . . . . . . . . . . .
65
5.6
Multiplexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
6 Digitaal ontwerp 6.1
6.2
6.3
6.4
70
Digitaal ontwerp van de zender . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
6.1.1
Pulse Width Modulation . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
6.1.2
Opbouw digitale zenderblok . . . . . . . . . . . . . . . . . . . . . . . . . .
72
Digitaal ontwerp van de ontvanger . . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.2.1
Samplefrequentie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.2.2
Opbouw digitaal ontvangerblok . . . . . . . . . . . . . . . . . . . . . . . .
77
Controlegedeelte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
6.3.1
Toestandsmachine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
6.3.2
MUX 4:1 CONTROL-blok . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
6.3.3
MUX 2:1 CONTROL-blok . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
6.3.4
VGA CONTROL-blok . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
Overzicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
INHOUDSOPGAVE
vii
7 Signaalverwerking
94
7.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
7.2
Methodes uit de literatuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
7.2.1
Uitzenden en detecteren van een puls
. . . . . . . . . . . . . . . . . . . .
94
7.2.2
Uitzenden en ontvangen van een continue golf . . . . . . . . . . . . . . . .
98
7.2.3
Gecombineerde time-of-flight bepaling . . . . . . . . . . . . . . . . . . . .
98
Algoritme in Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
7.3
7.3.1
Toegepast op mathematisch model . . . . . . . . . . . . . . . . . . . . . . 100
7.3.2
Toegepast op re¨ele signalen . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.3.3
Bepaling meetkundige plaatsen reflector . . . . . . . . . . . . . . . . . . . 115
8 Meetresultaten 8.1
8.2
117
Meetopstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 8.1.1
Elektronica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8.1.2
Meetomgeving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Uitgevoerde metingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 8.2.1
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.2.2
Bepaling van de akoestische voortplantingssnelheid . . . . . . . . . . . . . 124
8.2.3
Bepaling van de meetnauwkeurigheid . . . . . . . . . . . . . . . . . . . . . 125
8.2.4
Bepaling van het stralingspatroon van de transducers . . . . . . . . . . . 126
8.3
Bepaling van de positie van een voorwerp . . . . . . . . . . . . . . . . . . . . . . 128
8.4
Verder onderzoek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
9 Besluit
135
A Voorbeeld van een .COE bestand
136
B Ontvangen en sturen van data van op de PC
137
B.1 MEX-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 B.1.1 Interface naar MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 B.1.2 Bijhouden en bewerken van data . . . . . . . . . . . . . . . . . . . . . . . 139 B.2 Transfert tussen FPGA en MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . 140 B.2.1 Input en output argumenten . . . . . . . . . . . . . . . . . . . . . . . . . 140 B.2.2 Transfereren van data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
INHOUDSOPGAVE
viii
B.2.3 Sturen van controledata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 B.2.4 Opslaan van ontvangen data . . . . . . . . . . . . . . . . . . . . . . . . . 143
TABEL VAN AFKORTINGEN EN SYMBOLEN
Tabel van afkortingen en symbolen Gebruikte afkortingen A/D
Analoog/Digitaal
ADC
Analoog Digitaal Convertor
CLB
Configurable Logic Block
DAC
Digitaal Analoog Convertor
DCM
Digital Clock Manager
DDR
Dual Data Rate
FDMA
Frequency Division Multiple Acces
FIFO
First In First Out buffer
FSM
Finite State Machine
FPGA
Field Programmable Gate Array
I/O
Input/Output
IOB
Input Output Block
LNA
Low Noise Amplifier
LSB
Least Significant Bit
LTCH
Latch
MEX
MATLAB Executable file
MISO
Master In Slave Out
MOSI
Master Out Slave In
MRI
Magnetic Resonance Imaging
MSB
Most Significant Bit
MUX
Multiplexer
NF
Noise Figure
ix
TABEL VAN AFKORTINGEN EN SYMBOLEN
P/S
Parallel-naar-Seri¨eel
PWM
Pulse Width Modulation
PZT
Lead Zirconate Titanate
RAM
Random Acces Memory
RF
Radio Frequency
ROM
Read Only Memory
S/P
Seri¨eel-naar-Parallel
SPDT
Single Pole Double Throw
SPI
Serial Peripheral Interface
USB
Universal Serial Bus
VGA
Variable Gain Amplifier
x
INLEIDING
1
Hoofdstuk 1
Inleiding 1.1
Doel van de thesis
Het uiteindelijke doel van de thesis is een meetmethode ontwikkelen om vroegtijdig tumoren in de borst vast te stellen. Deze vroegtijdige detectie kan de overlevingskansen van de pati¨ent in kwestie aanzienlijk verhogen.
Tegenwoordig worden twee methoden vaak gebruikt voor
borstkankerdetectie. De ene methode maakt gebruik van X-stralen, maar is niet geheel risicoloos voor de gezondheid. De andere methode gebruikt ultrasone golven en is meer nauwkeurig, maar is niet op grote schaal toepasbaar, omdat ze heel wat tijd vergt.
Het idee rees een kledingstuk te ontwikkelen dat in staat is om zonder tussenkomst van een arts cysten te detecteren. Gezien haar risicoloosheid en geschiktheid voor ambulante detectie, geniet de methode met ultrasone golven de voorkeur om verder op te bouwen. In de BH wordt een beperkt aantal ultrasone transducers geplaatst. Gebruik makende van een FPGA en eenvoudige analoge elektronica worden deze transducers aangestuurd met een signaal waardoor de transducers op hun beurt akoestische golven uitsturen. Door op de ontvangen akoestische reflecties en transmissies aan uitgebreide signaalverwerking te doen, kan vervolgens een beeld van het inwendige van de borst gevormd worden. Figuur 1.1 toont de verschillende systeemonderdelen. In volgende secties worden deze onderdelen kort behandeld. Een meer uitgebreide bespreking van de bouwblokken van het systeem volgt in de verschillende hoofdstukken van de verschillende scripties.
1.1 Doel van de thesis
2
TX
Analoog Circuit Transducer
FPGA
MATLAB
RX
Figuur 1.1: Volledig systeem
1.1.1
Codegeneratie in MATLAB
Eerst worden in MATLAB codes gegenereerd die toelaten vertragingstijden te meten.
De
geschiktheid van een codefamilie om vertragingstijden vast te stellen, hangt nauw samen met de correlatie-eigenschappen van de gekozen codes. In de simulatie-omgeving worden enkele veel gebruikte codefamilies vergeleken, waarna doelbewust een codeset geselecteerd wordt om via de FPGA te versturen. Onderdeel van de scriptie van Philippe Poelaert: Codering en analoge verwerking van ultrasoonsignalen voor vroegtijdige ambulante detectie van borstkanker.
1.1.2
FPGA
De geselecteerde codes worden in het geheugen van de FPGA opgeslagen. Vanuit MATLAB kan de FPGA aangestuurd worden en kan men bepalen welk ultrasoon elementje zal zenden. Verder verzorgt de FPGA de sturing van gebruikte buffers en multiplexers zodat de juiste signalen op het correcte moment uitgezonden en ontvangen worden. De ontvangen signalen zijn rechtstreeks via MATLAB toegankelijk, waardoor een snelle signaalverwerking mogelijk is. Onderdeel van de scriptie van Frederick Bossuyt en Stijn Vancoillie: Digitale generatie en verwerking van ultrasoonsignalen voor vroegtijdige ambulante detectie van borstkanker.
1.1.3
Analoge elektronica
Tussen het digitale gedeelte en de transducers bevindt zich een analoog gedeelte. Deze beperkte analoge elektronica zorgt o.a. voor filtering van de gebruikte signalen. Enkele digitale componenten worden gebruikt om te verzekeren dat de juiste signalen op het juiste moment uitgezonden en ontvangen worden. Onderdeel van de scriptie van Philippe Poelaert: Codering en analoge verwerking van ultrasoonsignalen voor vroegtijdige ambulante detectie van borstkanker.
1.2 Onderwerp van de thesis
1.1.4
3
Transducers
Om de ultrasone golven te verzenden en ontvangen, worden transducers gebruikt. Deze elementjes zijn in staat elektrische signalen om te zetten in trillingen en vice versa.
1.1.5
Signaalverwerking
Zoals reeds aangegeven worden de ontvangen signalen meteen naar de computer doorgestuurd. In MATLAB worden de verschillende reflecties en transmissies vervolgens volgens een bepaald algoritme verwerkt, zodat aan beeldvorming kan worden gedaan. Meerdere algoritmes worden onder de loep genomen. Onderdeel van de scriptie van Frederick Bossuyt en Stijn Vancoillie: Digitale generatie en verwerking van ultrasoonsignalen voor vroegtijdige ambulante detectie van borstkanker.
1.2
Onderwerp van de thesis
Hoofdstuk 2 is het resultaat van een literatuurstudie omtrent borstkanker en ultrasone medische beeldvorming. In het eerste deel wordt kort het maatschappelijk probleem borstkanker geschetst. In het tweede deel wordt er dieper ingegaan op de theorie van ultrasound. In Hoofdstuk 3 worden de eigenschappen van de pi¨ezo-elektrische transducers bestudeerd. Na deze studie worden twee verschillende methodes beschreven om metingen met transducers uit te voeren. Een eerste methode maakt gebruik van transducerarrays. In een tweede methode gebruikt men geen arrays, maar afzonderlijk opgestelde transducers. In Hoofdstuk 4 vindt men de beschrijving van een wiskundig propagatiemodel. Dit model beschrijft de signaaloverdracht tussen de verschillende transducers. Met behulp van de transmissie en de reflecties van de ultrasone golven op een vreemd object wordt dan een schatting gemaakt van de ontvangen signalen per transducer. In Hoofdstuk 5 worden de digitale hardwarecomponenten besproken. Van de verschillende componenten worden de werking en de functionaliteit in dit ontwerp kort besproken. Hoofdstuk 6 behandelt de functionaliteit van de FPGA. De verschillende blokken die ge¨ımplementeerd zijn in de FPGA worden grondig geanalyseerd en besproken. In Hoofdstuk 7 wordt aan de hand van de signalen gemodelleerd in Hoofdstuk 3 een beeld gevormd van het vreemd object. Met behulp van dit theoretisch model wordt een algoritme geschreven om beelden te vormen. Dit algoritme wordt dan in het tweede deel van dit hoofdstuk
1.2 Onderwerp van de thesis
4
toegepast op de opgemeten signalen. In Hoofdstuk 8 worden ultrasone metingen toegelicht. Eerst worden de verschillende delen van de meetopstelling besproken. Daarna worden aan de hand van metingen een aantal systeemparameters bepaald die belangrijk zijn voor de signaalverwerking. Hoofdstuk 9 besluit de scriptie.
BORSTKANKER EN ULTRASOUND
5
Hoofdstuk 2
Borstkanker en ultrasound 2.1
Borstkanker
Borstkanker is de meest frequent voorkomende kanker bij vrouwen in de wereld. Naar schatting 4,4 miljoen vrouwen hebben in de laatste 5 jaar de diagnose borstkanker gekregen. Per jaar krijgen meer dan 1,1 miljoen vrouwen te horen dat ze borstkanker hebben. Dit is 10% van alle nieuwe kankerdiagnoses en 23% van alle vrouwelijke kankers. Met meer dan 410000 sterfgevallen per jaar, is borstkanker verantwoordelijk voor 14% van alle vrouwelijke kankerdoden en voor 1,6% voor alle vrouwelijke doden wereldwijd ([1] en [2]). Borstkanker is tevens de belangrijkste doodsoorzaak voor vrouwen tussen 45 en 64 jaar (meer dan 12%) [3]. Door een vroege opsporing stijgen de overlevingskansen en is de behandeling ook minder ingrijpend.
2.1.1
Algemeen
Zoals alle andere lichaamscellen groeien, delen en sterven de weefselcellen van de borst op een goed georganiseerde manier. Dit alles wordt geregeld en gecontroleerd door de nucleus van de cel. Door ouderdomsverschijnselen of door genetische veranderingen kan deze werking van de celkern verstoord worden. Hierdoor ontstaan kankercellen. Kankercellen trekken zich niets aan van de regulerende rol van de nucleus: ze blijven zich delen, waardoor er al snel veel meer cellen ontstaan dan er verdwijnen. Er ontstaat een kankergezwel of tumor. De kankercellen hebben bovendien het vermogen om binnen te dringen in gezond weefsel en kunnen zo het gezonde weefsel vernietigen (Figuur 2.1) [4]. Deze cellen noemt men kwaadaardig”. Niet alle gezwellen ” zijn kwaadaardig (m.a.w. kankergezwellen), goedaardige tumoren verspreiden zich niet in het lichaam en vormen geen bedreiging voor het leven van de pati¨ent.
2.1 Borstkanker
6
Figuur 2.1: Verschil tussen goedaardig gezwel en kwaadaardige tumor
Kankercellen kunnen ook losgeraken van de tumor waarin ze ontstaan zijn. Deze komen dan in de bloedsomloop of in de lymfevaten terecht en kunnen zo in het lichaam verspreid worden. De kankercellen kunnen zich dan op een andere plaats in het lichaam vastzetten en daar een nieuwe tumor vormen. Dit noemt men uitzaaiingen of metastasen. Kanker die zich heeft uitgezaaid, blijft echter een kanker van de plaats waar de ziekte oorspronkelijk ontstond. Bijvoorbeeld borstkanker die zich heeft uitgezaaid naar de longen, wordt geen longkanker, maar blijft borstkanker. Immers, de cellen blijven nog steeds de meeste kenmerken van borstcellen bewaren. De oorzaken van borstkanker zijn nog niet goed gekend, maar zeker is dat borstkanker veel frequenter voorkomt bij vrouwen dan bij mannen. Vooral vrouwen boven 50 jaar vormen een risicogroep. Borstkanker is een van de belangrijkste doodsoorzaken bij vrouwen in de Westerse wereld. In Vlaanderen is het tevens de belangrijkste vorm van kanker bij vrouwen (zie Figuur 2.2) [5].
Figuur 2.2: Meest voorkomende kankers in Vlaanderen
Wanneer men kijkt naar de cijfers van het aantal gevallen van borstkanker en naar de cijfers
2.1 Borstkanker
7
van het aantal sterfgevallen door borstkanker (Figuur 2.3 en Figuur 2.4) [6], dan ziet men in beide grafieken een trend. Bij de incidentie ziet men een duidelijke stijging van het aantal borstkankers. De reden hiervoor is dat men in de jaren ’90 gestart is met het systematisch screenen van vrouwen boven 50 jaar. Hierdoor werden veel meer borstkankers ontdekt dan voorheen. De reden waardoor de grafiek opnieuw stagneert is tweeledig. Enerzijds heeft men begin jaren ’90 een groot aantal traag groeiende tumoren ontdekt waardoor het cijfer daalt. Anderzijds heeft men vanaf eind jaren ’90 de cijfers uitgebreid met vrouwen tot 75 jaar zodat de incidentie opnieuw stijgt.
Figuur 2.3: Incidentie van borstkanker bij vrouwen in de periode 1989-2003; gestandaardiseerd naar de Europese standaardbevolking en ge¨ındexeerd
Figuur 2.4: Sterfte aan borstkanker bij vrouwen in de periode 1980-2004; gestandaardiseerd naar de bevolking van Nederland in 1990 en ge¨ındexeerd
Bij het aantal sterfgevallen ziet men een duidelijke dalende trend vanaf eind jaren ’90. De afname in sterfte is vooral te wijten aan het grootschalig bevolkingsonderzoek op borstkanker. Hierdoor wordt borstkanker in een vroeg stadium ontdekt en is de kans op genezing veel groter (zie verder).
Om te bepalen welke therapie het meest aangewezen is bij een bepaald geval van borstkanker, vertrouwen oncologen op een internationaal gestandaardiseerd systeem dat kankers indeelt in
2.1 Borstkanker
8
bepaalde stadia. Het indeelsysteem wordt het TNM”-systeem genoemd ([7]): ” • De grootte van de tumor en de verspreiding naar de huid of de borstwand onder de borst, aangeduid door de letter T (met een waarde tussen 0 en 4) • De verspreiding van de kankercellen naar de lymfeknopen en - indien er aantasting is - de vaststelling of de aangetaste lymfeknopen vastzitten aan elkaar of aan andere structuren onder de arm, aangeduid door de letter N (met een waarde tussen 0 en 3) • De verspreiding van de kankercellen naar andere delen van het lichaam, aangeduid met de letter M (met een waarde 0 of 1) Als de TNM-waarde van een pati¨ent is vastgesteld dan wordt deze informatie samengebundeld om het stadium van de kanker te bepalen. Het stadium wordt aangeduid met een Romeins cijfer gaande van Stadium 0 (het minst ernstige of vroegste stadium) tot Stadium IV (het meest ernstige of meest gevorderde stadium). Hieronder worden de verschillende stadia besproken: Stadium 0 In dit stadium bevinden er zich enkel kankercellen in de melkgang. Stadium I De diameter van de tumor is kleiner dan 2 cm en de kanker heeft zich niet verspreid buiten de borst. Stadium II De diameter van de tumor is groter dan 2 cm en/of de kanker heeft zich verspreid naar de lymfeknopen in de oksel. Bij borstkanker in Stadium II zitten de aangetaste lymfeknopen niet aan elkaar vast, noch aan de omliggende structuren. Stadium III De diameter van de tumor is groter dan 5 cm en/of heeft zich verspreid naar lymfeknopen die aan elkaar of aan omliggende structuren vastzitten. In geval van Stadium III heeft de kanker zich nog niet verspreid naar andere organen, botten of lymfeknopen die niet in de omgeving van de borst liggen. Stadium IV De kanker - van gelijk welke omvang - heeft zich uitgezaaid naar andere organen zoals de botten, longen of de lymfeknopen die niet in de omgeving van de borst liggen (b.v. boven het sleutelbeen).
2.1 Borstkanker
9
Tabel 2.1 geeft de procentuele overlevingskansen van de vrouw indien bij haar borstkanker in een bepaald stadium wordt vastgesteld. Dit percentage geeft aan hoeveel pati¨enten nog in leven zijn vijf jaar na het stellen van de diagnose. Men kan uit de tabel afleiden dat wanneer borstkanker in een vroegtijdig stadium wordt ontdekt, de kans op genezing groot is. Hoe later de kanker wordt ontdekt, hoe kleiner de kans op genezing.
Stadium
Overlevingskansen
0
95%
I
88%
II
66%
III
36%
IV
7%
Tabel 2.1: De verschillende stadia met hun overlevingskansen. ([7])
Uit de getallen uit Tabel 2.1 blijkt dat het zeer belangrijk is om borstkanker vroegtijdig op te sporen. Hierdoor stijgen de kansen om de ziekte te overwinnen spectaculair.
2.1.2
Bestaande methodes
Zelfonderzoek, klinisch onderzoek en mammografie zijn de meest gebruikte technieken bij borstonderzoek. Bij zelfonderzoek moet de vrouw zelf haar borsten bekijken en betasten om na te gaan of er geen onregelmatigheden te zien zijn, of om na te kijken of ze geen knobbeltjes voelt. Bij een klinisch onderzoek gebeurt net hetzelfde, maar dan door een ervaren arts. Mammografie is een specifiek type van beeldvorming waarbij men X-stralen gebruikt met een lage energie, om de menselijke borst te onderzoeken. Zoals bij alle X-stralen wordt bij een mammogram een dosis ioniserende straling gebruikt om een beeld te vormen. Maar de uitrusting bij mammografie is zeer verschillend van deze gebruikt om een beeld te maken van het skelet. De borst bestaat immers uit weefsels die allemaal een gelijkaardige dichtheid hebben. Veranderingen en abnormaliteiten zijn dikwijls zeer subtiel. Daarom zijn de mammografie toestellen, de film en het ontwikkelingsproces speciaal ontworpen om foto’s te maken van deze subtiele verschillen. Om een goed beeld te kunnen vormen, wordt de borst platgedrukt tussen twee platen (zie Figuur 2.5). Deze compressie is niet alleen nodig om een goed beeld te vormen, ze zorgt er ook voor dat er een minder grote dosis straling nodig is. Het nadeel van dit samendrukken van de borst, is dat dit niet zo
2.1 Borstkanker
10
comfortabel is voor de vrouw.
Figuur 2.5: Mammografie.
In een standaardonderzoek worden twee beelden van iedere borst genomen: ´e´en van de bovenkant en ´e´en van de zijkant. Dit zorgt ervoor dat er zoveel mogelijk borstweefsel wordt afgebeeld. Wanneer er iets abnormaals ontdekt wordt door de arts, worden er nog meer beelden genomen. Zelfs als er niets abnormaals ontdekt wordt, kan ook, op basis van het klinisch onderzoek, verder onderzoek aangeraden worden. Dit verder onderzoek kan bv. bestaan uit MRI.
2.2 Ultrasound in medische beeldvorming
2.2
11
Ultrasound in medische beeldvorming
Het is belangrijk om inzicht te krijgen in hoe ultrasoon geluid met materie interageert om opgemeten ultrasone informatie te kunnen interpreteren en artefacten te kunnen opsporen. De bedoeling van dit hoofdstuk is de lezer inzicht verschaffen in ultrasone medische beeldvorming [8].
2.2.1
Geluid
Geluid is mechanische energie die zich in een medium door middel van drukgolven voortplant. Deze definitie omvat zowel hoorbaar geluid, laagfrequente seismische golven en hoogfrequent ultrasoon geluid. Men spreekt van infrasoon geluid indien de frequentie van de drukgolven kleiner is dan 20 Hz. Tussen de 20 Hz en 20 kHz bevindt zich het hoorbare gebied. Boven deze grens spreekt men over ultrasoon geluid. In medische beeldvorming gebruikt men frequenties tussen 1 Mhz en 20 Mhz.
Wanneer geluid door materie propageert, transporteert het energie van de ene plaats naar de andere. Geluid veroorzaakt op het afgelegde pad fysische verplaatsingen van moleculen rond hun evenwichtstoestand. Geluidsenergie is dus mechanische energie en heeft nood aan een middenstof om zich te kunnen voortplanten. Dit in tegenstelling tot elektromagnetische energie waarbij geen materie hoeft aanwezig te zijn. Geluid kan dus enkel ontstaan in media die moleculen of deeltjes bevatten. Het kan zich niet voortplanten doorheen een vacu¨ um, zoals in de ruimte.
Een trillend voorwerp dat zich in een medium bevindt, zal de omringende deeltjes aan het trillen brengen. Er zal een storing ontstaan die zich in de vorm van een geluidsgolf doorheen de materie voortplant. Bij medische beeldvorming is het de pi¨ezo-elektrische transducer die geluidsgolven genereert. Door het aanleggen van een elektrische impuls zal de transducer aan het trillen gaan en zo een geluidsgolf in het omringende medium induceren. Deze zal zich aan een constante snelheid doorheen het medium voortplanten. De snelheid van het geluid in lucht bedraagt ongeveer 330 m/s. Nadat de drukgolf gepasseerd is en de lokale trilling is uitgestorven, keren de deeltjes terug naar hun oorspronkelijk evenwichtspunt.
De voortplanting van het geluid doorheen het menselijke weefsel gebeurt onder de vorm van longitudinale golven. De golven propageren parallel met de richting van de trilling van de bron. Dit
2.2 Ultrasound in medische beeldvorming
12
in tegenstelling tot transversale golven, waarbij de propagatierichting loodrecht op de richting van de trilling staat. Transversale golven propageren door vaste materialen zoals bvb. menselijk bot, maar propageren niet of nauwelijks door het menselijke weefsel. M.a.w. enkel longitudinale golven spelen een rol bij ultrasone medische beeldvorming. De longitudinale golven zorgen voor een patroon van opeenvolgende plaatsen waar moleculen samengedrukt worden en uit elkaar worden getrokken. De lokale temporele densiteit van het medium zal hoger of lager zijn naargelang er compressie of decompressie plaatsvindt. Een maat voor het defini¨eren van de sterkte van de geluidsgolf is de akoestische druk. Bij een geluidsgolf zullen de plaatsen waar de moleculen worden samengedrukt gekenmerkt worden door een verhoging van de druk. De plaatsen waar de moleculen uit elkaar worden getrokken zullen gekenmerkt worden door een verlaging van de druk. Een schematische voorstelling wordt getoond in Figuur 2.6. Hier wordt de druk i.f.v. de plaats weergegeven waarbij de druk rond een evenwichtsdruk (wanneer er geen geluidsgolf aanwezig is) sinuso¨ıdaal vari¨eert. De maximale drukverhoging is de amplitude van de druk. De sterkte van de geluidsgolf wordt uitgedrukt in Pa.
Figuur 2.6: a) Evenwichtstoestand van het medium. b) Toestand van het medium wanneer een ultrasone golf voorbijkomt en de deeltjes uit hun evenwichtspositie brengt. c) Amplitude van de verplaatsing t.o.v. de evenwichtstoestand. d) Amplitude van de afwijking met de evenwichtsdruk.
2.2 Ultrasound in medische beeldvorming
13
Wanneer men de biologische effecten van ultrasoon geluid in medische beeldvorming nagaat, gebruikt men de akoestische intensiteit I. Deze wordt gegeven door uitdrukking 2.1 waarbij P de amplitude van de druk voorstelt, ρ de massadichtheid van het medium en c de snelheid van het geluid in dat medium.
I=
P2 2ρc
(2.1)
De frequentie van de geluidsgolf wordt bepaald door het aantal oscillaties per seconde van de geluidsbron. Ze is ook het aantal keren per seconde dat een storing wordt herhaald op een bepaalde plaats. De tijd die de storing nodig heeft om zichzelf te herhalen wordt de periode T genoemd.
T =
1 f
(2.2)
Wanneer men spreekt over frequentie heeft men een criterium voor het klasseren van verschillende soorten geluid. Hoorbaar geluid strekt zich uit van 20 Hz tot 20 kHz. Geluid met een frequentie groter dan 20 kHz wordt ultrasoon geluid genoemd. Geluidsgolven met een frequentie beneden de 20 Hz worden infrasoon genoemd. Voor diagnostische medische beeldvorming gebruikt men frequenties tussen de 1 MHz en 20 MHz. De snelheid van het geluid in een medium wordt voornamelijk bepaald door de eigenschappen van het medium. Ze is ook nog afhankelijk van andere factoren zoals de frequentie van het geluid, maar deze factoren mogen in het algemeen verwaarloosd worden. Een uitdrukking voor de geluidssnelheid in vloeistoffen en menselijk weefsel wordt gegeven door: s
c=
B ρ
(2.3)
B is de bulk modulus en wordt bepaald door de stijfheid van het materiaal. ρ is de massadichtheid van het materiaal waarin de geluidsgolf zich voortplant. De geluidssnelheid wordt dus bepaald door de stijfheid van het materiaal en de massadichtheid van het materiaal. Bij medische beeldvorming gebruikt men als geluidssnelheid in menselijk weefsel 1540 m/s, wat een gemiddelde is voor verschillende soorten menselijk weefsel. Deze waarde is geen verrassing als men weet dat de geluidssnelheid in water 1480 m/s is en het menselijke weefsel voor 90 % uit
2.2 Ultrasound in medische beeldvorming
14
Medium
Geluidssnelheid
Lucht
330 m/s
Water (20
o
C)
1480 m/s
Vetweefsel
1450 m/s
Bloed
1570 m/s
Spierweefsel
1580 m/s
Menselijk bot
3500 m/s
Menselijk weefsel (uitgemiddeld)
1540 m/s
Tabel 2.2: Geluidssnelheden voor verschillende media
water bestaat. In Tabel 2.2 worden de verschillende geluidssnelheden voor verschillende soorten media weergegeven.
De afstand die een geluidsgolf aflegt in een tijd gelijk aan de trillingsperiode wordt de golflengte λ genoemd. De golflengte is afhankelijk van de geluidssnelheid c in het medium en de frequentie f van de geluidsgolf.
λ=
c f
(2.4)
Hoe hoger de frequentie, hoe kleiner de golflengte en hoe groter de spatiale resolutie. De fysische grootte van een object wordt altijd uitgedrukt relatief t.o.v. de golflengte. Objecten zijn bijvoorbeeld groot of klein t.o.v. de golflengte.
Wanneer een geluidsgolf invalt op een object dat groot is t.o.v. de golflengte zal er reflectie en transmissie plaatsvinden. De mate waarin dit gebeurt, is afhankelijk van de akoestische impedantie van beide aan elkaar grenzende media. De akoestische impedantie Z van een medium wordt gedefini¨eerd als het product van de massadichtheid ρ van het medium en de geluidssnelheid c in dat medium.
Z = ρc
(2.5)
2.2 Ultrasound in medische beeldvorming
15
In Tabel 2.3 worden de akoestische impedanties voor verschillende weefsels weergegeven.
Type weefsel
Akoestische impedantie (in Rayls)
Lucht
0,0004 x 106
Longweefsel
0,18 x 106
Vetweefsel
1,34 x 106
Water
1,48 x 106
Spierweefsel
1,71 x 106
Leverweefsel
1,65 x 106
Menselijk bot
7,8 x 106
Tabel 2.3: Akoestische Impedantie
Een geluidsgolf die loodrecht invalt op de scheiding van 2 media die verschillen in akoestische impedantie zal voor een deel gereflecteerd worden en voor een deel verder propageren in het aangrenzende medium. De amplitudes van de gereflecteerde en verder propagerende golven zijn afhankelijk van het verschil in akoestische impedantie van beide media. Bij loodrechte inval op het glad scheidingsoppervlak tussen 2 media wordt de amplitude van de reflectieco¨efficient R gegeven door de verhouding van de amplitude van de druk Pr van de gereflecteerde golf tot de amplitude van de druk Pi van de invallende golf. Met glad scheidingsoppervlak wordt bedoeld dat de oneffenheden klein zijn t.o.v de golflengte.
R=
Pr Z2 − Z1 = Pi Z2 + Z1
(2.6)
Z1 en Z2 zijn de akoestische impedanties van beide media. De groottes van de golven worden dus bepaald door het impedantieverschil. Wanneer men werkt met intensiteiten bekomt men volgende eenvoudig af te leiden formule: Ir = Ii
Z2 − Z1 Z2 + Z1
2
(2.7)
Uit Tabel 2.3 en uitdrukkingen 2.6 en 2.7 kan men 3 belangrijke besluiten halen. • Wanneer de 2 aangrenzende media bestaan uit vet en weefsel van de lever zal door het
2.2 Ultrasound in medische beeldvorming
16
geringe impedantieverschil slechts een klein deel van de geluidsgolf gereflecteerd worden. Het grootste deel van de geluidsgolf zal verder propageren, zodat men nog een beeld kan vormen van verder gelegen structuren. Indien men te maken zou hebben met te grote impedantieverschillen zou ultrasone medische beeldvorming onmogelijk geweest zijn. • Het impedantieverschil tussen lucht en andere weefsels is groot zodat men gebruik zal moeten maken van een overgangsmedium wanneer men met een transducer die op de huid wordt bevestigd, een beeld van het inwendige van de pati¨ent wil maken. Een laag lucht tussen transducer en huid zal grote reflecties veroorzaken. Daarom wordt bij een echografie een gel aangebracht op de buik van de zwangere vrouw. • Een laatste bemerking is dat het impedantieverschil tussen menselijk weefsel en menselijk bot aanzienlijk is, zodat men bij ultrasone medische beeldvorming elke vorm van transmissie door bot dient te vermijden.
Media
Verhouding van gereflecteerde en invallende golf
Spierweefsel/Bloed
0,03
Weefsel (gemiddeld)/Water
0,05
Vet/Spierweefsel
0,10
Menselijk bot/Spierweefsel
0,64
Weefsel (gemiddeld)/Lucht
0,95
Tabel 2.4: Verhouding van amplitudes van gereflecteerde en invallende golf bij loodrechte inval
In Tabel 2.4 worden voor verschillende combinaties van media de verhouding van de amplitudes van gereflecteerde en invallende golf weergegeven bij loodrechte inval.
Bij schuine inval van de geluidsgolf op het scheidingsoppervlak tussen 2 media die verschillen in akoestische impedantie zullen de richting van reflectie en propagatie afhankelijk zijn van de invalshoek. De invallende geluidsgolf zal dus niet meer weerkaatst worden in de richting van de bron. Dit fenomeen wordt het best voorgesteld aan de hand van Figuur 2.7.
Zoals men uit de figuur kan afleiden, zal de hoek tussen de normaal op het oppervlak bij het punt van inval en de teruggekaatste golf gelijk zijn aan de hoek tussen de normaal op het oppervlak
2.2 Ultrasound in medische beeldvorming
17
Figuur 2.7: Reflectie en transmissie aan scheidingsoppervlak van 2 media.
bij het punt van inval en de invallende golf. M.a.w. θr = θi . Het verband tussen de hoek van inval en de hoek waarbij de verder propagerende golf gebroken wordt, wordt gegeven door de wet van Snellius: sin(θt ) c2 = sin(θi ) c1
(2.8)
Men merkt nog op dat de invallende golf, de gereflecteerde golf en de verder propagerende golf in hetzelfde vlak gelegen zijn. Er treedt enkel breking van de verder propagerende golf op indien de invallende hoek niet loodrecht op het scheidingsoppervlak invalt en de 2 media gekenmerkt worden door een verschillende akoestische impedantie. Het breken van de golf zorgt meestal voor problemen bij medische beeldvorming.
Wanneer een geluidsgolf invalt op een scheidingsoppervlak tussen 2 media dat eerder ruw is, zal er diffuse reflectie ontstaan. Met ruw wordt bedoeld dat er oneffenheden aanwezig zijn die qua grootte niet meer verwaarloosbaar zijn t.o.v. de golflengte. De invallende geluidsgolf zal dan in alle richtingen gereflecteerd worden. Een echo afkomstig van een ruwe reflector zal zwakker zijn, maar is minder onderheving aan de ori¨entatie van deze reflector dan bij een gladde reflector.
Diffuse reflectie bij ruwe oppervlakken en niet-diffuse reflectie bij gladde oppervlakken treden op aan de rand van een object, bvb. de rand van een cyste. De sterkte van de ontvangen echo bij
2.2 Ultrasound in medische beeldvorming
18
Figuur 2.8: Verstrooiing
een meting met een transducer zal sterk afhankelijk zijn van de ori¨entatie van het object. Als de invallende golf loodrecht invalt op de wand van een object zal de echo het grootst zijn omdat de teruggekaatste golf hetzelfde pad volgt als de invallende golf. De echo zal afnemen naarmate de invallende golf schuiner invalt op het object. Dit kan tot misleidende resultaten leiden in een echografie.
De belangrijkste echosignalen in het menselijke lichaam zijn deze die veroorzaakt worden bij het invallen van een golf op een object dat kleiner is dan de gebruikte golflengte. Men noemt dit akoestische verstrooiing. Dit verschijnsel treedt vooral op in het inwendige van een object, bvb. het inwendige van een cyste. Er treden dan tal van echo’s op afkomstig uit het inwendige van het object. Golven die invallen op een object kleiner of gelijk aan de golflengte hebben de eigenschap dat ze in alle richtingen weerkaatst worden. Dit heeft zijn voor- en nadelen. Een nadeel is dat de echo meestal veel zwakker zal zijn dan de echo afkomstig van de rand van een object. Maar de hedendaagse apparatuur is in staat om ook deze heel zwakke signalen op te pikken zodat dit niet langer een probleem vormt. Het grote voordeel bij deze verstrooiing is dat de sterkte van de echo nauwelijks afhankelijk is van de ori¨entatie. Dus als een golf uit welke richting dan ook, invalt op een object dat kleiner of gelijk is aan de golflengte, zullen de echo’s in elke richting ongeveer dezelfde sterkte hebben. Men zal op deze manier bij een echografie gebieden krijgen die ongeveer gelijk zijn qua verstrooiingssterkte. De termen hyper-echo¨ısch en hypo-echo¨ısch worden gebruikt bij een B-scan (zie Figuur 2.9) om gebieden aan te duiden met respectievelijk een verhoogd en verlaagd verstrooiingsniveau ten opzichte van de omringende gebieden. Zo zal bv. een tumor in het borstweefsel een groter verstrooiingsniveau hebben dan het om-
2.2 Ultrasound in medische beeldvorming
(a) B-scan van niersteen (hyper-echo¨ısch)
19
(b) B-scan van cyste (hypo-echo¨ısch)
Figuur 2.9: Voorbeelden van hyper-echo¨ısche en hypo-echo¨ısche gebieden in B-scan. ringende weefsel. Voor zeer kleine deeltjes (kleiner dan de golflengte), is de sterkte van het echo-signaal afhankelijk van het aantal verstrooiers per volume eenheid, het verschil in akoestische impedantie tussen de verstrooier en het omringende weefsel, de grootte van de verstrooier (hoe groter de kleine verstrooier, hoe sterker de echo) en de werkfrequentie (het verstrooien neemt toe bij stijgende frequentie). Deze laatste eigenschap zorgt ervoor dat men de sterkte van de echo’s afkomstig van de verstrooiers kan laten toenemen, zonder de sterkte van de niet-diffuse echo’s te wijzigen. Niet-diffuse reflectie aan een glad oppervlak is namelijk onafhankelijk van de frequentie. Objecten die veel kleiner zijn dan de golflengte noemt men Rayleigh-verstrooiers. De intensiteit van hun echo’s neemt toe met de frequentie.
Een golf gegenereerd aan het oppervlak van de transducer zal naarmate hij verder in het weefsel propageert afnemen qua intensiteit. Er zijn 2 oorzaken voor deze attenuatie: • De golf zal op bepaalde plaatsen gereflecteerd of verstrooid worden. • Een deel van de golf wordt door het weefsel geabsorbeerd. Bij absorptie wordt een deel van de akoestische energie omgezet in warmte. Meestal zal de warmteproductie gering zijn, zodat er nauwelijks een temperatuurswijziging zal optreden. Men drukt de afname in intensiteit meestal uit in dB MHz−1 cm−1 . De attenuatie is sterk frequentieafhankelijk. Hoe hoger de frequentie, hoe groter de absorptie zal zijn en hoe minder diep de akoestische golf in het weefsel binnendringt. Een grote resolutie op grote diepte zal dus moeilijk realiseerbaar zijn omdat de attenuatie bij hoge frequenties aanzienlijk is. Bij het kiezen
2.2 Ultrasound in medische beeldvorming
20
van een werkfrequentie zal men dus een compromis moeten sluiten tussen attenuatie en resolutie. In Tabel 2.5 zijn voor verschillende media de attenuatieco¨efficienten weergegeven.
Medium
Attenuatieco¨efficient bij 1 MHz (dB cm−1 )
Water (20o C)
0,0002
Bloed
0,18
Lever
0,5
Spierweefsel
1,2
Menselijk weefsel (gemiddeld)
0,5 - 1
Tabel 2.5: Attenuatieco¨efficienten voor verschillende media
2.2.2
Ultrasone transducers
Een transducer zet energie om van de ene vorm naar de andere. Bij ultrasone transducers gaat het om de omzetting van elektrische energie naar akoestische energie en omgekeerd. Een ultrasone transducer kan dus zowel gebruikt worden voor het uitsturen van een geluidsgolf als het ontvangen van een geluidsgolf. De ontvangen geluidsgolf wordt door de transducer omgezet in een elektrisch signaal dat door de elektronica verder verwerkt kan worden.
Ultrasone transducers maken gebruik van het pi¨ezo-elektrische effect ontdekt in 1880 door Pierre en Jacques Curie. Ze ontdekten dat wanneer een kracht wordt uitgeoefend op de evenwijdige zijden van een kwartskristal, er een interne ladingsverschuiving ontstaat. Deze ladingsverschuiving kan gedetecteerd worden en verder verwerkt worden, zodat men een nuttig elektrisch signaal bekomt. Dit effect werkt in 2 richtingen zodat bij het aanleggen van een elektrische spanning over het kristal, het kristal zal trillen en een geluidsgolf zal uitzenden. Dit verklaart de werking van een ultrasone transducer zowel als zender als ontvanger.
In de ultrasone medische beeldvorming maakt men meestal gebruik van pi¨ezokeramische transducer elementen. Een voorbeeld hiervan is lood zirkonaat titanaat (PZT) dat bestaat uit microscopische kristallen die inwendig random geori¨enteerd zijn. Ze zijn beschikbaar in de vorm van
2.2 Ultrasound in medische beeldvorming
21
schijfjes, plaatjes, ringen,... De vorm en grootte hebben natuurlijk hun invloed op de werkingsfrequentie. Om deze keramische elementen te kunnen gebruiken voor het zenden en ontvangen van ultrasone golven moet men ze eerst polarizeren. Men doet dit door het materiaal op te warmen tot boven de Curie temperatuur. Bij PZT is dat 365 o C. De microscopische kristallen komen los en door het aanleggen van een elektrisch veld zullen ze zich ori¨enteren volgens de richting van het elektrische veld. Wanneer men nu de temperatuur laat afnemen terwijl men het elektrische veld aanhoudt, zal het keramisch element blijvend gepolariseerd zijn volgens de richting van het aangelegde veld. De polarisatie van het element kan ongedaan gemaakt worden door het op te warmen boven zijn Curie temperatuur.
Pi¨ezo-elektrische elementen zullen vibreren wanneer aan hun contactoppervlak een variable spanning wordt aangelegd. De frequentie van het aangelegde signaal zal de frequentie bepalen waarbij het pi¨ezo-elektrisch element vibreert. De fysische afmetingen van het element bepalen de frequenties waarbij het materiaal het meest effici¨ent vibreert. Deze frequenties worden resonantiefrequenties genoemd. Een pi¨ezo-elektrisch schijfje met een bepaalde dikte en diameter heeft verschillende resonantiefrequenties. Een bepaalde frequentie is resonant wanneer de halve golflengte van de mechanische trilling, berekend met de geluidssnelheid van het materiaal waarin het pi¨ezo-elektrisch element vervaardigd is, gelijk is aan een fysische afmeting van het element (bvb. de dikte of de diameter). Er bestaan smalbandige en breedbandige transducers, afhankelijk van de bandbreedte rond hun resonantiefrequentie. Een breedbandtransducer is bijgevolg effici¨enter over een groter frequentiegebied dan een smalbandtransducer.
De wijze waarop men ultrasone transducers gebruikt is meestal d.m.v. gepulste excitaties. Men zal aan de transducer op een zeker tijdstip een elektrische puls aanleggen en vervolgens echo’s van de uitgezonden puls opmeten. Op deze manier kan men de afstand schatten tot een object dat de uitgezonden akoestische golf reflecteert. Als ∆t het tijdsverschil is tussen de ontvangen echo en de uitgezonden puls dan vindt men voor de afstand tot de reflector:
D=c
∆t 2
(2.9)
waarbij c de voorplantingssnelheid is doorheen het medium. Reflectoren die zich op verschillende dieptes bevinden kan men van elkaar onderscheiden door het
2.2 Ultrasound in medische beeldvorming
(a) Voorbeeld axiale resolutie
22
(b) Voorbeeld laterale resolutie
Figuur 2.10: Spatiale resoluties verschil in aankomsttijd van hun echo’s. De spatiale resolutie geeft aan hoe dicht 2 reflectoren bij elkaar mogen geplaatst worden om deze nog van elkaar te kunnen onderscheiden. De spatiale resolutie is sterk afhankelijk van de gebruikte frequentie. Hoe hoger de frequentie, hoe beter de spatiale resolutie. De keerzijde van de medaille is dat de attenuatie toeneemt bij toenemende frequentie, zodat men een compromis moet maken tussen resolutie (beter met hoge frequenties) en penetratiediepte (beter met lage frequenties).
De axiale resolutie heeft betrekking op de minimumafstand tussen 2 reflectoren, gemeten langs de as van de transducer, zodat deze nog van elkaar te onderscheiden zijn (zie Figuur 2.10). Deze axiale resolutie wordt bepaald door de pulsduur waarmee de transducer aangestuurd wordt. Aangezien de pulsduur omgekeerd evenredig is met de gebruikte frequentie, zal de axiale resolutie toenemen met de frequentie. Hoe korter de pulsduur, hoe groter de frequentieband die de puls inneemt. Aangezien de transducer een beperkte bandbreedte heeft, zal men de pulsduur niet oneindig kort kunnen maken.
De laterale resolutie heeft betrekking op de minimum afstand tussen 2 reflectoren die zich loodrecht op de as van de transducer bevinden. De laterale resolutie staat in direct verband met de bundelbreedte van de transducer. De vorm van de stralingsbundel is afhankelijk van de grootte van het pi¨ezo-elektrisch element(en) en de frequentie. Wanneer het element klein is t.o.v. de golflengte kan men het element beschouwen als een puntbron die een sferische golf uitzendt. Wanneer de dimensies van het element niet meer te verwaarlozen zijn t.o.v. de golflengte kan men het principe van Huygens toepassen en het oppervlak van het pi¨ezo-elektrisch element zien
2.2 Ultrasound in medische beeldvorming
23
als een verzameling puntbronnen. De uitgezonden golf is dan de superpositie van de golven uitgezonden door deze puntbronnen. Het uiteindelijke golfpatroon zal het resultaat zijn van interferentie tussen de verschillende uitgezonden golven. De variantie van de grootte en de vorm van het uitgezonden veld is het grootst in het nabije veld. In het verre veld zal de bundel uniformer, gladder en minder snel vari¨erend zijn. Het verre veld begint op een afstand van de transducer gegeven door uitdrukking 2.10, waarbij d de diameter van het pi¨ezo-elektrisch element is en λ de golflengte.
rverreveld =
d2 4λ
(2.10)
De divergentiehoek waaronder de bundel uitwaaiert is ook afhankelijk van de diameter d en de golflengte λ. Een uitdrukking voor de divergentiehoek wordt gegeven in uitdrukking 2.11. Men kan besluiten dat de divergentiehoek kleiner is bij hogere frequenties dan bij lage. Ook is de divergentie kleiner wanneer men transducers gebruikt met een grotere diameter. In Figuur 2.11 worden de aangehaalde begrippen nog eens weergegeven. Bij medische beeldvorming zal men werken bij hogere frequenties omdat de bundelbreedte beter gedefini¨eerd is dan bij lage frequenties en omdat de divergentie bij lage frequenties veel te groot is.
sin(θ) =
1.2λ d
Figuur 2.11: Stralingspatroon van een pi¨ezo-elektrisch element.
(2.11)
STUDIE VAN DE TRANSDUCER ALS MEETINSTRUMENT
24
Hoofdstuk 3
Studie van de transducer als meetinstrument 3.1 3.1.1
Pi¨ ezo-elektrische transducer Inleiding
Bij ultrasone medische beeldvorming wordt gebruik gemaakt van pi¨ezo-elektrische transducers. Door het pi¨ezo-elektrisch effect zijn deze in staat akoestische golven op te wekken en te ontvangen.
3.1.2
Pi¨ ezo-elektrisch effect
In het systeem wordt gebruik gemaakt van ronde transducers met een dikte van 1 mm en diameter van 5 mm, die vervaardigd zijn uit zacht PZT materiaal [9]. Loodzirkonaat of PZT is een keramisch materiaal. Ten gevolge van het pi¨ezo-elektrisch effect ontstaat een spanning over zijn oppervlaktes wanneer het materiaal onder een mechanische spanning wordt gebracht. Ook het reciproke geval geldt, wanneer een spanning over het materiaal aangelegd wordt, zal het materiaal een mechanische vervorming ondergaan. Voor de schijfvormige transducers zijn er twee trillingsmodes die kunnen opgewekt worden wanneer het element ge¨exciteerd wordt bij een van zijn resonantiefrequenties. Door het aanleggen van een sinuso¨ıdaal signaal zal een akoestische golf in het materiaal opgewekt worden. Indien de halve golflengte van deze golf overeenkomt met een van de dimensies van het schijfje zal er een staande golf ontstaan in het pi¨ezo-elektrisch element. De transducer is in resonantie en zal akoestische golven uitzenden overeenkomend met de aangelegde frequentie. Door de transducer aan te sturen bij zijn resonantiefrequentie gaat hij
3.1 Pi¨ezo-elektrische transducer
25
trillen aan zijn mechanische eigenfrequentie waardoor men een maximale energieconversie krijgt tussen elektrische en mechanische energie. Bij de transversale trillingsmode zal de diameter van het schijfje wijzigen zodat transversale golven worden uitgezonden. In de dikte trillingsmode zal de dikte van het schijfje wijzigen, waardoor longitudinale golven ontstaan. Beide modes worden in Figuur 3.1 weergegeven en komen voor bij een verschillende resonantiefrequentie.
Figuur 3.1: Transversale- en dikte trillingsmode
Men merkt op dat transversale golven opgewekt in de transversale trillingsmode niet in menselijk weefsel of water propageren. Er moet dus op zoek gegaan worden naar de frequentie die de transducer volgens zijn dikte trillingsmode doet trillen. Aangezien de dikte 1 mm bedraagt, komt een golflengte bij resonantie in diktemode overeen met 2 mm. Indien men de geluidssnelheid in het materiaal kent, kan men de resonantiefrequentie afleiden:
f=
c λ
(3.1)
De geluidssnelheid in het materiaal bedraagt 4114 m/s zodat men voor de resonantiefrequentie 2,057 MHz krijgt.
3.1.3
Elektrisch model
Voor het pi¨ezo-elektrisch schijfje kan een elektrisch model worden opgesteld dat geldig is in de buurt van de resonantiefrequentie. Het model is niet meer geldig in de buurt van andere resonantiefrequenties en gedraagt zich daar capacitief. Het Van Dyke model bestaat uit een parallelschakeling van een RLC-tak en een capaciteit. Het wordt voorgesteld in Figuur 3.2. De RLC-tak bepaalt de serieresonantie. Bij deze resonantie daalt zijn impedantie zeer snel tot zijn minimumwaarde R, want bij deze frequentie heffen de inductantie en de capaciteit elkaar op. Bij een iets hogere frequentie zal de reactantie van de parallelschakeling 0 worden. De stroom
3.1 Pi¨ezo-elektrische transducer
26
circuleert dan rond en de impedantie van het circuit wordt oneindig groot.
R
C
L
C
Figuur 3.2: Van Dyke model
De transferfunctie die de impedantie van het model voorstelt, wordt gegeven door:
Z(s) =
1 s2 LC + sRC + 1 sC0 s2 LC + sRC + 1 + CC
(3.2)
0
De serieresonantie ωs , de parallelresonantie ωp en de kwaliteitsfactor Q worden gegeven door: r
ωs =
1 LC
s
ωp = ωs 1 +
Q = ωs
(3.3)
C C0
L 1 = R ωs RC
(3.4)
(3.5)
Indien men uitdrukking 1.2 herschrijft in functie van ωs , ωp en Q bekomt men voor de impedantie: ω 2 2 1 s + s Qs + ωs Z(s) = sC0 s2 + s ωQs + ωp2
(3.6)
De eerste term in deze uitdrukking is de impedantie van de statische capaciteit C0 . Indien C << C0 zullen de teller en de noemer van de breuk elkaar opheffen, tenzij men in de buurt is
3.1 Pi¨ezo-elektrische transducer
27
van een resonantiefrequentie. Daar krijgt men een paar complex toegevoegde nullen gevolgd door een paar complex toegevoegde polen. In het Bode diagram krijgt men dus een zeer lage impedantiepiek gevolgd door een zeer hoge impedantiepiek (zie Figuur 3.3). Doordat R een eindige waarde heeft, zullen de pieken niet 0 of oneindig groot worden. R is geralateerd aan de eindige Q factor van het pi¨ezo-elektrische element en brengt ook alle verliezen in rekening die in het element optreden. 160
Magnitude (dB) Magnitude (dB)
140 120 100 80 60 40 780
785 1.7
790 1.8
795 1.9
800 2
785 1.7
790 1.8
795 1.9
800 2
805 2.1
810 2.2
815 2.3
820 2.4
825 2.5
830 2.6
835 2.7
815 2.3
820 2.4
825 2.5
830 2.6
835 2.7
P Fase has e (degrees (dB) )
100
50
0
-50
-100 780
805 810 2.1 2.2 Fre que nc y (MHz ) Frequentie (MHz)
Figuur 3.3: Bode diagrammen van het magnitude- en faseverloop van het Van Dyke model
3.1.4
Transducer karakteristieken
Impedantieverloop Wanneer men het amplitudeverloop en faseverloop van het Van Dyke model vergelijkt met de Bode diagrammen van de gebruikte transducers (Figuur 3.4) kan men volgende eigenschappen onderscheiden. Rond 400 kHz ligt de resonantiefrequentie van de transversale trillingsmode gevolgd door zijn harmonischen. Rond 2000 kHz ligt de resonantiefrequentie van de transversale trillingsmode eveneens gevolgd door zijn harmonischen.
Via een 1-poortmeting met behulp van een network analyzer werd nagegaan of de elementen aan de verwachte karakteristiek voldeden. Er werd op zoek gegaan naar de dikte trillingsmode resonantiepiek rond 2 MHz. In eerste instantie werd deze piek niet gevonden. Door het vermoeden dat dit te wijten was aan de hoge statische capaciteit, werd geprobeerd deze te compenseren door gebruik te maken van een brugschakeling. Deze ingreep leverde echter geen verbetering
3.1 Pi¨ezo-elektrische transducer
28
Transversale trillingsmode
Dikte trillingsmode
Harmonischen transversale trillingsmode
Harmonischen dikte trillingsmode
Figuur 3.4: Impedantieverloop in functie van de frequentie van de gebruikte transducers [9]
op. Uiteindelijk werd ontdekt dat de manier waarop de signaaldraden aan de transducer gesoldeerd worden, enorm belangrijk is. Ze worden best loodrecht zeer dicht bij de zijkanten van het oppervlak gesoldeerd, beiden op dezelfde positie maar aan een andere kant. Dit levert een veel beter resultaat op overeenkomend met de verwachtingen. Het impedantieverloop, waarbij de magnitude en fase worden weergegeven, is te zien in Figuur 3.5. Elke transducer werd voorzien van een aanpassingsnetwerk zodat bij 2 MHz de impedantie 50 Ω bedraagt. Dit leidt tot een maximale vermogensoverdracht indien het aanstuurcircuit ook op 50 Ω is getermineerd.
85
80 70
80
60 50
75
40 30
70
20 10
65
0 -10
60
-20 -30
55
-40 -50
50
-60 -70
45
-80
40
-100
-90
0.2
0.4
0.6
0.8
1.0
1.2
1.4
1.6
1.8
2.0
2.2
2.4
2.6
2.8
3.0
3.2
3.4
3.6
freq, MHz
(a) Opgemeten magnitudeverloop
3.8
4.0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
1.6
1.8
2.0
2.2
2.4
2.6
2.8
3.0
3.2
3.4
3.6
3.8
4.0
freq, MHz
(b) Opgemeten faseverloop
Figuur 3.5: Verloop van magnitude en fase van de impedantie van de transducer i.f.v frequentie
3.1 Pi¨ezo-elektrische transducer
29
Bandbreedte Via een 2-poortmeting met behulp van twee transducers die zich in verschillende media bevonden, werd de bandbreedte van de transducers bepaald. Lucht als middenstof
Doordat het verschil in akoestische impedantie tussen het materiaal
van de transducers en lucht te groot is, zal er weinig akoestisch vermogen de transducer verlaten. Ook door de grote akoestische verliezen in lucht zelf is de vermogensoverdracht tussen twee transducers te verwaarlozen.
Klei als middenstof
Er werd een proefopstelling gemaakt waarbij de twee transducers recht
tegenover elkaar in klei werden gepositioneerd met een tussenafstand van 9 cm. De S(2,1) transmissiekarakteristiek wordt weergegeven in Figuur 3.6.
(a) Magnitudegedrag in klei
(b) Fasegedrag in klei
Figuur 3.6: Magnitude- en faseverloop i.f.v frequentie met klei als middenstof Aangezien akoestische signalen veel trager propageren dan elektrische signalen, verwacht men in de transmissiekarakteristiek rond 2 MHz een snelle verandering van de fase in functie van de frequentie. Er moet dus een grote groepsvertraging τg optreden.
τg =
dθ(ω) dω
(3.7)
Aan de hand van de figuren kan men besluiten dat de transmissie in klei vooral van elektrische aard is.
3.1 Pi¨ezo-elektrische transducer
Water als middenstof
30
In een nieuwe proefopstelling werden twee transducers in een bakje
met water gemonteerd. De opgemeten S(2,1) transmissiekarakteristiek wordt weergegeven in Figuur 3.7.
(a) Magnitudegedrag in water
(b) Fasegedrag in water
Figuur 3.7: Magnitude- en faseverloop i.f.v frequentie met water als middenstof Men ziet in het faseverloop dat er tussen 1,65 MHz en 2,15 MHz een opeenvolging van fasesprongen optreedt. Dit wijst op een grote groepsvertraging, wat aangeeft dat er akoestische transmissie optreedt in dit frequentiegebied. Onze transmissiemeting zal ook onderhevig zijn aan ongewenste elektrische transmissie. Om na te gaan wat de akoestische bandbreedte is, werden de elektrische transmissie componenten uit de S(2,1) karakteristiek gefilterd. Dit gebeurde via een MATLAB procedure die de S(2,1) karakteristiek via een inverse Fouriertransformatie naar het tijdsdomein converteert. Alle effecten die optreden bij het begin van dit signaal kunnen onmogelijk akoestisch zijn omdat akoestische golven zich niet zo snel kunnen voortplanten. Rekening houdend met de tussenafstand van de twee transducers werden de begin samples van het tijdsignaal op 0 gezet. Na het uitvoeren van een Fouriertransformatie op dit signaal bekomt men de transmissiekarakteristiek, weergegeven in Figuur 3.8, die ontdaan is van zijn elektrische componenten. Uit deze figuur kan men afleiden dat de bandbreedte ongeveer 400 kHz zal bedragen.
Dynamisch bereik Om het dynamisch bereik van de transducers na te gaan, werd opnieuw gebruik gemaakt van de proefopstelling met water als middenstof. Het dynamisch bereik geeft aan wat de grootste en kleinste waarde is die het systeem kan verwerken zonder dat er niet-lineaire vervorming
31
<S21 (dB)
|S21| (dB)
3.1 Pi¨ezo-elektrische transducer
Frequentie (Hz)
Frequentie (Hz)
Figuur 3.8: S(2,1) na verwijdering van snelle tijdscomponenten
optreedt en waarbij het signaal nog te onderscheiden is van ruis. In Figuur 3.9 kan men zien dat niet-lineaire vervorming optreedt voor ingangssignalen die groter zijn dan 15 dBm. Bij een ingangsvermogen kleiner dan -45 dBm treedt er een afvlakking van de karakteristiek op die te wijten is aan de ruisvloer van het meettoestel.
Dynamisch bereik 0
Uitgangsvermogen (dBm)
-80
-60
-40
-20
0
20
-20 -40 -60 -80 -100 -120 Ingangsvermogen (dBm)
Figuur 3.9: Dynamische bereik van het systeem in water
40
3.2 Methodes om artefacten op te sporen m.b.v. transducers
3.2 3.2.1
32
Methodes om artefacten op te sporen m.b.v. transducers Transducer arrays
Bij het begin van het onderzoek werden de mogelijkheden van fasegestuurde transducer arrays nagegaan. Deze bieden de mogelijkheid om een ultrasone golf te focussen en in een bepaalde richting uit te sturen zodat een gebied kan worden afgescand. Aan de hand van het simulatiepakket Field II [10] werden voor verschillende fasegestuurde transducer arrays de bundelbreedtes berekend. Principe van fasesturing Bij fasegestuurde transducer arrays worden een groot aantal pi¨ezo-elektrische elementen op een rij geplaatst waarbij elk element afzonderlijk verbonden is met een achterliggend elektronisch circuit. De elementen worden in een of meerdere rijen dicht bij elkaar geplaatst. Een typisch fasegestuurde array telt 128 elementen die door hun geringe afmetingen verondersteld worden elk afzonderlijk omnidirectioneel uit te zenden. Doordat elk element afzonderlijk kan aangestuurd worden, kan men de plaats en de grootte van de apertuur elektronisch wijzigen door meerdere elementen tegelijk aan te sturen op een bepaalde plaats in het array. Bovendien kan men de uitgezonden akoestische bundel focussen in een bepaald punt. Indien men elk element aanstuurt met eenzelfde elektrisch signaal, maar met een verschillende vertraging, kan men de bundel in een gewenste richting sturen. De uitgezonden golffronten van de elementen zullen met elkaar interfereren zodat een golffront ontstaat dat in een bepaalde richting wordt gestuurd. Er ontstaat een gefocuste bundel die in alle richtingen elektronisch kan gedraaid worden. Fasegestuurde arrays bieden dus de mogelijkheid om akoestische bundels te focussen en in een bepaalde richting uit te sturen.
Wanneer men een bepaald punt van het te scannen weefsel in beeld wil brengen, zullen de verschillende elementen van het fasegestuurde array met een lichtjes verschillende tijdsvertraging worden aangestuurd (Figuur 3.10(a)). De echo van het punt zal als een sferische golf terug op het fasearray invallen. De verschillende gereflecteerde signalen zullen met dezelfde vertragingen als bij het zenden vertraagd worden vooraleer men ze samentelt (Figuur 3.10(b)). Aan de hand van de grootte van dit signaal krijgt men een idee van de aard van de eventuele onregelmatigheid in dat punt.
3.2 Methodes om artefacten op te sporen m.b.v. transducers
33
τ1
τ1
τ2
τ2
τ3
τ3
τ4
τ4
τ5
Σ
τ6
τ5 τ6
τ7
τ7
τ8
τ8
τ9
τ9
τ10
τ10
τ11
τ11
τ11
τ11
(a) Focussen van acoustische bundels met be-
(b) Reconstructie van de ontvangen echo.
hulp van individuele vertragingen.
Figuur 3.10: In Figuur 3.11(a) en 3.11(b) wordt een schema gegeven van hoe de verschillende delays er moeten uitzien indien men de akoestische bundel in een bepaalde richting wil uitsturen.
Vertragingen (ns)
Vertragingen (ns)
Focus punt
(a) Weergave van de vertragingen om de bundel (b) Weergave van de vertragingen om de bundel in een bepaald punt te focussen.
in een bepaalde richting te sturen.
Figuur 3.11:
Simulaties in Field II Aan de hand van het simulatiepakket Field II voor MATLAB werden enkele ontwerpen gemaakt voor het aansturen van een fasegestuurde array. Van deze arrays werd via een zelfgeschreven MATLAB procedure het stralingspatroon bepaald. De invloed van de grootte van de elementen en de afstand tussen de elementen op de bundelbreedte en de grootte van de zijlobes werd onderzocht.
3.2 Methodes om artefacten op te sporen m.b.v. transducers
34
20 15 10
y [mm]
5 0 -5 -10 -15 -20 20
20 10
10 0
0 -10
-10 z [mm]
-20
-20
x [mm]
Figuur 3.12: Transducer array
Met Field II is het mogelijk om de ontstane drukvelden te berekenen wanneer men een array van transducers aanstuurt. Het aantal, de grootte en tussenafstand van de elementen kunnen worden gedefini¨eerd. Wanneer men een bepaald punt opgeeft waar de transducer array op moet focussen, zal Field II de nodige vertragingen berekenen waarmee de signalen aan de verschillende elementen moeten worden aangelegd. Om het ontstane drukveld in beeld te brengen, levert Field II als output het drukverloop in functie van de tijd in een opgelegd meetpunt. In MATLAB werd een procedure geschreven die voor een groot aantal punten de maximale waarde berekent van de druk die er optreedt. Indien men dit voor elk punt gelegen op een cirkel met middelpunt het midden van het array doet, bekomt men na het nemen van de maximale druk in alle punten, die op een rechte door het midden van het transducer array liggen, de grootte van de maximale druk in een bepaalde richting. Wanneer men dit uitzet in een dB schaal op een polaire plot bekomt men het stralingspatroon.
In Figuur 3.12 wordt een fasegestuurde array getoond waarvan de elementen een lengte 4 mm hebben, breedte 4 mm en tussenafstand 1 mm. Wanneer men de array exciteert met een puls
3.2 Methodes om artefacten op te sporen m.b.v. transducers
-6
0
35
Vertragingen per transducer
x 10
Start tijdstip signaal (sec)
-1
-2
-3
-4
-5
-6
1
2
3
4 5 Transducer element
6
7
8
Figuur 3.13: Vertragingstijden voor focusafstanden 15 mm (rood), 30 mm (groen) en 60 mm (blauw)
bij een excitatiefrequentie van 2 MHz en men focust op een afstand van 15 mm, 30 mm of 60 mm, bekomt men de vertragingen per element die weergegeven zijn in Figuur 3.13. Men ziet dat voor het focussen in een bepaald punt, er een parabolisch verloop is wat betreft de nodige vertragingen. Het berekende stralingspatroon wordt gegeven in Figuur 3.14. Wanneer men de tussenafstand van de elementen vergroot en het stralingspatroon bekijkt (Figuur 3.15), ziet men dat het effect van zijlobes toeneemt. Deze treden op omdat de afstand tussen de verschillende elementen groot wordt in vergelijking met de golflengte. Indien de tussenafstand van de verschillende elementen klein is t.o.v. de golflengte, zal het effect van grating lobes afnemen. Typisch kiest men een tussenafstand gelijk aan de halve golflengte. Wanneer de grootte van de elementen toeneemt, kan men besluiten dat de zijlobes ook groter worden (zie Figuur 3.16).
Om het effect van zijlobes in het stralingspatroon te verminderen, zal het signaal per element met een verschillende amplitude worden aangelegd. Wanneer men de amplitudes van de verschillende signalen per element weegt met een Hanningvenster, ziet men dat het effect van de
3.2 Methodes om artefacten op te sporen m.b.v. transducers
36
Stralingspatroon (dB) volgens hoogte-as array)
Stralingspatroon (dB) volgens lengte-as array
90
90
100
100 120
120
60
60 80
80
60
60 150
150
30
30 40
40
20
20
180
0
180
300
240
330
210
330
210
0
300
240
270
270
(a) Horizontale vlak
(b) Verticale vlak
Figuur 3.14: Stralingspatroon voor configuratie gegeven in Figuur 3.12
Stralingspatroon (dB) volgens lengte-as array
Stralingspatroon (dB) volgens hoogte-as array)
90
90
100 120
100
60
120
60
80
80
60
60
150
30
150
30
40
40
20
20
180
0
330
210
300
240
180
0
330
210
300
240
270
270
(a) Horizontale vlak
(b) Verticale vlak
Figuur 3.15: Stralingspatroon voor een tussenafstand van 4 mm zijlobes kleiner wordt. Als alle elementen met dezelfde intensiteit worden aangestuurd, ontstaat er een grote discontinu¨ıteit in de ruimte tussen gebieden die akoestische golven uitzenden en gebieden waar er niet uitgezonden wordt. Wanneer men bepaalde transducers voluit aanstuurt
3.2 Methodes om artefacten op te sporen m.b.v. transducers
37
Stralingspatroon (dB) volgens hoogte-as array)
Stralingspatroon (dB) volgens lengte-as array
90
90
100
100 120
120
60
60 80
80
60
60 150
150
30
30 40
40
20
20
180
0
330
210
300
240
180
0
330
210
300
240
270
270
(a) Horizontale vlak
(b) Verticale vlak
Figuur 3.16: Stralingspatroon voor elementen van 8 mm op 8 mm en andere helemaal niet aanstuurt, zullen de zijlobes veel groter zijn dan wanneer men een geleidelijke overgang heeft (= apodizatie). De hooflobe is het smalst bij deze ”blokgolfaansturing”, maar door de aanwezigheid van de zijlobes zal men signalen ontvangen die uit richtingen komen verschillend van de richting van de hoofdbundel. Dit geeft aanleiding tot artefacten in het beeld. Wanneer men bvb. een Hanningvenster gebruikt, zal het effect van de zijlobes afnemen. Een nadeel is dat de breedte van de hoofdbundel toeneemt, zodat de laterale resolutie afneemt. Er bestaan natuurlijk nog andere apodizatie functies die naargelang het gewenste resultaat kunnen toegepast worden.
Besluit De laterale resolutie die kan gehaald worden is zowel afhankelijk van het aantal transducer elementen als van hun grootte en hun tussenafstand. De axiale resolutie is nauwelijks afhankelijk van het transducer array maar wel van de gebruikte frequentie. Het grote voordeel van fasegestuurde transducer arrays is dat ze elektronisch kunnen gefocust worden en dat een gebied kan worden afgescand zonder dat het array verplaatst dient te worden. Een nadeel is dat een groot aantal elementen moet worden gebruikt die elk afzonderlijk moeten worden aangestuurd. Deze aanpak vereist een complex aanstuurcircuit dat in staat moet zijn
3.2 Methodes om artefacten op te sporen m.b.v. transducers
38
Stralingspatroon (dB) volgens hoogte-as array)
Stralingspatroon (dB) volgens lengte-as array
90
90
100
100 120
120
60
60 80
80
60
60 150
150
30
30 40
40 20
20
180
0
330
210
180
0
300
240
330
210
270
(a) Horizontale vlak
300
240 270
(b) Verticale vlak
Figuur 3.17: Stralingspatroon wanneer apodizatie d.m.v. Hanningvenster wordt toegepast voor configuratie gegeven in Figuur 3.12 om aan hoge snelheid de juiste pulsen aan de verschillende elementen aan te leggen.
3.2.2
Satelliet transducers
Men kan ook gebruik maken van individuele transducers die op verschillende plaatsen gelocaliseerd zijn rond het te onderzoeken gebied. Indien deze omnidirectioneel stralen, is het mogelijk om aan de hand van de signalen die op elke transducer afzonderlijk aankomen een beeld te vormen van het inwendig milieu. Enkele transducers zullen op een vaste plaats gepositioneerd worden. De andere transducers vormen een wolk rond de vaste transducers. Aan de hand van GPS technieken kunnen de exacte posities van de satelliet transducers bepaald worden. De transducers waarvan de posities gekend zijn, zenden dan een signaal uit naar de andere en met behulp van de vertragingstijden kan de afstand bepaald worden. Aan drie verschillende afstandsbepalingen heeft men reeds genoeg om de positie van de satelliet transducer te bepalen. De exacte positie is nodig om een goede signaalverwerking mogelijk te maken en de exacte locatie van eventuele cystes in de borst op te sporen. In Figuur 3.18 wordt het principe getoond waarbij de rode transducers op een vaste positie zitten.
3.2 Methodes om artefacten op te sporen m.b.v. transducers
39
Figuur 3.18: Principe van de satelliettransducers
Omdat het de bedoeling is het systeem in een beha te integreren, kiest men voor het gebruik van deze methode. Afzonderlijke schijfvormige transducers zijn gemakkelijk in een beha te integreren. Indien men ergens op de beugel van de beha enkele vaste posities kiest, kan men de andere transducers op de stof rond de borst plaatsen. Doordat deze niet in een vaste conformatie zitten, blijft het voor de pati¨ent enigzins comfortabel.
PROPAGATIEMODEL IN MATLAB
40
Hoofdstuk 4
Propagatiemodel in Matlab 4.1
Inleiding
Het schrijven van een signaalverwerkingsmodule zonder een zicht te hebben op de aard van de ontvangen signalen is een moeilijke opgave. Om inzicht te krijgen in de aard van de ontvangen signalen wanneer men de pi¨ezo-elektrische elementen aanstuurt, werd in MATLAB een theoretisch propagatiemodel opgesteld.
De elementen worden in een bepaalde configuratie rond een tweedimensionaal cirkelvormig voorwerp geplaatst. De akoestische impedantie van dit voorwerp verschilt van die van de omgeving. Er wordt verondersteld dat de pi¨ezo-elektrische elementen zich gedragen als puntbronnen. De voorwaarde hiervoor is dat hun grootste afmeting relatief klein is ten opzichte van de golflengte van de uitgezonden akoestische golven. Aangezien gewerkt wordt rond een resonantiefrequentie van 2 MHz is de golflengte λ = 0,77 mm (bij v = 1540 m/s). De grootste afmeting van onze elementen is 5 mm zodat de elementen die gebruikt worden in onze proefopstelling niet kunnen beschouwd worden als puntbronnen. Een oplossing hiervoor is om in de meetopstelling een diafragma, waarvan de diameter van de opening een halve golflengte bedraagt, te plaatsen voor het pi¨ezo-elektrische element. Wanneer het element aangestuurd wordt, zal er een sferisch golffront uitgezonden worden dat weg van de transducer propageert.
Aan de hand van de wet van Snellius worden teruggekaatste en gebroken stralen aan de rand van het cirkelvormig voorwerp berekend. Op die manier kan men uiteindelijk de stralen bekomen die op de pi¨ezo-elektrische elementen invallen. In het model wordt rekening gehouden met het
4.2 Configuratie
41
stralingspatroon van de zendende elementen, de akoestische verliezen doorheen de verschillende media, de akoestische verliezen die optreden aan het scheidingsoppervlak van 2 media en de locale akoestische propagatiesnelheid in het beschouwde medium. Het is de bedoeling om aan de hand van de stralen die terechtkomen op elk element een beeld te krijgen van het ontvangen signaal per element. Uiteindelijk zal deze informatie gebruikt worden om een signaalverwerkingsalgoritme te schrijven dat ook toepasbaar zal zijn op de re¨ele situatie. Het einddoel is om met het beperkte aantal transducers een zo goed mogelijk beeld te verkrijgen van het inwendig milieu dat door de transducers afgebakend wordt.
4.2
Configuratie
Er worden 4 transducers gebruikt die een diameter van 5 mm hebben en een dikte van 1 mm. Dit zijn ook de afmetingen van de transducers die in de proefopstelling gebruikt worden. Ze worden in een vlak geplaatst telkens op een afstand van 50 mm van de oorsprong. In het gebied dat omringd wordt door de 4 transducers wordt ergens een object, hier een cirkel, geplaatst die door zijn verschil in akoestische impedantie aanleiding zal geven tot reflecties en breking. Dit object is de voorstelling van de op te sporen cyste. De diameter is instelbaar zodat nagegaan kan worden wat de grootte zal zijn van de minimum detecteerbare cyste. De akoestische voortplantingssnelheid doorheen de 2 media kan worden ingesteld. Voor de simulaties wordt er vanuit gegaan dat de omliggende materie een akoestische voortplantingssnelheid heeft van 1540 m/s. Dit is de gemiddelde propagatiesnelheid van akoestische golven in menselijk weefsel. Voor de akoestische voortplantingssnelheid binnen de cirkel wordt een waarde van 2 × 1540 m/s aangenomen. Er wordt voor deze waarde geopteerd omdat deze sterke breking veroorzaakt. Zo kan beter vastgesteld worden of de verschillende stralen wel juist gebroken worden en kan men gemakkelijker op visuele wijze de juistheid van het model nagaan. De akoestische impedantie van het omringende weefsel wordt 1,48 x 106 rayls genomen, die van de cyste 1,65 x 106 rayls.
4.3 Werkingsprincipe
42
0.08
0.06 2 0.04
y (m)
0.02
1
0
3
-0.02
-0.04 4 -0.06
-0.08 -0.08
-0.06
-0.04
-0.02
0 x (m)
0.02
0.04
0.06
0.08
Figuur 4.1: Configuratie van pi¨ezo-elektrische elementen
4.3 4.3.1
Werkingsprincipe Initialisatie
Voor alle berekeningen van start gaan, worden enkele belangrijke variabelen gedeclareerd. De verwerking ervan gebeurt via de functie Initialisatie.m. In Tabel 4.1 worden de voornaamste parameters en hun defaultwaarde weergegeven. Bij de initialisatie hoort ook het defini¨eren van het uit te zenden signaal. Dit signaal is een fasegemoduleerde Kasami code met een draaggolffrequentie van 2 MHz. Dit signaal wordt door een banddoorlaat filter met een bandbreedte van 400 kHz gefilterd. Dit modelleert de invloed van de transducer op het aangelegde elektrische signaal. Dit levert dan het uitgezonden akoestisch signaal. Er wordt een Kasami code gebruikt omdat die goede eigenschappen heeft wat betreft autocorrelatie en kruiscorrelatie. Een bespreking van deze codes vindt men terug in [17]. De uitgezonden signalen zijn afgebeeld in Figuur 4.2. In Figuur 4.3 worden de autocorrelatie en kruiscorrelatie eigenschappen van code 1 met de andere codes afgebeeld. Men merkt op dat de verhouding van de autocorrelatiepiek en kruiscorrelatiepiek, voor alle combinaties van codes, in het worst-case geval 2,3735 bedraagt.
4.3 Werkingsprincipe
43
Parameter
Waarde
Sample frequentie
16 MHz
vweef sel
1540 m/s
vcyst
2 × 1540 m/s
Zweef sel
1,48 × 106 rayls
Zcyst
1,65 × 106 rayls
Attenuatie weefsel
100 dB/m
Attenuatie cyste
120 dB/m
Tabel 4.1: Parameters
Code 1 Amplitude
1 0
Amplitude
Amplitude
-1
0
200
400
600 Samples Code 2
800
1000
1200
0
200
400
600 Samples Code 3
800
1000
1200
0
200
400
600 Samples Code 4
800
1000
1200
0
200
400
600 Samples
800
1000
1200
1 0 -1
1 0 -1
Amplitude
1 0 -1
Figuur 4.2: Fasegemoduleerde Kasami codes.
4.3 Werkingsprincipe
44
Amplitude
Amplitude
Amplitude
Amplitude
Autocorrelatie van code 1 500 0 -500 0
500
0
500
0
500
0
500
1000
1500 Samples Kruiscorrelatie van code 1 en code 2
2000
1000
2000
1000
2000
500 0 -500 1500 Samples Kruiscorrelatie van code 1 en code 3
500 0 -500 1500 Samples Kruiscorrelatie van code 1 en code 4
500 0 -500 1000
1500
2000
Samples
Figuur 4.3: Autocorrelatie en kruiscorrelatie van code 1 met de andere codes.
4.3.2
Bepaling stralingspaden
Voor het bepalen van alle stralen die op elk element terechtkomen, wordt op de volgende manier te werk gegaan. De basisbewerking van het model is het berekenen van de ontvangen stralen wanneer 1 element wordt aangestuurd en een ander luistert. De volledige opstelling wordt dus herleid tot een interactie tussen 3 objecten nl. het zendend element, de cyste en het ontvangend element. Deze berekeningsprocedure wordt herhaald voor elke combinatie van transducers. Voor 4 elementen zijn dit dus 16 berekeningen. Er zijn enkele reciproke berekeningen. Bijvoorbeeld wanneer element 1 zendt en element 2 ontvangt, zullen de signalen dezelfde paden afleggen wanneer de rollen van zender en ontvanger worden omgewisseld. De beide ontvangen signalen zullen wel verschillen omdat een verschillende Kasami code wordt gebruikt bij het aansturen van de verschillende elementen. Wanneer men wil nagaan wat het ontvangen signaal is als men met hetzelfde element zendt en ontvangt, dan wordt in de berekening het ontvangend element op de positie van het zendend element geplaatst. Voor elk mogelijk pad die de straal aflegt van zendend element naar ontvangend element wordt het signaal berekend dat ontvangen zal
4.3 Werkingsprincipe
45
worden. Door middel van superpositie worden dan alle signalen bij elkaar opgeteld en bekomt men voor elke transducer het totaal ontvangen signaal.
De berekeningen voor het bepalen van de richting en de zin van de stralen na het breken aan de rand van de cyste zijn eenvoudiger indien de cyste zich in het punt met co¨ordinaten (0,0) bevindt. Naargelang de positie van de cyste zal een translatie op de formatie van pie¨zo-elektrische elementen uitgevoerd worden, zodat het middelpunt van de cyste samenvalt met de oorsprong. De berekeningen zijn ook heel wat eenvoudiger indien het zendend element links van de cyste vertikaal wordt geplaatst en het ontvangend element ergens horizontaal of verticaal rond de cyste. Daar de opstelling van de pie¨zo-elektrische elementen niet altijd op deze manier rond de cyste zal zijn, wordt nog een rotatie uitgevoerd. Deze bewerkingen zijn in Figuren 4.4 en 4.5 samengevat.
Figuur 4.4: Translatie van de opstelling zodat de cyste in de oorsprong terechtkomt.
Wanneer voor de opstelling van Figuur 4.1 de transducers verschoven worden zodat de cyste in de oorsprong terechtkomt en vervolgens een rotatie uitgevoerd wordt over respectievelijk 0o ,
4.3 Werkingsprincipe
46
o 90
Figuur 4.5: Rotatie van de opstelling zodat het zendend element, hier 2, links van de cyste komt.
90o , 180o en 270o , dan komen de elementen 1, 2, 3 en 4 elk op hun beurt links van de cyste te staan. De andere elementen worden natuurlijk op dezelfde wijze geroteerd. Uiteindelijk zullen 16 basisberekeningen voor het bepalen van de stralen uitgevoerd moeten worden op de gewijzigde opstellingen. De 4 van 16 opstellingen worden in Figuur 4.6 weergegeven. Op deze figuren is element 2 het zendend element.
Wanneer men 2 elementen beschouwd, zijn er in eerste instantie 3 manieren waarop stralen van het ene element op het andere kunnen terechtkomen. Ten eerste rechtstreeks, ten tweede door reflectie aan de rand van de cyste en ten derde via propagatie door de cyste. Voor elke opstelling van 2 elementen zal worden nagegaan of deze paden aanleiding geven tot een straal die op het ander element terechtkomt. Wanneer met hetzelfde element gezonden en ontvangen wordt, zal er enkel een gereflecteerd pad zijn. In werkelijkheid zullen er natuurlijk meer dan 3 manieren zijn waarop stralen van de ene op de andere transducer terechtkomen. Denk maar aan de weerkaatsing aan de verste wand van de cyste. Omdat een eerste schatting van de ontvangen signalen nagestreefd wordt, zou het in reken-
4.3 Werkingsprincipe
47
Figuur 4.6: 4 configuraties waarbij transducer 2 zendt en de andere transducers ontvangen
ing brengen van alle mogelijke paden te ver leiden. Bij de signaalverwerking met re¨ele signalen zal natuurlijk wel rekening moeten gehouden worden met het bestaan van deze paden. Men zal moeten zorgen dat stralen die niet opgenomen worden in het model toch verwerkt zullen worden.
Bepaling rechtstreeks pad De manier waarop bepaald wordt of er een rechtstreeks stralenpad bestaat tussen zender en ontvanger is relatief eenvoudig. Eerst wordt de richtingsco¨efficient en vervolgens de hoek van de straal door de 2 beschouwde elementen bepaald. Deze worden gegeven door volgende uitdrukkingen: richtingsco¨ ef f icient =
T 2posY − T 1posY T 2posX − T 1posX
(4.1)
4.3 Werkingsprincipe
48
α = atan(
T 2posY − T 1posY ) T 2posX − T 1posX
(4.2)
In deze uitdrukkingen en de volgende uitdrukkingen wordt de positie van het zendend element bepaald door (T1posX, T1posY). De positie van het ontvangend element wordt bepaald door (T2posX, T2posY). Daarna zal de functie berekenSignaalT1.m aan de hand van de hoek α bepalen of er reflecties aan de cyste optreden. Dit gebeurt door te kijken of er een snijpunt is tussen de cirkel (de cyste) en die straal. Hierbij worden volgende uitdrukkingen opgelost:
y=
T 2posY − T 1posY (x − T 1posX) + T 1posY T 2posX − T 1posX
x2 + y 2 = (Cystradius )2
(4.3)
(4.4)
Uitdrukking 4.3 is de vergelijking voor de akoestische straal door het middelpunt van de zendende transducer. Uitdrukking 4.4 is de vergelijking voor de cirkel (de cyste) waarbij Cystradius de straal van de cirkel is. Indien er geen snijpunten zijn heeft men een rechtstreeks pad gevonden. Vervolgens wordt de minimum- en maximumwaarde van de hoek α bepaald zodat de straal die onder een hoek van dit interval het zendend element verlaat nog terechtkomt op het oppervlak van het ontvangend element. Het zoeken naar de minimum- en maximumwaarde van deze hoek gebeurt door de hoeken te bepalen tussen de rechte door het middelpunt van zendend element en beide randen van het ontvangend element.
Wanneer het ontvangend element geplaatst is in een vlak evenwijdig met het vlak waarin het zendend element gelegen is, bekomt men (αmin minimumwaarde van de hoek α, αmax maximumwaarde van de hoek α):
αmin = atan(
(T 2posY + T 2radius ) − T 1posY ) T 2posX − T 1posX
(4.5)
αmax = atan(
(T 2posY − T 2radius ) − T 1posY ) T 2posX − T 1posX
(4.6)
4.3 Werkingsprincipe
49
Wanneer het ontvangend element geplaatst is in een vlak loodrecht op het vlak waarin het zendend element gelegen is, bekomt men:
αmin = atan(
T 2posY − T 1posY ) T 2posX − T 2radius − T 1posX
(4.7)
αmax = atan(
T 2posY − T 1posY ) T 2posX + T 2radius − T 1posX
(4.8)
Bepaling gereflecteerd pad Het volgende algoritme dat wordt toegepast, is een algoritme dat zoekt naar de hoek waaronder een uitgezonden straal van het zendend element door reflectie op het oppervlak van het ontvangend element terechtkomt. Eerst zoekt men naar de hoek waaronder een uitgezonden straal het zendend element moet verlaten om op het cirkelvormige object terecht te komen. Aan de hand van de akoestische brekingswetten wordt de teruggekaatste straal berekend.
Er zijn 4 gevallen die zich kunnen voordoen indien het zendend element links van de cyste geplaatst is. Ze worden weergegeven in Figuren 4.7, 4.8, 4.9 en 4.10. Deze gevallen worden verkregen door het positief of negatief zijn van de hoeken α en β. Deze hoeken worden berekend aan de hand van uitdrukkingen 4.9 en 4.10. De hoeken δ en ϕ worden voor de 4 gevallen gegeven door de uitdrukkingen 4.11 tot 4.20. Hun waarde is belangrijk voor het bepalen van de straal die teruggekaatst wordt aan de rand van de cyste. Deze waarde is eveneens belangrijk voor het bepalen van de straal die aan de andere kant de cyste verlaat.
α = atan(
SnijpuntCysteY − T 1posY ) SnijpuntCysteX − T 1posX
(4.9)
SnijpuntCysteY ) SnijpuntCysteX
(4.10)
β = atan(
4.3 Werkingsprincipe
50
y
γ
γ α
δ β
γ ψ
ϕ
ψ x
Figuur 4.7: Geval 1: α > 0 en β < 0
y
α
γ γ δβ γ
ψ
ϕ
x
ψ
Figuur 4.8: Geval 2: α < 0 en β < 0
4.3 Werkingsprincipe
51
y
ψ ψ
ϕ x
δβ γ
γ γ α
Figuur 4.9: Geval 3: α > 0 en β > 0
y
α
δ β
γ
γ
ψ
ϕ
ψ
γ
Figuur 4.10: Geval 4: α < 0 en β > 0
x
4.3 Werkingsprincipe
52
Indien α ≥ 0 en β ≤ 0
δ = π + 2β − α
(4.11)
Onder de hoek δ zal de straal teruggekaatst worden aan de rand van de cyste. Het snijpunt aan de andere kant van de cyste vindt men door het oplossen van volgende vergelijkingen:
y = atan(−β − asin(sin(γ)
vcyst vweef sel
))(x − SnijpuntCysteX) + SnijpuntCysteY
x2 + y 2 = (Cystradius )2
(4.12)
(4.13)
De eerste vergelijking is de vergelijking van de straal die doorheen de cyste propageert. Deze straal zal de binnenwand van de cyste, gegeven door uitdrukking 4.13, snijden. Uiteindelijk vindt men voor ϕ:
ϕ = −atan(
vweef sel SnijpuntAndereKantCysteY ) + asin( sin(ψ 0 )) SnijpuntAndereKantCysteX vcyste
(4.14)
Voor de andere gevallen wordt op dezelfde manier te werk gegaan. Men vindt: Indien α ≤ 0 en β ≤ 0
δ = π + 2β + α
ϕ = atan(
vweef sel SnijpuntAndereKantCysteY ) + asin( sin(ψ 0 )) SnijpuntAndereKantCysteX vcyste
Indien α ≥ 0 en β ≥ 0
(4.15)
(4.16)
4.3 Werkingsprincipe
53
δ = −(π − 2β − α)
ϕ = −atan(
vweef sel SnijpuntAndereKantCysteY sin(ψ 0 )) ) + asin( SnijpuntAndereKantCysteX vcyste
(4.17)
(4.18)
Indien α ≤ 0 en β ≥ 0
δ = −(π − 2β + α)
ϕ = atan(
vweef sel SnijpuntAndereKantCysteY ) + asin( sin(ψ 0 )) SnijpuntAndereKantCysteX vcyste
(4.19)
(4.20)
Na het bepalen van de stralen wordt er gekeken op welke x- of y-co¨ordinaat de gereflecteerde straal snijdt met het oppervlak van het ontvangend element. X-co¨ordinaat indien het ontvangend element horizontaal is geplaatst ten opzichte van de x-as en y-co¨oordinaat indien het ontvangend element verticaal is geplaatst ten opzichte van de x-as. Aan de hand van deze waarde wordt dan bepaald of de hoek waaronder de straal de transducer verlaat, in waarde toe of af moet nemen als men er wil voor zorgen dat de gereflecteerde straal op het oppervlak van het ontvangend element terechtkomt. Het zoeken naar deze hoek gebeurt iteratief. De stapgrootte wordt aangepast afhankelijk van de afstand van de x- of y-co¨ordinaat die overeenkomt met het snijpunt van de gereflecteerde straal met het vlak van het ontvangend element en het middelpunt van het ontvangend element. Als de gereflecteerde straal in de buurt van de transducer komt, zal er voor gezorgd worden dat de waarde van zijn x- of y-co¨ordinaat niet toeneemt met stappen die groter zijn dan de doorsnede van de transducer. Wanneer de co¨ordinaat zich binnen de grenzen van de transducer bevindt, zal het algoritme de stapgrootte verkleinen en zal er worden gezocht naar het interval van hoeken waarbij de gereflecteerde straal op het ontvangend element blijft. Na het uitvoeren van dit algoritme weet men bijgevolg voor welke ruimtehoek de uitgezonden stralen van het zendend element op het ontvangend element terechtkomen.
4.3 Werkingsprincipe
54
Bepaling gebroken pad Op dezelfde manier als in het voorgaande algoritme wordt nu gezocht naar de hoek die ervoor zorgt dat de uitgezonden straal na propagatie doorheen de cyste op het oppervlak van het ontvangend element terechtkomt. Eerst gaat men op zoek naar de hoek die een snijpunt oplevert tussen de uitgezonden straal en de cyste. Vervolgens wordt de hoek waarmee de uitgezonden straal aan de rand van de cyste breekt, bepaald. Deze hoek wordt gevonden met behulp van de wet van Snellius. De straal propageert onder deze hoek verder en het snijpunt aan de andere kant van de cyste wordt berekend. Tenslotte wordt de straal die aan de andere kant van de cyste onder een hoek ϕ terug naar buiten komt, bepaald. Opnieuw wordt de xresp. y-co¨ordinaat bepaald van het snijpunt van deze straal met het vlak waarin het ontvangend element horizontaal resp. verticaal geplaatst is. Het zoeken naar de hoek die ervoor zorgt dat de uitgezonden straal op het ontvangend element terechtkomt, gebeurt opnieuw iteratief. De stapgrootte in de iteratieve berekening wordt aangepast afhankelijk van de afstand tot het middelpunt van het ontvangend element. Als de co¨ordinaat zich dicht bij het middelpunt van het ontvangend element bevindt, wordt ervoor gezorgd dat de waarde van de stapgrootte niet groter is dan de diameter. Indien een hoek gevonden wordt waarvan de straal uiteindelijk op het ontvangend element terechtkomt, wordt het interval van hoeken gezocht waarbij dit geldig blijft.
4.3.3
Bepaling ontvangen signalen
Nadat voor elk paar elementen de verschillende ruimtehoeken bepaald zijn, zal voor een instelbaar aantal stralen het pad van zendend element naar ontvangend element bepaald worden. De hoeken waarmee deze stralen het zendend element verlaten zijn uniform verdeeld over het eerder bepaalde hoekinterval. In een matrix wordt de afgelegde weg voor elke tak van het pad bijgehouden. Onder tak wordt bedoeld de weg die een straal aflegt tussen 2 punten (i.e. de grenzen van een medium of een punt op het oppervlak van een pi¨ezo-elektrisch element). Indien er een rechtstreeks pad bestaat, is de afgelegde weg de euclidische afstand tussen het middelpunt van het zendend element en het snijpunt van de uitgezonden straal met het ontvangend element. Indien er een pad bestaat tussen zendend en ontvangend element dat bestaat uit 2 takken (i.e. wanneer de straal een reflectie ondergaat) wordt de euclidische afstand bepaald tussen het middelpunt van het zendend element en het snijpunt met de cyste. Hierbij wordt nog de afstand van dit snijpunt naar het punt op het ontvangend element waar deze straal terechtkomt, opgeteld.
4.3 Werkingsprincipe
55
Indien het pad uit 3 takken bestaat, wordt de totale afstand de afstand van het middelpunt van het zendend element tot het snijpunt van deze straal met de cyste. Daarna wordt de afstand bijgehouden tussen de 2 snijpunten van de straal die door de cyste propageert en tenslotte wordt nog de afstand van het tweede snijpunt met de cyste en het punt waarbij de straal op het ontvangend element terechtkomt, opgeslagen.
In een andere matrix zal voor deze afstanden de tijd bijgehouden worden die de straal nodig heeft om deze afstand af te leggen. Dit komt neer op een vermenigvuldiging van de afstand met de propagatiesnelheid van het medium (weefsel of cyste) waarin deze tak gelegen is. Uiteindelijk wordt voor elke straal die overeenkomt met een hoek uit het bepaalde hoekinterval, de totale afgelegde weg berekend en de totale tijd die de straal nodig heeft om vanuit het zendend element het ontvangend element te bereiken.
Er wordt ook nog een derde matrix bijgehouden waarin de verschillende attenuaties die de straal ondergaat, worden opgeslaan. De afgelegde weg doorheen een medium wordt dan vermenigvuldigd met de attenuatie uitgedrukt in dB/m−1 . Ook wanneer de golf van het ene medium naar het andere medium overgaat, zullen het verder propagerende en het teruggekaatste signaal een zekere attenuatie ondervinden. De attenuatie (in dB) die de straal ondergaat wanneer ze teruggekaatst wordt aan het scheidingsoppervlak van 2 media, wordt gegeven in uitdrukking 4.21. In deze uitdrukking zijn Z1 en Z2 de akoestische impedanties van de twee media.
20log10 (1 − R) = 20log10 (1 −
Z2 − Z1 2Z2 ) = 20log10 ( ) Z2 + Z1 Z2 + Z1
(4.21)
De attenuatie (in dB) die de straal ondergaat wanneer ze in het andere medium verderpropageert, wordt gegeven in uitdrukking 4.22. Wanneer het totale ontvangen signaal aan de transducer wordt samengesteld, wordt met al deze vormen van attenuatie rekening gehouden.
20log10 (R) = 20log10 (
Z2 − Z1 ) Z2 + Z1
(4.22)
Tenslotte wordt er per ontvangend element een signaal aangemaakt dat gelijk is aan de som van alle signalen die gelinkt zijn aan een berekend pad. Elk signaal is een versie van het signaal uitgestuurd door een zendend element en wordt in de tijd vertraagd met een waarde die
4.3 Werkingsprincipe
56
overeenkomt met de eerder berekende propagatietijd voor dat pad. Aangezien men te maken heeft met digitale signalen vertaalt deze vertragingstijd zich in een aantal samples. Om nu het ontvangen signaal te vertragen met de propagatietijd wordt het signaal met dit aantal samples opgeschoven. Dit aantal is afhankelijk van de propagatietijd en de samplefrequentie. Elk signaal wordt daarna nog eens vermenigvuldigd met een factor die de attenuatie in rekening brengt. Ook kan afhankelijk van de hoek waarmee de straal invalt, elk ontvangen signaal vermenigvuld worden met een factor die afhankelijk is van het stralingspatroon van het zendend en ontvangend element. Alle signalen worden tenslotte opgeteld. In Figuur 4.11 worden de ontvangen signalen per transducer voor de opstelling van Figuur 1.1, weergegeven indien transducer 1 zendt.
Amplitude
Amplitude
Amplitude
Amplitude
Signaal op transducer 1 0.2 0 -0.2 -0.4
0.2 0 -0.2 -0.4
0.2 0 -0.2 -0.4
0
1000
2000
3000
4000 5000 Samples Signaal op transducer 2
6000
7000
8000
0
1000
2000
3000
6000
7000
8000
0
1000
2000
3000
6000
7000
8000
0
1000
2000
3000
6000
7000
8000
4000 5000 Samples Signaal op transducer 3
4000 5000 Samples Signaal op transducer 4
0.2 0 -0.2 -0.4
4000 Samples
5000
Figuur 4.11: Ontvangen signalen per transducer wanneer transducer 1 zendt
Indien men de signalen op Figuur 4.11 van dichterbij bekijkt, ziet men dat het signaal ontvan-
4.3 Werkingsprincipe
57
gen op transducer 1 afkomstig is van de reflectie aan de cyste. Doordat er verschillende paden bestaan waarvoor geldt dat het teruggekaatste signaal terug op transducer 1 terechtkomt, zal dit aanleiding geven tot plaatsen van constructieve en destructieve interferentie in het signaal. Hierdoor zijn er enkele pieken op het signaal te zien. Men kan zich afvragen waarom dit signaal zoveel kleiner is in amplitude dan het signaal dat op transducer 3 terechtkomt. Doordat het verschil in akoestische impedantie tussen de cyste en het omringend milieu weinig verschilt, zal het grootste deel van de akoestische golf verder doorheen de cyste propageren. Slechts een klein gedeelte wordt teruggekaatst. De correctheid van de amplitude kan men nagaan aan de hand van uitdrukkingen 4.21 en 4.22. Wanneer men het signaal bekijkt dat op transducer 2 terechtkomt, kan men twee componenten onderscheiden. Deze componenten komen overeen met het rechtstreeks pad van transducer 1 naar transducer 2 en het gereflecteerde pad aan de cyste. Het signaal dat ontvangen wordt op transducer 3, bestaat uit 3 componenten. Een rechtstreekse component, een gereflecteerde component en een gebroken component. Doordat de afstanden van de verschillende paden weinig van elkaar verschillen, kan men ze moeilijk onderscheiden op de figuur. Het signaal dat op transducer 4 terechtkomt, bestaat zoals dat van transducer 2 uit twee componenten. Een rechtstreekse component die dezelfde vertraging heeft als de eerste component van transducer 2 (logisch, aangezien de transducers even ver van elkaar staan). Een tweede component is afkomstig van reflectie aan de rand van de cyste. Aan de hand van deze signalen kan men al aan signaalverwerking gaan doen.
Om ervoor te zorgen dat onze signaalverwerkingsmodule zo goed mogelijk aangepast is aan de ontvangen signalen die zullen optreden in werkelijkheid wil men verder gaan dan het opsporen van 1 enkele cyste. Men weet op voorhand dat er meerdere reflecties zullen optreden, telkens op plaatsen waar de locale akoestische impedantie een stap maakt. Het zou handig zijn indien het model verder wordt uitgebreid zodat er meerdere cystes in vervat zitten. Dit kan op een eenvoudige manier omdat er bepaalde posities van cystes zijn die aanleiding zullen geven tot stralingspaden die gelijk zijn aan de unie van stralingspaden die optreden voor elke cyste afzonderlijk. Wanneer men dus de signalen ontvangen op elke transducer voor verschillende posities van de cyste bij elkaar optelt, zal dit gelijk zijn aan het signaal dat men zal ontvangen indien men verschillende cystes in beschouwing neemt (zie Figuur 4.12(a)). Dit is niet altijd het geval
4.3 Werkingsprincipe
58
omdat het kan gebeuren dat de ene cyste de andere cyste afschermt zodat deze niet zichtbaar is voor een bepaalde transducer. De reflectie die optreedt indien cyste 1 er niet is, zal niet optreden indien ze er wel zit zodat men de signalen behorend bij de 2 conformaties niet zomaar bij elkaar kan optellen (zie Figuur 4.12(b)).
0.08
0.08
0.06
0.06
2
0.04
0.04
0.02
0.02
1
0
y (m)
y (m)
2
3
1
0
3
-0.02
-0.02
-0.04
-0.04
4
4
-0.06
-0.06
-0.08 -0.08
-0.06
-0.04
-0.02
0 x (m)
0.02
0.04
(a) Superpositie mogelijk
0.06
0.08
-0.08 -0.08
-0.06
-0.04
-0.02
0 x (m)
0.02
0.04
0.06
0.08
(b) Geen superpositie mogelijk
Figuur 4.12: Mogelijkheden tot superpositie. Indien men de verschillende signalen die ontvangen worden op een element voor 2 verschillende plaatsen van cystes bij elkaar optelt, moet men er wel rekening mee houden dat er een pad is die meerdere malen in het totale signaal zal worden opgenomen. Dit signaal zal bijgevolg meer gewicht hebben dan de signalen van andere paden. Indien het optreedt zal dit pad het rechtstreekse pad tussen 2 pi¨ezo-elektrische elementen zijn. Men zal dus van het totale signaal, het signaal dat bij dit pad hoort een aantal keer moeten aftrekken zodat het maar 1 keer in rekening wordt gebracht. Anders zal het ontvangen signaal een foute weergave zijn van de werkelijkheid.
HARDWARE
59
Hoofdstuk 5
Hardware 5.1
Overzicht van de belangrijkste digitale componenten
De ruggengraat van het volledige systeem is het digitale platform dat wordt afgebeeld in Figuur 5.1. Dit platform zorgt voor de interface tussen de MATLAB code en de transducers.
FPGA
Figuur 5.1: Digitale platform
5.1 Overzicht van de belangrijkste digitale componenten
60
De belangrijkste componenten op dit bord zijn: • 14-bit A/D-convertor AD6645 van Analog Devices • Xilinx Virtex-II XC2V1500, een FPGA met meer dan 1,5 miljoen equivalente gates en meer dan een megabit aan snelle inwendige SRAM • Cypress EZ-USB FX2, een USB 2.0 tranceiver die zorgt voor de link tussen de FPGA en de PC Als front-end voor deze toepassing, nl. het aansturen van de transducers, gebruikt men nog een aantal belangrijke componenten: • Digitaal Controleerbare Versterker AD8370 van Analog Devices • Twee multiplexers, twee-naar-een ADG704 en vier-naar-een ADG774 Op Figuur 5.2 staat het volledig systeem voor de aansturing van de transducers afgebeeld. Alle blokken hierboven opgesomd zijn afgebeeld en worden in de volgende paragrafen wat nader
latch data clk
toegelicht.
EN IN
MUX 2:1
EN A0 A1
LDF
clk data latch
VGA IN EN
PWM 1 PWM 2
A1
A0
EN
PWM 3 PWM 4
A/D 14
MUX 4:1
Figuur 5.2: Volledig systeem
To PC
FPGA
FX2
5.2 Analoog naar Digitaal Convertor: AD6645
5.2
61
Analoog naar Digitaal Convertor: AD6645
Figuur 5.3 toont de werking van de A/D convertor [11]. Het analoog signaal komt differenti¨eel binnen langs de pinnen AIN en AIN . De Track-and-Hold (TH) circuits, die met de ingang verbonden zijn, hebben twee toestanden: track en hold.
AVCC
DVCC
AD6645 AIN AIN
A1
TH1
TH2
A2
ADC1 VREF
TH3
TH4
DAC1
TH5
ADC2
ENCODE
6
DAC2
2.4V 5
ENCODE
ADC3
5
INTERNAL TIMING
GND
DIGITAL ERROR CORRECTION LOGIC
DMID
OVR
DRY
D13 MSB
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0 LSB
Figuur 5.3: Principschema A/D convertor
Gedurende de track toestand wordt het ingangsignaal doorgelaten. Na de track toestand wordt overgegaan naar de hold toestand. Tijdens deze toestand wordt de uitgang van het Track-andHold circuit vast gehouden op de waarde die de uitgang had op het moment van overgang van track naar hold. Deze spanning wordt een eerste maal omgezet naar een digitaal signaal van 5 bits door ADC1. Om een hogere nauwkeurigheid te bekomen, wordt het digitaal signaal, afkomstig van de ADC1, opnieuw omgezet in een analoog signaal door de DAC1. Het signaal afkomstig van de DAC1 wordt dan vergeleken met het oorspronkelijk signaal en het verschil dat men bekomt wordt opnieuw gecodeerd. Het resultaat van de verschillende A/D convertoren wordt dan samengevoegd en de 14-bit samples worden parallel naar buiten gebracht. De maximale snelheid waarmee deze 14 bits naar buiten gebracht kunnen worden is 105 Msps. De maximale en de minimale AC-gekoppelde ingangsspanning van deze A/D-convertor bedraagt resp. 0,55 V en -0,55 V. Belangrijk om op te merken is dat de bits in twee complement mode naar buiten worden gebracht. Dit komt later nog aan bod bij de verwerking van de digitale signalen. In Figuur 5.4 worden enkele digitale uitgangen gegeven die overeenstemmen met een bepaalde analoge waarde [11].
5.3 FPGA: Xilinx Virtex II
62
AIN Level
AIN Level
Output State
Output Code
VREF + 0.55 V VREF VREF – 0.55 V
VREF – 0.55 V VREF VREF + 0.55 V
Positive FS Midscale Negative FS
01 1111 1111 1111 00…0/11…1 10 0000 0000 0000
Figuur 5.4: Twee complement mode
5.3
FPGA: Xilinx Virtex II
Een FPGA (Field Programmable Gate Array) is een halfgeleider component die programmeerbare logische componenten en programmeerbare interconnecties bevat. De logische blokken of componenten kunnen geprogrammeerd worden om de functie van een basispoortje zoals een AND-, OR-, NOT-poortje te vervullen, maar ook meer complexe combinatorische functies zoals tellers of simpele mathematisch functies, kunnen geprogrammeerd worden. Naast logische blokken, bevat een FPGA ook heel wat geheugenblokken. Een hi¨erarchie van programmeerbare interconnecties kan gebruikt worden om de verschillende logische blokken en geheugenblokken met elkaar te verbinden.
DCM
DCM
IOB
Global Clock Mux
Configurable Logic
Programmable I/Os CLB
Block SelectRAM
Multiplier
Figuur 5.5: Overzicht van de architectuur van de Xilinx Virtex-II
Figuur 5.5 toont de architectuur van de gebruikte FPGA, nl. de Xilinx Virtex-II XC2V1500 [12]. Men kan vijf belangrijke deelblokken onderscheiden: • CLB (Configurable Logic Block): de CLBs in een FPGA zijn georganiseerd in een matrix en kunnen geprogrammeerd worden om bepaalde functies uit te voeren.
5.3 FPGA: Xilinx Virtex II
63
• DCM (Digital Clock Manager): zal de vertraging die optreedt bij het verspreiden van de klok in het ontwerp, compenseren. Dit blok zorgt er eveneens voor dat men op een accurate manier andere klokken van de basisklok kan afleiden. • IOB (Input-Output Block): blokken aan de rand van de FPGA die zorgen voor de gepaste externe interface. Men kan kiezen tussen zowel single-ended als differenti¨ele interfaces. • Multiplier: 18 x 18 bit vermenigvuldigers. • Block SelectRAM: 18 Kbit Dual Ported geheugens om data op te slaan. Het belangrijkste blok in de FPGA is het CLB-blok. Door verschillende van deze blokken met elkaar te verbinden, kan men zeer complexe functies maken. In Figuur 5.6(a) wordt een Configurable Logic Block afgebeeld [12]. Ieder CLB-element is verbonden met een switch-matrix om toegang te verkrijgen tot de routerings-matrix (i.e. is een matrix bestaande uit switches). Elk CLB-element bestaat uit 4 slices die georganiseerd zijn in 2 kolommen van 2 slices. In iedere kolom zijn de slices verbonden door een carry chain en de kolommen zijn verbonden door een shift chain. Elke slice bestaat uit twee 4-bit functiegeneratoren, twee multiplexers en twee flipflops.
ORCY
RAM16
COUT
TBUF X0Y1 TBUF X0Y0
MUXFx
Slice X1Y1
SRL16 LUT G
Register
CY
Switch Matrix
RAM16 MUXF5
SHIFT Slice X0Y1
SRL16 LUT F
Slice X1Y0
COUT
CIN
Register
CY
Slice X0Y0
Fast Connects to neighbors
Arithmetic Logic
CIN
(a) CLB element
(b) SLICE configuratie
Figuur 5.6: Overzicht van het CLB element
DS031_32_101600
5.4 Cypress FX2 en USB
64
De functiegeneratoren kunnen geprogrammeerd worden als 4-bit lookup tables, als RAM of als schuifregister (Figuur 5.6(b)) [12]. Deze RAM-geheugentjes zijn handig als men niet veel data moet opslaan. Wanneer men veel data moet opslaan gebruikt men best de ingebouwde Block RAMs.
5.4
Cypress FX2 en USB
USB is een standaard voor de aansluiting van randapparatuur op een computer. Het vervangt de langzame parallelle en seri¨ele poorten, voornamelijk omdat de snelheid van dataoverdracht van USB vele malen groter is en omdat USB-apparatuur kan aangesloten worden zonder de computer te moeten herstarten. De USB standaard ondersteunt drie snelheden: • Low Speed (1,5 Mbits/sec), gebruikt voor muizen en toetsenborden. • Full Speed (12 Mbits/sec), gebruikt bij modems, luidsprekers en scanners. • High Speed (480 Mbits/sec), gebruikt voor externe harde schijven, CD-ROMs en video camera’s. De pinnen van de FPGA zijn geconnecteerd aan een USB-controller nl. Cypress FX2. Deze is een combinatie van een USB 2.0 transceiver, die zorgt voor de implementatie van het USB communicatieprotocol en een 8051 microcontroller. Figuur 5.7 toont het blokschema van de FX2 [13].
Figuur 5.7: Blokschema FX2
De microcontroller kan enkele I/O-pinnen van de FX2 aansturen, maar kan ook de data ontvangen via USB verwerken. Indien men echter grote datadebieten, zoals hier het geval, wenst te verwerken, maakt men gebruik van de slave FIFO’s. Deze structuren zijn er speciaal voor
5.5 Digitaal Controleerbare Versterker: AD8370
65
ontworpen om grote datadebieten te behandelen zonder tussenkomst van de microcontroller. De werking van de slave FIFO’s wordt verduidelijkt aan de hand van Figuur 5.8 [13].
Figuur 5.8: Blokschema FX2 Slave FIFO Interface
De slave FIFO’s zijn gewone FIFO-structuren die gebruikt worden om de data die via USB wordt verstuurd, op te slaan. Op Figuur 5.8 staan de verschillende controlesignalen nodig om de data-overdracht te regelen, afgebeeld [13]. Deze signalen zijn verbonden met de FPGA. De FIFOADR-bits duiden aan in of uit welke FIFO, data geschreven of gelezen mag worden. Het SLWR (Slave Write) en het SLRD (Slave Read) signaal geven aan of de data moet gelezen of geschreven worden. De data die geschreven kan worden naar de slave FIFO’s, is 16 bits breed. Dit komt later nog aan bod.
5.5
Digitaal Controleerbare Versterker: AD8370
De sigalen afkomstig van de transducers zijn zeer klein (orde van een mV). Deze signalen moeten dus versterkt worden vooraleer ze verwerkt kunnen worden. Men kan hier kiezen voor een gewone versterker met een vaste versterking. Maar in deze toepassing moet men reflecties ontvangen die afkomstig zijn van een object op een bepaalde afstand. Hoe verder dit object van de ultrasone bron verwijderd is, hoe kleiner deze reflecties zullen zijn. Om ervoor te zorgen dat de amplitude van het ontvangen signaal op elk tijdstip ongeveer hetzelfde is, moet men dus de versterking laten oplopen in de tijd.
5.5 Digitaal Controleerbare Versterker: AD8370
66
De AD8370 is een versterker waarvan men de versterking digitaal kan instellen. Met behulp van de logica in de FPGA kan men dan de versterking laten oplopen in de tijd. Met deze versterker is het mogelijk om iedere 400 ns de versterking te veranderen. Figuur 5.9 toont een blokschema van het inwendige van de versterker [14]. Men kan drie grote blokken onderscheiden. Een eerste blok is de voorversterker (PRE AMP). Het tweede blok zorgt ervoor dat men de gewenste versterking kan instellen en het derde blok is de uitgangsversterker.
PWUP
4
ICOM
2
INHI
1
INLO 16
VCCI
VCCO
VCCO
3
11
6
BIAS CELL
PRE AMP
TRANSCONDUCTANCE
OUTPUT AMP
ICOM 15
5
VOCM
7
OCOM
8
OPHI
9
OPLO
10
OCOM
AD8370 14
13
12
DATA CLCK LTCH
03692-001
SHIFT REGISTER AND LATCHES
Figuur 5.9: Blokschema van de versterker
Met behulp van het achtste bit (most significant bit) van de versterkingscode kan men kiezen tussen twee verschillende voorversterkers: een die een minder groot bereik heeft qua versterking, maar een grotere precisie en een met en minder grote precisie, maar met een groter bereik. Op Figuur 5.10 worden de beide modes afgebeeld [14]. In de ”low gain”mode kan men de versterking heel precies instellen, tot op 0,059 (V/V)/code, d.w.z. dat als men bij de versterkingscode 1 bit optelt, dat de versterking met 0,059 wordt verhoogt. Nadeel van deze hoge precisie is dat men maximaal tot 17 dB kan versterken. In de ”high gain”mode kan men veel meer versterken. Wanneer het MSB hoog is, wordt het signaal in de voorversterker reeds 17 dB versterkt. Na het PRE AMP blok kan men dan nog eens 17 dB versterken. Men bekomt dus een maximale versterking van 34 dB. De precisie waarmee men nu de versterking kan instellen is nu wel lager, nl. 0,409 (V/V)/code. Vooraleer het signaal naar buiten wordt gestuurd, wordt het in de uitgangstrap nog eens versterkt. Deze versterking is afhankelijk van de last zodat de gehele versterking van de AD8370 uiteindelijk lastafhankelijk is. De uitgangsimpedantie van deze trap is 100 Ω. Vergelijking 5.1 kan dan gebruikt worden om de afwijking van de versterking te berekenen t.o.v. een last van 100 Ω.
5.5 Digitaal Controleerbare Versterker: AD8370
70
67
40
CODE = LAST 7 BITS OF GAIN CODE (NO MSB)
30
60
LOW GAIN MODE
40
' GAIN # 0.409 ' CODE
HIGH GAIN MODE
30
0 –10
20 10 LOW GAIN MODE 0
10
0
10
20
30
40
50 60 70 80 GAIN CODE
' GAIN # 0.059 ' CODE
–20
–30 90 100 110 120 130
VOLTAGE GAIN (dB)
20
50
03692-002
VOLTAGE GAIN (V/V)
HIGH GAIN MODE
Figuur 5.10: Grafiek met de versterkingscodes en hun versterking
Af wijking =
1, 98 98 1 + RLOAD
(5.1)
Om de versterkingscode naar de versterker te sturen, wordt gebruik gemaakt van een SPIinterface. Dit wordt later in meer detail uitgelegd. Aangezien men hier met zeer kleine signalen werkt is ook de ruis van de actieve component belangrijk. De Noise Figure (NF) van deze versterker, gegeven door vergelijking 5.2, is 7dB [14]. Dit is eerder aan de lage kant, maar indien men een LNA gebruikt kan men een veel lagere NF bekomen. Bij digitaal controleerbare versterkers is dit echter een kleine waarde. De spectral √ noise density van deze versterker is 2,1 nV/ Hz [14], zodat de versterker aan de ingang 1,33 µV ruis opneemt. Dit is veel kleiner dan de grootte van het binnenkomend signaal.
N oiseF igure = 10 log
SN RIN SN ROU T
(5.2)
De signalen afkomstig van de transducers zijn single-ended, maar de ingang van de A/D is differenti¨eel. Om deze overgang te maken kan men een buffer gebruiken, bijvoorbeeld de AD8138. Men hoeft hier echter geen extra component te gebruiken, de AD8370 kan zelf voor de conversie tussen single-ended en differenti¨eel zorgen. Zoals men in de volgende paragraaf zal zien is ook de voedingsspanning een belangrijke ontwerpsparameter. Aangezien het digitale platform reeds een heel aantal voedingsspanningen nodig heeft, zou het bijzonder handig zijn indien de voedingsspanning van de nieuwe compo-
5.6 Multiplexers
68
nenten reeds beschikbaar zijn op het platform. Bij deze versterker heeft men een enkelvoudige voeding nodig tussen 3 V en 5 V. Een voedingsspanning van 5 V is reeds aanwezig op het analoge gedeelte van het digitale bord zodat men voor deze component ook een voedingsspanning van 5 V zal nemen.
5.6
Multiplexers
De multiplexers zorgen ervoor dat men makkelijk kan schakelen tussen de verschillende zenden ontvangstkanalen. Om met eenzelfde transducer zowel signalen te kunnen zenden als signalen te kunnen ontvangen, moet men zorgen voor isolatie tussen het zendergedeelte en het ontvangergedeelte. Men maakt hier gebruik van een half duplex systeem. Men zou ook een full duplex systeem kunnen ontwerpen, maar bij een dergelijke configuratie zijn de ontwerpeisen veel strenger omdat het verschil in amplitude tussen de verzonden en de ontvangen signalen enorm groot is. In een eerste ontwerp, om het principe aan te tonen, is half duplex voldoende. Oorspronkelijk werd gedacht om als isolatie tussen zender en ontvanger een RF-switch te gebruiken. Deze zou omgeschakeld worden van zenden naar ontvangen van zodra het signaal volledig is uitgestuurd. De omschakeling moet snel gebeuren, zodat men zo weinig mogelijk van de reflecties mist. Het probleem bij deze RF-switches is niet de snelheid, maar wel de voedingsspanning. Alle RF-switches van Analog Devices werken nl. op een voedingsspanning die kleiner is dan 3 V. Aangezien de laagste voedingsspanning reeds aanwezig op het digitaal bord 3,3 V is, is men op zoek gegaan naar een andere component met dezelfde functionaliteit en kwam men bij de multiplexers terecht. Men zou ook analoge schakelaars kunnen kiezen, maar deze zijn trager dan de multiplexers. De multiplexers schakelen even snel als de RF-switches en het probleem met de voedingsspanning is opgelost. Omdat men vier kanalen heeft die moeten kunnen zenden en ontvangen en het omschakelen bij de vier kanalen op hetzelfde moment moet gebeuren, is ervoor geopteerd om een chip te kiezen waarin vier multiplexers zitten. Dit reduceert het aantal controlesignalen en maakt het praktische werk iets eenvoudiger. Het schakelen van de twee-naar-een multiplexer wordt gecontroleerd met behulp van twee controlesignalen: IN en EN . Het enable signaal (EN ) wordt laag gezet indien een van de twee kanalen moet doorgeschakeld worden. Met het IN signaal kan men controleren welk kanaal doorgeschakeld wordt. Figuur 5.11 geeft de waarheidstabel van de twee-naar-een multiplexer (ADG774 [15]). SxA en SxB zijn de twee ingangen van een multiplexer, Dx is de uitgang. Bij het ontvangen van de signalen afkomstig van de transducers maakt men gebruik van een
5.6 Multiplexers
69
EN
IN
D1
D2
D3
D4
Function
1 0 0
X 0 1
Hi-Z S1A S1B
Hi-Z S2A S2B
Hi-Z S3A S3B
Hi-Z S4A S4B
DISABLE IN = 0 IN = 1
Figuur 5.11: Waarheidstabel van de twee-naar-een multiplexer
vier-naar-een multiplexer. Met een gewone A/D convertor kan men nl. slechts een kanaal per keer bemonsteren. Om de vier kanalen met een A/D convertor te kunnen bemonsteren hebben we een schakelaar nodig die kan switchen tussen de vier kanalen. Ook bij de keuze van deze multiplexer was de voedingsspanning belangrijk. Men heeft immers reeds een enkelvoudige voedingsspanning van 3,3 V ter beschikking. Het schakelen van deze vier-naar-een multiplexer gebeurt met behulp van drie controlesignalen: EN, A0 en A1. Het enable signaal (EN) heeft dezelfde functie als bij de twee-naar-een multiplexer. De signalen A0 en A1 controleren, net zoals het IN-signaal bij de twee-naar-een multiplexer, welk kanaal doorgeschakeld wordt. Figuur 5.12 geeft de waarheidstabel van de vier-naareen multiplexer (ADG704 [16]). De ON Switch kolom geeft aan welk kanaal er doorgeschakeld wordt indien een bepaalde combinatie van controlebits wordt aangelegd.
A1
A0
EN
ON Switch
X 0 0 1 1
X 0 1 0 1
0 1 1 1 1
NONE 1 2 3 4
Figuur 5.12: Waarheidstabel van de vier-naar-een multiplexer
DIGITAAL ONTWERP
70
Hoofdstuk 6
Digitaal ontwerp 6.1
Digitaal ontwerp van de zender
Het doel van de zender is de vier transducers aan te sturen met een bepaalde, voor elke transducer verschillende code. Deze code zal later in de signaalverwerking gebruikt worden om te kunnen bepalen waar het ontvangen signaal vandaan komt. Het onderzoek naar deze codes wordt volledig besproken in [17]. Het belangrijkste probleem bij het ontwerp van de zender is dat men vier transducers moet aansturen met vier verschillende signalen, maar dat er slechts een D/A convertor op het digitale platform beschikbaar is. Er moet dus een methode uitgedacht worden om de verschillende transducers tegelijkertijd aan te sturen met het gewenste signaal, gebruik makende van de FPGA en eventueel van de ene D/A convertor.
Oorsponkelijk werd gedacht aan FDMA. Hierbij worden de gewenste analoge signalen in het digitaal domein (in MATLAB of op de FPGA) naar verschillende frequenties verschoven en daarna opgeteld. Via de D/A convertor zendt de FPGA dit FDMA-signaal uit. Bij iedere transducer wordt er een laagdoorlaatfilter en een mixer geplaatst om het gewenste signaal met centrale frequentie 2 MHz uit het FDMA signaal te halen. Het gebruik van mixers is echter niet aan te raden. Men heeft ten eerste te kampen met kruismodulaties. Wil men de kruismodulaties zoveel mogelijk beperken dan moet men de verschillende frequentiebanden verder uit elkaar leggen. Dit heeft voor gevolg dat men ook de samplefrequentie van de D/A convertor moet verhogen en dus ook meer data op de FPGA moet opslaan. Ten tweede wenst men zoveel mogelijk flexibiliteit in het ontwerp, zodat men zoveel mogelijk op de FPGA wil implementeren.
6.1 Digitaal ontwerp van de zender
71
Een methode die veel minder analoge tussenkomst vergt, is het gebruik van pulsbreedtemodulatie (PWM of Pulse Width Modulation). Dit signaal kan aangelegd worden aan een I/O pin van de FPGA en door laagdoorlaatfiltering bekomt men het gewenste analoog signaal. Meer hierover in Paragraaf 6.1.1.
6.1.1
Pulse Width Modulation
Een pulsbreedte gemoduleerde golfvorm kan men op verschillende manieren genereren. De meest eenvoudige manier staat afgebeeld in Figuur 6.1. Het ingangssignaal dat men wenst te moduleren wordt vergeleken met een driehoeksgolf of draaggolf. Indien het ingangssignaal groter is dan de draaggolf wordt het PWM-signaal hoog. Is het lager dan de draaggolf, dan wordt het PWMsignaal laag. Op de figuur heeft het ingangssignaal een frequentie fm en de draaggolf een frequentie fs .
Figuur 6.1: Vorming van het PWM-signaal
Wanneer men kijkt naar het spectrum van het gevormde PWM-signaal in Figuur 6.2 valt meteen op dat het gemoduleerde signaal met frequentie fm teruggevonden kan worden na laagdoorlaatfiltering. Meer informatie over het PWM-signaal kan men vinden in [17].
6.1 Digitaal ontwerp van de zender
72
Figuur 6.2: Frequentiespectrum van het gevormde PWM-signaal
6.1.2
Opbouw digitale zenderblok
Er werd geopteerd om de PWM-signalen niet van op de computer via de FPGA te versturen. Deze signalen bestaan nl. uit een opeenvolging van bits zodat ze niet te veel geheugen innemen op de FPGA. Tevens worden steeds dezelfde codes uitgestuurd zodat het gemakkelijker is om de codes op de FPGA op te slaan i.p.v. telkens opnieuw dezelfde codes van op de computer te versturen. Op Figuur 6.3 staat de volledige zenderstructuur afgebeeld. De vier codes worden opgeslagen in een ROM-geheugen en met behulp van een toestandsmachine wordt het geheugen uitgelezen.
start_rec
reset
almost_end
start_PWM
end_PWM
PWM 1 PWM 2 PWM 3 PWM 4
addr
pwm
addr
pwm
addr
pwm
addr
pwm
clk
Figuur 6.3: Blokschema van het zendergedeelte
In de volgende paragrafen worden de twee belangrijkste blokken uit het zendergedeelte, nl. de geheugenblokken en de toestandsmachine besproken.
6.1 Digitaal ontwerp van de zender
73
Het ROM-geheugen In de FPGA is er meer dan een megabit SRAM-geheugen aanwezig. Om deze makkelijk te kunnen gebruiken werd er door Xilinx een IP-core ontwikkeld. Een IP-core is een herbruikbare net-lijst die een bepaalde functie heeft, hier een geheugen. In Figuur 6.4 worden de verschillende controlesignalen voor dit IP-blokje afgebeeld.
Figuur 6.4: Controlesignalen van het geheugenblok [18]
Bij de configuratie van dit geheugenblok kan men kiezen welk soort geheugen men nodig heeft, een RAM-geheugen of een ROM-geheugen. Omdat men in deze toepassing enkel het geheugen wenst te lezen en er niets moet in schrijven, is een ROM-geheugen aangewezen. De meeste controlesignalen die op Figuur 6.4 staan, zijn hier niet nuttig. Enkel ADDR[m:0], DOUT[n:0] en de klok worden gebruikt om data uit het geheugen te lezen. Ook de breedte en de lengte worden bij de configuratie ingesteld. Aangezien men hier met PWM-signalen werkt, moet het geheugen slechts 1 bit breed zijn. De lengte van het geheugen wordt bepaald door de lengte van de Kasami code, door de bitrate en door de samplefrequentie. De samplefrequentie van het PWM-signaal is gelijk aan de klok die reeds op het digitale platform aanwezig is nl. 64 MHz. De bitrate wordt bepaald door de bandbreedte van de transducers. Deze bandbreedte werd bepaald in [17] en is gelijk aan 400 kHz. De snelheid waarmee men de bits dus kan versturen is 800 kbps. De gebruikte Kasami code bestaat uit 15 bits en voor deze 15 codebits wordt nog een dummybit geplaatst. Deze combinatie van 15 codebits en 1 dummybit wordt BPSK-gemoduleerd [17] op een frequentie van 2 MHz. De frequentie van de driehoeksgolf is 16 MHz (zie Paragraaf 6.1.1) en om wat resolutie te houden in het PWM-signaal wordt het aan 64 MHz gesampled. Als men alles samenvat bekomt men dat er in totaal 1280 geheugenplaatsen nodig zijn om 1 code op te slaan. Het dummybit dat de eerste 80 geheugenplaatsen inneemt, zorgt ervoor dat het systeem reeds in regime verkeert als de eigenlijke code wordt uitgestuurd. Indien men dit niet doet, zouden de
6.1 Digitaal ontwerp van de zender
74
eerste opgeslagen samples vooral afkomstig zijn van overgangsverschijnselen. Men kan de gewenste data in het ROM-geheugen laden met behulp van .COE-files. Een voorbeeld van een .COE-file wordt gegeven in Bijlage A. Belangrijk bij het maken van een dergelijke file zijn de sleutelwoorden MEMORY INITIALIZATION RADIX en MEMORY INITIALIZATION VECTOR. De MEMORY INITIALIZATION VECTOR bevat de eigenlijke data die moet opgeslagen worden in het ROM-geheugen. Het formaat van een dataelementje wordt gespecifi¨eerd in de MEMORY INITIALIZATION RADIX. Deze is 2 bij binaire getallen, 10 bij decimale getallan en 16 bij hexadecimale getallen. Meer info over dit IP-blok is te vinden in [18]. Toestandsmachine in het zendergedeelte De vier verschillende codes die opgeslagen zijn in het geheugen moeten op een gecontroleerde manier naar buiten gebracht worden. Hiervoor gebruikt men een toestandsmachine. De klok waarmee de toestandsmachine in het zendergedeelte gestuurd wordt, is deze van het digitale platform, nl. 64 MHz. Alle andere blokken, zoals het ontvangerblok en het controleblok, gebruiken een klok van 8 MHz. Dit is belangrijk om op te merken daar alle controlesignalen gegenereerd in deze toestandsmachine acht klokcycli aangehouden moeten worden zodat deze zeker gezien worden door de andere blokken. De toestandsmachine, afgebeeld in Figuur 6.5, zorgt ervoor dat het adres op het juiste moment aan het geheugen wordt aangelegd en stuurt controlesignalen naar de andere blokken. De default-toestand is de IDLE-state. Hier gebeurt er niets en wacht de toestandsmachine op het gepaste signaal om in werking te treden. Wanneer het start PWM-signaal, dat gestuurd wordt vanuit het controle-blok (zie Paragraaf 6.3), hoog komt, verandert de toestand van IDLE naar S0. In toestand S0 wordt het signaal start rec hoog gebracht. Dit signaal geeft aan dat de FPGA de ontvangen data mag opslaan. Men blijft zeven klokcycli in toestand S0 en dan gaat men over naar toestand S1. In toestand S1 wordt het start rec-signaal nog een klokcyclus hoog gezet. In totaal wordt het start rec-signaal dus acht klokcycli hoog gezet, zodat het gelezen kan worden door een toestandsmachine die met een klok van 8 MHz werkt. In deze toestand, toestand S1, wordt eveneens het eerste adres aan het geheugen aangelegd zodat de volgende klokcyclus het eerste PWM-bit wordt uitgestuurd. Men start het ontvangen van de data reeds hier zodat men het uitgezonden signaal kan gebruiken als tijdsreferentie. Op deze manier kan men nl. exact de tijdsvertraging van de signalen die door de borst propageren, bepalen.
6.1 Digitaal ontwerp van de zender
75
IDLE
start_PWM
S0
count
S1
S2
addr
S3
Figuur 6.5: Toestandsmachine in het zendergedeelte
Toestand S2 is in deze toestandsmachine de belangrijkste toestand. Hier wordt iedere klokcyclus het geheugenadres vernieuwd. Zolang men zich niet op de laatste geheugenlocatie bevindt, blijft men in deze toestand. Wanneer men bijna op het einde van het geheugen is aangekomen, wordt het almost end-signaal acht klokcycli hoog gebracht. Het almost end-signaal zorgt ervoor dat de versterker precies na het laatste PWM-bit een nieuwe versterking krijgt, zodat de reflecties meer versterkt worden dan het referentiesignaal. Indien het adres de laatste geheugenlocaties heeft bereikt, wordt het end PWM-signaal hoog gebracht. Dit signaal geeft aan dat alle bits uit het geheugen uitgestuurd zijn en dat het ontvangen van de akoestische signalen mag beginnnen. Omdat men wil dat de multiplexer omschakelt van zenden naar ontvangen op het moment dat de laatste PWM-bit is uitgestuurd, moet het end PWM-signaal 8 klokcycli voordat het echte einde van het geheugen bereikt is, hoog gezet worden. De reden hiervoor is opnieuw dat de toestandsmachines die de multiplexer controleren, werken aan een klok van 8 MHz. Men zou ook het end PWM-signaal hoog kunnen brengen nadat alle PWM-bits uitgestuurd zijn, maar dan zou de multiplexer te laat omschakelen en zou men een deel van de ontvangen reflecties kunnen missen. Als het einde van het PWM-signaal bereikt is, keert men terug naar de IDLEtoestand waar men wacht op een nieuw start-signaal.
6.2 Digitaal ontwerp van de ontvanger
6.2
76
Digitaal ontwerp van de ontvanger
De analoge signalen afkomstig van de vier transducers moeten op een of andere manier in de FPGA opgeslagen worden. Men heeft dus nood aan een of meerdere A/D convertoren. Oorspronkelijk dacht men om voor ieder kanaal afzonderlijk een A/D convertor te plaatsen. Op die manier kan men de vier kanalen tegelijk bemonsteren aan de gewenste samplefrequentie. Het probleem hierbij is dat het aantal I/O pinnen van de FPGA die toegankelijk zijn op het digitale platform, beperkt is, zodat niet men niet alle nodige signalen met de FPGA zou kunnen verbinden. Een tweede configuratie maakt gebruik van de ene A/D convertor reeds aanwezig op het digitale platform. Indien men hier de samplefrequentie, nodig om een signaal afkomstig van een transducer te bemonsteren, vermenigvuldigt met het aantal kanalen, bekomt men de frequentie nodig om alle metingen tegelijkertijd te kunnen uitvoeren. Om te schakelen tussen de verschillende kanalen, maakt men gebruik van een multiplexer die om beurt een van de kanalen doorschakelt. Ook hier rees er een probleem, nl. het impulsantwoord van het anti-aliasing filter. Wanneer men de vier kanalen wenst te bemonsteren aan 8 MHz moet men de vier-naar-een multiplexer laten schakelen aan 32 MHz. Dit wil zeggen dat ieder kanaal 31,25 ns wordt doorgeschakeld. Het impulsantwoord van het anti-aliasing filter is echter veel groter dan die 31,25 ns. Het signaal dat men zou bemonsteren met de A/D kan dus nooit in regime verkeren. De uiteindelijke configuratie maakt net zoals de vorige configuratie gebruik van de ene A/D convertor en van een vier-naar-een multiplexer. Hier worden de vier kanalen niet sequenti¨eel bemosterd, maar afzonderlijk. De PWM-signalen worden vier keer na elkaar uitgestuurd en de multiplexer schakelt vier keer een andere transducer door zodat de ontvangen signalen een keer per transducer worden opgeslagen. Omdat de huidige testopstelling statisch is, komt deze configuratie op hetzelfde neer als de voorgaande.
6.2.1
Samplefrequentie
Bij de signalen afkomstig van de transducers is de hoogste frequentie gelijk aan 2,2 MHz. De minimale samplefrequentie moet hier dus gelijk zijn aan 4,4 MHz om aliasing te voorkomen. Men heeft ervoor gekozen om een samplefrequentie van 8 MHz te nemen. Deze frequentie is makkelijk af te leiden van de basisklok op de FPGA en is ruim voldoende om aan het Nyquistcriterium te voldoen. Men kon een nog hogere samplefrequentie gekozen hebben, maar dan heeft men ook meer geheugen nodig op de FPGA. Om zoveel mogelijk geheugen te sparen kiest men
6.2 Digitaal ontwerp van de ontvanger
77
hier voor 8 MHz De stoorsignalen, die evt. een hogere frequentie zouden hebben dan 2,2 MHz en dus toch aliasing zouden veroorzaken, worden onderdrukt door een anti-aliasing filter. Het is een banddoorlaatfilter met centrale frequentie 2 MHz en een bandbreedte van 2,5 MHz. Deze zorgt ervoor dat de niet nuttige signalen zoveel mogelijk onderdrukt worden. Meer over dit filter is te vinden in [17].
6.2.2
Opbouw digitaal ontvangerblok
Het ontvangerblok, afgebeeld in Figuur 6.6, zorgt voor de verwerking en de transfer van de ontvangen samples. Omdat men hier slechts een samplefrequentie van 8 MHz nodig heeft (zie Paragraaf 6.2.1) en de A/D convertor aan 64 MHz samplet, is de hoeveelheid data die binnenkomt op de FPGA veel te groot. Om die grote hoeveelheid data te reduceren en om aan een samplefrequentie van 8MHz te komen, worden de binnenkomende sigalen gedecimeerd met een factor acht. Dit wil zeggen dat voor iedere acht samples die binnen komen, er een wordt opgeslagen. Dit decimeren gebeurt in het blok AD6645 met behulp van veertien flipflops (= een voor elke bit) en een klok van 8 MHz.
stop_rec
FF EF USB_clk USB_trig ready
FF EF
FiD 16
FIFOADR
USB_clk 2
trig_w
start_rec
SLOEn SLWRn SLRDn
stop_rec data_update
reset
fifo_wren
RDen
reset
DATAin
clk
16
AD_data 14
14
16
fifo_empty
Figuur 6.6: Blokschema van het ontvangergedeelte
De data afkomstig van de A/D convertor is 14 bits breed. Zoals eerder vermeld (zie Paragraaf 5.4) is de woordbreedte in de FX2 slave FIFO’s 16 bits. Men heeft dus een conversie nodig van 14 bits
6.2 Digitaal ontwerp van de ontvanger
78
naar 16 bits. Aangezien de bits afkomstig van de A/D convertor in twee complement mode naar buiten worden gebracht (zie Paragraaf 5.2), moet men voor deze conversie enkel het tekenbit naar de twee hoogste posities kopi¨eren. Dit uitbreiden gebeurt in het blok 14 to 16. Vervolgens worden deze bits opgeslagen in de FIFO-structuur. USB trig en ready zijn de controlesignalen voor de transfer van de data naar de computer. Wanneer deze beide signalen hoog zijn, wil dit zeggen dat zowel de computer (USB trig) als de FPGA (ready) klaar zijn om data te ontvangen resp. te ontvangen. FIFO De data afkomstig van de transducers wordt aan 8 MHz gesampled terwijl de USB-interface een klok gebruikt van 48 MHz. Men heeft dus een FIFO-structuur nodig om de data van het ene klokdomein naar het andere te brengen. Zoals voor geheugenblokken bestaat er voor een FIFO-structuur eveneens een IP-core. In Figuur 6.7 worden de verschillende controlesignalen voor dit IP-blokje afgebeeld.
Figuur 6.7: Controlesignalen van de FIFO-structuur [19]
Men ziet dat er in de FIFO-structuur twee ingangen zijn voor een klok, nl. een om de data te lezen (rd clk) en een om de data te schrijven (wr clk). Dit laat toe de data tussen de twee verschillende klokdomeinen te transfereren. De meeste van de signalen aan de rechterkant van de figuur zijn controlesignalen. Deze signalen worden in dit ontwerp niet gebruikt, behalve dan het empty-signaal dat aangeeft wanneer de FIFO-structuur leeg is. Wanneer het WR EN-signaal hoog staat kan men data via de DIN[N:0]-poort in de FIFO schrijven. Langs de andere kant kan
6.2 Digitaal ontwerp van de ontvanger
79
men, wanneer het RD EN-signaal hoog staat data via de DOUT[N:0]-poort uit de FIFO lezen. USB FIFO Het USB FIFO-blok verzorgt de interface tussen het interne van de FPGA en de FX2. Zoals eerder al aangegeven in Paragraaf 5.4, wordt de interface mogelijk gemaakt door het gebruik van de slave FIFO structuren die ingebouwd zijn in de FX2. Figuur 6.8 geeft een overzicht van de externe interfacesignalen. De FPGA treedt op als master en initialiseert transfers door gepast de juiste controlesignalen uit te sturen. Dit interface-blok werd ontworpen door INTEC design. Het is gemaakt om data te zenden van de FX2 naar de FPGA en omgekeerd, om data te zenden van de FPGA naar de FX2. Hier wordt dit blok enkel gebruikt om data van de FPGA naar de FX2 te versturen. Enkel op dit deel van het ontwerp wordt wat dieper ingegaan.
IFCLK Endpoint 6 EF Endpoint 2 FF SLOE
CYPRESS FX2
SLRD
FPGA
SLWR FiD [15:0] FIFOADR [1:0] TRIG
Figuur 6.8: FX2 slave FIFO interface signalen
De Endpoint2 (EP2) buffer (zie Figuur 5.8) wordt hier gebruikt om de data afkomstig van de FPGA op te transfereren. Figuur 6.9 toont de toestandsmachine die de slave FIFO controleert. Om een transfer van de FPGA naar de FX2 te starten, moet de FX2 een trigger signaal hoog brengen. Dit signaal maakt geen deel uit van de FX2 slave FIFO interface, maar is een gewone I/O pin die gecontroleerd moet worden door de microcontroller. Deze is op zijn beurt controleerbaar vanuit de computer, zodat de transfer van data kan gestart worden door de computer. Als het trigger signaal hoog staat gaat de toestandsmachine over naar toestand TX1. In toestand TX0 wordt de waarde van het FF-signaal afkomstig van de FX2 gecontroleerd. Is dit
6.2 Digitaal ontwerp van de ontvanger
80
IDLE
TRIG
TX0
FF
TX1
TX2
TX4
Figuur 6.9: Toestandsmachine in de USB FIFO
signaal hoog, dan wil dit zeggen dat de Endpoint 2 buffer op de FX2 niet vol zit en dat hij data kan ontvangen. Als het FF-signaal laag is, mag er geen data verstuurd worden en keert de toestandsmachine terug naar de IDLE-toestand. Als het FF-signaal hoog staat wordt overgegaan naar de volgende toestand. In toestand TX1 wordt het SLWR-signaal laag gezet en wordt er een transfer van 256 16-bit woorden gestart. Toestanden TX2-TX4 zijn wachttoestanden. Het USB FIFO-blok die de FX2 slave FIFO interface controleert, genereert verschillende signalen die toelaten om te communiceren met structuren in de FPGA. Figuur 6.10 geeft een overzicht van de verschillende signalen die door deze component worden gegenereerd. De interne interface is ontworpen om te communiceren met een FIFO-structuur, die toelaat data over te brengen tussen verschillende klokdomeinen. De poort WRen genereert het write enable signaal voor de output DATAout[15:0] en de poort RDen genereert het read enable signaal voor de input DATAin[15:0]. Het spreekt voor zich dat hier enkel de DATAin-poort gebruikt wordt, daar men enkel data naar de computer wenst te zenden. Toestandsmachine in het ontvangergedeelte De toestandsmachine zorgt ervoor dat het ontvangen van de samples op het gewenste ogenblik start en op het gewenste ogenblik stopt. Wanneer alle nodige samples opgeslagen zijn in de FIFO zorgt het REC-blok ervoor dat alle data correct naar de USB FIFO wordt gestuurd. Figuur 6.11
6.2 Digitaal ontwerp van de ontvanger
81
External Interface
Internal Interface
IFCLK
DATAout [15:0]
Endpoint 6 EF
DATAin [15:0]
Endpoint 2 FF
WRen
SLOE SLRD SLWR
RDen
USB FIFO MASTER
reset
FiD [15:0] FIFOADR [1:0] TRIG
Figuur 6.10: Overzicht van de USB FIFO component
toont de ontworpen toestandsmachine.
IDLE
start_rec
T0
T1
count
Figuur 6.11: Toestandsmachine in het ontvangergedeelte
De default-toestand is de IDLE-state. Wanneer het start rec-signaal hoog komt, wordt de volgende toestand, toestand T0. In toestand T0 wordt het fifo wren-signaal hoog gebracht, zodat de vanaf dan de ontvangen samples worden opgeslagen in de FIFO-structuur. De samples worden in de asynchrone FIFO opgeslagen tot er 2560 samples binnengekomen zijn. Aangezien de samplefrequentie 8 MHz is (T = 125 ns), komt dit overeen met een meting van 320 µs of ongeveer 48 cm (experimenteel bepaalde snelheid in water ± 1500 m/s). In de huidige proefopstelling
6.3 Controlegedeelte
82
is 47 cm ongeveer tweemaal de grootste afstand dat het signaal kan afleggen. Aangezien men niet zo ge¨ınteresseerd is in meerdere reflecties die terugkeren via de wand, zou dit voldoende moeten zijn. Het aantal samples dat reeds opgeslagen is, wordt bijgehouden door een teller. Wanneer alle nodige samples zijn opgeslagen, wordt het stop rec-signaal hoog gebracht. Dit is het signaal dat ervoor zorgt dat de vier-naar-een multiplexer wordt omgeschakeld en men op een ander kanaal kan beginnen meten.
6.3
Controlegedeelte
Het belangrijkste blok in dit digitaal ontwerp is het controleblok. Dit zorgt ervoor dat de PWM-signalen op het juiste moment worden uitgestuurd, dat de multiplexers op het juiste moment omgeschakeld worden en dat de instelling van de digitale versterker op het juiste moment verandert. Figuur 6.12 geeft een overzicht van het controleblok.
MUX4_en
switchMUX4
start
MUX4_a1
stop_rec
MUX4_a0
start_rec end_PWM
start_PWM
almost_end
ready
start_PWM ready
fifo_empty switchMUX2
MUX2_en
clk reset
prog
MUX2_in
8 MHz VGA_data reset
SPI
VGA_latch VGA_clk
FSM
SPI_start gain 8
Figuur 6.12: Blokschema van het controlegedeelte
Het controleblok bestaat uit een toestandsmachine en een drietal deelblokken om de verschillende hardwarecomponenten aan te sturen. De toestandsmachine zorgt voor de aansturing van
6.3 Controlegedeelte
83
zowel de deelblokken in het controlegedeelte als voor het aansturen van het zendergedeelte en het ontvangergedeelte. Het blok MUX 4:1 CONTROL en het blok MUX 2:1 CONTROL zorgen ervoor dat resp. de vier-naar-een multiplexer en de twee-naar-een multiplexer, de juiste signalen toegestuurd krijgen. Het VGA CONTROL blok zorgt voor de juiste interface naar de digitale versterker toe en voor het aanpassen van de versterking.
In de volgende paragrafen worden de verschillende deelblokken van het controlegedeelte besproken.
6.3.1
Toestandsmachine
De toestandsmachine, het FSM-blok in Figuur 6.12, genereert en ontvangt verschillende signalen die ervoor zorgen dat alle blokken in het hele digitale ontwerp op elkaar zijn afgestemd. Deze toestandsmachnine ontvangt ook het start-signaal van de computer om een meting te starten. De verschillende toestandsovergangen zijn afgebeeld in Figuur 6.13.
De default-toestand is opnieuw de IDLE-state. Wanneer het start-signaal, afkomstig van de computer, hoog wordt gezet, gaat men over naar de volgende toestand, toestand C0. In deze toestand wordt het signaal gegeven aan het VGA CONTROL-blok dat de versterking van de digitale versterker ingesteld moet worden. Wanneer deze toestandsmachine een signaal terugkrijgt van datzelfde VGA CONTROL-blok, dat aangeeft dat de versterking ingesteld is, wordt overgegaan naar toestand C1. Hier wordt het start PWM-signaal voor het zenderblok hoog gezet zodat het aansturen van de transducers begint. In de volgende toestand, toestand C2, wordt gewacht tot het almost end-signaal, afkomstig van het PWM-blok, hoog komt. Wanneer dit het geval is, wordt het prog-signaal hoog gezet. Dit signaal zorgt ervoor dat de toestandsmachine die de versterker aanstuurt, in werking treedt. Op het einde van het PWM-signaal moet er immers een grotere versterking ingesteld worden. De reflecties zullen nl. een veel kleinere amplitude hebben dan de overspraak. Na het hoog zetten van het prog-signaal wordt overgegaan naar toestand C3. In deze toestand wordt gewacht op het end PWM-signaal. Indien het PWM-signaal volledig is uitgestuurd, wordt het signaal switchMUX2 hoog gebracht. Dit signaal zorgt ervoor dat de multiplexer omschakelt van zenden naar ontvangen. Nadat de multiplexer is omgeschakeld, wordt er in toestand C4 gewacht tot alle nuttige samples opgeslagen zijn. Dit is voor de toe-
6.3 Controlegedeelte
84
IDLE
start
C0
progd
C1
C2
almost_end
C3
end_PWM
C4
stop_rec
C5
meas
C6
fifo_empty
Figuur 6.13: Toestandsmachine in het controlegedeelte
standsmachine het signaal om ook de vier-naar-een-multiplexer en de twee-naar-een-multiplexer te laten omschakelen. De volgende stap is immers opnieuw de singalen verzenden en een nieuwe meting te doen met een andere transducer. In toestand C5 controleert men hoeveel metingen er reeds gedaan zijn. Indien er nog geen vier metingen zijn uitgevoerd, keert de toestandsmachine terug naar toestand C0 en start er een
6.3 Controlegedeelte
85
nieuwe meting. Indien er wel al vier metingen uitgevoerd zijn, gaat de toestandsmachine naar toestand C6. In toestand C6 wordt het ready-signaal hoog gehouden totdat de FIFO uit het ontvangerblok leeg is. Dit ready-signaal is het trigger signaal voor het USB FIFO blok, dat zegt dat er genoeg data in de FIFO is opgeslagen om verstuurd te worden.
6.3.2
MUX 4:1 CONTROL-blok
Het MUX 4:1 CONTROL-blok zorgt voor de aansturing van de vier-naar-een multiplexer. Na iedere meting wordt het switchMUX4-signaal hoog gezet en krijgen de controlebits a0 en a1 een nieuwe waarde. Voor iedere combinatie van de bits wordt een ander kanaal doorgeschakeld (zie waarheidstabel, Figuur 5.12), zodat de vier kanalen kunnen bemonsterd worden met een A/D convertor. De vier-naar-een multiplexer ADG704 heeft een vertraging van 20 ns [16], tussen het ontvangen van de controlesignalen en het werkelijke sluiten van de schakelaar. Deze tijd is veel kleiner dan de periode van 125 ns waaraan het controleblok werkt. De multiplexer zal dus al gesloten zijn voordat een nieuwe meting gestart wordt.
6.3.3
MUX 2:1 CONTROL-blok
Het MUX 2:1 CONTROL-blok zorgt voor de aansturing van de twee-naar-een multiplexer. In de initi¨ele toestand is het zendkanaal gesloten. Wanneer het PWM-signaal volledig is uitgestuurd, wordt het switchMUX2-signaal hoog gezet. Dit is voor het MUX 2:1 CONTROL-blok het signaal om de multiplexer om te schakelen van zenden naar ontvangen. De tijd die de twee-naar-een multiplexer ADG774 nodig heeft om over te schakelen van zenden naar ontvangen bedraagt 14 ns [15]. Dit is veel kleiner dan de periode van 125 ns waaraan gesampled wordt, zodat er geen samples verloren gaan.
6.3.4
VGA CONTROL-blok
De controle van de variable gain amplifier is wat moeilijker dan het aansturen van de multiplexers. Hier moet men geen pinnen hoog brengen, maar moet men een interface maken die ervoor zorgt dat de controlebits seri¨eel binnengeklokt kunnen worden. Het SPI-onderdeel (zie Figuur 6.12) van het VGA CONTROL-blok zorgt voor deze interface.
6.3 Controlegedeelte
86
Voor het overige bestaat het VGA CONTROL-blok enkel nog uit een toestandsmachine die ervoor zorgt dat op het juiste moment de nieuwe databits voor de versterker worden verzonden. SPI interface Hoe werkt SPI?
De Serial Peripheral Interface of kortweg SPI, is een eenvoudige standaard
om bijna alle digitale elektronica die een geklokte seri¨ele stroom van bits aanvaard, te controleren. Deze interface werd ontworpen door Motorola. Veel re¨ele digitale systemen gebruiken randapparatuur die bepaalde functies uitvoeren. De communicatie met die randapparatuur is nodig, maar moet meestal niet snel te zijn. Hiervoor zijn seri¨ele interfaces, zoals SPI, voordelig omdat deze minder input- en output-pinnen nodig hebben. Ook in dit ontwerp is dit nuttig omdat het aantal I/O pinnen van de FPGA dat toegankelijk is, beperkt is.
De SPI interface is gebaseerd op een 8 bit schuifregister. De klok wordt geleverd door een master, hier de FPGA. Deze klok wordt alleen gegenereerd wanneer er data moet geshift worden en blijft dus laag tussen twee transfers. Zowel in de slave als in de master is een 8 bit schuifregister ingebouwd voor het zenden en het ontvangen van data. In Figuur 6.14 wordt de configuratie afgebeeld. FPGA CS
MASTER
SLAVE SCLK MOSI
7
0
7
MISO
Figuur 6.14: SPI interface
De verschillende signalen gebruikt bij deze interface zijn: • SCLK - serial clock • MISO - master input, slave output • MOSI - master output, slave input • CS - chip select
0
6.3 Controlegedeelte
87
De SPI interface is een bus-interface en met behulp van deze vier signalen kan men een aantal slaves aansturen. Het chip select signaal, dat wordt gecontroleerd vanuit de master, zorgt er immers voor dat de signalen afkomstig van de master slechts gelezen worden door de geselecteerde slave. De klok, nodig om de data seri¨eel binnen te klokken, wordt eveneens gecontroleerd vanuit de master. De signalen MISO en MOSI laten toe om data tussen de master en de slave uit te wisselen. Indien men enkel data in een richting moet sturen, heeft men slechts een van deze signalen nodig. In Figuur 6.15 worden de interfacesignalen afgebeeld die hier nodig zijn om de versterker aan te sturen. TDS DATA (PIN 14)
MSB
MSB-1 MSB-2 MSB-3 LSB+3 LSB+2 LSB+1 TCK
LSB
TPW
CLCK (PIN 13) TES
TEH 03692-039
LTCH (PIN 12)
Figuur 6.15: Verschillende SPI interface signalen [14]
De namen van de signalen in Figuur 6.15 zijn verschillend van deze, maar ze stellen dezelfde signalen voor: CLCK is de klok, LTCH is het chip select signaal en DATA is het MOSI-signaal. Aangezien enkel de versterker data moet ontvangen, wordt het MISO-signaal niet gebruikt.
Implementatie van SPI op de FPGA Om de versterkingscode over te brengen van de FPGA naar de digitale versterker, wordt hier gebruik gemaakt van een SPI interface. De timingvereisten voor de interface bij de AD8370 zijn afgebeeld in Figuur 6.16. Men ziet dat de minimale klokperiode van het SPI-kloksignaal 50 ns bedraagt. Aangezien het volledige controleblok reeds een klok van 8 MHz gebruikt en de versterker deze kloksnelheid aankan (periode bij 8 MHz is 125 ns), werkt deze SPI interface eveneens aan 8 MHz. Het blokschema van de SPI-interface ge¨ımplementeerd op de FPGA, is te zien op Figuur 6.17. Om de data seri¨eel naar buiten te kunnen klokken heeft men een schuifregister nodig. Dit schuifregister is afgebeeld in Figuur 6.18. Wanneer het load-signaal hoog komt, wordt de parallelle
6.3 Controlegedeelte
88
Parameter Clock Pulse Width (TPW) Clock Period (TCK) Setup Time Data vs. Clock (TDS) Setup Time Latch vs. Clock (TES) Hold Time Latch vs. Clock (TEH)
Min 25 50 10 20 10
Unit ns ns ns ns ns
Figuur 6.16: Timingvereisten SPI interface [14]
data_in SPI_data
8
SPI_start reset
load
SPI_latch
SPI_l clk_select CE
8 MHz
C1 C0
‘0’
D0
‘1’
D1
‘0’
SPI_clk
PRE CLR
Figuur 6.17: Blokschema van het SPI interface blok
data in het schuifregister geladen via de multiplexers. Is het load-signaal laag, dan wordt de data op een stijgende klokflank doorgegeven van flipflop naar flipflop.
load par_in 8
7
FD
6
FD
5
FD
4
3
FD
FD
2
FD
FD
FD ser_out
‘0’
clk
Figuur 6.18: SPI interface schuifregister
Bij een SPI interface verandert de data op een dalende klokflank. Het schuifregister dat de data seri¨eel naar buiten brengt, werkt met dezelfde 8 MHz klok als de toestandsmachine. Om nu een SPI kloksignaal te maken dat 180o in fase verschoven is t.o.v. het datasignaal, maakt men
6.3 Controlegedeelte
89
gebruik van een DDR-flipflop. Een dergelijke flipflop klokt data naar de output zowel op de stijgende als de dalende klokflank. Indien men hier een NOT-poort neemt om de 8 MHz-klok te inverteren en deze gebruikt als SPI clk, geeft dit problemen in de Xilinx-tools. Deze wil nl. geen kloknet met een I/O pin verbinden. Om nu het SPI-kloksignaal te bekomen m.b.v. de DDR-flipflop, wordt deze aangestuurd met de klok van 8 MHz. Op een stijgende klokflank wordt dan een ’0’-bit naar buiten gebracht en op een dalende een ’1’-bit. Om ervoor te zorgen dat de SPI-klok enkel maar gevormd wordt indien de versterking aangepast moet worden, is het DDR-blok enkel actief als het clk select-signaal hoog staat. Het chip enable signaal, hier latch signaal, wordt gegenereerd in de toestandsmachine die de SPI interface controleert. Ook het clk select-signaal voor de DDR-flipflop en het load-signaal van het schuifregister worden in diezelfde toestandsmachine gecontroleerd. Deze toestandsmachine staat afgebeeld in Figuur 6.19.
IDLE
SPI_start
S0
S1
count
S2
Figuur 6.19: Toestandsmachine voor de controlesignalen in het SPI blok
In de IDLE-toestand wacht men op het SPI start-signaal om de toestandsmachine te starten. Als dit signaal hoog komt, gaat de toestandsmachine naar toestand S0 waar het load-signaal, om de parallelle data in het schuifregister in te laden, hoog wordt gezet. Daarna blijft men in 8 klokcycli in toestand S1. In deze toestand wordt het latch-signaal laag gezet en wordt het clk select-signaal hoog gebracht, zodat het DDR-blok de SPI clk naar buiten brengt. Tijdens deze toestand wordt de data verstuurd naar en gelezen door de versterker. Wanneer de 8 klokcycli verstreken zijn, wordt overgegaan naar toestand S2. Toestand S2 stelt het laag komen van het clk select-signaal met 1 klokcyclus uit, zodat het SPI clk-signaal opnieuw laag komt
6.3 Controlegedeelte
90
en laag blijft. Na toestand S2, gaat de toestandsmachine terug naar de IDLE-toestand waar gewacht wordt op een nieuw start-signaal. Figuur 6.20 toont een simulatie van het SPI interface-blok. De databits die worden verstuurd zijn 10011111. Men ziet dat de SPI-klok enkel actief is als er data verstuurd wordt en dat het latch-signaal (equivalent aan het chip enable) laag komt. De snelheid waarmee bits verstuurd worden is 8 bits per µs.
Figuur 6.20: Simulatie van de SPI interface
Toestandsmachine in het VGA CONTROL-blok De toestandsmachine die ervoor zorgt dat de gewenste versterking wordt aangelegd, is afgebeeld in Figuur 6.21. In een re¨eel systeem zou men hier bijvoorbeeld iedere µs de versterking kunnen aanpassen, om zo te anticiperen op de attenuatie in het borstweefsel. In de huidige proefopstelling wordt water als medium gebruikt en is de attenuatie te verwaarlozen. De versterking wordt hier maar twee maal veranderd, om het principe aan te tonen. Voor het uitsturen van het PWM-signaal wordt een eerste versterking aangelegd, die ervoor zorgt dat het referentiesignaal sterk genoeg binnen komt. Nadat het PWM-signaal volledig is uitgestuurd, wordt de versterking opgedreven om de zwakke reflecties te ontvangen. De default-toestand is de IDLE-state. Wanneer het prog-signaal afkomstig van de toestandsmachine uit het controleblok, hoog komt, gaat men over naar toestand C0. In deze toestand wordt de nieuwe versterkingscode ingeladen en wordt er aan de SPI-toestandsmachine een signaal gegeven dat deze de versterkingscode mag doorsturen. Toestand C1 is een wachttoestand, die ervoor zorgt dat de PWM-signalen niet worden uitgestuurd voordat de versterking is ingesteld. In toestand C2, wordt gewacht op een nieuw prog-signaal om een nieuwe versterking
6.4 Overzicht
91
IDLE
PROG
C0
C1
C2
PROG
C3
C4
Figuur 6.21: Toestandsmachine in het VGA CONTROL-blok
in te stellen. In toestanden C3 en C4 wordt de versterking opnieuw aangepast, wordt de SPItoestandsmachine gestart en wacht men tot de versterker de nieuwe versterking heeft ingesteld vooraleer men overgegaat naar de IDLE-toestand.
6.4
Overzicht
In Figuur 6.22 wordt een overzicht gegeven van het ontwerp op de FPGA. Alle ingangen staan aan de linkerzijde van de figuur, alle uitgangen aan de rechterzijde. Op deze figuur zijn alle voorgaande blokken afgebeeld, samen met nog een drietal andere blokken, nl. een SHIFT REG-blok en twee DCM-blokken. Het SHIFT REG-blok is een S/P-omzetter. Deze omzetter wordt aangestuurd vanuit de FX2 met de signalen set din en set clk. Deze signalen vormen een interface om data seri¨eel uit de FX2 naar buiten te klokken. Het signaal set din bevat controlebits. Met behulp van deze bits, verstuurd vanuit MATLAB en een AND-poort per PWM-signaal, kan men vanuit de computer te kiezen welke transducer(s) een code uitstuurt. De blokken USB clk en clk zijn, Digital Clock Manager blokken (zie Paragraaf 5.3). Deze zorgen voor de nodige buffering van de 48 MHz USB-klok en de 64 MHz van het bord. Met behulp van
6.4 Overzicht
92
deze klokken kunnen ook andere klokken bekomen worden. In dit ontwerp wordt de 64 MHz klok gedeeld door acht om de klok van 8 MHz te bekomen. De DCM-blokken zorgen eveneens voor de distributie van de klok over de volledige FPGA en compenseren de tijdsvertraging opgelopen door routering.
De data die wordt opgeslagen op de FPGA, moet nog getransfereerd worden naar de computer om in MATLAB te kunnen verwerkt worden. Dit gebeurt met MEX-files. Deze zorgen voor een interface tussen de C code die de hardware aanstuurt en de interne structuur van MATLAB. In Bijlage B wordt de code, die voor deze interface zorgt, verder uitgewerkt.
Figuur 6.22: Overzicht van de verschillende blokken ge¨ımplementeerd in de FPGA
set_din
set_clk
hold
clk_b
clk
USB_clk
start
FF
USB_trig EF
14
locked
64 MHz
8 MHz
locked
48 MHz
FF
EF
USB_trig
AD_data
stop_rec
end_PWM
start_rec
PWM_select (1:4)
64 MHz
reset
start_PWM
AD_data
almost_end reset
end_PWM
fifo_empty
start_PWM
start
stop_rec
ready
8 MHz
16
2
PWM 4
PWM 3
PWM 2
PWM 1
MUX2_en MUX2_in MUX4_en MUX4_a1 MUX4_a0 VGA_latch VGA_clk VGA_data
FiD
6.4 Overzicht 93
almost_end
start_rec
reset
ready
fifo_empty
8 MHz
48 MHz
SIGNAALVERWERKING
94
Hoofdstuk 7
Signaalverwerking 7.1
Inleiding
Het signaalverwerkingsalgoritme beschreven in dit hoofdstuk zal in hoofdzaak gebruik maken van de time-of-flight informatie. Deze informatie kan men uit de ontvangen signalen halen door middel van autocorrelatietechnieken. Om de precisie van de afstandsmetingen te laten toenemen, kan nog gebruik gemaakt worden van het faseverschil tussen het uitgezonden signaal en het ontvangen signaal.
7.2 7.2.1
Methodes uit de literatuur Uitzenden en detecteren van een puls
Wanneer men een transducer gebruikt als zender en ontvanger dan is de time-of-flight de tijd die de ultrasone golf nodig heeft om te propageren vanuit de zender naar het reflecterend object en terug naar de zender. De afstand tussen transducer en reflecterend object wordt dan gegeven door d=
(c × Tf ) 2
(7.1)
waarbij c de propagatiesnelheid in het medium is en Tf de time-of-flight. In de puls-echo methode wordt een korte puls gegenereerd door de transducer om daarna de reflectie terug te detecteren en zo een schatting te maken van de time-of-flight. Men detecteert gereflecteerde pulsen door na te gaan of een zekere tresholdwaarde overschreden wordt. Het
7.2 Methodes uit de literatuur
95
nadeel van deze methode is dat de resolutie eerder beperkt is, de ontvangen echo zal immers onderhevig zijn aan attenuatie, aan ruis, aan interferentie met andere pulsen,... . Een mathematisch model voor het uitgezonden ultrasoon signaal bij de puls-echo methode is in de literatuur terug te vinden in [20] en wordt gegeven door:
t
s(t) = As tm e− u cos(2πfs t + ψs )
(7.2)
waarbij As , fs , ψs respectievelijk de amplitude, de frequentie en de fase zijn van de uitgezonden puls. De parameters m ≥ 0 en u > 0 zijn afhankelijk van de transducer en modelleren de eindige stijg- en daaltijd van de puls. Ze zijn afhankelijk van de bandbreedte van de transducer. Door die eindige stijg- en daaltijd wordt het detecteren van begin en einde van de gereflecteerde puls moeilijker, ten koste van de nauwkeurigheid van de time-of-flight bepaling. In Figuur 7.1 wordt het verloop van de puls die voldoet aan uitdrukking 7.2 weergegeven voor As = 1, fs = 2 MHz, ψs = 0 , m = 6 en u = 1−6 .
1
0.8
0.6
0.4
Amplitude
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
0.2
0.4
0.6
0.8
1 Tijd (sec)
1.2
1.4
1.6
1.8
2 -5
x 10
Figuur 7.1: Eindige stijg- en daaltijd bij uitgezonden puls in puls-echo methode
Wanneer de transducer omschakelt van zendmode naar ontvangstmode zal het ontvangen signaal volgende vorm aannemen:
r(t) = Ar (t − Tf )m e−
t−Tf u
cos(2πfs (t − Tf ) + ψs ) + n(t)
(7.3)
7.2 Methodes uit de literatuur
96
waarbij Ar , fr , ψr respectievelijk de amplitude, de frequentie en de fase zijn van de ontvangen puls. Tf is de time-of-flight en het signaal n(t) vertegenwoordigt de distorsie en de ruis die het signaal be¨ınvloeden bij de propagatie door het medium. De amplitude van de smalbandige puls kan enkel afhankelijk worden verondersteld van de attenuatie in het medium. Zoals reeds aangehaald, neemt de attenuatie toe met de frequentie. Ze is natuurlijk ook nog afhankelijk van de aard van het medium. Het detecteren van de puls wordt door deze factor en door de ruis en de distorsie bemoeilijkt. Om uiteindelijk een schatting te maken van de time-of-flight zal de omhullende van het signaal worden bepaald. Fouten te wijten aan een frequentieverschuiving of faseonzekerheid worden hiermee ge¨elimineerd. De omhullende van het ontvangen signaal kan als volgt worden beschreven:
re (t) = Ar (t − Tf )m e−
Na bemonstering met samplefrequentie fsampling =
t−Tf
1 T
re (nT ) = Ar (nT − Tf )m e−
u
+ n(t)
(7.4)
aan de ontvangstzijde wordt dit
nT −Tf u
+ n(nT )
(7.5)
Op dit signaal zal nu een time-of-flight algoritme toegepast worden. De threshold methode en de autocorrelatie methode zijn er 2 van. De eerste methode zal op zoek gaan naar de index n waarvoor re (nT) een zekere tresholdwaarde αAr met α < 1 overschrijdt. De tweede methode gaat voor z’n time-of-flight schatting op zoek naar het maximum van de correlatiefunctie:
C(hT ) =
X
re (nT )re [(n + h)T ]
(7.6)
n
Treshold methode De eenvoudigste manier om de time-of-flight te bepalen is door middel van thresholding. De time-of-flight is de tijd t0 waarbij de omhullende van de ontvangen puls in amplitude een zekere waarde τ overschrijdt (zie Figuur 7.2). Wanneer het systeem onderhevig is aan witte ruis zal men deze thresholdwaarde gelijk nemen aan 3 tot 5 keer de standaardafwijking σ van de ruis. Het thresholdniveau ligt bij de meeste ultrasone systemen 20 tot 35 dB onder het niveau van de
7.2 Methodes uit de literatuur
97
piek van de puls. De schatting van de time-of-flight zal gemiddeld groter zijn dan de werkelijke waarde. Door de eindige stijgtijd van de puls die te wijten is aan de smalbandigheid van de transducer wordt het bepalen van dit punt bemoeilijkt. De time-of-flight zal een afwijking vertonen ten opzichte van zijn werkelijke waarde en deze afwijking is jammergenoeg niet constant. De afwijking is namelijk afhankelijk van het ingestelde thresholdniveau, de signaal-tot-ruis verhouding, de positie en de grootte van de reflector en andere factoren die de amplitude van de puls be¨ınvloeden.
Amplitude
Uitgezonden puls
Echo puls
Time-of-flight
Threshold waarde
Tijd (sec)
Figuur 7.2: Bepaling van de time-of-flight d.m.v. treshold methode
Correlatie methode De nauwkeurigste manier om de time-of-flight te bepalen, gebeurt aan de hand van een gematcht filter die een replica bevat van het uitgezonden signaal. Dit filter kijkt wanneer het ruisig ontvangen signaal het best overeenkomt met het uitgezonden signaal. De tijd tussen dit moment en het tijdstip van uitsturen is dan de time-of-flight. De bepaling van de time-of-flight zal gebeuren door de correlatie te berekenen tussen de omhullende van het verstuurde en de omhullende van het ontvangen signaal. Wanneer men een puls uitstuurt met een bepaalde tijdsduur d zal de autocorrelatiefunctie van deze puls een maximum vertonen wanneer de pulsen elkaar exact overlappen. De breedte van de autocorrelatiepiek is bovendien gelijk aan d. De grootte van deze autocorrelatiepiek neemt toe met de breedte van de puls. Wanneer 2 echo’s van uitgezonden pulsen aankomen bij een tijdsverschil dat kleiner is dan d/2 zal er zich een detectieprobleem voordoen. Men kan besluiten dat rond het reflecterende object een dode zone optreedt die gelijk is aan ∆r = c × d/2. De correlatiemethode levert een nauwkeurigheid die gelijk is aan 1
7.2 Methodes uit de literatuur
98
golflengte bij de samplefrequentie. Een nadeel van deze methode is dat ze meer berekeningstijd nodig heeft dan de tresholdmethode. Een tweede nadeel is dat vooraleer men een schatting kan maken van de time-of-flight, de volledige echo van het signaal moet ontvangen zijn. Dit leidt tot een zekere tijdsvertraging wat ongewenst kan zijn bij de werking in realtime. Deze methode is enkel bruikbaar indien de duur van de echo veel kleiner is dan de tijd die de akoestische golf nodig heeft om heen en terug te propageren tussen zender en reflecterend object.
7.2.2
Uitzenden en ontvangen van een continue golf
Bij de continue golf methode maakt men gebruik van een aparte zender en ontvanger. Men stuurt de ene transducer aan met een continue sinuso¨ıdale golf en kijkt welke faseverschuiving er is opgetreden bij het ontvangen. De nauwkeurigheid van deze meting wordt dus bepaald op 1/360 van de gebruikte golflengte. Aangezien de fase op 2π na bepaald is, zal men er iets moeten op vinden om deze ambigu¨ıteit op te lossen.
7.2.3
Gecombineerde time-of-flight bepaling
In [21] wordt een methode beschreven die van deze beide technieken gebruik maakt. Het signaalverwerkingsalgoritme zal eerst de time-of-flight bepalen door de kruiscorrelatie te berekenen tussen de omhullenden van het uitgezonden en ontvangen signaal. De piek in de kruiscorrelatie bepaalt de vertraging tussen de 2 signalen i.e. de time-of-flight. Omdat de nauwkeurigheid afhankelijk is van de samplefrequentie aan de ontvangstzijde zal men het resultaat verfijnen door de faseverschuiving te bepalen van de draaggolf van het verzonden signaal. Men maakt gebruik van de eigenschap dat voor een gesampled sinuso¨ıdaal signaal de faseverschuiving kan bepaald worden door het berekenen van de co¨efficient van de DFT die overeenkomt met de frequentie van de uitgezonden draaggolf. De boogtangens van de verhouding van het imaginaire en re¨ele gedeelte van deze complexe co¨efficient levert de faseverschuiving op. De uiteindelijke waarde van de time-of-flight wordt dan:
T oF =
α N + 2π fc
(7.7)
waarbij α de faseverschuiving is en N een geheel aantal keer het aantal draaggolf golflengtes.
7.3 Algoritme in Matlab
99
Nadat men de kruiscorrelatie tussen de omhullende van het verzonden signaal se (n) en de omhullende van het ontvangen signaal re (n) heeft berekend, levert dit een eerste indicatie van de timeof-flight. Aangezien de resolutie van de time-of-flight beperkt wordt tot 1 sampleperiode zal men een parabolische interpolatie toepassen om een precisie te verkrijgen die beter is dan een halve draaggolf golflengte. Dit is nodig voor de faseverschuivingsmethode (zie verder). Men interpoleert in de kruiscorrelatiefunctie het punt voor het maximum, het maximum zelf en het punt na het maximum. Het tijdsverschil tussen de correlatiepiek en het maximum van de parabool wordt dan gegeven door:
∆t =
(C(n − 1) − C(n + 1)) 2(C(n − 1) − 2C(n) + C(n + 1))
(7.8)
waarbij C(n) de kruiscorrelatiefunctie voorstelt. Het faseverschil tussen het verzonden en ontvangen signaal wordt bepaald door de DFT co¨efficient van r(n) te berekenen die overeenkomt met de draaggolf frequentie. Dit faseverschil wordt gegeven door:
α = arctan
Im(DF T [r(n)] (fc )) Re(DF T [r(n)] (fc ))
(7.9)
Aangezien de fase op 2π na bepaald is, krijgt men dus een reeks punten met periodiciteit 2π. Het punt dat het dichtst bij de parabolische benadering van de kruiscorrelatie gelegen is, wordt de uiteindelijke waarde van de time-of-flight (zie Figuur 7.3). Dit verklaart waarom de eerste schatting van de time-of-flight met behulp van de kruiscorrelatiemethode nauwkeuriger moet zijn dan een halve golflengte van de draaggolf. Deze methode [21] leidt tot een hogere precisie die beter is dan een tiende van de draaggolf golflengte. Ook is gebleken dat de ruis een veel kleinere invloed heeft op de nauwkeurigheid van de faseschatting dan bij de schatting van de kruiscorrelatiepiek.
7.3
Algoritme in Matlab
In het ontworpen signaalverwerkingsalgoritme wordt gebruik gemaakt van de autocorrelatie methode. De fasemethode wordt ook ge¨ımplementeerd alhoewel ze niet zal worden toegepast. Een reden hiervoor is dat men de ogenblikkelijke fase nodig heeft van de draaggolf aan de
7.3 Algoritme in Matlab
100
Fase detectie
n
n+1
n-1
Time-of-flight
Parabolische interpolatie
't
Figuur 7.3: Bepaling van de time-of-flight d.m.v. parabolische interpolatie en fasebepaling
zenderkant. De beschikbaarheid van dit signaal werd nog niet ge¨ımplementeerd maar is mits eenvoudige uitbreidingen mogelijk.
7.3.1
Toegepast op mathematisch model
In eerste instantie zal men gebruik maken van de 16 signalen die men verkrijgt na het aansturen van telkens 1 transducer met zijn transducer-specifieke code. Het luisteren bij elk van de 4 transducers levert ons 16 signalen op. Deze signalen worden in een matrix bijgehouden, waarbij het element Rij overeenkomt met het signaal ontvangen op transducer j bij aansturing van transducer i. Van elk element Rij van de signaalmatrix wordt de correlatie berekend met het signaal dat door transducer i werd uitgestuurd. In Figuur 7.4 worden de gecorreleerde signalen getoond per transducer in het geval dat transducer 1 zendt.
De correlaties worden gewogen met een factor 547 die ervoor zorgt dat de waarde van de pieken in de correlaties overeenkomen met de grootte van het ontvangen signaal (Figuur 7.4). Men bekomt deze factor door de verhouding te nemen van de amplitude van code 1 en de maximale waarde van de autocorrelatiefunctie van code 1. Wanneer men het signaal op 7.4 bij transducer 2 van nabij bekijkt dan ziet men dat er twee grote pieken zijn, overeenkomend met het rechtstreekse pad en het gereflecteerde pad (Figuur 7.5).
7.3 Algoritme in Matlab
101
Amplitude
Amplitude
Amplitude
Amplitude
Gecorreleerd signaal op transducer 1 met code 1 0.2 0 -0.2 -0.4
0.2 0 -0.2 -0.4
0.2 0 -0.2 -0.4
0.2 0 -0.2 -0.4
0
0
0
0
0.2
0.2
0.2
0.2
0.4
0.4
0.4
0.4
0.6
1 1.2 1.4 Samples Gecorreleerd signaal op transducer 2 met code 1
0.6
0.8
1 1.2 1.4 Samples Gecorreleerd signaal op transducer 3 met code 1
0.6
0.8
1 1.2 1.4 Samples Gecorreleerd signaal op transducer 4 met code 1
0.6
0.8
0.8
1 Samples
1.2
1.4
1.6
1.8
2 4
x 10
1.6
1.8
2 4
x 10
1.6
1.8
2 4
x 10
1.6
1.8
2 4
x 10
Figuur 7.4: Correlaties van de signalen per transducer met code 1
Gecorreleerd signaal op transducer 2 met code 1 0.1
0.08
0.06
0.04
Amplitude
0.02
0
-0.02
-0.04
-0.06
-0.08
-0.1
0
0.2
0.4
0.6
0.8
1 Samples
1.2
1.4
1.6
1.8
2 4
x 10
Figuur 7.5: Correlatie van het signaal op transducer 2 met code 1
7.3 Algoritme in Matlab
102
Locale maxima in correlatie van het signaal op transducer 2 met code 1 0.05
0.04
0.03
Amplitude
0.02
0.01
0
-0.01
-0.02
-0.03
-0.04
0
0.5
1
1.5 Samples
2
2.5 4
x 10
Figuur 7.6: Locale maxima in correlatie van het signaal op transducer 2 met code 1
In MATLAB werd een functie pieken.m geschreven die de pieken, die optreden in de kruiscorrelaties, bepaalt. Elke piek die optreedt, kan namelijk wijzen op de aanwezigheid van een code in het ontvangen signaal. In de functie pieken.m worden eerst de negatieve waarden van de correlatiefunctie op 0 gezet. Deze zijn nl. niet belangrijk voor de bepaling van het maximum. Daarna wordt een omhullende van de correlatiefunctie bepaald door een venster van 25 samples over het signaal te schuiven en elke waarde binnen dit interval gelijk te stellen aan het maximum dat in dit interval optreedt. Hierdoor wordt het oorspronkelijk signaal een trapvormig signaal, waarbij het niveau van de trap gelijk is aan de maximumwaarde die in dit interval optreedt. Vervolgens wordt voor elk plateau in het signaal het midden bepaald. Dit maximum zal niet het maximum zijn die optreedt in het oorspronkelijke signaal. Daarom wordt in een interval van 30 samples rond dit maximum gezocht naar het echte maximum in het originele correlatiesignaal. Na het uitvoeren van deze procedure, bekomt men alle lokale maxima die optreden in het correlatiesignaal. De lokale maxima voor de correlatie van Figuur 7.5 worden weergegeven in Figuur 7.6. Bepaalde lokale maxima zijn te wijten aan de aanwezigheid van de code in het ontvangen signaal, andere lokale maxima zijn een gevolg van de zijlobes van de correlatiefunctie. De maxima en hun overeenkomstige samplewaarde worden van groot naar klein opgeslagen in een
7.3 Algoritme in Matlab
103
array. Vervolgens worden de overeenkomstige afstanden bepaald aan de hand van de positie van het maximum. Men kan de propagatietijd bepalen door toepassing van volgende uitdrukking: Tf = (sample − samplesontvangensignaal )/fs
(7.10)
waarbij sample de sample is waarbij de piek zich voordoet, samplesontvangensignaal de lengte is van het ontvangen signaal uitgedrukt in samples en fs de samplefrequentie van de ontvanger is. Voor de twee grootste pieken van de correlatie op Figuur 7.5 die met het algoritme pieken.m werden bepaald, bekomt men respectievelijk Tf 1 = 0,0460 ms en Tf 2 = 0,0635 ms. Intu¨ıtief weet men dat het snelste signaal, het signaal zal zijn van het rechtstreekse pad. Aangezien men de afstand kent tussen zendend en ontvangend element kan men nagaan of deze afstand gelijk is aan de euclidische afstand tussen beide. Door vermenigvuldiging van Tf 1 met de akoestische voortplantingssnelheid bekomt men 0,07084 m wat inderdaad overeenkomt met de afstand tussen zender en ontvanger. Men kan besluiten dat er een rechtstreeks pad tussen transducer 1 en transducer 2 bestaat. In een matrix met dimensie (4,4) wordt bijgehouden of er een rechtstreeks pad bestaat tussen zender en ontvanger, want indien er geen rechtstreeks pad tussen twee transducers is, zal er ook geen gereflecteerd pad zijn.
De tweede piek die men bekomt bij de correlatie bij transducer 2 (zie Figuur 7.5), is afkomstig van een reflectie. De afgelegde weg bekomt men door Tf 2 te vermenigvuldigen met de akoestische voortplantingssnelheid en is gelijk aan 0,0978 m. De meetkundige plaats van punten waarvan de som van de afstanden van dit punt tot zender en ontvanger gelijk is aan de bekomen afstand is een ellips. De bepaling van deze plaatsen gebeurt aan de hand van volgende uitdrukkingen:
a= c = 1/2 ∗
q
af stand 2
(T 1posX − T 2posX)2 + (T 1posY − T 2posY )2 p
b = − a2 − c2
(7.11) (7.12) (7.13)
a en b zijn de parameters van de ellips en de vergelijking van de ellips wordt gegeven door:
x = a cos(θ)
(7.14)
7.3 Algoritme in Matlab
104
y = b sin(θ)
(7.15)
waarbij θ = [0,2π]. Na het uitvoeren van een rotatie ( 7.17 en 7.18) over een hoek φ en een translatie zodat zender en ontvanger in de brandpunten van de ellips komen, bekomt men met behulp van uitdrukking 7.19 en 7.20 de mogelijke x- en y-co¨ordinaten van de reflector.
φ = atan(
T 2posY − T 1posY ) T 2posX − T 1posX
(7.16)
x0 = cos(φ)x − sin(φ)y
(7.17)
y 0 = sin(φ)x + cos(φ)y
(7.18)
T 2posX − T 1posX) 2 T 2posY − T 1posY ) y 00 = y 0 + T 1posY + 2
x00 = x0 + T 1posX +
(7.19) (7.20)
Deze procedure wordt herhaald voor alle pieken die boven een zekere tresholdwaarde liggen. De piek die men ziet in de correlatiefunctie van het ontvangen signaal op transducer 1 (zie Figuur 7.4) is afkomstig van de reflectie aan de cyste. Indien men de time-of-flight bepaalt aan de hand van het algoritme bekomt men 0,0799 ms. De afgelegde weg die hier mee overeenkomt, is 0,1230 m. De meetkundige plaats van de punten die op de helft van deze afstand gelegen zijn, is een cirkel met middelpunt de zendende transducer. De mogelijke x- en y-co¨oordinaten van de reflector worden gegeven door 7.21 en 7.22 met θ = [0,2π] en af stand gelijk aan de afgelegde weg.
x=(
af stand )cos(θ) + T 1posX 2
(7.21)
y=(
af stand )sin(θ) + T 1posY 2
(7.22)
7.3 Algoritme in Matlab
105
Doordat de transducers verondersteld worden sferische golven uit te zenden, kan men de exacte plaats van de reflector niet bepalen. Men kan enkel de meetkundige plaatsen bepalen van de posities waar de reflector eventueel gelegen is. Als men voor elk signaal deze plaatsen bepaalt, krijgt men enkele afgebakende gebieden waarin eventueel een reflector aanwezig kan zijn. Aan de hand van de cirkels en de ellipsen die met het algoritme bepaald worden, kan men al een schatting (Figuur 7.7) bekomen van de mogelijke posities van de cyste(s).
0.06
0.04
Y (m)
0.02
0
-0.02
-0.04
-0.06 -0.06
-0.04
-0.02
0 X (m)
0.02
0.04
0.06
Figuur 7.7: Meetkundige plaatsen van posities waar reflectoren kunnen optreden.
Men kan in Figuur 7.7 duidelijk de plaats achterhalen waar de cyste zich moet bevinden. Een beter beeld wordt verkregen indien men de cirkels en ellipsen opvult (Figuur 7.8). Men ziet wel dat het gereflecteerde pad van de bovenste transducer (transducer 2) naar de rechtse transducer (transducer 3) en van transducer 3 naar 2 niet in de figuur is opgenomen. De oorzaak is dat het verschil in afstand tussen het rechtstreeks pad en gebroken pad te klein is om de piek van het gereflecteerde pad in de correlatie terug te vinden. Het gereflecteerde signaal is bovendien veel kleiner in amplitude dan het rechtstreekse signaal. Men kan dit gereflecteerde signaal terug vinden indien men van het ontvangen signaal het rechtstreekse signaal aftrekt en
7.3 Algoritme in Matlab
106
0.06
0.04
Y (m)
0.02
0
-0.02
-0.04
-0.06 -0.06
-0.04
-0.02
0 X (m)
0.02
0.04
0.06
Figuur 7.8: Geschatte positie van de cyste
dan opnieuw de correlatie bepaalt. In Figuur 7.9 is de correlatiefunctie te zien van het signaal ontvangen op transducer 2 afkomstig van transducer 3. Om de piek te bepalen die afkomstig is van het gereflecteerde signaal, trekt men de autocorrelatie van code 3 af van de correlatie van het signaal ontvangen op transducer 2. Men zorgt ervoor dat dit gebeurt op de plaats waar de piek zich bevindt en dat de grootte ervan dezelfde is. Het aanmaken van deze autocorrelatie gebeurt in de functie maakautocorr.m. Deze autocorrelatie functie wordt weergegeven in Figuur 7.10 en het verschil tussen oorspronkelijke correlatie en deze correlatie wordt weergegeven in Figuur 7.11. Men ziet dat er zich in de bekomen correlatie een piek voordoet bij sample 14733. Deze piek komt overeen met het gereflecteerde pad dat een lengte heeft van 0,0731 m. Na het aanpassen van het algoritme bekomt men de meetkundige plaatsen getoond in Figuur 7.12. Het verloop van het algoritme wordt kort samengevat in de flowchart gegeven in Figuur 7.14.
7.3.2
Toegepast op re¨ ele signalen
Het signaalverwerkingsalgoritme zal nu worden toegepast op signalen die men via de meetopstelling bekomt. Er werd in MATLAB een procedure (zie Appendix B) geschreven die recht-
7.3 Algoritme in Matlab
107
0.05
0.04
0.03
Amplitude
0.02
0.01
0
-0.01
-0.02
-0.03
-0.04
0
0.5
1
1.5
2
Samples
2.5 4
x 10
Figuur 7.9: Correlatie signaal op transducer 2 afkomstig van transducer 3 met code 3
0.05
0.04
0.03
Amplitude
0.02
0.01
0
-0.01
-0.02
-0.03
-0.04
0
0.5
1
1.5 Samples
2
2.5 4
x 10
Figuur 7.10: Autocorrelatie van code 3 overeenkomend met piek in oorspronkelijke correlatie
7.3 Algoritme in Matlab
108
0.05
0.04
0.03
0.02
Amplitude
0.01
0
-0.01
-0.02
-0.03
-0.04
-0.05
0
0.5
1
1.5
2
Samples
2.5 4
x 10
Figuur 7.11: Meetkundige plaatsen van posities waar reflectoren kunnen optreden
0.06
0.04
Y (m)
0.02
0
-0.02
-0.04
-0.06 -0.06
-0.04
-0.02
0 X (m)
0.02
0.04
0.06
Figuur 7.12: Verschil van oorspronkelijke correlatie en aangemaakte autocorrelatie
7.3 Algoritme in Matlab
109
0.06
0.04
Y (m)
0.02
0
-0.02
-0.04
-0.06 -0.06
-0.04
-0.02
0 X (m)
0.02
0.04
0.06
Figuur 7.13: Geschatte positie van de cyste
Ontvangen signaal Bepaling kruiscorrelatie Bepalen van maxima Maximum
Maak autocorrelatie
Bepaal meetkundige plaatsen
Figuur 7.14: Flowchart van het algoritme
Trek af
7.3 Algoritme in Matlab
110
streeks de FPGA aanspreekt, waardoor de opgemeten bemonsterde signalen per transducer in een MATLAB-array worden opgeslagen. De verkregen signalen zijn gesampled aan 8 MHz. De procedure [SignaalT1 ,SignaalT2 ,SignaalT3 ,SignaalT4 ] = getdata(T1 ,T2 ,T3 ,T4 ) levert de signalen per transducer als output, waarbij kan ingesteld worden welke transducers er moeten zenden. Filteren van de signalen Voordat de signalen verwerkt worden, wil men storende frequentiecomponenten uit de signalen verwijderen. Daarom wordt er gefilterd met een FIR banddoorlaatfilter. Het magnitude- en faseverloop i.f.v. frequentie wordt weergegeven in Figuur 7.15. Er werd geopteerd voor een equiripple filter met een lineaire fasekarakteristiek in de doorlaatband. De verzwakking in de stopband bedraagt 30 dB.
Figuur 7.15: Magnitude- en fasekarakteristiek van het gekozen filter
De bandbreedte van de filter werd bewust breed gekozen om de twee grote zijbanden van de frequentie-inhoud van de Kasami-codes niet weg te filteren (zie Figuur 7.16 [17]). Deze kunnen ook nog nuttige informatie bevatten.
7.3 Algoritme in Matlab
111
50
40
30
20
Magnitude, dB
10
0
-10
-20
-30
-40
-50
0 Frame: 16
1
2
3
4
5 Frequency (MHz)
6
7
8
9
10
Figuur 7.16: Frequentie-inhoud van en Kasami-code
Selectie van goede signalen De signalen die worden opgemeten, zijn niet altijd even goed van kwaliteit. Vaak worden ze verstoord door spikes die afkomstig zijn van interfererende stoorsignalen en soms is de ruis zo groot dat de verzonden code onmogelijk gedetecteerd kan worden. Het eerste algoritme dat op de signalen wordt toegepast, zoekt naar een goed signaal. Er wordt nagegaan of het gemiddeld vermogen van het ontvangen signaal een bepaalde waarde niet overschrijdt. Goede signalen hebben namelijk de eigenschap dat er slechts af en toe een ontvangen code in het signaal optreedt wat aanleiding geeft tot een plotse stijging van het vermogen. Het signaal wordt vervolgens opgesplitst in 5 intervallen waarbij in elk interval het aantal spikes wordt geteld. Het detecteren van een spike gebeurt door na te gaan of de amplitudeverandering van het signaal binnen een zeer kort tijdsinterval (5 samples) groter is dan een ingestelde waarde. Indien er een interval bij zit waarvan het aantal spikes kleiner is dan een zekere waarde kan men besluiten dat men een goed signaal heeft. Het signaal wordt in intervallen opgedeeld omdat wanneer er een code optreedt in het ontvangen signaal dit lokaal aanleiding zal geven tot een groot aantal spikes. Men wil niet dat een dergelijk signaal als slecht wordt aanzien. In Figuur 7.17(a) ziet men een ontvangen signaal waarvan de signaal tot ruis verhouding zeer laag is. In Figuur 7.17(b) ziet men een ontvangen signaal dat spikes bevat. Het algoritme zal telkens
112
1500
1500
1000
1000
500
500 Amplitude (mV)
Amplitude (mV)
7.3 Algoritme in Matlab
0
0
−500
−500
−1000
−1000
−1500
−1500
0
500
1000
1500 Samples
2000
2500
3000
(a) Ontvangen signaal met ruis bevuild
0
500
1000
1500 Samples
2000
2500
3000
(b) Ontvangen signaal met spikes bevuild
Figuur 7.17: De metingen leveren niet altijd signalen van goede kwaliteit een nieuwe meting uitvoeren totdat een goede meting wordt bekomen.
Reflectie object
Reflectie overkant bakje
Uitstervende akoestische oscillatie Elektrische overspraak
Figuur 7.18: Karakteristieken van het ontvangen signaal
In een goed ontvangen signaal (Figuur 7.18) kan men enkele fenomenen onderscheiden. Het
7.3 Algoritme in Matlab
113
eerste deel van het signaal is afkomstig van de elektrische overspraak bij de analoge elektronica. De digitale elektronica start met zenden en ontvangen op hetzelfde moment. Het uitgezonden signaal zal elektrisch inkoppelen op de ontvanger en dus in het ontvangen signaal aanwezig zijn. De overspraak en het meteen ontvangen na het zenden is een bewuste keuze zodat men hiervan handig gebruik kan maken om een referentie te hebben voor het starttijdstip van het zenden. Als men het begin van het ontvangen signaal correleert met de uitgezonden code zal de piek in de correlatiefunctie het starttijdstip opleveren. Een tweede fenomeen dat men kan onderscheiden is een akoestisch fenomeen door het niet bevestigen van dempingsmateriaal aan de achterkant van de transducers. Het uitgezonden signaal zal heen en terug propageren tussen de achterkant van de transducer en de wand van het bakje. Uiteindelijk zal dit fenomeen exponenti¨eel in de tijd uitsterven. Een laatste fenomeen in het ontvangen signaal is natuurlijk de aanwezigheid van verstuurde codes te wijten aan reflecties met objecten. Interpolatie van de signalen De ontvangen signalen worden ge¨ınterpoleerd zodat hun samplefrequentie 64 MHz wordt in plaats van 8 MHz. Men kan dit doen doordat de digitale signalen aan de Nyquist voorwaarde voldoen zodat interpolatie met een sinc functie een betere benadering oplevert van het oorspronkelijk analoge signaal. Doordat kleinere verschuivingen in het ontvangen signaal kunnen opgemeten worden, zal de nauwkeurigheid van de time-of-flight bepaling toenemen. De reden waarom men hier interpoleert en niet de samplefrequentie opdrijft, is dat men meer geheugen nodig zou hebben bij een hogere samplefrequentie. Bepaling van de beginreferentie Voor het bepalen van het begin van de tijdsreferentie zal men eerst het ontvangen signaal bij een reflectie meting van het gedempt oscillerend akoestisch fenomeen ontdoen (Figuur 7.19(a)). Indien men dit niet doet, zal de piek in de correlatiefunctie te wijten aan het signaal door elektrische overspraak niet te onderscheiden zijn. Dit omwille van het zeer groot akoestische signaal dat vlak na de code in het signaal aanwezig is. Wanneer men dit gefilterde signaal correleert met de code, bekomt men het resultaat dat te zien is in Figuur 7.19(b). De eerste piek in het gecorreleerde signaal treedt op bij sample 2576 (bij 8 MHz).
7.3 Algoritme in Matlab
114
200
1500
150 1000
100 500
Amplitude (mV)
Amplitude (mV)
50
0
0
−50
−500
−100 −1000
−150
−1500
0
500
1000
1500 Samples
2000
2500
3000
(a) Ontvangen signaal ontdaan van de gedempte os-
−200
0
1000
2000
3000 Samples
4000
5000
6000
(b) Correlatie van het gefilterde signaal
cilerende akoestische component
Figuur 7.19: Bepaling van de beginreferentie Bepaling van de eindreferentie Voor elke transducer wordt de reflectie met de overkant van het bakje bepaald (zie Figuur 7.18). Het plaatsen van een metalen plaatje tegen de wand bevordert het detecteren van de overkant, omdat het schuimrubber de invallende akoestische golven voor een groot stuk zal verstrooien. Dit levert dan de maximale afstand op waarover men metingen moet doen. Zo kan men in het opgemeten signaal een interval defini¨eren dat verder onderzocht moet worden. Bepaling van de lokale maxima Het ontvangen signaal wordt vervolgens onderverdeeld in intervallen van een zeker aantal samples. Voor elk interval worden de lokale maxima in de correlatiefunctie bepaald. Indien deze waarden groter zijn dan een zekere waarde vergeleken met het lokale vermogen, besluit men dat het om een gedetecteerde code gaat. De bepaalde maxima worden opnieuw in een array van groot naar klein opgeslaan. Verwijderen van slechte pieken Uiteindelijk worden een aantal metingen uitgevoerd, waarbij men signalen opmeet totdat men 16 goede signalen bekomt. Vervolgens haalt men uit deze signalen de time-of-flight informatie voor elk paar transducers in de opstelling. Deze procedure wordt een aantal keer herhaald en de opgemeten waarden worden in een histogram bijgehouden. Indien het aantal waarden binnen een interval van het histogram een zekere waarde overschrijdt, wordt er vanuit gegaan dat dit
7.3 Algoritme in Matlab
115
overeenkomt met een goede schatting van de afstand. Op deze manier kunnen toevallige pieken die optreden in de correlatiefunctie, worden verwijderd.
7.3.3
Bepaling meetkundige plaatsen reflector
Uiteindelijk bekomt men na het bepalen van alle meetkundige plaatsen van reflectoren een beeld van de positie van het voorwerp. Bij de proefopstelling werd een metalen cilinder gebruikt met een diameter van 1,2 cm. In Figuur 7.21 ziet men het resultaat van de plaatsbepaling aan de hand van vorige algoritmes.
Reflectie object
Reflectie overkant bakje
Uitstervende akoestische oscillatie Elektrische overspraak
Figuur 7.20: Foto van de positie van het te detecteren object
7.3 Algoritme in Matlab
Figuur 7.21: Bepaling positie van object aan de hand van het systeem
116
MEETRESULTATEN
117
Hoofdstuk 8
Meetresultaten 8.1
Meetopstelling
De testopstelling (zie Figuur 8.1) bestaat uit drie grote delen. Het eerste deel is de Linuxcomputer. Van hieruit kan de volledige opstelling gestuurd worden. De computer zorgt er eveneens voor dat men de ontvangen data kan bewerken in MATLAB.
Figuur 8.1: De in het labo opgezette testopstelling
8.1 Meetopstelling
8.1.1
118
Elektronica
Het tweede deel van de testopstelling is de elektronica. Het geheel van de analoge en de digitale elektronica zorgt voor de correcte aansturing van de transducers en voor het ontvangen van de data. Zoals reeds eerder vermeld is de ruggengraat van het elektronisch systeem, het digitale platform afgebeeld in Figuur 8.2. Dit digitale platform bevat een FPGA voor de verwerking van de signalen en verzorgt tevens de interface met de computer.
Figuur 8.2: Het digitale platform
Op Figuur 8.3 staat de zenderkant afgebeeld. De connector aan de rechterkant zorgt voor de verbinding met de FPGA. Aan de linkerkant staan de connectoren die zorgen voor de verbinding met de transducers. Men ziet op deze figuur eveneens de twee multiplexers en de laagdoorlaatfilters voor de PWM-signalen.
Figuur 8.4 toont de ontvangerelektronica. Men herkent de verschillende filters, de versterker en de A/D-convertor. Deze A/D-convertor is verbonden met de FPGA en zorgt voor de overgang van het analoge domein naar het digitale domein.
8.1 Meetopstelling
119
4:1 Multiplexer
2:1 Multiplexer
Connector naar transducer
Connector naar FPGA LD-filter
Figuur 8.3: Het zendergedeelte
Versterker
Anti-aliasing filter
A/D-convertor
Figuur 8.4: Het ontvangergedeelte
8.1 Meetopstelling
120
In Figuur 8.5(a) wordt het PWM-signaal getoond dat verstuurd wordt door de FPGA. Men ziet duidelijk de blokgolfvorm. Na laagdoorlaatfiltering bekomt men het signaal afgebeeld in Figuur 8.5(b). Dit signaal wordt naar de transducers gestuurd. (Let op, de figuren hebben niet dezelfde tijdschaal, het PWM-signaal verandert immers veel vlugger dan zijn gefilterde versie)
(a) PWM-signaal zoals het uit de FPGA komt
(b) PWM-signaal zoals het naar de transducers wordt gestuurd
Figuur 8.5: Gefilterd en niet-gefilterd PWM-signaal
8.1 Meetopstelling
121
Het belangrijkste onderdeel van deze meetopstelling is natuurlijk de pi¨ezo-elektrische transducer. Figuur 8.6 toont een dergelijk elementje. Figuur 8.9 toont de transducer in zijn meetomgeving.
Figuur 8.6: Gebruikte Transducers
poreus materiaal
transducer
Figuur 8.7: Transducer in zijn meetomgeving
8.1 Meetopstelling
8.1.2
122
Meetomgeving
Het derde deel is het bakje waarin men probeert een voorwerp op te sporen (zie Figuur 8.8). Men heeft ervoor gekozen om de transducers te testen in water omdat de akoestische impedantie van lucht veel te hoog is. Dit heeft als gevolg dat als men een signaal wenst uit te sturen zonder geschikte overgang tussen de transducer en lucht, de transducer niet veel vermogen zal uitsturen. De akoestische impedantie van water is veel lager, zodat er hier wel een goede signaaloverdracht mogelijk is.
Transducer
Transducer
Transducer
Transducer
Figuur 8.8: Bakje om metingen te doen
Het bakje is gemaakt uit hout en aan de binnenkant met rubber bekleeft. Op het rubber werd er nog een poreus materiaal aangebracht om zoveel mogelijk de reflecties van de wanden te beperken. Op Figuur 8.9 zien we duidelijk dat dit een effici¨ente maatregel is. Op Figuur 8.9(a) ziet men het signaal dat teruggekaatst werd op de overstaande wand zonder poreus materiaal, op Figuur 8.9(b) met poreus materiaal. Het teruggekaatste signaal bij de wand zonder poreus materiaal is duidelijk groter dan het teruggekaatste signaal bij de wand met poreus materiaal.
De onregelmatige vorm van het bakje zorgt er eveneens voor dat de reflecties, afkomstig van
8.1 Meetopstelling
123
1500
1000
Amplitude (mV)
500
0
-500
-1000
-1500
0
500
1000
1500 Samples
2000
2500
3000
(a) Wand zonder poreus materiaal 1500
1000
Amplitude (mV)
500
0
-500
-1000
-1500
0
500
1000
1500 Samples
2000
2500
3000
(b) Wand met poreus materiaal
Figuur 8.9: Signalen ontvangen op de transducer het bakje, niet groot zijn. Indien men immers bvb. een vierkant had genomen, dan zouden de stralen die uitgestuurd worden door een transducer, gereflecteerd worden op de overstaande wand. De gereflecteerde signalen zouden dan opnieuw ontvangen worden, zonder echt informatie te bevatten. Om deze storende reflecties zoveel mogelijk te elimineren, zorgt men ervoor dat men geen evenwijdige wanden heeft.
8.2 Uitgevoerde metingen
8.2 8.2.1
124
Uitgevoerde metingen Inleiding
Aan de hand van onze meetopstelling worden enkele experimenten uitgevoerd.
8.2.2
Bepaling van de akoestische voortplantingssnelheid
Voor het bepalen van de akoestische voortplantingssnelheid wordt als volgt te werk gegaan. Er wordt ter hoogte van een zekere afstand van een transducer, verticaal een metalen plaatje geplaatst. Dit geeft aanleiding tot grote reflecties, dus een scherpe piek in de correlatiefunctie. De positie van de piek in de correlatiefunctie wordt hierna bepaald. Vervolgens wordt deze meting herhaald en het plaatje wordt in stappen van 0,1 mm verder van de transducer geplaatst. De verplaatsing gebeurt met behulp van een vaste constructie waarbij een schuifmaat wordt gebruikt. Er worden per afstand telkens 100 metingen uitgevoerd. Dit geeft aanleiding tot een significante uitgesproken piek in het histogram van de opgemeten samples. Hiermee kan het gemiddeld aantal samples per 0.1 mm bepaald worden, wat na toepassing van uitdrukking 8.1 de akoestische voorplantingssnelheid oplevert:
vwater = 2 × fs (
aantalsamples −1 ) 10000 × 0.10mm
(8.1)
waarbij fs = 64 MHz de samplingfrequentie is van het geinterpoleerd ontvangen signaal. In Figuur 8.10 zijn de opgemeten waarden weergegeven, waaruit de voortplantingssnelheid kan bepaald worden. Na uitmiddeling en toepassing van uitdrukking 8.1 bekomt men volgende waarde voor de akoestische voortplantingssnelheid in gedistilleerd water:
vwater = 1500 m/s
(8.2)
Men merkt op dat deze waarde dicht bij de theoretische voorplantingssnelheid in gedistilleerd water ligt, nl. 1496 m/s [23]. De reden waarom men over zo’n korte afstand metingen heeft gedaan (3 mm) is om de fout van het niet exact parallel zijn van de reflector en transducer te elimineren. De bepaling van de waarde van de akoestische voortplantingssnelheid is belangrijk, omdat alle afstandsbepalingen van deze waarde gebruik zullen maken.
8.2 Uitgevoerde metingen
125
Bepaling geluidssnelheid in gedistilleerd water 13300
Samplewaarde piek
13250
13200
13150
13100
13050
13000 0
0.5
1
1.5
2
2.5
3
3.5
Relatieve afstand (mm)
Figuur 8.10: Opgemeten waarden voor bepaling van geluidssnelheid in gedistilleerd water
8.2.3
Bepaling van de meetnauwkeurigheid
Aan de hand van de schuifmaat wordt nagegaan wat de minimale verplaatsing is die met het systeem kan worden gedetecteerd. Aangezien de schuifmaat tot op 1/100 mm min of meer nauwkeurig kan meten, zal dit de maximale nauwkeurigheid zijn die opgemeten kan worden via deze proefopstelling. Opnieuw wordt een reflector op zekere afstand van de transducer geplaatst en worden de pieken in de correlatiefunctie bepaald. Na 100 metingen per afstand wordt de significante piek in het histogram, genoteerd. Men bekomt de resultaten weergegeven in Figuur 8.11. Bepaling meetprecisie 13044 13042
Samplewaarde piek
13040 13038 13036 13034 13032 13030 13028 13026 13024 0
0.05
0.1
0.15
0.2
0.25
Relatieve afstand (mm)
Figuur 8.11: Opgemeten waarden voor bepaling van meetnauwkeurigheid
8.2 Uitgevoerde metingen
126
Men bekomt dat elke sample ongeveer overeenkomt met 1/100 mm. Dit is niet verwonderlijk, aangezien er gesampled wordt aan 8 MHz en vervolgens ge¨ınterpoleerd wordt met een factor 8, zodat de samplefrequentie van het bewerkte signaal 64 MHz wordt. De afstand die overeenkomt met 1 sample, bij een akoestische voortplantingssnelheid van 1500 m/s, bedraagt 0.01172 mm. Men kan besluiten dat het systeem in staat is om tot op ongeveer 1/100 van een millimeter nauwkeurig, afstandsmetingen uit te voeren.
8.2.4
Bepaling van het stralingspatroon van de transducers
Voor het bepalen van het stralingspatroon van een transducer wordt gebruik gemaakt van een ’cube corner’. Men vervaardigt zo’n ’cube corner’ aan de hand van 2 metalen plaatjes die onder een rechte hoek t.o.v. elkaar worden geplaatst. Een ’cube corner’ heeft de eigenschap dat invallende akoestische golven in dezelfde richting weerkaatst worden als de richting van inval (Figuur 8.12). Wanneer men deze ’cube corner’ op vaste afstand van een transducer plaatst maar onder een andere hoek t.o.v. de middelloodlijn van de transducer kan men het stralingspatroon bepalen.
Figuur 8.12: Cube corner
De gemiddelde waarde van de piek in de correlaties te wijten aan de reflectie met de ’cube corner’ werden genoteerd voor opeenvolgende hoeken in stappen van 1o . Uiteindelijk werd hun relatieve waarde t.o.v. de maximaal opgemeten piek uitgezet in dB. Het op die manier bekomen stralingspatroon wordt weergegeven in Figuur 8.13.
8.2 Uitgevoerde metingen
127
90 20 120
60 15
150
30
10
5
180
0
210
330
240
300 270
Figuur 8.13: Opgemeten stralingspatroon voor een transducer
8.3 Bepaling van de positie van een voorwerp
8.3
128
Bepaling van de positie van een voorwerp
Met behulp de meetopstelling werden voor een aantal voorwerpen van verschillende diameter en materiaal de positie binnen het bakje bepaald. Er moet op gewezen worden dat doordat de transducers niet omnidirectioneel zijn, er slechts een klein gebied is binnen het bakje waar de objecten goed detecteerbaar zijn. Plastieken cilinder met diameter 25 mm In Figuur 8.14 wordt de plaatsbepaling van een plastieken cilinder met 25 mm diameter weergegeven.
Figuur 8.14: Plaatsbepaling van een plastieken cilinder met 25 mm diameter
8.3 Bepaling van de positie van een voorwerp
129
Metalen cilinder met diameter 12 mm In Figuur 8.14 wordt de plaatsbepaling van een metalen cilinder met 12 mm diameter weergegeven.
Figuur 8.15: Plaatsbepaling van een metalen cilinder met 12 mm diameter
8.3 Bepaling van de positie van een voorwerp
130
Rubberen cilinder met diameter 6 mm In Figuur 8.16 wordt de plaatsbepaling van een rubberen cilinder met 6 mm diameter weergegeven.
Figuur 8.16: Plaatsbepaling van een rubberen cilinder met 6 mm diameter
8.3 Bepaling van de positie van een voorwerp
131
Nagel met diameter 2 mm In Figuur 8.17 en Figuur 8.18 wordt de plaatsbepaling van een nagel met 2 mm diameter weergegeven. Bij deze twee metingen is de positie van de nagel lichtjes verschoven. Men ziet dat ook de plaatsbepaling lichtjes veranderd.
Figuur 8.17: Plaatsbepaling van een nagel met 2 mm diameter
8.3 Bepaling van de positie van een voorwerp
Figuur 8.18: Plaatsbepaling van een nagel met 2 mm diameter
132
8.4 Verder onderzoek
8.4
133
Verder onderzoek
In deze sectie worden enkele toekomstige uitbreidingen voor het systeem onder de loep genomen. • In het huidige systeem wordt gebruik gemaakt van vrij unidirectionele transducers, waardoor het meetgebied beperkt blijft. Om het systeem omnidirectioneler te maken zou men de transducers kunnen voorzien van een diafragma, zodat de combinatie van transducer en diafragma omnidirectioneel wordt. Deze methode werd echter getest en beperkt het zendvermogen in zulke mate dat tijdsmetingen niet meer correct gebeuren. Een andere mogelijkheid om omnidirectioneler te werken, is transducers kiezen met kleine afmetingen ten opzichte van de golflengte bij de gebruikte resonantiefrequentie. Nog een andere manier om het meetgebied te vergroten, is meer transducers gebruiken. • Momenteel heeft men in de dichte nabijheid van de transducers een blinde zone. Om deze zone zoveel mogelijk te beperken, moeten de codes zo snel mogelijk uitgestuurd worden, zodat het ontvangen van de reflecties kan beginnen. Een eerste mogelijkheid om deze blinde zone te beperken is transducers te kiezen met een grotere bandbreedte. Hierdoor kan men de codes vlugger uitsturen en wordt de tijd dat men geen reflecties kan ontvangen kleiner. Een tweede voordeel bij deze breedbanderige transducers is dat men langere codes kan gebruiken, waardoor men betere correlatie-eigenschappen verkrijgt. Betere correlatieeigenschappen laten op hun beurt toe om met nog meer zenders en ontvangers tegelijkertijd te werken, betere vertragingstijden vast te stellen of om het zendvermogen te beperken (dit is nuttig bij een draagbare toepassing met een batterij). • Bij een mobiele toepassing, waarbij de vrouw kan bewegen, is het belangrijk dat de meettijd zo kort mogelijk is. Men kan er dan van uit gaan, dat de transducers binnen de meettijd op dezelfde positie blijven. Om de meettijd te verkorten zou men de verschillende kanalen kunnen voorzien van een A/D-convertor, zodat de metingen tegelijkertijd kunnen gebeuren. • Daar niet elke borst dezelfde vorm heeft en de persoon in kwestie vrij kan bewegen, is de locatie van de transducers op de BH niet a priori gekend. Voor correcte signaalverwerking is het nochtans zeer belangrijk de precieze locatie van de transducers te kennen. Aangezien het Global Positioning System (GPS) reeds haar diensten bewees als plaatsbepalingssysteem, rees het idee om de methodes van GPS te vertalen naar het systeem.
8.4 Verder onderzoek
134
Net zoals bij GPS, kan in het systeem gebruik gemaakt worden van enkele ’satelliettransducers’ met gekende, vaste positie om de ongekende locatie van de andere transducers te bepalen. Deze satelliettransducers bevinden zich bijvoorbeeld op de beugels van de BH. De locatie van de andere transducers wordt dan eenvoudig bepaald door signalen naar de drie vaste transducers te versturen. Pas wanneer de locatie van een transducer gekend is, kan hij betrokken worden in de meting. Bij deze methode is het zeer belangrijk dat de bandbreedte van de transducers groot is. De bepaling van de positie van de transducers dient immers snel te gebeuren, zodat ervan uit kan gegaan worden dat indien men een meting doet de transducers zich nog op dezelfde positie bevinden. • Door de smalle bandbreedte van het gewenste signaal kan het nuttig zijn om undersampling [24] toe te passen. Door een goede keuze van de samplefrequentie kan men er immers voor zorgen dat een gespiegelde versie van het gemoduleerde signaal in de basisband terechtkomt. Deze samplefrequentie kan veel lager gekozen worden dan tweemaal de hoogste frequentie in het signaal. Op die manier kan men tragere A/D-convertoren gebruiken en kan men de hoeveelheid geheugen nog beperken. Men moet er wel rekening mee houden dat bij deze methode de draaggolf uit het bemonsterde signaal verdwijnt. Dit heeft zijn gevolgen bij de signaalverwerking en is de reden waarom het hier niet verder werd uitgewerkt. • Door een nog verdere analyse van de ontvangen signalen kan de signaalverwerking nog geoptimaliseerd worden. Zo kunnen er uitbreidingen geschreven worden die in staat zijn meerdere objecten te detecteren.
BESLUIT
135
Hoofdstuk 9
Besluit Het doel van deze thesis was, om met behulp van een beperkt aantal transducers, een object in een waterige omgeving op te sporen. We zijn er in geslaagd om met 4 transducers een systeem te ontwerpen dat in staat is om de positie en grootte van objecten te bepalen. De afstand van een transducer tot een voorwerp kan met 0,01 mm precisie bepaald worden. Ook de positie van het object kan binnen een beperkt gebied (door de directionaliteit van de transducers) met grote nauwkeurigheid geschat worden. Het kleinste object dat via onze proefopstelling kan worden opgespoord, is een object met een diameter van een millimeter. Mits een aantal uitbreidingen is het mogelijk om het detectiegebied te vergroten. We denken hier vooral aan het gebruik van een groter aantal transducers. De aanpassingen aan het systeem die hiervoor nodig zijn, zijn eenvoudig.
Het belangrijkste van deze thesis is echter de kennis die we opgedaan hebben. In geen van de vier voorgaande jaren hebben we zoveel praktische en nuttige kennis opgedaan als in dit jaar. Door de grote verscheidenheid in dit project, zijn we met allerlei facetten van systeemontwerp in aanraking gekomen. Zowel digitale als analoge elektronica kwamen ruim aan bod. Ook verdere signaalverwerking om aan plaatsbepaling te doen, vormde een belangrijk deelaspect.
Kort samengevat kunnen we, gewapend met een pak nieuwe kennis en vaardigheden, terugblikken op een geslaagd thesisjaar.
VOORBEELD VAN EEN .COE BESTAND
Bijlage A
Voorbeeld van een .COE bestand ************************************************* *** Example of Single Port Block Memory .COE file *** *************************************************** ; This .COE file specifies the contents for a block ; memory of depth=16, and width=4. In this case, values ; are specified in binair format. memory initialization radix=2; memory initialization vector= 1111, 1111, 1111, 1111, 1111, 0000, 0101, 0011, 0000, 1111, 1111, 1111, 1111;
136
ONTVANGEN EN STUREN VAN DATA VAN OP DE PC
137
Bijlage B
Ontvangen en sturen van data van op de PC Voor de verwerking van de ontvangen signalen is het noodzakelijk dat deze signalen rechtstreeks via een MATLAB-array worden ingelezen en dat de juiste controlesignalen vanuit MATLAB verstuurd worden. Om te communiceren met de FPGA werd er in INTEC design reeds C-code geschreven die goed werkt. Men zou er dus moeten in slagen om deze C-code vanuit MATLAB te gebruiken. MEX-files bieden hier een oplossing.
B.1
MEX-files
MEX-file staat voor MATLAB Executable file. Het is C broncode, die, wanneer gecompileerd, opgeroepen kan worden vanuit MATLAB, op dezelfde manier als een gewone MATLAB-functie. De externe interface functies van MATLAB laten toe om data tussen MATLAB en MEX-files te transfereren.
B.1.1
Interface naar MATLAB
Wanneer men programma’s schrijft in C, wordt er altijd verondersteld dat het programma zal starten met uitvoeren vanaf main(). MEX-files zijn op die manier gelijkaardig doordat ze altijd starten vanaf een speciale functie mexFunction() genaamd. Om nu een MEX-functie te maken, moet de ”mex.h” bibliotheek ge¨ıncludeerd worden. Hierin zijn alle mx-fucnties [22] die gebruikt kunnen worden in een MEX-file, gedefini¨eerd.
B.1 MEX-files
138
#include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]) { //alle code die uitgevoerd moet worden }
De mexFunction heeft vier inputparameters die corresponderen met de manier waarop de functie wordt opgeroepen vanuit MATLAB, (bijvoorbeeld [a,b] = aFunction(d,e,f)). De vier parameters staan voor het volgende: • nlhs: Deze parameter geeft het aantal outputs en is van het type integer. In het voorbeeld is nlhs = 2, nl. a en b. • plhs: Deze parameter is een array van pointers naar de eigenlijke output argumenten • nrhs: Deze parameter is gelijkaardig aan nlhs, hij houdt het aantal inputs bij • prhs: Deze array houdt alle pointers naar de mxArrays van de input data bij (mxArray is een MATLAB-structuur om data in op te slaan, zie verder). In het voorbeeld is prhs[0] de pointer naar de mxArray d, prhs[1] de pointer naar de mxArray e en prhs[2] de pointer naar de mxArray f. Op Figuur B.1 wordt de bovenstaande opsomming afgebeeld.
Figuur B.1: Input en output argumenten
De variabelen prhs en plhs zijn geen mxArrays. Het zijn rijen van pointers naar mxArrays. De variabele prhs is gedeclareerd als const (i.e. de waarden die als input dienen voor de MEX-file
B.1 MEX-files
139
mogen niet veranderd worden binnen de mexFunction). De waarden in plhs zijn ongedefini¨eerd wanneer de MEX-file begint. De mxArrays waar ze naar verwijzen moeten daarom expliciet worden gecre¨eerd vooraleer ze worden gebruikt.
B.1.2
Bijhouden en bewerken van data
De belangrijkste MATLAB-structuur om data bij te houden in een MEX-file is de mxArray. Dit is de C representatie van een MATLAB-array. Alle types van MATLAB-arrays (scalairen, vectoren, matrices, strings,...) kunnen voorgesteld worden door een mxArray. Deze wordt gedeclareerd zoals iedere andere variabele: mxArray *mijnarray;
Dit cre¨eert een mxArray genaamd mijnArray. De waarden binnen mijnArray zijn ongedefini¨eerd wanneer deze wordt gedeclareerd. Vooraleer ze kunnen gebruikt worden, moeten ze worden gedeclareerd met een mx* routine (bv. mxCreateNumericArray()). mx* functies worden gebruikt om de data in de mxArrays te lezen en te schrijven. Ze worden ook gebruikt voor memory management en om mxArrays te cre¨eren. De meest gebruikt mx* routines worden hieronder opgesomd. • Array creation: mxCreateNumericArray, mxCreateCellArray, mxCreateCharArray • Array acces: mxGetPr, mxGetPi, mxGetM, mxGetData, mxGetScalar • Array modification: mxSetPr, mxSetPi, mxSetData • Memory management: mxMalloc, mxCalloc, mxFree Om numerieke data op te slaan gebruikt men mxCreateNumericArray(). mxArray *mxCreateNumericArray(int ndim, const int *dims, mxClassID class, mxComplexity ComplexFlag);
De argumenten van deze functie zijn de dimensie van de vector, de klasse waartoe de data behoort, bv. 16-bit unsigned int, en een vlag die zegt of de data re¨eel is of complex. Deze functie geeft een pointer terug die verwijst naar de gecre¨eerde array. Om nu de data in deze array te bewerken, maakt men gebruik van de mx-functie mxGetData(). void *mxGetData(const mxArray *array_ptr);
B.2 Transfert tussen FPGA en MATLAB
140
Deze functie geeft een void pointer terug die wijst naar het eerste element van de mxArray. Met behulp van deze pointer heeft men toegang tot ieder element in de array.
B.2
Transfert tussen FPGA en MATLAB
De data die afkomstig is van de FPGA, kan reeds met C-code gelezen of geschreven worden. Er is nu een functie nodig die zorgt voor de gepaste interface met MATLAB. Hiervoor gebruikt men de MEX-files. Met behulp van een mexFunction() kan men zorgen voor een interface met MATLAB en kan men de C-functies die reeds beschikbaar zijn, gebruiken.
B.2.1
Input en output argumenten
Zoals in B.1.1 reeds beschreven kan men met de mexFunction() een aantal argumenten meegeven. In deze applicatie is het nodig dat men kan kiezen welke transducers er aangestuurd worden en dat men alle data afkomstig van de transducers opslaat in een MATLAB-array. Om de keuze te maken welke transducers worden aangestuurd, moet men als argument een 1 of een 0 meegeven, bijvoorbeeld [a,b,c,d] = getdata(1,0,0,0). In dit voorbeeld stuurt enkel de eerste transducer een code uit. De signalen afkomstig van alle vier de transducers worden opgeslagen in de vectoren a, b, c en d. Om de vier input-argumenten te versturen naar de FPGA wordt de volgende code gebruikt: #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]) { ... pwm4 = (int)(mxGetScalar(prhs[0]));
//4e transducer
pwm3 = (int)(mxGetScalar(prhs[1]));
//3e transducer
pwm2 = (int)(mxGetScalar(prhs[2]));
//2e transducer
pwm1 = (int)(mxGetScalar(prhs[3]));
//1e transducer
... }
De waarde van de input-argumenten wordt eerst met behulp van de mxfunctie mxGetScalar() gelezen. Deze functie geeft de waarde van het eerste element van de input mxArray weer, als een double. Omdat het hier enkel gaat over nullen en enen, wordt deze waarde gecast naar een integer.
B.2 Transfert tussen FPGA en MATLAB
141
Het is iets minder makkelijk om de data afkomstig van de FPGA over te brengen naar MATLAB. Hiervoor moet men structuren voorzien die de data afkomstig van de FPGA in het gepaste formaat zet, zodat die kan gelezen worden door MATLAB. Eerst en vooral moet men geheugen voorzien om de data op te slaan. Hiervoor maakt men in deze toepassing gebruik van de mxfunctie mxCreateNumericArray(). Om dit geheugen te linken aan de output-argumenten maakt men gebruik van de volgende constructie: #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]) { ... plhs[0] = mxCreateNumericArray(nx,ny,mxINT16_CLASS ,mxREAL); plhs[1] = mxCreateNumericArray(nx,ny,mxINT16_CLASS ,mxREAL); plhs[2] = mxCreateNumericArray(nx,ny,mxINT16_CLASS ,mxREAL); plhs[3] = mxCreateNumericArray(nx,ny,mxINT16_CLASS ,mxREAL); ... }
De argumenten van de functie mxCreateNumericArray geven aan dat de data die in deze array moet opgeslagen worden re¨eel is en van het type 16-bit signed int. Dit type komt overeen met het datatype afkomstig van de FPGA, waar men eveneens signed integers van 16 bits breed opslaat. Om zeker te zijn dat de functie geen onverwachte resultaten geeft, moeten de argumenten van de MATLAB-functie gecontroleerd worden. Het eerste wat men controleert, is het aantal inputen output-argumenten. ... if(nrhs != 4) mexErrMsgTxt("Must have four input arguments.");
if(nlhs != 4) mexErrMsgTxt("Must have four output arguments."); ...
Daarna controleert men het type van de input-argumenten. De for-lus zorgt ervoor dat alle vier de input-argumenten gecontroleerd worden. In de eerste if-constructie wordt gecontroleerd of
B.2 Transfert tussen FPGA en MATLAB
142
het input-argument niet complex is en of het geen karakter is. In de tweede if-constructie wordt de waarde van het input-argument gecontroleerd, dit moet 1 of 0 zijn. ... for (i=0; i
if((double)(mxGetScalar(prhs[i])) != 1 & (double)(mxGetScalar(prhs[i])) != 0){ mexErrMsgTxt("Inputs must either be 0 or 1"); } } ...
De input-argumenten worden omgezet naar een double omdat men op die manier ook de kommagetallen eruit kan halen.
B.2.2
Transfereren van data
Om data en commando’s naar de FPGA te schrijven maken we gebruik van de functie fx2 write(). Deze functie werd ontworpen in het INTEC design-labo. De syntax ziet er als volgt uit: ... fx2_write(fd,&command,1,CMD_OUT); ...
Het eerste argument van deze functie is het device waar de data naartoe moet geschreven worden. Het tweede argument is de data die moet verstuurd worden en het derde argument is de hoeveelheid data in bytes. Het laatste argument is het adres van de buffer op de FX2 waarnaar de data moet geschreven worden. Op een analoge manier kan de functie fx2 read() gebruikt worden om data van de FPGA te lezen. Deze functie leest het aantal bytes in die men in het argument meegeeft.
B.2.3
Sturen van controledata
Om alle toestandsmachines, geheugens, enz. op de FPGA en op de FX2 goed te initialiseren, worden er eerst een aantal controlesignalen verstuurd. Hierbij wordt het start-signaal, dat dient om het PWM-signaal te starten, laag gebracht. De USB trig wordt laag gebracht, zodat er geen
B.2 Transfert tussen FPGA en MATLAB
143
data naar de PC wordt gestuurd. De geheugens op de FX2 worden gereset en het reset-signaal voor de FPGA wordt hoog gezet. Nadat alle bits voor de initialisatie zijn ontvangen, wordt de controle data voor de transducers verstuurd. Hiervoor maakt men gebruik van de seri¨ele interface van de FX2. Men verstuurt 1 byte om de vier controlebits over te brengen. De eerste vier bits die binnen komen in de FPGA, worden gebruikt om de juiste transducers te doen zenden. Met behulp van de inputargumenten kan men de juiste bits versturen. ... control = pwm4*1 + pwm3*2 + pwm2*4 + pwm1*8; ...
Als deze controledata verstuurd zijn, wordt het reset-signaal laag gebracht, wordt het USB trigsignaal hoog gebracht en wordt het start-signaal kort hoog gebracht, zodat de FPGA de startpuls ziet.
B.2.4
Opslaan van ontvangen data
De data die gelezen wordt van de FPGA moet worden opgeslagen in een MATLAB-array en doorgegeven worden aan de MATLAB-workspace als argument. Omdat de data afkomstig van de 4 transducers afzonderlijk wordt gemeten, kan men 4 MATLAB-arrays construeren die de gemeten data opslaan. Deze arrays worden dan gelinkt aan de output-argumenten van de MATLABfunctie. Met behulp van de functie mxGetData() wordt de pointer die wijst naar de array die wordt doorgegeven aan MATLAB, opgeslagen in een nieuwe pointer. Met behulp van deze pointer kan men dan gemakkelijk rijen van data opslaan. ... outputx = (signed short int *) mxGetData(plhs[0]); ...
Onderstaande code wordt vier maal doorlopen, een keer voor iedere transducer. Eerst wordt de data van de FPGA gelezen en daarna wordt deze weggeschreven in een MATLAB-array. Van iedere transducer worden er 2560 samples op de FPGA opgeslagen, dit komt overeen met een meting van 320 µs. Om deze samples in te lezen wordt 10 keer de functie fx2 read() gebruikt. Deze functie leest de data afkomstig van de FPGA byte per byte in. Om nu een sample te bekomen, moet men twee opeenvolgende bytes combineren. Deze waarde wordt dan omgezet in een signed integer omdat de data afkomstig van de FPGA een teken heeft.
B.2 Transfert tussen FPGA en MATLAB
... for(j=0;j<10;j++) { rv = fx2_read(fd,buffer1,512,DATA_IN);
if (rv < 0) { mexErrMsgTxt("Error reading device"); } else { printf("Packet Read - rv is \%d\n",rv); }
for(i=0; i<512/2;i++){ __u16 temp; temp = buffer1[2*i] + (((__u16)buffer1[2*i+1])<<8); output2[256*j+i] = (signed short int)temp; } } ...
144
BIBLIOGRAFIE
Bibliografie [1] International Union Against Cancer (http://www.uicc.org) [2] World Health Organisation (http://www.who.int) [3] Europese Unie (http://europa.eu.int/comm/health/) [4] http://www.kwfkankerbestrijding.nl [5] Vlaamse Liga tegen Kanker (http://www.vlk.be) [6] http://www.rivm.nl/vtv/object document/o1493n17276.html [7] MedlinePlus: Medical Encyclopedia [8] Essentials of Ultrasound Physics. James A. Zagzebski. 1996 [9] Ferroperm Piezoceramics. Datasheet Pz27. http://www.ferroperm-piezo.com/ [10] Technical University Denmark (2002). Field II Ultrasound Simulation Program. http://www.es.oersted.dtu.dk/staff/jaj/field/logo example.html [11] Analog Devices (2003). Datasheet AD6645. http://www.analog.com/en/prod/0,2877,AD6645,00.html [12] Xilinx (2005). Datasheet Xilinx Virtex-II. http://direct.xilinx.com/bvdocs/publications/ds031.pdf [13] Cypress (2001). EZ-USB FX2 Technical Reference Manual. http://www.cypress.com [14] Analog Devices (2005). Datasheet AD8370. http://www.analog.com/en/prod/0%2C2877%2CAD8370%2C00.html
145
BIBLIOGRAFIE
146
[15] Analog Devices (2004). Datasheet ADG774. http://www.analog.com/en/prod/0,2877,ADG774,00.html [16] Analog Devices (1999). Datasheet ADG704. http://www.analog.com/en/prod/0%2C2877%2CADG704%2C00.html [17] P. Poelaert (2006). Codering en analoge verwerking van ultrasoonsignalen voor vroegtijdige ambulante detectie van borstkanker. Afstudeerwerk, Faculteit toegepaste wetenschappen INTEC. [18] Xilinx (2005). Datasheet Single-Port Block Memory Core v6.2. http://www.xilinx.com [19] Xilinx (2004). Datasheet Asynchronous FIFO v6.1. http://www.xilinx.com [20] Elsevier (2001). Digital signal processing techniques for accurate ultrasonic sensor measurement. Gregorio Andria, Filippo Attivissimo, Nicola Giaquinto. [21] IEEE (1996). Accurate Distance Measurement by an Autonomous Ultrasonic System Combining Time-of-Flight and Phase-Shift Methods. Francis Gueuning, Mihai Varlan, Christian Eugne, Pascal Dupuis. [22] The Mathworks. http://www.mathworks.com/access/helpdesk/help/techdoc/apiref/ [23] Elsevier (2005). Composition measurements of crude oil and process water emulsions using thick-film ultrasonic transducers. Guangtian Menga, Artur J. Jaworski, Neil M. White. [24] Analog Devices (2005). What the Nyquist Criterion Means to Your Sampled Data System Design. http://www.analog.com/en/content/0,2886,760%255F%255F91249,00.html