最近找工作,課題組報告一堆事搞得不可開交,今天就再更一下時鐘訊號的幾種設計方法吧,哇好氣,今天發現這個破編輯器好煩,都快寫完了,都有給我搞丟了,還得重新寫!吐槽一下csdn的部落格編輯,希望不要再出現這種情況了!
時鐘訊號是fpga時序邏輯設計中必不可少的條件,一般情況下在fpga始終資源充裕的情況下通常採用fpga內部自帶的核心生成時鐘訊號,例如dll/mmc,但是一旦出現資源不夠的情況,就只能另尋他法了,為了保證良好的閱讀效果,建議在閱讀本文之前看一下我之前寫的幾篇博文,【fpga】fpga的輸入、輸出、扇出的那些瑣事
【fpga】clocking wizard配置(pll/mmc核心配置)。本文先介紹一下核心產生的時鐘,然後介紹三種時鐘的產生方式和介紹,分別是內部邏輯生成、使能時鐘、門控時鐘。
一、時鐘fpga自帶硬核產生時鐘
就我目前的小白水平來看,個人覺得使用核心生成的時鐘是最簡便、最穩定的時鐘資源,具體的產生方式參考【fpga】fpga的輸入、輸出、扇出的那些瑣事,通過dll這些核心產生的時鐘訊號不但可以穩定準確進行倍頻、分頻,而且可準確的實現相移控制、占空比控制等時鐘訊號內部操作,並且可選擇輸出buff方式。強烈建議這種時鐘生成方式!
二、內部邏輯生成時鐘
對於所有在fpga內生成時鐘方式來說,均需要參考時鐘或者同步時鐘來生成,而且內部邏輯生成時鐘訊號,必須包含時序邏輯,也可包含組合邏輯,但是一旦有組合邏輯就有可能產生毛刺,會導致整個系統變得不穩定,另外時序邏輯產生的時鐘訊號也會產生固定的時延,導致後續的時許約束問題。這些問題在設計時一定要慎重考慮,另外就是驅動問題,一般情況下ttl驅動能力較弱在10個扇出訊號以內,所以如果扇出較大,建議邏輯複製或者過一次buff。對於組合邏輯產生毛刺的問題,建議使用觸發器利用原時鐘進行同步一拍。
所以,一般情況下不建議使用內部邏輯產生的時鐘,如果必須使用,建議使用上述操作。
三、在分頻時鐘訊號中使用使能時鐘
always@(posedge clk or negedge rst)
begin
if(!rst)
begin
cnt<=3'd0;
end else
if(cnt<3'd4)
begin
cnt<=cnt+1'b1;
end else
cnt<=3'd0;
end
assign en=(cnt == 3'd4);
always@(posedge clk or negedge rst)
begin
if(!rst)
begin
end else
if(en)
begin
使能之後的操作
end else
begin
對訊號進行保持
endend
使能時鐘通過判斷en使能訊號,進行保持輸出還是通過輸入訊號更新輸出。這樣就避免了使用分頻時鐘,通過分頻出的使能訊號對後續時序邏輯進行判斷。
四、門控時鐘
對於門控時鐘,是乙個很好的低功耗解決方案,通過對將時鐘訊號與始終使能訊號進行與之後再輸入到各個觸發器上,當這部分器件不用的時候可以將時鐘訊號置0,因為每一次的時鐘電平反轉都會產生功耗,這樣很好的降低了功耗,另外盡量將時鐘使能訊號過一拍時鐘同步,預防亞穩態!
哎,今天注定是鬱悶的一天,竟然被編輯器玩了,最近事多還雜,希望自己有乙個好的歸宿吧!部落格一定要堅持下去!
基於FPGA的跨時鐘域訊號處理 同步設計的重要
fpga 跨時鐘域訊號 非同步時鐘 上次提出了乙個處於非同步時鐘域的mcu與fpga直接通訊的實現方式,其實在這之前,特權同學想列舉乙個非同步時鐘域 現的很典型的問題。也就是要用乙個反例來說明沒有足夠重視非同步通訊會給整個設計帶來什麼樣的危害。特權同學要舉的這個反例是真真切切的在某個專案上發生過的,...
FPGA時鐘電路PCBlayout設計原則
1.時鐘晶振源應該盡可能放在與其連線的fpga時鐘專用引腳的臨近位置。2.時鐘線盡可能走直線,如果無法避免轉彎走線,則使用45度線,盡量避免t型走線和直角走線。3.不要同時在多個訊號層走時鐘線。4.時鐘走線不要使用過孔,因為過孔會導致阻抗變化及反射。5.靠近外層的地層能夠最小化雜訊。如果使用內層走時...
FPGA單位元訊號跨時鐘域處理
詳細的原理解釋 單位元訊號跨時鐘域問題詳解 輸入 singal in,來自10mhz慢速時鐘域的單位元訊號 輸出 singal out,輸出100mhz快速時鐘域的單位元訊號 10mhz 100ns 100mhz 10ns 因為慢速時鐘域的最簡訊號長度為1個時鐘時鐘週期即 100ns,大於快速時鐘域...