如何将 FPGA 的数字输出连接到 DAC?

qas*_*ddd 1 verilog fpga xilinx digital-analog-converter

我目前有一个非常非常基本的 DDS 内核(?),带有计数器、调谐字和正弦 LUT,可输出 16 位值以与 DAC 的正弦值相关联。我正在使用Nexys 4 DDR 板,我的DAC是专为 FPGA 设计的外围模块。如果是 16 位 DAC,为什么它有 6 个引脚,其中只有 4 个用于数据?我应该如何将二进制信息从我生成的 16 位正弦值发送到 DAC,以便 DAC 进行成功转换?

这是我的代码(我知道它的基本信息,请原谅错误,一旦我正确地知道如何与 DAC 交互,我就会解决它们!)

module sin_LUT(
  input clk,
  input [0:3] M,
  input rst,
  output reg [16:0] data_out,
  output reg [32:0]test
);

//counter

//declaring constant
integer i;
integer int_M;

always @(M)
  int_M = M;

always @(posedge(clk))
begin
if (rst)
  i <= 0;
else if (i >= 29)
  i <= 0;
else
  i <= i + M;
end

//testing purposes
always @(i)
  test = i;

//sine LUT
always @(i) begin
  case (i)
    0: data_out = 16'D32768;
    1: data_out = 16'D39812;
    2: data_out = 16'D46526;
    3: data_out = 16'D52598;
    4: data_out = 16'D57742;
    5: data_out = 16'D61718;
    6: data_out = 16'D64341;
    7: data_out = 16'D65487;
    8: data_out = 16'D65103;
    9: data_out = 16'D63208;
    10: data_out = 16'D59889;
    11: data_out = 16'D55302;
    12: data_out = 16'D49661;
    13: data_out = 16'D43230;
    14: data_out = 16'D36310;
    15: data_out = 16'D29225;
    16: data_out = 16'D22305;
    17: data_out = 16'D15874;
    18: data_out = 16'D10233;
    19: data_out = 16'D5646;
    20: data_out = 16'D2327;
    21: data_out = 16'D432;
    22: data_out = 16'D48;
    23: data_out = 16'D1194;
    24: data_out = 16'D3817;
    25: data_out = 16'D7793;
    26: data_out = 16'D12937;
    27: data_out = 16'D19009;
    28: data_out = 16'D25723;
    29: data_out = 16'D32768;
    default: data_out = 16'b0000111100001111;
  endcase
end

endmodule
Run Code Online (Sandbox Code Playgroud)

dat*_*olf 5

这个 DAC 板的数据表说它使用了模拟设备公司的 AD5541 DAC:

http://www.analog.com/en/products/digital-to-analog-converters/da-converters/ad5541a.html

产品页面还有一个指向 DAC 数据表的链接。我从这个数据表中提取了以下信息:这个东西使用 SPI 接口。一个选择,你拉低线(CS)来表示要发送数据的DAC。显示每个位的数据线 (DIN)。还有一条时钟线 (SCLK),它使 DAC 在数据线从低电平变为高电平时从数据线读取一点。

这是时序图AD5541 SPI时序

LDAC 输入如果被拉低,则告诉 DAC 在每次更新串行数据寄存器时输出。


在开发电子产品时,能够获取文档并阅读它是最重要的。我已经在各种项目中使用了几个不同的 SPI DAC,还有一些来自 AD。但不是 AD5541。但是上面的整个答案我使用了我从阅读相关数据表中获得的信息几分钟。如果编程 FPGA 是您的事,那么您绝对必须培养这样做的技能。