Hi - Can anyone point me to documentation on how the I2C to SPI bridge works on FM160? I have a I2C controller in FPGA on KC705 and I can read the version and status from the CPLD which seem to indicate that the I2C interface works. Can I write to CPLD registers 0x07, 0x06, 0x05 and 0x04 one byte at a time and the write to the control register at 0x00 to perform the necessary SPI operations? Or do I need to write all 4 bytes at the same time starting with address 0x04 (and send 4 bytes one after another)? The DAC on FMC160 has a version ID at address 0x7F. To read this, I'm doing the following: Write to 0x07 with 0xFF Write 0x00 to registers 0x06, 0x05 and 0x04. Now the internal 32-bit word is 32'hFF_00_00_00 Now I write 0x04 to control register at 0x00 (I get an ack from CPLD for all these operations) I am assuming this starts a DAC SPI cycle of 16 bits with bits [31:16] shifter out serially to the DAC MSB first. This should initiate a read cycle of address 0x7F of the DAC and the version number 0x07 should be read back. To verify this, I then read registers 0x04 and 0x05, these all read zeroes. Are there any instructions or user guide to use this interface if[b][u] I am not using 4dsp software? Can I get a schematic[/u][/b] [b][u]of the board? (or at least CPLD to DAC/ADC/PLL interface)?[/u][/b] -Venka
No schematic provided to customers unfortunately as a general rule, this should be discussed on a case by case basis with email@example.com. Generally you would not need that if you would refer to our reference design.
I appreciate you decided not not use our reference (software and/or firmware) and you are asking question that could be answered by referring to the reference design and this is why we cannot do much here. Really if you decide to not refer to the reference design, you need a special engineering support contract which is not technical support, this can be discussed with firstname.lastname@example.org
What I can tell is that the writing/reading to DAC is done by fmc160_dac.cpp and there are some answers to your questions; Every call to sipif_writesipreg() causes one byte to be sent out. fmc160dac_readsipreg() successfully read a DAC register in the reference design. The read operation is done using 5 writes and one read. This sipif_read/write are received by a firmware module called sip_mac_engine which has a documentation. fmc160_dac_init() does read address 0x7F and check for the part ID
As you can see you are trying to implement from scratch something already working in our reference design.
Best Regards, Arnaud
about 4 years ago
Hi Arnaud - Thanks for the response. I'd love to use the reference design, but then I have to buy VC707. I already have a Kintex7 board. On your website it mentions that FMC160 can be used with KC705 (with FMC700 card). As I understand, you do not provide a reference design for KC705. But if you do, please let me know I'll be happy to use them. I am open to paying for special engineering support, but not for simple things like this. A detailed documentation on this interface would help a lot of people that are not able to use reference design and are implementing this in HDL (or through a microblaze/processor in FPGA). I'll read through the documentation that you mention below, my main interest is to get the data through to the DAC, which unfortunately is not possible to do till this control interface is working. Thanks! -Venka
about 4 years ago
Thanks Arnaud.....fmc160_dac.cpp is exactly what I was looking for, I can successfully talk to the DAC now. I wish I had this information sooner :)... -Venka
about 4 years ago
This topic is being closed because the issue is considered as resolved by 4DSP. Feel free to create a new topic for any further inquiries.