


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Verilog基本電路設(shè)計(jì)(包括:時(shí)鐘域同步、無縫切換、異步FIFO、去抖濾波)Verilog基本電路設(shè)計(jì)共包括四部分:?jiǎn)蝏it跨時(shí)鐘域同步時(shí)鐘無縫切換異步FIFO去抖濾波Verilog基本電路設(shè)計(jì)之一:?jiǎn)蝏it跨時(shí)鐘域同步(帖子鏈接:首先介紹異步信號(hào)的跨時(shí)鐘域同步問題。一般分為單bit的控制信號(hào)同步,以及多bit的數(shù)據(jù)信號(hào)同步。多bit的信號(hào)同步會(huì)使用異步FIFO完成,而單bit的信號(hào)同步,乂是時(shí)鐘無縫切換電路以及異步FIFO電路的設(shè)計(jì)基礎(chǔ),這里先介紹單bit信號(hào)同步處理clka域下的信號(hào)signal_a,向異步的clkb域傳遞時(shí),會(huì)產(chǎn)生亞穩(wěn)態(tài)問題。所有的亞穩(wěn)態(tài),歸根結(jié)底就是setup/ho
2、ld時(shí)間不滿足導(dǎo)致。在同一個(gè)時(shí)鐘域下的信號(hào),綜合以及布線工具可以在data路徑或者clock路徑上插入buffer使得每一個(gè)DFF的setup/hold時(shí)間都滿足;但是當(dāng)signal_a在clkb域下使用時(shí),由于clka與clkb異步,它們的相位關(guān)系不確定,那么在clkb的時(shí)鐘沿到來時(shí),無法確定signal_a此時(shí)是否處于穩(wěn)定無變化狀態(tài),也即setup/hold時(shí)間無法確定,從而產(chǎn)生亞穩(wěn)態(tài)。這種異步信號(hào)在前后端流程里面是無法做時(shí)序分析的,也就是靜態(tài)時(shí)序分析里常說的false_path。消除亞穩(wěn)態(tài),就是采用多級(jí)DFF來采樣來自另一個(gè)時(shí)鐘域的信號(hào),級(jí)數(shù)越多,同步過來的信號(hào)越穩(wěn)定。對(duì)于頻率很高的設(shè)計(jì)
3、,建議至少用三級(jí)DFF,而兩級(jí)DFF同步則是所有異步信號(hào)處理的最基本要求。單bit的信號(hào)跨時(shí)鐘域同步,乂分成電平信號(hào)同步以及脈沖信號(hào)同步。電平信號(hào),就是說clka下的信號(hào)signal_a在clkb看來,是一個(gè)很寬的信號(hào),會(huì)保持多個(gè)clkb的時(shí)鐘周期,一定能被clkb采到。這種情況,只需要使用clkb用至少兩級(jí)DFF連續(xù)抓signal_a即可,特另U需要強(qiáng)調(diào)的是,此時(shí)signal_a必須是clka下的寄存器信號(hào),如果signal_a是clka下的組合邏輯信號(hào),一定要先在clka下用DFF抓一拍,再使用兩級(jí)DFF向clkb傳遞。這是因?yàn)閏lka下的組合邏輯信號(hào)會(huì)有毛刺,在clka下使用時(shí)會(huì)由set
4、up/hold時(shí)間保證毛刺不會(huì)被clka采到,但由于異步相位不確定,組合邏輯的毛刺卻極有可能被clkb采到。電平信號(hào)的同步處理,一般用于知道確定的時(shí)鐘頻率大小關(guān)系或者極慢時(shí)鐘下的信號(hào)向極快時(shí)鐘域傳遞時(shí)使用,簡(jiǎn)單處理如下:always(posedgeclkbornegedgerst_n)beginif(!rst_n)beginlevl_b_d1levl_b_d2levl_b_d3endelsebeginlevl_b_d1levl_b_d2levl_b_d3endendassignpuls_b_pos=levl_b_d2&(levl_b_d3);assignpuls_b_neg=levl_
5、b_d3&(levl_b_d2);assignlevl_b_out=levl_b_d2;上面三個(gè)輸出分別是經(jīng)過同步之后,clkb下可以使用的0變1脈沖信號(hào),1變0脈沖信號(hào)以及電平信號(hào)。再次強(qiáng)調(diào):levl_a_in必須是clka的DFF信號(hào)!下面是更常見的,clka下的脈沖信號(hào),同步到clkb時(shí)鐘域下,它對(duì)于clka與clkb的時(shí)鐘頻率關(guān)系沒有任何限制,快到慢,慢到快都沒問題。其主要原理就是先把脈沖信號(hào)在clka下展寬,變成電平信號(hào),再向clkb傳遞,當(dāng)確認(rèn)clkb已經(jīng)“看見”信號(hào)同步過去之后,再清掉clka下的電平信號(hào)。脈沖信號(hào)同步處理電路,有兩個(gè)地方使用了上面的電平信號(hào)同步處理原則,
6、請(qǐng)仔細(xì)揣摩原因。詳細(xì)見下面的RTL,其中省略了信號(hào)定義聲明:modulesync_pulse(/inputrst_n,/systemresetclka,/clockAclkb,/clockBpuls_a_in,/pulseinputfromclka/outputpuls_b_out,/pulseoutputinclkblevl_b_out/leveloutputinclkb);parameterDLY=1;/always(posedgeclkaornegedgerst_n)beginif(rst_n=1'b0)signal_aelseif(puls_a_in)signal_aelsei
7、f(signal_b1_a2)signal_aelse;endalways(posedgeclkbornegedgerst_n)beginif(rst_n=1'b0)signal_belsesignal_bendalways(posedgeclkbornegedgerst_n)beginif(rst_n=1'b0)beginsignal_b_b1signal_b_b2endelsebeginsignal_b_b1signal_b_b2endendalways(posedgeclkaornegedgerst_n)beginif(rst_n=1'b0)beginsignal
8、_b1_a1signal_b1_a2endelsebeginsignal_b1_a1signal_b1_a2endendassignpuls_b_out=signal_b_b1&(signal_b_b2);assignlevl_b_out=signal_b_b1;endmodule下一篇講時(shí)鐘切換電路。留下一個(gè)思考題:clka下的同一個(gè)寄存器信號(hào)signal_a,電平寬度對(duì)clkb而言足夠長(zhǎng),如果同時(shí)調(diào)用兩個(gè)相同的電平同步模塊向clkb時(shí)鐘傳遞,分別得到levl_b1和levl_b2,那么在clkb時(shí)鐘域下看到的lev_b1和levl_b2信號(hào)是否一樣?這個(gè)問題是實(shí)際設(shè)計(jì)中一不小心就會(huì)
9、犯錯(cuò)的,如果能夠想明白正確回答這個(gè)問題,異步信號(hào)的理解就可以過關(guān)了。Verilog基本電路設(shè)計(jì)之二:時(shí)鐘無縫切換(帖子鏈接:)時(shí)鐘切換分成兩種方式,普通切換和去毛刺無縫切換。普通切換,就是不關(guān)心切出的時(shí)鐘是否存在毛刺,這種方式電路成本小。如果時(shí)鐘切換時(shí),使用此時(shí)鐘的模塊電路處于非工作狀態(tài),或者模塊內(nèi)電路被全局復(fù)位信號(hào)reset住的,即使切出毛刺也不會(huì)導(dǎo)致DFF誤觸發(fā),這樣的模塊可以選擇用此種切換方式。寫法很簡(jiǎn)單assignclk_o=sel_clkb?clkb:clka,當(dāng)sel_clkb為1時(shí)選擇clkb,否則選擇clka。不過在實(shí)際設(shè)計(jì)中,建議直接調(diào)用庫(kù)里的MUX單元set_dont_to
10、uch,不要采用這里的assign寫法,因?yàn)檫@種寫法最后綜合得到的可能不是MUX而是復(fù)雜組合邏輯,給前后端流程的時(shí)鐘約束和分析帶來不便。無縫切換,就是切換時(shí)無毛刺時(shí)鐘平穩(wěn)過渡。在時(shí)鐘切換中,只要出現(xiàn)比clka或者clkb頻率更高的窄脈沖,不論是窄的高電平還是窄的低電平,都叫時(shí)鐘毛刺。工作在切換后時(shí)鐘clk_o下的電路模塊,綜合約束是在maxclka,clkb頻率下的,也就是說設(shè)計(jì)最后signoff的時(shí)候,只保證電路可以穩(wěn)定工作的最高頻率是maxclka,clkb,如果切換中出現(xiàn)更高頻的時(shí)鐘毛刺,電路可能出現(xiàn)無法預(yù)知的結(jié)果而出錯(cuò)。無縫切換,一般用在處于工作狀態(tài)的模塊需要調(diào)頻或者切換時(shí)鐘源,比如內(nèi)
11、部系統(tǒng)總線,CPU等。你剛用手機(jī)打完游戲后馬上關(guān)屏聽音樂,這兩種場(chǎng)景中,CPU在滿足性能前提下為了控制功耗,其工作頻率會(huì)動(dòng)態(tài)地從很高調(diào)至較低,此時(shí)就可能是在CPU一直處于工作狀態(tài)下,通過無縫切換時(shí)鐘源頭實(shí)現(xiàn)的。在無縫切換電路中,切換信號(hào)sel_clkb可以是任意時(shí)鐘域下的信號(hào),包括但不限于clka或者clkb域,但是sel_clkb必須是一個(gè)DFF輸出信號(hào);clka與clkb的頻率大小相位關(guān)系可以任意。無縫切換需要解決兩個(gè)問題,一是異步切換信號(hào)的跨時(shí)鐘域同步問題,這里需要使用Verilog基本電路設(shè)計(jì)之一里的同步電路原理消除亞穩(wěn)態(tài);二是同步好了的切換信號(hào)與時(shí)鐘信號(hào)如何做邏輯,才能實(shí)現(xiàn)無毛刺。下
12、面寫出無縫切換電路的主體部分,忽略了內(nèi)部信號(hào)的定義聲明等。moduleclk_switch(rst_n,clka,clkb,sel_clkb,clk_o);always(posedgeclkaornegedgerst_n)beginif(!rst_n)beginsel_clka_d0sel_clka_d1endelsebeginselclkad0selclkadlendend/part2/always(posedgeclka_nornegedgerst_n)always(posedgeclkaornegedgerst_n)beginif(!rst_n)beginsel_clka_dly1sel
13、_clka_dly2sel_clka_dly3endelsebeginsel_clka_dly1sel_clka_dly2sel_clka_dly3endend/part3/always(posedgeclkb_nornegedgerst_n)always(posedgeclkbornegedgerst_n)beginif(!rst_n)beginsel_clkb_d0sel_clkb_d1endelsebeginsel_clkb_d0sel_clkb_d1endend/part4/always(posedgeclkb_nornegedgerst_n)always(posedgeclkborn
14、egedgerst_n)beginif(!rst_n)beginsel_clkb_dly1sel_clkb_dly2sel_clkb_dly3endelsebeginsel_clkb_dly1sel_clkb_dly2sel_clkb_dly3endend/part5clk_gate_xxxclk_gate_a(.CP(clka),.EN(sel_clka_dly3),.Q(clka_g).TE(1'b0);clk_gate_xxxclk_gate_b(.CP(clkb),.EN(sel_clkb_dly3),.Q(clkb_g).TE(1'b0);/assignclka_g=
15、clka&sel_clka_dly3;/assignclkb_g=clkb&sel_clkb_dly3;assignclk_o=clka_g|clkb_g;endmodule上面是我認(rèn)為比較合理的無縫切換電路,其他切換方式跟這個(gè)會(huì)有些許出入,但基本大同小異原理是一樣的。有幾點(diǎn)說明:1、拋開注釋掉的電路不看,由于part5部分直接調(diào)用庫(kù)里的clockgatingcell,使得整個(gè)切換電路全部只需要用到時(shí)鐘上升沿,無需額外定義反向時(shí)鐘,精簡(jiǎn)了DC綜合的時(shí)鐘約束;直接調(diào)用gatingcell的另一個(gè)好處是,前后端工具會(huì)自動(dòng)檢查gatingcell的CP信號(hào)與EN信號(hào)的setup/ho
16、ld時(shí)間,使得gating后的Q時(shí)鐘輸出無毛刺尖峰。TE端可以根據(jù)實(shí)際需要接上scan測(cè)試模式信號(hào)。如果使用part5部分的gatingcell實(shí)現(xiàn),前面的part1,2,3,4全部替換成注釋掉的反相時(shí)鐘也是沒有問題。2、part2和part4部分,具體需要多少級(jí)DFF,甚至完全不要也是可以的,這就回到了Verilog基本電路設(shè)計(jì)之一里討論的到底多少級(jí)DFF消除亞穩(wěn)態(tài)才算合理的問題。時(shí)鐘頻率很低可能無所謂,如果時(shí)鐘頻率達(dá)到GHz,這部分建議至少保留三級(jí)DFF,因?yàn)槿?jí)DFF延時(shí)也僅僅只有3ns的時(shí)間裕度。沒必要為了省這么幾個(gè)DFF降低電路可靠性,在復(fù)雜IP以及大型SOC系統(tǒng)中,你會(huì)發(fā)現(xiàn)多幾十個(gè)
17、DFF,面積上可以忽略,系統(tǒng)可靠性和穩(wěn)定性才是首要的。3、如果part5部分希望使用注釋掉的兩行“與”邏輯實(shí)現(xiàn)時(shí)鐘gating,此時(shí)parti與part3使用正相或者反相時(shí)鐘都可以,但是必須把part2和part4部分改為注釋掉的反相時(shí)鐘實(shí)現(xiàn),目的是初步從RTL設(shè)計(jì)上避免“與”邏輯的毛刺,同時(shí)還需要后端配合,因?yàn)楹芏嗪蠖斯ぞ邔?duì)時(shí)鐘“與”邏輯的clockgatingcheck未必會(huì)檢查。用clk下降沿拍出的en信號(hào),再跟clk做與邏輯得到的門控時(shí)鐘,在RTL仿真階段看到的一定不會(huì)有毛刺,但是布線完成后,如果clk相對(duì)en后移,那與邏輯得到的門控時(shí)鐘就有毛刺了。這就是用與邏輯做門控的缺點(diǎn),由于后端
18、工具可能不會(huì)去檢查這個(gè)與門的時(shí)序關(guān)系而導(dǎo)致出錯(cuò)。但直接調(diào)用庫(kù)里的gatingcell,工具天然就會(huì)去檢查這個(gè)時(shí)序,免去人工確認(rèn)的后顧之憂。最后,請(qǐng)大家仔細(xì)看看sel_clka_d0(sel_clkb_dly3)和sel_clkb_d0Verilog基本電路設(shè)計(jì)之三:異步FIFO(帖子鏈接:)FIFO用于為匹配讀寫速度而設(shè)置的數(shù)據(jù)緩沖buffer,當(dāng)讀寫時(shí)鐘異步時(shí),就是異步FIFO。多bit的數(shù)據(jù)信號(hào),并不是直接從寫時(shí)鐘域同步到讀時(shí)鐘域的,而是讀寫時(shí)鐘域分別派遣了一個(gè)信使,去通知對(duì)方時(shí)鐘域,當(dāng)前本方所處的讀寫情況,來判斷還能不能寫以及可不可以讀,這兩個(gè)信使就是讀寫指針。在Verilog基本電路設(shè)
19、計(jì)之一里已討論過,即使單bit的異步信號(hào),通過兩個(gè)相同的同步電路,達(dá)到clkb域時(shí)都可能“長(zhǎng)”的不是一個(gè)模樣,更加不用說多bit的異步信號(hào)同時(shí)傳遞到clkb域會(huì)變成什么五花八門的模樣了。這里讀寫指針不是單bit信號(hào),它們?nèi)绾蜗驅(qū)Ψ綍r(shí)鐘域去同步呢?格雷碼!它的特點(diǎn)是每次只有一個(gè)bit發(fā)生變化,這樣就把多bit信號(hào)同步轉(zhuǎn)變?yōu)榱藛蝏it信號(hào)同步,這也是為什么多bit的格雷碼信號(hào),可以類似于單bit信號(hào)那樣,直接使用兩級(jí)DFF去同步的根本原因。下面給出異步FIFO的主體部分,同樣,省略了信號(hào)聲明定義。moduleasyn_fifo(/inputaf_wclk,/async-FIFOclearinwri
20、teclockaf_rclk,/async-FIFOclearinreadclockrst_n,/systemresetaf_wr_en,/async-FIFOwriteenableaf_rd_en,/async-FIFOreadenableaf_dati,/async-FIFOdatain/outputaf_full,/Async-FIFOfullflagaf_empty,/Async-FIFOemptyflagaf_dato/Async-FIFOdataout);/datainputassignnxt_wptr_wclk=(af_wr_en&&!af_full)?(wptr
21、_wclk+1'b1):wptr_wclk;assignnxt_wptr_gray=(nxt_wptr_wclk>>1)Anxt_wptr_wclk;always(posedgeaf_wclkornegedgerst_n)beginif(rst_n=1'b0)beginwptr_wclkwptr_grayendelsebeginwptr_wclkwptr_grayendendreg31:0ram15:0;/always(posedgeaf_wclk)beginif(af_wr_en=1'b1)ramwptr_wclk3:0else;end/dataoutpu
22、tassignnxt_rptr_rclk=(af_rd_en&&!af_empty)?(rptr_rclk+1'b1):rptr_rclk;assignnxt_rptr_gray=(nxt_rptr_rclk>>1)Anxt_rptr_rclk;always(posedgeaf_rclkornegedgerst_n)beginif(rst_n=1'b0)beginrptr_rclkrptr_grayendelsebeginrptr_rclkrptr_grayendendassignaf_dato=ramrptr_rclk3:0;/syncreadpo
23、interalways(posedgeaf_wclkornegedgerst_n)beginif(rst_n=1'b0)beginrptr_sp1rptr_sp2endelsebeginrptr_sp1rptr_sp2endend/syncwritepointeralways(posedgeaf_rclkornegedgerst_n)beginif(rst_n=1'b0)beginwptr_sp1wptr_sp2endelsebeginwptr_sp1wptr_sp2endendassignaf_full=(wptr_gray=rptr_sp24,rptr_sp23,rptr_
24、sp22:0);assignaf_empty=(rptr_gray=wptr_sp2);assignwptr_bin4=wptr_sp24;assignwptr_bin3=(Awptr_sp24:3);assignwptr_bin2=(Awptr_sp24:2);assignwptr_bin1=(Awptr_sp24:1);assignwptr_bin0=(八wptr_sp24:0);assignrptr_bin4=rptr_sp24;assignrptr_bin3=(Arptr_sp24:3);assignrptr_bin2=(Aptr_sp24:2);assignrptr_bin1=(Aptr_sp24:1);assignrptr_bin0=(Aptr_sp24:0);assignaf_wlevel=wptr_wclk-rptr_bin;assignaf_rlevel=wptr_bin-rptr_rclk;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 打造校家社協(xié)同育人的實(shí)踐路徑與策略
- 2025年智慧旅游行業(yè)發(fā)展趨勢(shì)與市場(chǎng)前景分析
- 數(shù)據(jù)中心產(chǎn)業(yè)園項(xiàng)目可行性研究報(bào)告(參考范文)
- 農(nóng)村生活污水處理設(shè)施及配套管網(wǎng)工程項(xiàng)目可行性研究報(bào)告
- 機(jī)械設(shè)備加工制造項(xiàng)目可行性研究報(bào)告(范文模板)
- 六上語文《第五單元復(fù)習(xí)》名師教學(xué)設(shè)計(jì)
- Module 1 Unit 2 He's cool(教學(xué)設(shè)計(jì))-2023-2024學(xué)年外研版(三起)英語四年級(jí)下冊(cè)
- 全國(guó)川教版信息技術(shù)七年級(jí)下冊(cè)第11課《CD與VCD播放》教學(xué)設(shè)計(jì)
- 2024-2025學(xué)年科學(xué)五年級(jí)下冊(cè)教學(xué)設(shè)計(jì)(教科版)
- 高密度計(jì)算資源平臺(tái)建設(shè)項(xiàng)目可行性研究報(bào)告(范文模板)
- 股東查賬申請(qǐng)書
- PEP人教版小學(xué)英語三年級(jí)下冊(cè)單詞表
- 護(hù)理帶教老師選拔
- DBJ33T 1020-2022 建設(shè)工程地質(zhì)鉆探安全技術(shù)規(guī)程
- 我的家鄉(xiāng)吳忠
- 公交車預(yù)防春困
- 涂層與基材結(jié)合強(qiáng)度-洞察分析
- 網(wǎng)絡(luò)安全服務(wù)方案
- 板翅式換熱器介紹
- 人教九年級(jí)語文上冊(cè)《沁園春 雪》示范課教學(xué)課件
- 團(tuán)體旅游餐飲供餐合同協(xié)議
評(píng)論
0/150
提交評(píng)論