**:
所謂關鍵路徑就是,在電路中頻繁呼叫,而且延遲過長,或者產生意外的機率比較大的線路
。怎樣提取關鍵路徑:
1:組合電路中的關鍵路徑提取:
q=a&b&c|d&e&b;
因為b的傳輸要兩級,
可以簡單的提取b作為一級的:
q=(a&c|d&e)&b;
2: always——block中的關鍵路徑提取:
always中關鍵路徑的提取一般用分步法提取,請看下面乙個always——block,
always@(in)
begin
if(!a)
if(c&&(!b&&e))
out=out1;
else out=out2;
else if(b&&e) out =out1;
end這裡面e是關鍵路徑,我們可以分兩個步驟提取關鍵路徑
(1) 當e=1的時候有:
if(!a)
if(c&&(!b))
out=out1;
else out=out2;
(2)當e=0的時候有:
if(!a) out=out2;
因此這個always可以寫成這個樣子:
always@(in)
begin
if(e)
if(!a)
if(c&&(!b))
out=out1;
else out=out2;
else if(!a) out=out2;
end
這是中間形式,還要寫成最終形式:
定義兩個臨時變數,為了在綜合時候不被綜合掉,要定義他們為輸出埠(output)——切記!!!
output out_temp1,out_temp2;
out_temp1=a?out:(c&&(!b))?out1:out2;
out_temp2=a?out:out2;
assign out=e?out_temp1:out_temp2;
3。fsm中的關鍵路徑的提取:關於狀態機,這是fpga設計必備的基礎,編碼方式有很多中比如:one——hot,or one--cool
還有就是組合電路和時序 電路的寫法,這裡主要講關鍵路徑的提取至於狀態機的寫法,還是查閱一下資料啊!
fsm中關鍵路徑的提取方法一般是先將要提取的關鍵路徑去掉
然後將原來fsm中的next-state用另外乙個符號代替,作為次fsm 的輸入,即有主從兩個fsm。
來看一下這個簡單的狀態機啊:
parameter s0=0;
parameter s1=1;
parameter s2=2;
parameter s3=3;
input in1,in2,in3,set;
reg[1:0] nextstate,currentstate;
always@(in1 or in2 or in3 or currentstate)
begin
nextstate=s0;// start state
case(currentstate)
s0: if(in1&&!set)
nextstate=s1;
else if(set) nextstate=s2;
s1:if(in2&&set)
nextstate=s3;
else if(!set) nextstate=s2;
s2:if(set) nexstate=s3;
s3:if(in3) nextstate=s0;
default:nextstate=s0;
endcase
end好,現在來看第一步,將狀態機中的關鍵路徑去掉,這裡的關鍵路徑為set,試想如果狀態從s0一路到s3,都是set在起作用,如果有乙個不小心的毛刺產生,就會執行錯誤的行為,所以這裡的set為關鍵路徑。
提取後的狀態機如下:
reg[1:0]temp;
always@(in1 or in2 or in3 or currentstate)
begin
nextstate=s0;// start state
temp=s0;
case(currentstate)
s0: if(in1)
temp=s1;
s1:if(in2)
temp=s3;
s2: temp=temp;
s3:if(in3) temp=s0;
default:temp=s0;
endcase
end
第二步:
always2(temp or currentstate or set)
begin
case(currentstate)
s0:if(!set)
nextstate=temp
else nextstate=s2;
s1: if(set)
nextstate=temp;
else nextstate=s2;
s2:if(set) nextstate=s3;
else nextstate=temp;
s3: nextstate=temp;
default:nextstate=temp;
endcase
end
關鍵路徑的選取
這是一篇我的心得,寫verilog的心得,啊,對於 學習verilog 設計fpga的同學一定會有幫助的啊!先解釋一下什麼叫關鍵路徑 所謂關鍵路徑就是,在電路中頻繁呼叫,而且延遲過長,或者產生意外的機率比較大的線路。1 組合電路中的關鍵路徑提取 q a b c d e b 這個很簡單了,估計大家都會...
數位電路中的時序分析 一)
最近在設計中遇到了亞穩態情況的處理,因此又回頭去看了一下數位電路中的時序分析,本篇文章主要講的就是數位電路中的時序分析。延時可以分成兩大類 一類是門延時 另一類的是d觸發器的延時。這兩類延時在時序電路分析中都要涉及到。首先我們來看一下門延時。門延時指的是構成門的電晶體在有限的時間內完成轉換,也就是當...
數位電路與模擬電路的區別
前一段時間群裡有人提出讓我來談談數位電路和模擬電路的區別,這個問題對初學數位電路的人來說很重要,只有把它們區別開來知道它們的異同才能學好數位電路。首先我們要知道的一點是數位電路是模擬電路的基礎上發展起來的,數位電路是以模擬電路為基礎的它們的基礎就是電流和電壓,但它們有著本質的區別。一.在乙個週期內模...