|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我想要的过程是,刚开始输出输入时钟clk经2的16次方分频的占空比为50%的方波,然后用in[0]的上升沿增大占空比,用in[1]的上升沿减少占空比。即检测到in上升沿才变化。但是仿真时,发现pwm_count的值不正常。
- module PWM(clk,in,out);
- input clk;
- input [1:0]in;
- output out;
- reg [15:0] count;
- reg [15:0] pwm_count;
- reg pwm_flag;
- initial pwm_count = 16'h8000;
- always @(posedge clk)
- begin
- count = count + 1'b1;
- if (count < pwm_count)
- pwm_flag = 0;
- else
- pwm_flag = 1;
- end
- always @(posedge in[0] or posedge in[1])
- begin
- if (in[0])
- pwm_count = (pwm_count + 1'b1);
- else if (in[1])
- pwm_count = (pwm_count - 1'b1);
- else
- pwm_count = pwm_count;
- end
- assign out = pwm_flag;
- endmodule
复制代码
把上面的always @(posedge in[0] or posedge in[1])
改为
-
- always @(posedge in[0])
- begin
- if (in[0])
- pwm_count = (pwm_count + 1'b1);
- else
- pwm_count = pwm_count;
- end
复制代码
pwm_count就会在in[0]的每个上升沿加1。请问这是为什么呢?刚学Verilog HDL不久,请教各位大侠!谢谢! |
|