John92 Posted May 13, 2022 Share Posted May 13, 2022 (edited) Hello, I'm kind of new in the Topic and need your advise as to how to get the DA4 Pmod to run on the Zybo Zynq-7000 Board. I could not find a IP for the DA4 and the Librarys I found seemed to be for PIC32 and not for ARM. (DSPI and DACSPI4) My Project so far is written in C and VHDL. I would be glad for any bit of help :) Best regards John Edited May 13, 2022 by John92 Link to comment Share on other sites More sharing options...
1 JColvin Posted June 27, 2022 Share Posted June 27, 2022 Hi @John92, It's been awhile, but I got the chance to test out the Pmod DA4 hierarchy (https://github.com/Digilent/vivado-library/tree/hierarchies/hierarchies) that Digilent made in Vivado/SDK 2019.1 for the Zybo Z7-10 and was able to get it working as is. Some instructions for getting the hierarchy up and running can be found here: https://digilent.com/reference/programmable-logic/guides/hierarchical-blocks. Please let me know if you have any questions. Thanks, JColvin Link to comment Share on other sites More sharing options...
1 JColvin Posted May 13, 2022 Share Posted May 13, 2022 Hi @John92, You are correct in that Digilent does not have an existing premade IP for the Pmod DA4. There is an Avnet made project for that uses the Zedboard that is linked in Resource Center, https://digilent.com/reference/pmod/pmodda4/start#additional_resources, though I have not personally used this demo. Otherwise, what you could do (I understand this isn't necessarily what you are hoping for) is take an existing Pmod IP that also communicates over SPI (such as the Pmod DA1 IP) and adjust it's code to work for the Pmod DA4. Mostly this will boil down to changing the DA1.c (https://github.com/Digilent/vivado-library/blob/master/ip/Pmods/PmodDA1_v1_0/drivers/PmodDA1_v1_0/src/PmodDA1.c) DA1-SpiIint function to properly set up using the external reference voltage (explained in the Pmod DA4 Reference Manual here, https://digilent.com/reference/pmod/pmodda4/reference-manual#interfacing_with_the_pmod), and the DA1_WriteIntegerValue function to instead transfer 4 bytes worth including the command, address (which output you want to send the signal out on), and the 12-bit data value. The SPI clock polarity (as set in the XSpi_SetOptions function in the DA1_SpiInit function) may need to be changed as well, I haven't looked into this specifically to see the two Analog Devices ICs use different SPI Modes. Let me know if you have any questions. Thanks, JColvin Link to comment Share on other sites More sharing options...
0 John92 Posted May 16, 2022 Author Share Posted May 16, 2022 Hello JColvin, thanks a lot for your answer 😀 I think I will try to change the DA1 as described, but I first need a little time to learn more about SPI and the AD5628 to understand the code. One question that comes with this would be how to connect this Code with the GPIO Pins. Until now I only used the PL to control the GPIO Pins, considering that this code is in C and not VHDL or Verilog I assume that this is a library and not a IP? (this is all pretty new to me) Best regards John Link to comment Share on other sites More sharing options...
0 JColvin Posted May 16, 2022 Share Posted May 16, 2022 Hi @John92, What happens with the Digilent IPs, at least in the case of the Pmod DA1, is that HDL is created to facilitate the connection between the Pmod port (the GPIO pins) and the on-board processor (Microblaze or the ARM Core processor on a Zynq chip) which is all wrapped together in a block that gets clicked and dragged onto the block design. There is a guide for how this can be done on our reference site here, https://digilent.com/reference/learn/programmable-logic/tutorials/pmod-ips/start, though it is designed for 2019.1 and older versions of the Xilinx software. The software side would then all be in C (the necessary files/libraries to connect the pin manipulations to the pins in the FPGA will have already been ported). Alternatively, you can, of course, just create an HDL project to run the Pmod DA4 on the Zybo Z7 and just ignore the ARM core processor entirely (though a caveat with this is that if you wanted to use the UART/serial terminal you will need to use the processor as that functionality is only available through the ARM core). There is a vhdl example for the DA4 made by another user at the end of this Forum thread here: https://forum.digilent.com/topic/49-working-with-da4-pmod-on-nexys4/?sortby=date, if you are interested. Thanks, JColvin Link to comment Share on other sites More sharing options...
0 John92 Posted May 31, 2022 Author Share Posted May 31, 2022 Hello, I tried to write a IP for the DA4 but I don't get any output. For the initialization I used: Command Bits: 1000 Address Bits: 0000 LSB: 1 And for the data transmission I used: Command Bits: 0011 Address Bits: 1111 Data: 011111111111 The upper picture is the initialization and the lower the data transmission. Best regards John Link to comment Share on other sites More sharing options...
0 JColvin Posted June 2, 2022 Share Posted June 2, 2022 Hi @John92, I will have to take a look and see if I can get it working; the output that you posted for your simulation looks correct in terms of the data stream as far as I can tell. Thanks, JColvin Link to comment Share on other sites More sharing options...
0 John92 Posted June 3, 2022 Author Share Posted June 3, 2022 Hi JColvin, I tried to break down the code a little. da4test.tar.gz BTN1 starts the process and BTN2 changes the data between "000000000000", "011111111111" and "111111111111". Best regards John Link to comment Share on other sites More sharing options...
Question
John92
Hello,
I'm kind of new in the Topic and need your advise as to how to get the DA4 Pmod to run on the Zybo Zynq-7000 Board.
I could not find a IP for the DA4 and the Librarys I found seemed to be for PIC32 and not for ARM. (DSPI and DACSPI4)
My Project so far is written in C and VHDL.
I would be glad for any bit of help :)
Best regards John
Link to comment
Share on other sites
7 answers to this question
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now