私は現在、非常に基本的なDDSコア(?)にカウンタ、チューニングワード、正弦LUTを持っており、DACのsin値と相関する16ビットの値を出力します。私はNexys 4 DDR boardを使用しています。私のDACは、FPGA専用に設計された周辺モジュールです。 16ビットDACの場合、なぜ6本のピンがありますか?そのうちの4本だけがデータ用です。そして、DACが成功した変換を行うためには、16ビットのsin値を生成してバイナリ情報をDACに送信する必要がありますか?ここでFPGAのデジタル出力を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