數字IC學習筆記(二)
宏定義,異步FIFO, 時鐘來源,復位信號
文章目錄
- 數字IC學習筆記(二)
- 1. `define宏定義的使用
- 2,異步FIFO原理
- 3,時鐘來源
- 4,復位
- 參考資料
1. `define宏定義的使用
- 宏定義的使用:
`define AAA = 1assign a = b + `AAA
- 宏定義的用法和parameter參數相同,但
宏定義可以統一寫到一個參數文件里
,`include進行調用;
`include "abc.v"
宏定義也可以通過判斷編譯時參數的選擇,根據不同的配置來選擇使用對應的宏定義
;(例如VERSION1,VERSION2,VERSION3,VERSION4)
`ifdef VERSION1使用版本1的定義
`elsif VERSION2使用版本2的定義
`else VERSION3使用版本3的定義
`end`ifndef VERSION4如果編譯時沒有定義參數VERSION4·undef AAA 取消對AAA的宏定義
2,異步FIFO原理
代碼的讀寫地址,可以理解為FIFO讀寫的次數
always(posedge clk_r or negedge rst_n_r)if(!rst_n_r)beginaddr_w_1d <= 'd0;addr_w_2d <= 'd0; endelse beginaddr_w_1d <= addr_w; //addr_w是由fifo寫操作時鐘域clk_w 產生addr_w_2d <= addr_w_1d ; //打2拍消除亞穩態 endassign fifo_empty = addr_w_2d == addr_r;
- 由于寫地址addr_w,要經過讀操作時鐘clk_r打2拍后才能傳輸到addr_w_2d,所以存在明明FIFO里當前還有數據,但addr_w_2d未及時更新,因此判斷FIFO為空;這種情況成為
虛空
.
always(posedge clk_w or negedge rst_n_w)if(!rst_n_w)beginaddr_r_1d <= 'd0;addr_r_2d <= 'd0; endelse beginaddr_r_1d <= addr_r; //addr_r是由fifo讀操作時鐘域clk_r 產生addr_r_2d <= addr_r_1d ; //打2拍消除亞穩態 endassign fifo_full = (addr_w_2d - addr_r) == FIFO_DEEP; //FIFO_DEEP為FIFO深度
- 同理,由于讀地址addr_r,要經過寫操作時鐘clk_w打2拍后才能傳輸到addr_r_2d,所以存在明明FIFO里還沒滿,但addr_r_2d未及時更新,因此判斷FIFO為滿;這種情況成為
虛滿
.
虛滿和虛空會導致異步FIFO提前拉起empty或full信號,但卻保證異步FIFO不會丟失數據
3,時鐘來源
- 3.1 振蕩器(RC Osillator,RCO)
-
- 由電阻和電容組成,通電后產生時鐘信號;
-
- 集成在芯片內部,
成本較低,精度較差
;
- 集成在芯片內部,
- 3.2 晶體/晶振
-
- 元器件, 通電后產生時鐘信號;
-
- 集成在芯片外部,
成本較高,誤差較小
;
- 集成在芯片外部,
- 3.3 鎖相環(Phase Locked Loop,PLL)
-
- 需要輸出低頻的參考時鐘,生成輸出
高頻
時鐘
- 需要輸出低頻的參考時鐘,生成輸出
-
- 輸入時鐘一般由晶體/晶振或RCO電路提供
4,復位
-
從通電到時鐘信號逐步穩定,這段時間內芯片不合適工作,因此需要由復位信號將電路復位住;
-
復位信號(Power On Reset,POR)通常上電時產生,逐漸拉高,升至高電平(1)后,表示時鐘信號穩定,可以開始工作了;
-
異步復位:隨時可以拉低復位信號進行復位
-
同步釋放:拉高復位信號時,拉高的操作同步到當前時鐘,防止出現亞穩態。
-
類似于建立時間和保持時間,復位信號的拉高也有要求。 時鐘clock上升沿后的時間 t 1 t_1 t1?后拉高,復位信號的上升沿和下一個時鐘上升沿的間隔為 t 2 t_2 t2?;要求 t 1 t_1 t1?必須大于
recovery time
(恢復時間); 要求 t 2 t_2 t2?必須大于removal time
(撤銷時間);
recovery time:恢復時間。撤銷復位時,恢復到非復位狀態的電平必須在時鐘有效沿到來之前的一段時間到來,才能保證時鐘能有效恢復到非復位狀態,此段時間為recovery time【1】。
removal time :撤銷時間。撤銷復位時,在時鐘有效沿到來之后復位信號還需要保持的時間為撤銷時間removal time【1】。
參考資料
【1】《數字IC設計入門》白櫟旸
【2】靜態時序分析之恢復時間recovery time和撤銷時間removal time