always @(posedge CLK[0]) begin SCLK_DA = SCLK_DA+1; end always @(DADATA) begin DADATA[0:19] = 20'b11101110111111111111; end always @(posedge SCLK_DA) begin DACOUNTER <= DACOUNTER+1; end always @(DACOUNTER) begin if(DACOUNTER< 4) SYNC_DA = 1; else if(DACOUNTER>19) SYNC_DA = 1; else SYNC_DA = 0; if(DACOUNTER<=19) DIN_DA = DADATA[DACOUNTER]; else DIN_DA = 0; end
用CPLD 写了DAC7554的测试代码,如上所示。其中,CLK[0]为30MHz时钟,两分频后作为DA的输入时钟。DADATA表示要传输的数据,总共20位,前4位为无效数据。DACOUNTER为5位计数器,计数到4至19之间,拉低SYNC引脚,同时将DADATA的数据传输到DA中。
供电电源电压为4.96V,参考电压和电源电压相同。理论上,4个通道都应该输出4.96V左右,但用万用表测量只有2V左右,用示波器测量显示只有0V。
看了datasheet,DAC7554的容性负载只有nF 级别,是否由于万用表和示波器的测试线都有杂散电容导致输出不对?如果是,是否必须加一级运放电路?
调试了好久了,3个引脚的波形和期望值一致。烦请TI的工程师帮助解决下这个问题。
DAC7554的时序和控制字如下图。
user151383853:
DAC 外接运放是比较推荐的用法.
不过, 在这个运放内部的输出端是有 BUFFER 的, 从手册看驱动能力也挺强, 测试参数里出现了 2K+ 1000pF 的组合
user1916977:
回复 Will Wang47:
睡了一觉,起来检查了下电路,发现CPLD引脚分配时把CLK和SYNC引脚分配错了,调换后输出就对了。