作者sasako (微笑待人)
看板comm_and_RF
标题Re: [问题] RTL语法问题...
时间Mon Mar 17 02:34:25 2008
※ 引述《theda (无限)》之铭言:
: 我是verilog的新手....
: 我想请问一个基本的问题,在verilog中
: a=b;
: 与
: a<=b;两者的差异在哪里?
: 我只知道一个是non-blocking一个是blocking
: 好像跟是不是同时执行有关....
: 想知道能不能有详细依点的解释,另外这两种都可以合成吗?
举个CIC上课的例子
always @ (posedge clk or negedge n_rst)begin
if(!n_rst)begin
.
.
.
end
else begin
a <= b ;
b <= c ;
c <= temp ;
end
end
合出来是shift register <= 意思大家同时间都要做的动作
always @ (posedge clk or negedge n_rst)begin
if(!n_rst)begin
.
.
.
end
else begin
a = b ;
b = c ;
c = temp ;
end
end
若是改成 = 那synthesis tool会自动帮你做化减
变成a = temp ;
所以中间就少了两个flip-flop
也就是本来你可能要合shift register结果变成a = temp ;这种直接给值的东西
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.144.169
※ 编辑: sasako 来自: 220.132.144.169 (03/17 02:37)