<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > Verilog HDL設計進(jìn)階:有限狀態(tài)機的設計原理及其代

Verilog HDL設計進(jìn)階:有限狀態(tài)機的設計原理及其代

作者: 時(shí)間:2013-08-27 來(lái)源:網(wǎng)絡(luò ) 收藏

由于 和 V 行為描述用于綜合的歷史還只有短短的幾年,可綜合風(fēng)格的 和VHDL的語(yǔ)法只是它們各自語(yǔ)言的一個(gè)子集。又由于HDL的可綜合性研究近年來(lái)非?;钴S,可綜合子集的國際標準目前尚未最后形成,因此各廠(chǎng)商的綜合器所支持的HDL子集也略有所不同。

本文引用地址:http://dyxdggzs.com/article/189516.htm

本書(shū)中有關(guān)可綜合風(fēng)格的 HDL的內容,我們只著(zhù)重介紹RTL級、算法級和門(mén)級邏輯結構的描述,而系統級(數據流級)的綜合由于還不太成熟,暫不作介紹。

由于寄存器傳輸級(RTL)描述是以時(shí)序邏輯抽象所得到的有限狀態(tài)機為依據的,所以把一個(gè)時(shí)序邏輯抽象成一個(gè)同步有限狀態(tài)機是設計可綜合風(fēng)格的Verilog HDL模塊的關(guān)鍵。

在本章中我們將通過(guò)各種實(shí)例由淺入深地來(lái)介紹各種可綜合風(fēng)格的Verilog HDL模塊,并把重點(diǎn)放在時(shí)序邏輯的可綜合有限狀態(tài)機的Verilog HDL設計要點(diǎn)。至于組合邏輯,因為比較簡(jiǎn)單,只需閱讀典型的用Verilog HDL描述的可綜合的組合邏輯的例子就可以掌握。

為了更好地掌握可綜合風(fēng)格,還需要較深入地了解阻塞和非阻塞賦值的差別和在不同的情況下正確使用這兩種賦值的方法。只有深入地理解阻塞和非阻塞賦值語(yǔ)句的細微不同,才有可能寫(xiě)出不僅可以仿真也可以綜合的Verilog HDL模塊。

只要按照一定的原則來(lái)編寫(xiě)就可以保證Verilog模塊綜合前和綜合后仿真的一致性。符合這樣條件的可綜合模塊是我們設計的目標,因為這種是可移植的,可綜合到不同的FPGA和不同工藝的ASIC中,是具有知識產(chǎn)權價(jià)值的軟核。

4.4.1 有限狀態(tài)機(FSM)設計原理

有限狀態(tài)機是由寄存器組和組合邏輯構成的硬件時(shí)序電路。有限狀態(tài)機的狀態(tài)(即由寄存器組的1和0的組合狀態(tài)所構成的有限個(gè)狀態(tài))只可能在同一時(shí)鐘跳變沿的情況下才能從一個(gè)狀態(tài)轉向另一個(gè)狀態(tài)。

有限狀態(tài)機的下一個(gè)狀態(tài)不但取決于各個(gè)輸入值,還取決于當前所在狀態(tài)。這里指的是米里Mealy型有限狀態(tài)機,而莫爾Moore型有限狀態(tài)機的下一個(gè)狀態(tài)只決于當前狀態(tài)。

Verilog HDL中可以用許多種方法來(lái)描述有限狀態(tài)機,最常用的方法是用always語(yǔ)句和case語(yǔ)句。如圖4.1所示的狀態(tài)轉移圖表示了一個(gè)有限狀態(tài)機,例4.1的程序就是該有限狀態(tài)機的多種Verilog HDL模型之一。

圖4.1的狀態(tài)轉移圖表示了一個(gè)四狀態(tài)的有限狀態(tài)機。它的同步時(shí)鐘是Clock,輸入信號是A和Reset,輸出信號是F和G。

狀態(tài)的轉移只能在同步時(shí)鐘(Clock)的上升沿時(shí)發(fā)生,往哪個(gè)狀態(tài)的轉移則取決于目前所在的狀態(tài)和輸入的信號(Reset和A)。下面的例子是該有限狀態(tài)機的Verilog HDL模型之一。

例4.1:Gray碼有限狀態(tài)機模型1。

module fsm (Clock, Reset, A, F, G); //模塊聲明
input Clock, Reset, A;
output F,G;
reg F,G;
reg [1:0] state ;

parameter //狀態(tài)聲明
Idle = 2’b00, Start = 2’b01,
Stop = 2’b10, Clear = 2’b11;

always @(posedge Clock)
if (!Reset) begin
state = Idle; F=0; G=0; //默認狀態(tài)
end
else case (state)
idle: begin //Idle狀態(tài)
if (A) begin
state = Start;
G=0;
end
elsestate = idle;
end
start: //Start狀態(tài)
if (!A) state = Stop;
else state = start;
Stop: begin //Stop狀態(tài)
if (A) begin
state = Clear;
F = 1;
end
else state = Stop;
end
Clear: begin //Clear狀態(tài)
if (!A) begin
state =Idle;
F =0; G =1;
end
else state = Clear;
end
endcase
endmodule

也可以用下面的Verilog HDL模型來(lái)表示同一個(gè)有限狀態(tài)。


例4.2:獨熱碼有限狀態(tài)和模型。

module fsm (Clock, Reset, A, F, G); //模塊聲明
input Clock, Reset, A;
output F,G;
reg F,G;
reg [3:0] state ;

parameter //狀態(tài)聲明
Idle = 4’b1000,
Start = 4’b0100,
Stop = 4’b0010,
Clear = 4’b0001;

always @(posedge clock)
if (!Reset) begin
state = Idle; F=0; G=0; //默認狀態(tài)
end
else case (state)
Idle: begin //Idel狀態(tài)
if (A) begin
state = Start;
G=0;
end
else state = Idle;
end
Start: //Start狀態(tài)
if (!A) state = Stop;
else state = Start;
Stop: begin //Stop狀態(tài)
if (A) begin
state = Clear;
F = 1;
end
else state = Stop;
end
Clear: begin //Clear狀態(tài)
if (!A) begin
state =Idle;
F=0; G=1;
end
else state = Clear;
end
default: state =Idle; //默認狀態(tài)
endcase
endmodule


例4.2與例4.1的主要不同點(diǎn)是狀態(tài)編碼方式。例4.2采用了獨熱編碼,而例4.1則采用Gray碼,究竟采用哪一種編碼好要看具體情況而定。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: Verilog HDL 進(jìn)階 代碼

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>