基于FPGA的跨時(shí)鐘域信號(hào)處理——借助存儲(chǔ)器
為了達(dá)到可靠的數(shù)據(jù)傳輸,借助存儲(chǔ)器來(lái)完成跨時(shí)鐘域通信也是很常用的手段。在早期的跨時(shí)鐘域設(shè)計(jì)中,在兩個(gè)處理器間添加一個(gè)雙口RAM或者FIFO來(lái)完成相互間的數(shù)據(jù)交換是很常見的做法。如今的FPGA大都集成了一些用戶可靈活配置的存儲(chǔ)塊,因此,使用開發(fā)商提供的免費(fèi)IP核可以很方便的嵌入一些常用的存儲(chǔ)器來(lái)完成跨時(shí)鐘域數(shù)據(jù)傳輸?shù)娜蝿?wù)。使用內(nèi)嵌存儲(chǔ)器和使用外部擴(kuò)展存儲(chǔ)器的基本原理是一樣的,如圖1所示。
本文引用地址:http://butianyuan.cn/article/270067.htm圖1 借助存儲(chǔ)器的跨時(shí)鐘域傳輸
雙口RAM更適合于需要互通信的設(shè)計(jì),只要雙方對(duì)地址做好適當(dāng)?shù)姆峙洌敲词O碌墓ぷ髦皇强刂坪么鎯?chǔ)器的讀寫時(shí)序。FIFO本身的特性(先進(jìn)先出)決定了它更適合于單向的數(shù)據(jù)傳輸??傊?,借助存儲(chǔ)器進(jìn)行跨時(shí)鐘域傳輸?shù)淖畲蠛锰幵谟?,設(shè)計(jì)者不需要再花時(shí)間和精力考慮如何處理同步問題,因?yàn)檫@些工作都交給了存儲(chǔ)器,我們也不用關(guān)心存儲(chǔ)器內(nèi)部到底使用了怎樣的工作機(jī)制來(lái)解決沖突問題(當(dāng)然了,存儲(chǔ)芯片內(nèi)部肯定是有一套完善的同步處理機(jī)制)。我們可以把更多的時(shí)間花在數(shù)據(jù)流以及存儲(chǔ)器接口的控制上。借助存儲(chǔ)器的另一個(gè)優(yōu)勢(shì),它可以大大提高通信雙方的數(shù)據(jù)吞吐率,它不像握手信號(hào)和邏輯同步處理機(jī)制那樣在同步設(shè)計(jì)上耗費(fèi)太多的時(shí)鐘周期,它的速度瓶頸基本就是存儲(chǔ)器本身的速度上限。不過,在得到便利的同時(shí),我們也不得不以付出更多的Money作為代價(jià)。
下文將重點(diǎn)探討異步FIFO在跨時(shí)鐘域通信中的使用。常見的異步FIFO接口如圖2所示,F(xiàn)IFO兩側(cè)會(huì)有相對(duì)獨(dú)立的兩套控制總線。若寫入請(qǐng)求wrreq在寫入時(shí)鐘wrclk的上升沿處于有效狀態(tài),那么FIFO將在該時(shí)鐘沿將鎖存寫入數(shù)據(jù)總線wrdata。同理,若讀請(qǐng)求rdreq在讀時(shí)鐘rdclk的上升沿處于有效狀態(tài),那么FIFO將把數(shù)據(jù)放置到讀數(shù)據(jù)總線rddata上,外部邏輯一般在下一個(gè)有效時(shí)鐘沿讀取該數(shù)據(jù)。
FIFO一般還會(huì)有指示內(nèi)部狀態(tài)的一些接口信號(hào),如圖2中的空標(biāo)志位empty、滿標(biāo)志位full,甚至還會(huì)有用多位數(shù)據(jù)線表示的FIFO當(dāng)前數(shù)據(jù)量,這些狀態(tài)標(biāo)志保證了讀寫控制不出現(xiàn)空讀和滿寫的情況。清除信號(hào)aclr在某些應(yīng)用中也是需要的,它在有效時(shí)能夠清除當(dāng)前FIFO的數(shù)據(jù),讓FIFO復(fù)位到一個(gè)空的狀態(tài)。
圖2 常見異步FIFO接口
如圖3所示,在特權(quán)同學(xué)設(shè)計(jì)過的一個(gè)SDRAM控制器中,就使用了兩個(gè)FIFO。由于SDRAM需要定時(shí)預(yù)刷新,并且每次讀寫時(shí)起始控制的時(shí)間開銷相對(duì)大一些,因此采用頁(yè)讀寫的方式可以大大的提高數(shù)據(jù)吞吐量,而頁(yè)讀寫方式需要對(duì)數(shù)據(jù)做一些緩存處理。另外,該SDRAM控制器所在的工程中涉及了多個(gè)時(shí)鐘域。在寫入SDRAM端是一個(gè)25MHz的時(shí)鐘,在讀SDRAM端是一個(gè)50MHz的時(shí)鐘,而SDRAM的控制則使用了100MHz的時(shí)鐘。盡管實(shí)際工程里這三個(gè)時(shí)鐘的相位關(guān)系固定,但是不做好多周期約束也很容易引起問題。
最終,選擇在SDRAM控制器的寫入端和讀出端各使用一個(gè)異步FIFO,這既解決了數(shù)據(jù)緩存的問題,也能有效的完成跨時(shí)鐘域的信號(hào)傳輸。
圖3 用兩個(gè)FIFO設(shè)計(jì)的SDRAM控制器
樹莓派文章專題:樹莓派是什么?你不知道樹莓派的知識(shí)和應(yīng)用
fpga相關(guān)文章:fpga是什么
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論