從處理單bit跨時(shí)鐘域信號(hào)同步問(wèn)題來(lái)入手_第1頁(yè)
從處理單bit跨時(shí)鐘域信號(hào)同步問(wèn)題來(lái)入手_第2頁(yè)
從處理單bit跨時(shí)鐘域信號(hào)同步問(wèn)題來(lái)入手_第3頁(yè)
從處理單bit跨時(shí)鐘域信號(hào)同步問(wèn)題來(lái)入手_第4頁(yè)
從處理單bit跨時(shí)鐘域信號(hào)同步問(wèn)題來(lái)入手_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

從處理單bit跨時(shí)鐘域信號(hào)同步問(wèn)題來(lái)入手在數(shù)字電路中,跨時(shí)鐘域處理是個(gè)很龐大的問(wèn)題,因此將會(huì)作為一個(gè)專(zhuān)題來(lái)陸續(xù)分享。今天先來(lái)從處理單bit跨時(shí)鐘域信號(hào)同步問(wèn)題來(lái)入手。01握手(handshake)是用來(lái)處理單bit信號(hào)的跨時(shí)鐘域傳遞的一個(gè)有效的方法。在從快時(shí)鐘向慢時(shí)鐘傳遞時(shí),由于輸入信號(hào)變化較快,輸出一側(cè)可能跟不上輸入的變化,從而導(dǎo)致“漏采“現(xiàn)象。圖1“漏采”現(xiàn)象演示在圖1中,由于兩個(gè)時(shí)鐘的速度差距,來(lái)自快時(shí)鐘域的脈沖信號(hào)還未到達(dá)慢時(shí)鐘的采樣邊沿便消失了,導(dǎo)致了“漏采”。在這種情況下,如何讓脈沖信號(hào)準(zhǔn)確無(wú)誤地傳遞過(guò)去呢?一個(gè)方法是將脈沖信號(hào)展寬,待輸出一側(cè)檢測(cè)到信號(hào)并將其解析為脈沖信號(hào)后,再向輸入一側(cè)發(fā)送應(yīng)答信號(hào),表明接收到信號(hào)并且傳輸完成。這個(gè)過(guò)程被稱(chēng)之為“握手”。02先來(lái)看一個(gè)最基本的握手協(xié)議,下邊是它的電路圖。圖2“握手”電路演示在上圖中src_clk和dst_clk分別為輸入和輸出側(cè)的時(shí)鐘,src_pulse為輸入的脈沖信號(hào),dst_pulse為同步到輸出端的脈沖信號(hào)??梢钥吹?,脈沖信號(hào)被同步到輸出端后,輸出端便立即向輸入端發(fā)送了應(yīng)答信號(hào),表示收到信號(hào)。而當(dāng)輸出端的應(yīng)答信號(hào)同步到輸入端后,輸入端才可以同步下一個(gè)信號(hào)。以下為這個(gè)電路的verilog描述。moduleSync_Pulse(inputwiresrc_clk,inputwiredst_clk,inputwirerst_n,inputwiresrc_pulse,outputwiredst_pulse);regreq_state_dly1,req_state_dly2,dst_req_state,src_sync_req;regack_state_dly1,src_sync_ack;wiredst_sync_ack;always@(posedgesrc_clkornegedgerst_n)beginif(rst_n==1'b0)src_sync_req<=1'b0;elseif(src_pulse)src_sync_req<=1'b1;elseif(src_sync_ack)src_sync_req<=1'b0;else;endalways@(posedgedst_clkornegedgerst_n)beginif(rst_n==1'b0)beginreq_state_dly1<=1'b0;req_state_dly2<=1'b0;dst_req_state<=1'b0;endelsebeginreq_state_dly1<=src_sync_req;req_state_dly2<=req_state_dly1;dst_req_state<=req_state_dly2;endendassigndst_sync_ack=req_state_dly2;always@(posedgesrc_clkornegedgerst_n)beginif(rst_n==1'b0)beginack_state_dly1<=1'b0;src_sync_ack<=1'b0;endelsebeginack_state_dly1<=dst_sync_ack;src_sync_ack<=ack_state_dly1;endendassigndst_pulse=dst_req_state&(~req_state_dly2);endmodule03上述電路雖然可以完整的同步信號(hào),但是若在同步一個(gè)脈沖的過(guò)程中,輸入端又接收到一個(gè)輸入進(jìn)來(lái)的脈沖,那么此時(shí)剛剛輸入進(jìn)來(lái)的脈沖將會(huì)同步失敗。更糟糕的是該電路沒(méi)有同步失敗的反饋,導(dǎo)致使用者誤以為正確同步了信號(hào)。鑒于此,將上述電路進(jìn)行改進(jìn),當(dāng)同步失敗后將輸出src_sync_fail信號(hào)來(lái)指示同步失敗。以下為該電路的verilog描述(此代碼來(lái)源于網(wǎng)絡(luò)):modulehandshake_pulse_sync(src_clk,//sourceclocksrc_rst_n,//sourceclockreset(0:reset)src_pulse,//sourceclockpulseinsrc_sync_fail,//sourceclocksyncstate:1clockpulseifsyncfail.dst_clk,//destinationclockdst_rst_n,//destinationclockreset(0:reset)dst_pulse//destinationpulseout);//PARADECLARATION//INPUTDECLARATIONinputsrc_clk;//sourceclockinputsrc_rst_n;//sourceclockreset(0:reset)inputsrc_pulse;//sourceclockpulseininputdst_clk;//destinationclockinputdst_rst_n;//destinationclockreset(0:reset)//OUTPUTDECLARATIONoutputsrc_sync_fail;//sourceclocksyncstate:1clockpulseifsyncfail.outputdst_pulse;//destinationpulseout//INTERDECLARATIONwiredst_pulse;wiresrc_sync_idle;regsrc_sync_fail;regsrc_sync_req;regsrc_sync_ack;regack_state_dly1;regack_state_dly2;regreq_state_dly1;regreq_state_dly2;regdst_req_state;regdst_sync_ack;//--========================MODULESOURCECODE==========================--//--=========================================--//DSTClock://1.generatesrc_sync_fail;//2.generatesyncreq//3.syncdst_sync_ack//--=========================================--assignsrc_sync_idle=~(src_sync_req|src_sync_ack);//reportanerrorifsrc_pulsewhensyncbusy;always@(posedgesrc_clkornegedgesrc_rst_n)beginif(src_rst_n==1'b0)src_sync_fail<=1'b0;elseif(src_pulse&(~src_sync_idle))src_sync_fail<=1'b1;elsesrc_sync_fail<=1'b0;end//setsyncreqifsrc_pulsewhensyncidle;always@(posedgesrc_clkornegedgesrc_rst_n)beginif(src_rst_n==1'b0)src_sync_req<=1'b0;elseif(src_pulse&src_sync_idle)src_sync_req<=1'b1;elseif(src_sync_ack)src_sync_req<=1'b0;endalways@(posedgesrc_clkornegedgesrc_rst_n)beginif(src_rst_n==1'b0)beginack_state_dly1<=1'b0;ack_state_dly2<=1'b0;src_sync_ack<=1'b0;endelsebeginack_state_dly1<=dst_sync_ack;ack_state_dly2<=ack_state_dly1;src_sync_ack<=ack_state_dly2;endend//--=========================================--//DSTClock://1.syncsrcsyncreq//2.generatedstpulse//3.generatesyncack//--=========================================--always@(posedgedst_clkornegedgedst_rst_n)beginif(dst_rst_n==1'b0)beginreq_state_dly1<=1'b0;req_state_dly2<=1'b0;dst_req_state<=1'b0;endelsebeginreq_state_dly1<=src_sync_req;req_state_dly2<=req_state_dly1;dst_req_state

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論