<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 基于FPGA的跨時(shí)鐘域信號(hào)處理——借助存儲(chǔ)器

          基于FPGA的跨時(shí)鐘域信號(hào)處理——借助存儲(chǔ)器

          作者: 時(shí)間:2015-02-25 來源:網(wǎng)絡(luò) 收藏

            為了達(dá)到可靠的數(shù)據(jù)傳輸,借助來完成跨時(shí)鐘域通信也是很常用的手段。在早期的跨時(shí)鐘域設(shè)計(jì)中,在兩個(gè)處理器間添加一個(gè)雙口RAM或者FIFO來完成相互間的數(shù)據(jù)交換是很常見的做法。如今的大都集成了一些用戶可靈活配置的存儲(chǔ)塊,因此,使用開發(fā)商提供的免費(fèi)IP核可以很方便的嵌入一些常用的來完成跨時(shí)鐘域數(shù)據(jù)傳輸?shù)娜蝿?wù)。使用內(nèi)嵌和使用外部擴(kuò)展存儲(chǔ)器的基本原理是一樣的,如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/270067.htm


          點(diǎn)擊看大圖


            圖1 借助存儲(chǔ)器的跨時(shí)鐘域傳輸

            雙口RAM更適合于需要互通信的設(shè)計(jì),只要雙方對(duì)地址做好適當(dāng)?shù)姆峙洌敲词O碌墓ぷ髦皇强刂坪么鎯?chǔ)器的讀寫時(shí)序。FIFO本身的特性(先進(jìn)先出)決定了它更適合于單向的數(shù)據(jù)傳輸??傊?,借助存儲(chǔ)器進(jìn)行跨時(shí)鐘域傳輸?shù)淖畲蠛锰幵谟冢O(shè)計(jì)者不需要再花時(shí)間和精力考慮如何處理同步問題,因?yàn)檫@些工作都交給了存儲(chǔ)器,我們也不用關(guān)心存儲(chǔ)器內(nèi)部到底使用了怎樣的工作機(jī)制來解決沖突問題(當(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ì)大一些,因此采用頁讀寫的方式可以大大的提高數(shù)據(jù)吞吐量,而頁讀寫方式需要對(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)傳輸。


          點(diǎn)擊看大圖


            圖3 用兩個(gè)FIFO設(shè)計(jì)的SDRAM控制器

          樹莓派文章專題:樹莓派是什么?你不知道樹莓派的知識(shí)和應(yīng)用

          fpga相關(guān)文章:fpga是什么


          存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理




          關(guān)鍵詞: FPGA 存儲(chǔ)器

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();