实现DA转化
本文是实现TLC5620的工作模式1,通道1实现DA转化,通过调用ip核rom,用matlab生成数据文件,输出正弦波,采用ise环境。
module DA(
input clk,
input rst_n,
output reg da_clk,
output reg da_data,
output reg da_load,
output da_ldac
);
parameter code = 8'd225; // 2.5*100/256=0.976
parameter RNG = 0;
parameter select = 2'b00;
assign da_ldac = 1'b0;
reg [9:0] cnt;
always @ (posedge clk, negedge rst_n)
begin
if(rst_n == 1'b0)
cnt <= 10'd0;
else if(cnt == 10'd549)
cnt <= 10'd0;
else
cnt <= cnt + 1'b1;
end
always @ (posedge clk, negedge rst_n)
begin
if(rst_n == 1'b0)
begin
da_clk <= 1'b0;
da_data <= 1'b0;
da_load <= 1'b1;
end
else
case(cnt)
0 : begin da_clk <= 1'b1; da_data <= select[1]; end
24 : begin da_clk <= 1'b0; end
49 : begin da_clk <= 1'b1; da_data <= select[0]; end
74 : begin da_clk <= 1'b0; end
99 : begin da_clk <= 1'b1; da_data <= RNG; end
124: begin da_clk <= 1'b0; end
149: begin da_clk <= 1'b1; da_data <= code[7]; end
174: begin da_clk <= 1'b0; end
199: begin da_clk <= 1'b1; da_data <= code[6]; end
224: begin da_clk <= 1'b0; end
249: begin da_clk <= 1'b1; da_data <= code[5]; end
274: begin da_clk <= 1'b0; end
299: begin da_clk <= 1'b1; da_data <= code[4]; end
324: begin da_clk <= 1'b0; end
349: begin da_clk <= 1'b1; da_data <= code[3]; end
374: begin da_clk <= 1'b0; end
399: begin da_clk <= 1'b1; da_data <= code[2]; end
424: begin da_clk <= 1'b0; end
449: begin da_clk <= 1'b1; da_data <= code[1]; end
474: begin da_clk <= 1'b0; end
499: begin da_clk <= 1'b1; da_data <= code[0]; end
524: begin da_clk <= 1'b0; end
534: begin da_load <= 1'b0; end
549: begin da_load <= 1'b1; end
endcase
end
endmodule