Jump to content
  • 0

Real time signal processing using Eclypse Z7 and ZMODs


ebaser

Question

Hello,

I've been dealing with the demo projects that digilent provided for Zmods since last week. My aim is to develop a FMCW radar application using both ADC and DAC. 

From the screenshots on below, I figured out the basic working principle that; for DAC; A buffer in DMA for the DAC is filled from the DDS output, then it is read from the DAC module and sent over the controller. For ADC: when I call the function start.adcZmod on software, it starts to fill the analog data to a buffer on it's DMA. 

But the part I don't understand is how it works when it comes to real time data processing. FMCW needs precise timing, so I need to start ADC immediately as the chirp is produced from DAC. The maximum length of the buffers in DMA are 0x3FFF(16383 in decimal) as I understood. So, if I produce a sweep, will the maximum time interval of it can be 163,80us maximum since the clock frequency is 100MHz. Secondly, what can I do if the incoming wave is not fitted in one buffer?

I'm a fresh graduate and trying to develop my skills on FPGAs and signal processing. Thanks in advance.

Screenshot from 2021-02-27 09-38-56.png

Screenshot from 2021-02-27 09-39-48.png

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 1

Hi @ebaser,

Generally speaking if you want real time data processing, most of the processing part needs to be done in the PL side of design; as Linux and in some cases bare-metal even are not fast enough to satisfy the required speed. Our current architecture is not designed, yet, to allow a easy interface between PL processing and PS. My recommendation is to focus on our low level example if you want real time processing ( Low Level example ).

- Ciprian

Link to comment
Share on other sites

  • 1

Have you seen this project?: https://forum.digilentinc.com/topic/20331-more-fun-with-phasors/

 

The Eclypse-Z7 isn't the best platform for your type of project. The XEM7320 has USB 3.0 connectivity. This isn't sufficient for uploading/downloading raw samples at the maximum Fs of the converters but a lot faster than a UART. If you to use a ZYNQ platform and want a UART in your PL that isn't connected to the PS you can do that using a cheap TTL USB UART. Digilent has a PMOD version and Adafruit and Sparkfun have others that might be better for other platforms without a PMOD. If you are going to need sample storage you platform really should have external DDR connectivity directly to the programmable logic. This simple change to the Eclypse-Z7 would have made a huge change to it's relevancy as a general purpose signal processing platform albeit at a slight cost increase. 

Link to comment
Share on other sites

  • 0
3 hours ago, Ciprian said:

Hi @ebaser,

Generally speaking if you want real time data processing, most of the processing part needs to be done in the PL side of design; as Linux and in some cases bare-metal even are not fast enough to satisfy the required speed. Our current architecture is not designed, yet, to allow a easy interface between PL processing and PS. My recommendation is to focus on our low level example if you want real time processing ( Low Level example ).

- Ciprian

Hi @Ciprian,

Thank you for the suggestion. To briefly explain, I'll produce some sweep signal periodically from DAC and capture the reflected signal with ADC port and send it through UART to process&visualize it on my PC. If I use the Low level example, how can I send this data through serial channel without PS? I've coded UART in VHDL with a state machine model in the past but I'm not sure if I can integrate each other.

 

Current working diagram in my mind is like as shown in below.
 

figure.png

Link to comment
Share on other sites

  • 0
57 minutes ago, zygot said:

Have you seen this project?: https://forum.digilentinc.com/topic/20331-more-fun-with-phasors/

 

The Eclypse-Z7 isn't the best platform for your type of project. The XEM7320 has USB 3.0 connectivity. This isn't sufficient for uploading/downloading raw samples at the maximum Fs of the converters but a lot faster than a UART. If you to use a ZYNQ platform and want a UART in your PL that isn't connected to the PS you can do that using a cheap TTL USB UART. Digilent has a PMOD version and Adafruit and Sparkfun have others that might be better for other platforms without a PMOD. If you are going to need sample storage you platform really should have external DDR connectivity directly to the programmable logic. This simple change to the Eclypse-Z7 would have made a huge change to it's relevancy as a general purpose signal processing platform albeit at a slight cost increase. 

Thank you, I haven't seen your project before, I'll take a look it asap. Unfortunately, I've bought Eclypse Z7 and have no chance to change it. For the rest, I'm a little bit confused about the serial communication part. Isn't it same with using JTAG&UART Micro USB port on the board to communicate? Also I'm not sure if I can handle an external memory connected to the system to store&manage data.

Link to comment
Share on other sites

  • 0

I've executed quite a few experiments with the Eclypse-Z7 just as a way to figure out a path around the very limited higher-level supporting code that Digilent provides. While it is an unusually and unnecessarily hard platform to work with there are certainly things that you can do with it if you have some HDL development skill.

The maximum 16383 sample limit provided by the high level Digilent supporting code can be gotten around of with a better AXI interface approach. I've done 256 KB ADC capture on both channels, writing samples directly to the PS external memory. Unfortunately, if the signal chain goes through the PS to external memory, clocking can get complicated and become an issue that isn't easily resolved.. for some applications there is no solution. There is no provision on the board for an external Fs clock input for designs having that requirement.

If you limit PS interaction to control things look brighter, though your sampling buffer capabilities are limited to BRAM resources.   The PL in the ZYNQ 7020 are similar to an Artix 75 device. There are some project where the board is OK and some where it is inadequate. Unfortunately, not many people are willing to work out the platform requirements that their project has and do the analysis that a particular platform provides.  Overly optimistic marketing claims and hard to get at details don't help someone in your position. At the moment the Eclypse-Z7 is for advanced users unless they just want to replicate one of the 'star' demos that Digilent provides for sales promotion. Even for advanced users it can be more work than it's worth to use. My Eclypse-Z7 is just gathering dust these days as there are better platforms for doing what it was designed to do.

As to UARTs on the ZYNQ. All of the Digilent ZYNQ based boards use one of the PS UARTs connected through the MIO pins to a USB connector. The other PS UART can be connected through the EMIO to the PL. Once in the PL you can either connect it to a UART in your HDL code or through pins connected to external connectors such as the 2 PMODs on the Eclypse-Z7. If you do that then you need an external TTL USB UART cable, breakout board or PMOD to connect the UART to a PC. You can also just implement a UART in your HDL that the PS is not aware of and communicate with registers in your HDL directly. I';ve been doing this forever with non-ZYNQ FPGA projects as a user interface or just for debugging.

Edited by zygot
Link to comment
Share on other sites

  • 0
On 3/3/2021 at 6:08 PM, zygot said:

I've executed quite a few experiments with the Eclypse-Z7 just as a way to figure out a path around the very limited higher-level supporting code that Digilent provides. While it is an unusually and unnecessarily hard platform to work with there are certainly things that you can do with it if you have some HDL development skill.

The maximum 16383 sample limit provided by the high level Digilent supporting code can be gotten around of with a better AXI interface approach. I've done 256 KB ADC capture on both channels, writing samples directly to the PS external memory. Unfortunately, if the signal chain goes through the PS to external memory, clocking can get complicated and become an issue that isn't easily resolved.. for some applications there is no solution. There is no provision on the board for an external Fs clock input for designs having that requirement.

If you limit PS interaction to control things look brighter, though your sampling buffer capabilities are limited to BRAM resources.   The PL in the ZYNQ 7020 are similar to an Artix 75 device. There are some project where the board is OK and some where it is inadequate. Unfortunately, not many people are willing to work out the platform requirements that their project has and do the analysis that a particular platform provides.  Overly optimistic marketing claims and hard to get at details don't help someone in your position. At the moment the Eclypse-Z7 is for advanced users unless they just want to replicate one of the 'star' demos that Digilent provides for sales promotion. Even for advanced users it can be more work than it's worth to use. My Eclypse-Z7 is just gathering dust these days as there are better platforms for doing what it was designed to do.

As to UARTs on the ZYNQ. All of the Digilent ZYNQ based boards use one of the PS UARTs connected through the MIO pins to a USB connector. The other PS UART can be connected through the EMIO to the PL. Once in the PL you can either connect it to a UART in your HDL code or through pins connected to external connectors such as the 2 PMODs on the Eclypse-Z7. If you do that then you need an external TTL USB UART cable, breakout board or PMOD to connect the UART to a PC. You can also just implement a UART in your HDL that the PS is not aware of and communicate with registers in your HDL directly. I';ve been doing this forever with non-ZYNQ FPGA projects as a user interface or just for debugging.

Thank you for the detailed explanation, I got most of the points. I don't have to use the UART, I was just thinking if it is the way to do it. As you said, sample rate of the UART will not be sufficient. USB or UDP may work but I don't know their details & how to implement them.  

Link to comment
Share on other sites

  • 0

Can't you use the 1G Ethernet port to communicate with a PC? Is the Ethernet port available in Bare Metal mode? Why do you need a PC? The PS is a fully fledged processor. It can run an OS - therefore it should be able to implement reasonably complex programs for a user. The same chip in the Zedboard can act as a full computer running an OS with a Display. I don't think the full potential of the system is being exploited.

Edited by Udayan Mallik
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...