|
最近写了个用DA产生三角波的程序,DA用的是TLV5620,8位的,
产生三角波的v文件原理是用计数器自加到255,再自减到0,以此来循环,
/*
FPGA clock 24MHz
24MHz 40ns
40ns * 500 = 20us
*/
module sanjiaobo(clk,rst,wr_data,wr_act);
input clk;
input rst;
output [10:0]wr_data;
output wr_act;
reg [10:0]wr_data;
reg wr_act;
reg [15:0]counter;
reg [7:0]data_temp;
reg flag;
always @(posedge clk)
begin
if(!rst)
begin
counter = 0;
data_temp = 0;
flag = 0;
end
else
begin
if(counter < 470)
begin
counter = counter + 1;
wr_act = 0;
end
else
begin
counter = 0;
if(flag)
begin
data_temp = data_temp - 1;
if(data_temp <1)
flag = 0;
end
else
begin
data_temp = data_temp + 1;
if(data_temp >254)
flag = 1;
end
wr_data[10:8] = 3'b000;
wr_data[7:0] = data_temp;
wr_act = 1;
end
end
end
endmodule
本模块
产生wr_act wr_data信号给TLV5620DA模块,这个模块里面用的是阻塞的赋值方式,可以驱动DA产生三角波,如果把 = 改为<= ,变为非阻塞的方式就不行了,请各位了解的指导下,这个里面问题到底出在哪里
DAC_tlv5620驱动文件ourdev_544077.rar(文件大小:2K) (原文件名:dac_tlv5620.rar) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|