请问下面代码哪里有问题
时间:10-02
整理:3721RD
点击:
module wave_gen(address,inclk,select,freq);
output[8:0] address;
input inclk;
input[1:0] select;
input[3:0] freq;
reg[7:0] Qout;
reg[8:0] adderss;
reg[7:0] k,m;
wire [1:0] select;
parameter sina_wave=2'b00,swat_wave=2'b01,
squr_wave=2'b10,trig_wave=2'b11;
always @(posedge inclk)
begin
case(select)
sina_wave:begin
if(select==2'b01) address =127) adderss =m)
adderss =255) adderss =(m+128))
adderss =383) adderss =(m+256))
adderss =511) adderss =(m+384))
adderss =127)
address m)
address<=0;
else
address<=address+freq;
end
end
end
always @(*)begin
k = 127/freq;
end
always @(*)begin
m = freq*k;
end
我大致给你修改了一段,但是不知道你的具体跳转的条件是什么,你可以自己添加,但是你那段address的那段真的挺乱的,把逻辑好好理一下
output[8:0] address;
input inclk;
input[1:0] select;
input[3:0] freq;
reg[7:0] Qout;
reg[8:0] adderss;
reg[7:0] k,m;
wire [1:0] select;
parameter sina_wave=2'b00,swat_wave=2'b01,
squr_wave=2'b10,trig_wave=2'b11;
always @(posedge inclk)
begin
case(select)
sina_wave:begin
if(select==2'b01) address =127) adderss =m)
adderss =255) adderss =(m+128))
adderss =383) adderss =(m+256))
adderss =511) adderss =(m+384))
adderss =127)
address m)
address<=0;
else
address<=address+freq;
end
end
end
always @(*)begin
k = 127/freq;
end
always @(*)begin
m = freq*k;
end
我大致给你修改了一段,但是不知道你的具体跳转的条件是什么,你可以自己添加,但是你那段address的那段真的挺乱的,把逻辑好好理一下
我这里的adderss的值不是0-511个值吗,它作为一个地址,里面存储的是四个波形的值,0-127是一个周期正弦的值,128-255是一个周期锯齿波的值,256-383是一个周期方波的值,384-511是一个周期三角波的值,至于你说的if(select==00)的那些语句,可以不要
我之前调单片机的时候,也做过这四种波形的生成,我想把那种思想用在FPGA中,我本来想生成一个数组,把用函数发生器生成的的128点的正弦波的值存入到一个数组中,输出的时候通过查找表进行输出,可是我刚开始学习,很多都不太懂,所以
是可以这样来产生波形的,我之前也做过,通过数组存储波形数据,然后将数据送至DA,转换出模拟信号,通过滤波输出波形
可是用verilog,怎么表示,我就不会用了。刚开始学,有些语句的用法还不是太了解