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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 一種高速緩存方案的實現(xiàn)方法

          一種高速緩存方案的實現(xiàn)方法

          作者: 時間:2013-08-05 來源:網(wǎng)絡(luò) 收藏

          摘要:基于Altera公司的EP2SGX90FF1508C3N和NEC公司的UPD44165364AF5,提出了一種。本設(shè)計采用可編程邏輯器件,靈活性高,可靠性強(qiáng),可以根據(jù)用戶的需要進(jìn)行方便的擴(kuò)展和升級。深入研究了QDRII SRAM的工作原理和時序原理,提出了比較可靠的讀寫狀態(tài)機(jī)實現(xiàn)。硬件設(shè)計經(jīng)過實際測試,達(dá)到了預(yù)期的指標(biāo),實現(xiàn)了43.2 Gb/s的數(shù)據(jù)吞吐速率,并且成功用于某產(chǎn)品中。
          關(guān)鍵詞:QDRII SRAM;;時序圖;狀態(tài)機(jī);FPGA

          引言
          在移動通信領(lǐng)域隨著3G時代的到來和4G的發(fā)展,無線基站離不開高速率、高帶寬和大動態(tài)的數(shù)據(jù)采集,采集下來的高速數(shù)據(jù)需要進(jìn)行、高速數(shù)據(jù)處理和傳輸。本文實現(xiàn)了一種基于FPGA和QDRII SDRAM高速緩存解決,并且經(jīng)過實際驗證,已成功應(yīng)用于某產(chǎn)品中。

          1 QDRII工作原理
          QDR協(xié)議由存儲器供應(yīng)商Cypress、IDT、NEC、Renesas和Samsung公司組成的聯(lián)盟共同發(fā)布,主要針對網(wǎng)絡(luò)交換機(jī)、路由器和其他通信設(shè)備的應(yīng)用。QDRII由兩個獨(dú)立的“讀”和“寫”端口組成,“讀”和“寫”端口有分別獨(dú)立的數(shù)據(jù)輸出和數(shù)據(jù)輸入端口來支持相應(yīng)的讀寫操作,并且讀寫端口分別為雙倍數(shù)據(jù)速率端口。
          QDRII SRAM提供了2字突發(fā)和4字突發(fā)結(jié)構(gòu)。2字突發(fā)結(jié)構(gòu)的DDR地址總線在前半個時鐘周期允許讀請求,后半個周期允許寫請求。4字突發(fā)結(jié)構(gòu)針對每一個讀或?qū)懻埱髠鬏?個字,這樣只需一個SDR的地址總線就能最大程度地利用數(shù)據(jù)帶寬。以Cypress公司生產(chǎn)的CY7C1310V18為例,說明QDRII器件內(nèi)部邏輯結(jié)構(gòu),如圖1所示。

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

          決定。

          的上升沿第二個數(shù)據(jù)字被鎖存。第三個和第四個數(shù)據(jù)字在K、控制時,在時鐘K的上升沿,當(dāng)讀選通信號為低電平時,讀地址SA被鎖存。在其之后的第二個時鐘K的上升沿,設(shè)備鎖存Q上的第一個數(shù)據(jù)字,在接下來的的上升沿鎖存Q上第二個數(shù)據(jù)字。在之后的K、的上升沿鎖存Q上的第三個和第4個數(shù)據(jù)字。讀總線數(shù)據(jù)輸出Q值在DDR模式下從存儲器中輸出時,與CQ、源同步時鐘邊沿對齊,此時完成一個完整的讀操作。

          2 QDRII SRAM讀寫狀態(tài)機(jī)
          在實際的應(yīng)用系統(tǒng)中,為了讓器件連續(xù)有效地工作,必須設(shè)計相應(yīng)的控制程序來完成各種控制狀態(tài)之間的轉(zhuǎn)換,對于4字節(jié)突發(fā)QDRII器件,設(shè)計的讀寫狀態(tài)機(jī)如圖4所示。使QDRII在讀寫狀態(tài)中自由跳轉(zhuǎn)。

          選通脈沖。讀/寫狀態(tài)機(jī)持續(xù)監(jiān)控用戶接口FIFO狀態(tài)信號,以確定是否存在待處理讀/寫請求。連續(xù)不斷地并發(fā)讀/寫請求流將導(dǎo)致狀態(tài)機(jī)只在讀狀態(tài)和寫狀態(tài)之間轉(zhuǎn)換,以確保正確無誤地將請求交替發(fā)送到外部存儲器。一串只寫請求將導(dǎo)致空閑狀態(tài)和寫狀態(tài)輪流出現(xiàn),同樣,一串讀請求也會在空閑狀態(tài)和讀狀態(tài)問轉(zhuǎn)換。

          3 系統(tǒng)的硬件實現(xiàn)
          本文實現(xiàn)的高速緩存系統(tǒng)是以FPGA和QDRII器件為核心的,F(xiàn)PGA采用Altera公司的Stratix II GX系列,具體型號為EP2SGX90FF1508C3N Stratix II系列芯片采用90 nm工藝,1.2 V內(nèi)核電壓供電,具有片上可編程電阻特性,簡化了設(shè)計,容易實現(xiàn)阻抗匹配,提高了信號完整
          性。QDRII采用NEC公司的UPD44165364AF5-E33EQ2-A,具有4字節(jié)突發(fā)結(jié)構(gòu),最高工作頻率為300 MHz。FPGA與QDRII的接口如圖5所示。

          e.JPG


          QDRII的控制時序十分復(fù)雜,為簡化設(shè)計過程,增強(qiáng)系統(tǒng)的可靠性,可以采用IP核進(jìn)行控制。IP核是一種預(yù)定義的并經(jīng)過驗證的復(fù)雜功能模塊,可以方便地集成到系統(tǒng)中。
          Altera公司的QDRII SDRAM Controller MegaCore可提供一些底層的時序控制,使得對QDRII的控制變得相對簡單,IP核留給用戶一些上層的Avalon通信接口,用戶可以根據(jù)自己的需要對相應(yīng)的狀態(tài)引腳進(jìn)行監(jiān)控和編寫驅(qū)動,實現(xiàn)對QDRII器件的操作。

          4 實驗設(shè)計及測試結(jié)果
          用VHDL編寫testbench,測試系統(tǒng)性能,設(shè)計原理如圖6所示。設(shè)計數(shù)據(jù)源對QDRII進(jìn)行寫操作,再把讀出來的數(shù)據(jù)與原始數(shù)據(jù)對比,最后給出測試結(jié)果。

          f.JPG


          進(jìn)行速度測試,以300 MHz的速率進(jìn)行讀寫,通過測試證明本系統(tǒng)能夠穩(wěn)定工作,測試結(jié)果如圖7所示。

          g.JPG


          為了便于觀察,選取幾個固定地址,循環(huán)讀取該地址的數(shù)據(jù),用SignalTap對其進(jìn)行實時采樣,結(jié)果如圖8所示。可以清晰地看出給定固定地址00004H后,發(fā)出讀請求,在avl_data_read_valid有效時讀取數(shù)據(jù)為AAAAFFFFAAAAFFFFAAH,與寫入數(shù)據(jù)一致。

          結(jié)語
          本文通過深入分析QDRII的結(jié)構(gòu)和工作原理,設(shè)計一種狀態(tài)機(jī),給出了一種基于FPGA的高速緩存方案。經(jīng)過實驗驗證,QDRII可以穩(wěn)定工作在300 MHz,使36位存儲器接口的總流量達(dá)到43.2 Gb/s,具有實際應(yīng)用價值,使各種數(shù)據(jù)密集型應(yīng)用中的讀/寫能力得以提升。

          交換機(jī)相關(guān)文章:交換機(jī)工作原理




          評論


          相關(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); })();