引言
??類似于電源域(電源規(guī)劃與時(shí)鐘規(guī)劃亦是對(duì)應(yīng)的),假如設(shè)計(jì)中所有的 D 觸發(fā)器都使用一個(gè)全局網(wǎng)絡(luò) GCLK ,比如 FPGA 的主時(shí)鐘輸入,那么我們說(shuō)這個(gè)設(shè)計(jì)只有一個(gè)時(shí)鐘域。假如設(shè)計(jì)有兩個(gè)輸入時(shí)鐘,分別給不同的接口使用,那么我們說(shuō)這個(gè)設(shè)計(jì)中有兩個(gè)時(shí)鐘域,不同的時(shí)鐘域,有著不同的時(shí)鐘頻率和時(shí)鐘相位。
??在實(shí)際的 FPGA 系統(tǒng)設(shè)計(jì)中,經(jīng)常有多個(gè)不同的時(shí)鐘源的參與,比如 FPGA 內(nèi)部的 Clock Wizard 時(shí)鐘分頻 IP 核,連接到許多不同的頻率輸入的 IP 模塊,這個(gè)在視頻顯示系統(tǒng)中是很常見(jiàn)的,畢竟,不同的視頻顯示格式需要不同的像素頻率,也就需要不同的輸入時(shí)鐘。例如 640X480@60Hz 需要 25.175MHz 時(shí)鐘,而 1280X720@60Hz 需要 74.2MHz 時(shí)鐘等等。
一、跨時(shí)鐘域處理方式
1、對(duì)于單比特?cái)?shù)據(jù)的跨時(shí)鐘域: 打兩拍 (即定義兩級(jí)寄存器對(duì)輸入數(shù)據(jù)進(jìn)行延拍,這個(gè)在解決 “亞穩(wěn)態(tài)” 方式的隨筆中已經(jīng)提及)。
2、對(duì)于多比特?cái)?shù)據(jù)的跨時(shí)鐘域: 異步 FIFO(異步雙口 RAM) 。例如前面一個(gè)模塊的數(shù)據(jù)發(fā)送速率為 100MHz,而后面一個(gè)模塊的數(shù)據(jù)接收速率為 50MHz,這樣就是數(shù)據(jù)速率傳輸?shù)牟煌?,那么,我們可以在中間插入一個(gè)異步 FIFO,一端接收前面的 100MHz 速率的數(shù)據(jù)進(jìn)行緩存,另一端發(fā)送 50MHz 速率的數(shù)據(jù),從而達(dá)到數(shù)據(jù)的同步接收與發(fā)送。當(dāng)然,這里的 FIFO 的深度就需要自己計(jì)算了。
3、 握手協(xié)議 。由于兩個(gè)異步時(shí)鐘的頻率關(guān)系不確定,所以,也就無(wú)法保證能否滿足觸發(fā)器之間的建立時(shí)間和保持時(shí)間,如果違反了建立時(shí)間或者保持時(shí)間的要求,那么接收域?qū)?huì)采樣到處于亞穩(wěn)態(tài)的數(shù)據(jù),那么系統(tǒng)就可能崩潰了。
??因此,我們可以使如下用握手協(xié)議方式處理跨時(shí)鐘域數(shù)據(jù)傳輸,只需要對(duì)雙方的握手信號(hào)(req 和 ack)分別使用脈沖檢測(cè)方法進(jìn)行同步。如下所示,假設(shè) req、ack、data 總線在初始化時(shí)都處于無(wú)效狀態(tài),發(fā)送域先把數(shù)據(jù)放入總線,隨后發(fā)送有效的 req 信號(hào)給接收域,接收域在檢測(cè)到有效的 req 信號(hào)后鎖存數(shù)據(jù)總線,然后回送一個(gè)有效的 ack 信號(hào)表示讀取完成應(yīng)答,發(fā)送域在檢測(cè)到有效 ack 信號(hào)后撤銷(xiāo)當(dāng)前的 req 信號(hào),接收域在檢測(cè)到 req 撤銷(xiāo)后也相應(yīng)撤銷(xiāo) ack 信號(hào),此時(shí)完成一次正常握手通信。
基于握手協(xié)議的跨時(shí)鐘域處理方式
??此后,發(fā)送域可以繼續(xù)開(kāi)始下一次握手通信,依次循環(huán)。該握手協(xié)議方式能夠保證接收到的數(shù)據(jù)穩(wěn)定可靠,有效的避免了亞穩(wěn)態(tài)的出現(xiàn),但是,控制信號(hào)握手檢測(cè)會(huì)消耗通信雙方較多的時(shí)間和資源。這樣的通信協(xié)議類似于 AXI4-Stream 流協(xié)議,當(dāng)然,前者是一次握手發(fā)送一次數(shù)據(jù),后者是一次握手可以連續(xù)發(fā)送數(shù)據(jù),AXI4-Stream 流協(xié)議的主要通信信號(hào)為 tvalid 和 tready,這個(gè)協(xié)議在視頻流傳輸中非常重要且實(shí)用,大家可以去學(xué)一學(xué)。
-
FPGA
+關(guān)注
關(guān)注
1629文章
21753瀏覽量
604180 -
fifo
+關(guān)注
關(guān)注
3文章
389瀏覽量
43729 -
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1735瀏覽量
131569 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61211
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論