源同步信號(hào)跨時(shí)鐘域采集的兩種方法
對(duì)于數(shù)據(jù)采集接收的一方而言,所謂源同步信號(hào),即傳輸待接收的數(shù)據(jù)和時(shí)鐘信號(hào)均由發(fā)送方產(chǎn)生。FPGA應(yīng)用中,常常需要產(chǎn)生一些源同步接口信號(hào)傳輸給外設(shè)芯片,這對(duì)FPGA內(nèi)部產(chǎn)生時(shí)鐘或數(shù)據(jù)的邏輯和時(shí)序都有較嚴(yán)格的要求。而對(duì)于一些FPGA采集信號(hào)的應(yīng)用中,常常也有時(shí)鐘和數(shù)據(jù)均來自外設(shè)芯片的情況,此時(shí)對(duì)數(shù)據(jù)和時(shí)鐘的采集也同樣需要關(guān)注FPGA內(nèi)部的邏輯和時(shí)序。當(dāng)然,無論何種情況,目的只有一個(gè),保證信號(hào)穩(wěn)定可靠的被傳送或接收。
本文引用地址:http://m.butianyuan.cn/article/155011.htm對(duì)于一個(gè)如圖1所示的某視頻芯片產(chǎn)生的源同步信號(hào),當(dāng)FPGA對(duì)其進(jìn)行采集同步到另一個(gè)時(shí)鐘域時(shí),特權(quán)同學(xué)通常的做法有兩種,特權(quán)同學(xué)稱之為脈沖邊沿檢測采集法和異步FIFO采集法。下面簡單的對(duì)這兩種方法做一些討論和說明。
圖1
脈沖邊沿檢測采集法
脈沖邊沿檢測采集法,顧名思義,一定是應(yīng)用了經(jīng)典的脈沖邊沿檢測法來幫助或者直接采集信號(hào)。對(duì)于脈沖邊沿檢測法,大家可以參考特權(quán)同學(xué)的《深入淺出玩轉(zhuǎn)FPGA》或者用gooogle擺渡一下。而這里尤其需要提醒大家注意的是,著名的奈奎斯特采樣定理告訴我們:要從采樣信號(hào)中無失真的恢復(fù)原信號(hào),采樣頻率應(yīng)大于兩倍信號(hào)最高頻率。而特權(quán)同學(xué)通過實(shí)踐得出的結(jié)論與此相仿:若想穩(wěn)定有效的采集到脈沖(數(shù)字信號(hào))變化的邊沿,采樣頻率應(yīng)大于被采樣脈沖最大頻率的3倍。注意是要大于3倍,甚至若是可能盡量采用4倍以上的采樣頻率才能夠達(dá)到穩(wěn)定的狀態(tài)。至于為什么,我想深諳此道(脈沖邊沿檢測法)的聰明人看完結(jié)論就已經(jīng)明白了,無需特權(quán)同學(xué)再廢話解釋一番。
而具體的做法也很簡單,把圖1理想化就如圖2所示。其中,待采集信號(hào)時(shí)鐘Tx Clock,待采集數(shù)據(jù)使能信號(hào)Enable Signal,待采集數(shù)據(jù)總線Data Bus。FPGA內(nèi)部信號(hào)采集時(shí)鐘為Rx Clock,該時(shí)鐘為待采集時(shí)鐘的4倍。
圖2
采用脈沖邊沿檢測法,使用Rx Clock去采集Tx Clock,Rx Clock reg1和Rx Clock reg2分別為第一級(jí)和第二級(jí)Tx Clock鎖存信號(hào)。Tx Clock上升沿對(duì)應(yīng)的一個(gè)有效指示信號(hào)Tx Clock pos每個(gè)Tx Clock時(shí)鐘周期產(chǎn)生一個(gè)Rx Clock脈寬的有效高電平使能信號(hào)。從圖3中可以看到,此時(shí)若用Tx Clock pos作為FPGA內(nèi)部采樣使能信號(hào),雖然Tx Clock pos處于第7個(gè)Tx Clock,但是真正采集Data Bus其實(shí)已經(jīng)是第8個(gè)Tx Clock上升沿了。很明顯,第8個(gè)Tx Clock上升沿對(duì)準(zhǔn)的不是Data Bus的穩(wěn)定信號(hào)中央,數(shù)據(jù)很可能采集到錯(cuò)誤值。
圖3
因此,通過上面的分析,還是可以采取一些變通的方式來保證第8個(gè)Tx Clock上升沿采集到Data Bus的中央值。如圖4所示,采用同樣的方式對(duì)Data Bus做兩級(jí)信號(hào)鎖存,那么第8個(gè)Tx Clock上升沿就能夠在Data Bus reg2的中央采集數(shù)據(jù)了。這樣做只有一點(diǎn)小問題,相應(yīng)的需要多付出2組寄存器來鎖存Data Bus。
圖4
脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理
評(píng)論