always中敏感信号疑惑~~·
这段个5.5分频的代码:module fenpin55 (clk_in,clr,clk_out);
input clk_in;
input clr;
output reg clk_out;
reg clk1;
wire clk2;
integer count;
xorxor1(clk2,clk_in,clk1);
always@(posedge clk_out or negedge clr)
begin
if (~clr)
begin
clk1<=1'b0;
end
else
clk1<=~clk1;
end
always @(posedge clk2 or negedge clr )
begin
if (~clr)
begin
count<=0;
clk_out<=0;
end
else if(count==5)
begin
count<=0;
clk_out<=1;
end
else
begin
count<=count+1;
clk_out<=0;
end
end
endmodule
这是仿真结果:
问题来了:在最后一个always语句中clk2作为敏感信号并未发生变化,但是输出信号clk_out却发生了变化。这究竟是发生了什么~~求解答
“output reg clk_out;”,“always@(posedge clk_out or negedge clr)” always 语句用错了 ,always里面的是敏感信号,输入信号,中间某个信号,包括电平信号、上升沿信号等,但是不能是输出信号,你可以查下always的语句使用方法,然后再仿真。
温暖西城 发表于 2016-10-17 19:08
“output reg clk_out;”,“always@(posedge clk_out or negedge clr)” always 语句用错了 ,always里 ...
谢谢你回答我的问题。我把综合,布局布线都走了一边,没有错误。另外我查书并没有发现你说的这个规则,你说的好像是VHDL里面的规定,如果想要用输出信号作为敏感信号必须定义为buffer(类似于寄存器类型)
你这个时钟clk2 当counter=5的时候 clk_out输出1 是正确的,仿真结果是对的。不知道你有什么疑问
admin 发表于 2016-10-21 07:30
你这个时钟clk2 当counter=5的时候 clk_out输出1 是正确的,仿真结果是对的。不知道你有什么疑问
第二个always中,当counter=5时,clk2作为敏感信号并没有上升沿,但是clk_out的值也发生了变化~~~~
yongzhilv 发表于 2016-10-21 11:07
第二个always中,当counter=5时,clk2作为敏感信号并没有上升沿,但是clk_out的值也发生了变化~~~~
求大身解答~~~~
CLK2 是从什么地方来的?
admin 发表于 2016-10-21 14:41
CLK2 是从什么地方来的?
是由clk1和clk_in异或得到的。你的意思是clk1,clk_in变化驱动了always语句?
{:1_153:}
我的回答能带给你的十一运夺金,不是很多条条框框的方法论,让你跟着做了就能变得幸运时时彩自信起来。我所讲的,是思维模式的变更,是经过反复实践与超级大乐透思考所造成的思想认知的改变。
页:
[1]