1、組合邏輯的競爭冒險
組合邏輯:任何時刻電路的穩定輸出,僅僅取決于該時刻各個輸入變量的取值。
組合邏輯的競爭冒險:當輸入信號同事變化時,組合邏輯必然產生毛刺。
解決方法:用時序邏輯,每次寄存器的輸出結果取決于上一個時鐘的寄存器的值,不會產生毛刺。
2、寄存器reg可以用在時序邏輯也可以用在組合邏輯
時序邏輯就是平時寫的clk觸發
組合邏輯例如always@(b) out1 =~ b;
觸發器具有記憶性原因:普通的門電路輸出信號只取決于當前輸入信號,無記憶性,但是觸發器
的輸出還和之前的狀態有關,比如JK觸發器:Qn+1 = JQn_ + K_Qn
3、時序,組合邏輯,阻塞與非阻塞區別
//time 非阻塞 always @(posedge clk) begin time_nblock <= sig_in; time_nblock1 <= time_nblock; end //time 阻塞 always @(posedge clk) begin time_block = sig_in; time_block1 = time_block; end //combine 非阻塞 always @(*) begin com_nblock <= sig_in; com_nblock1 <= com_nblock; end //combine 阻塞 always @(*) begin com_block = sig_in; com_block1 = com_block; end
綜合出來的電路
時序電路,會生成D觸發器,根據電路可以看出阻塞賦值和非阻塞賦值,一個always塊結束之后,阻塞賦值結果都是一樣的,但是非阻塞
賦值的話,是同事變化的,time_nblock得到sig的同時,time_nblock1也得到time_nblock之前得值。
阻塞賦值從電路上看,非阻塞和阻塞都是一樣得,modelsim仿真也是這么個情況。
一般來說,時序邏輯用非阻塞賦值,組合邏輯用阻塞賦值。
4、與門
assignq = (al == 1) ? d : 0;
5、亞穩態
亞穩態定義:在進行fpga設計時,往往只關心“0”和"1"兩種狀態。然而在工程實踐中,除了”0“、”1“外還有其他狀態,亞穩態就是其中之一。
亞穩態是指觸發器或鎖存器無法在某個規定時間段內達到一個可確認的狀態[1]。當一個觸發器進入亞穩態時,既無法預測該單元的輸出電平,
也無法預測何時輸出才能穩定在某個正確的電平上。在亞穩態期間,觸發器輸出一些中間級電平,甚至可能處于振蕩狀態,并且這種無用的輸
出電平可以沿信號通道上的各個觸發器級聯式傳播下去。亞穩態是異步數字電路設計中的固有現象,但是由于其偶發性和溫度敏感性的特點,
在產品前期測試過程中很難發現。
亞穩態產生的原因:1、時序不滿足,例如不滿足建立時間和保持時間。
2、不同時鐘域接口
例如當數據剛傳過來的時候,clkb恰好來了一個上升沿
亞穩態的解決方法:1、單比特信號打兩拍寄存器,我看網上亞穩態有一個震蕩周期,如果震蕩周期大于一個時鐘的話那么一級緩存之后仍然會有亞穩態
現象,所以兩級緩存就比較靠譜了。
2、多比特信號fifo
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5359瀏覽量
120793 -
Verilog
+關注
關注
28文章
1351瀏覽量
110187 -
觸發器
+關注
關注
14文章
2000瀏覽量
61255 -
FIFO存儲
+關注
關注
0文章
103瀏覽量
6020
原文標題:verilog知識
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論