Jump to content
  • 0

ZMOD DAC Board - Output buffer once


Jaber29

Question

Hello,

I have an Eclypse Z7 Board with attached ZMOD ADC and DAC boards. I am currently playing around with the Linux Demo-SDK-Projects for the DAC. I have no problem filling the circular output buffer with my desired waveform and grab the periodic signal from the SMA socket.

Unfortunately I struggle with following use-case:

I need to output a single gaussian pulse. To that end I wanted to fill the circular buffer with my desired signal and then only output the pulse once. Once I enable the DAC output, it automatically repeats once it got to the end of the buffer, which is fine for most applications I guess.

With a sample clock of 10 Mhz, and the usual Linux induced latency I am not able to reliably disable the DAC at the end of the circular buffer, since the signal length is 1.66ms at most. I was figuring, that I could probably tweak the FPGA part and add a custom flag that disables the automatic buffer looping but since there are no design sources of the IP blocks available (are there any?) I'm quite a bit lost.

Maybe I missed something, but how can I output the content of the circular buffer only once?

I would be glad, if someone could point me in the right direction.

Best regards
 

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0
I've pretty much abandoned the Eclypse-Z7 as a platform due to the poor support and hardware design limitations so it's been a while since I've messed with the inner workings of that platform. There are just better ways to accomplish the same functionality on other platforms. Also, except for looking at the demos supplied by Digilent, I've only used the low-level controller IP as the AXI IP iis limited.

The most straightforward way to use the DAC1411 pod to provide a single-shot waveform might be to mux the low-level DAC1411 controller sCh1In and sCh2In inputs with either your waveform source or a static quiescent value. This involves breaking into the code base supplied by Digilent, which isn't a trivial task the way that they have their GitHub repository set up. You'll likely have to add some AXI GPIO signals to interact with the HW changes. When the Eclypse-Z7 is running Linux this may involve some agony as you will have to add user space access to them.

You definitely, don't want to try and control this in a Linux application directly; you'll need supporting hardware to make the timing work.

Digilent seems to be headed toward an instrument based product line as opposed to concentrating on general purpose FPGA hardware ( just a sense based on what's been offered in the way of new products recently ). I wouldn't expect their support for their SYZYGY boards to be competitive with their more expensive instrument products. Basically, I view the Eclypse-Z7 code base as a half-hearted way to demonstrate that the hardware can do something rather than a good starting point for a custom application like yours. That's not to say that other users of the platform might have a more favorable view depending on what they want to accomplish.

One other thought. Using an SD card based Linux OS on a ZYNQ platform involves a real risk of corrupting the FS during development if you can't shutdown the OS in an orderly fashion. A better way to do this is to have teh OS run our of a ramdisk. You'll want to store data collected by applications in a ramdisk anyway to avoid SD card deterioration from excessive write operations.

I would suggest that using the Exlypse-Z7 with the Xilinx Standalone OS code and circumventing the Digilent AXI interfaces might be an easier, and quicker, way to get to where you want to be. If you search the Digilent forums there was someone else who posted about their project, which was the same as yours, and that was their approach. Edited by zygot
Link to comment
Share on other sites

  • 0
On 5/11/2022 at 5:48 PM, zygot said:

I've pretty much abandoned the Eclypse-Z7 as a platform due to the poor support and hardware design limitations so it's been a while since I've messed with the inner workings of that platform. There are just better ways to accomplish the same functionality on other platforms. Also, except for looking at the demos supplied by Digilent, I've only used the low-level controller IP as the AXI IP iis limited.

The most straightforward way to use the DAC1411 pod to provide a single-shot waveform might be to mux the low-level DAC1411 controller sCh1In and sCh2In inputs with either your waveform source or a static quiescent value. This involves breaking into the code base supplied by Digilent, which isn't a trivial task the way that they have their GitHub repository set up. You'll likely have to add some AXI GPIO signals to interact with the HW changes. When the Eclypse-Z7 is running Linux this may involve some agony as you will have to add user space access to them.

You definitely, don't want to try and control this in a Linux application directly; you'll need supporting hardware to make the timing work.

Digilent seems to be headed toward an instrument based product line as opposed to concentrating on general purpose FPGA hardware ( just a sense based on what's been offered in the way of new products recently ). I wouldn't expect their support for their SYZYGY boards to be competitive with their more expensive instrument products. Basically, I view the Eclypse-Z7 code base as a half-hearted way to demonstrate that the hardware can do something rather than a good starting point for a custom application like yours. That's not to say that other users of the platform might have a more favorable view depending on what they want to accomplish.

One other thought. Using an SD card based Linux OS on a ZYNQ platform involves a real risk of corrupting the FS during development if you can't shutdown the OS in an orderly fashion. A better way to do this is to have teh OS run our of a ramdisk. You'll want to store data collected by applications in a ramdisk anyway to avoid SD card deterioration from excessive write operations.

I would suggest that using the Exlypse-Z7 with the Xilinx Standalone OS code and circumventing the Digilent AXI interfaces might be an easier, and quicker, way to get to where you want to be. If you search the Digilent forums there was someone else who posted about their project, which was the same as yours, and that was their approach.

You are confirming my concerns. I will consider your suggestions, abandoning Linux and going for a more bare-metal approach. I will take a look at the other project that you mentioned. Thanks for taking the time, writing such an extensive response. I will report back if I am able to come up with a reasonable solution. Best regards

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...