|
问个问题: 为什么 q的输出比address 出现要滞后 好几个脉冲呢?
2.这个是我仿真“锯齿波”的仿真数据,但不知道为什么
会出现 q 跟address 不相等的情况,不知道是什么原因,下面是我的代码,(其中仿真时sig=3,)
(原文件名:DDS.jpg)
源码:
module wave_data(address_data,sig_data,clk_data,sin_data,q_data);
input [11:0] address_data;
input [2:0] sig_data;
input clk_data;
input [11:0] sin_data;
output reg [11:0] q_data;
reg [31:0] address,q;
//select different data to the q_data;
always @ (posedge clk_data)
begin
address[11:0] <= address_data;
case (sig_data)
0: //SIN wave
q_data <= sin_data;
1: //TRI wave
if( !(address[31:10]) )
begin
q <= (address<<1) + {20'd0,12'd2048};
end
else if ( address[11] ^ address[10] )
begin
q <= {19'd0,13'd6144}-(address<<1) ;
end
else
begin
q <= (address<<1)-{19'd0,13'd6144} ;
end
2: //SQU wave
if (!address[31:11]) q<={20'd0,12'd4095} ;
else q<=20'd0;
3: //SAW wave
q <= address;
4: //ANY wave
;
default: ;
endcase
q_data <= q[11:0];
end
endmodule |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|