Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
21616 Discussions

AD5620 DAC interface

Altera_Forum
Honored Contributor II
1,418 Views

Hi all. I would like to ask for help with my problem. 

I am trying to make an DAC interface (serial) using AD5620BRJZ with MAX7000AE (EPM7256AEQC208-C7). Attached is my code in VHDL and a copy of the datasheet for the DAC. 

 

I don't know if this will work. I have not studied how to use ModelSim yet. I only had a crash course about VHDL and Quartus II when this project was turned over to me. And I had to learn on my own. 

 

Please have a look at my code. i would appreciate your comments/suggestions. 

 

Thanks. 

 

Glenn
0 Kudos
8 Replies
Altera_Forum
Honored Contributor II
710 Views

er, anyone?

0 Kudos
Altera_Forum
Honored Contributor II
710 Views

Hi Glenn,  

I have my doubts that it will work. For example the en input. You use it as write enable for the input data right? But you use it also as enable for DOUT <= shiftout. This confuses me a bit. In addition, you have a free runing counter. You should reset your counter when you begin to writing the data to the dac. What is the clock frequency?  

I recommand you to use ModelSim, this will help you.
0 Kudos
Altera_Forum
Honored Contributor II
710 Views

Thanks for the reply. Yes, i used the EN input to write data to the shift register. Now that you pointed that out, it confuses me as well. I'll try another way. And, thanks for pointing out the free running counter. I never really thought of that... the frequency of the clock is the same as the global clock which is 20Mhz. i wanted to use PLL to make a slower clock but the device doesn't support it. i wanted to use a counter too but i'm already running out of LABs.

0 Kudos
Altera_Forum
Honored Contributor II
710 Views

er, can someone please help me understand how to do this (or rewrite the code, i would really appreciate that.)? i've always had a difficulty with the parallel-in-serial-out shift register. let alone that i need to bring the SYNC signal UP after the 16th negative edge clock. This thing sounds so simple yet i am having a hard time understanding HDL. i am only a beginner.

0 Kudos
Altera_Forum
Honored Contributor II
710 Views

Hy Glenn,  

I think the biggest problem is, that the Sync signal has to go low together with the falling edge of the clock while the data has to be applied on the positive edge of the clock. So what i probably would do in this case is to halfen the dac clock and generate a bitvector for the data that is then shiftet out. 

 

Try something like that in the attachment. I didn't tested or synthesised it (maybe there are erros inside). It is for sure not the best solution but maybe it helps you to write your own module.
0 Kudos
Altera_Forum
Honored Contributor II
710 Views

Thank you very much chrigu. i'll take a look at your code..this definitely will help me start at something solid.. 

 

thanks for the help. 

 

BR 

glenn
0 Kudos
Altera_Forum
Honored Contributor II
710 Views

hello chrigu, 

 

i was able to use your source code as reference. i only changed o_dac_clk into a clock like output. and i was able to have an output in o_dac_sdin the same with the v_data_buf...  

 

thank you very much for the help. 

 

BR 

glenn
0 Kudos
Altera_Forum
Honored Contributor II
710 Views

Hi glenn 

It was a plesure to help you. 

Best Regards 

Chrigu
0 Kudos
Reply