作者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)