From a2bee250026142ff0000f1cb7c89b397aa38f3db Mon Sep 17 00:00:00 2001 From: Dylan Missuwe Date: Sun, 6 Nov 2022 12:00:22 +0100 Subject: [PATCH 1/2] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 7d6f4ff..2620817 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,7 @@ If we were to send a sinewave through the transducers with a delay determined by ## Setup There are two array's used in the levitation example. One is facing upwards and the other is facing downwards. They are facing eachother with a distance of 70mm. this distance is arbitrarily chosen based on the needed volume for levitation. + +## FPGA +The FPGA implementation receives 7 bit values from the PS for every transducer. This value sets the phase of the output signal. This is acheived by making a fifo of length = 2^7. The 40KHz signal is fed into the fifo at 40KHz * 2^7 = 5.12MHz. The reason for this is because we want a full period of the signal in the fifo. The 7 bit value determines where the output signal is tapped from. +Im currently cleaning up the FPGA implementation and turn it into an IP-block, i will include the files in this repository once i'm finished. From cd7208160b7f8185a2052c992324149ba42c607e Mon Sep 17 00:00:00 2001 From: Dylan Missuwe Date: Tue, 8 Nov 2022 20:51:45 +0100 Subject: [PATCH 2/2] Update README.md --- README.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 2620817..9ab57a0 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,26 @@ # Ultrasonic_Phased_Array -This repository contains all the sources for a working ultrasonic phased array. +This repository will contain all the sources for a working ultrasonic phased array. The vitis project in this repository is to be used in a accoustic levitation example. ## abstract When we power up the system, the transducers start emitting ultrasonic sound waves each at the same frequency (40kHz) and amplitude. However, the phases of the transducers are software controllable. This gives us full control over the beam shape and direction exiting the transducer array. ## Working principle -Lets consider an example where we want to send a single pulse of airpressure to a certain point in space. We have an array of transducers we can work with. If we time the pulse at each transducer correctly, we can make all the waves arrive at that point simultaniously. -Since the waves travel in a sphere around the transducer, we can use the distance from the point to each transducer in combination with the wavelength to time the pulse correctly. - +Lets consider an example where we want to send a single pulse of airpressure to a certain point in space. We have an array of transducers we can work with. Since the waves travel in a sphere around the transducers, we can time the pulses at each transducer in such a way that all the wavefronts arrive at the same time in a single point. This is illustrated in the animation below. +
[](img/gifsmos_single_focus.gif) - -If we were to send a sinewave through the transducers with a delay determined by the distance from the focal point, all the peaks and troughs of those waves would ideally only add up in the focal point. The amplitude would then be the greatest at that point and cancel out everywhere else. Since the sine wave is periodic, we use the remainder of devision by the wavelength as a negative phase shift of the sine waves. +
+If we were to send a sinewave with the same delay through the transducers instead of a single pulse, all the peaks and troughs of those waves would ideally only add up in the focal point. The amplitude would then be the greatest at that point and ideally cancel out everywhere else. This is actually not always the case because a side effect of using a periodic signal is that we create te posibility of sidelobes. Sidelobes are areas where some of the sinewaves add up unwantedly. To prevent the occurance of sidelobes, we need to space the transducers with a distance between 1/2 wavelength, and 1/4 wavelength. ## Setup -There are two array's used in the levitation example. One is facing upwards and the other is facing downwards. They are facing eachother with a distance of 70mm. this distance is arbitrarily chosen based on the needed volume for levitation. +There are two array's used in the levitation example. One is facing upwards and the other is facing downwards. They are facing eachother with a distance of 70mm. This distance is arbitrarily chosen based on the needed volume for levitation. ## FPGA -The FPGA implementation receives 7 bit values from the PS for every transducer. This value sets the phase of the output signal. This is acheived by making a fifo of length = 2^7. The 40KHz signal is fed into the fifo at 40KHz * 2^7 = 5.12MHz. The reason for this is because we want a full period of the signal in the fifo. The 7 bit value determines where the output signal is tapped from. -Im currently cleaning up the FPGA implementation and turn it into an IP-block, i will include the files in this repository once i'm finished. +The FPGA used in this project is the ZYNQ XC7Z020 on a Zybo Z7 board. It contains two distinct parts: The processing system (PS) and the programmable logic (PL): + +### Programmable Logic +The PL contains an implementation which receives 7 bit values from the PS (Processing System) for every transducer. This value sets the phase of the output signal. This is acheived by making a fifo of length = 2^7 in the case of a phase resolution of 7 bits. The 40KHz signal is fed into the fifo at 40KHz * 2^7 = 5.12MHz. The reason for this is because we want exactly 1 full period of the signal in the fifo. The 7 bit value determines at which address of the fifo the output signal is tapped from. This way wan can adjust the phase of the output signal in 2^7 steps per period. +Im currently cleaning up the FPGA implementation and turning it into an IP-block, i will include the files in this repository once i'm finished. + +### Processing System +TODO