• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      高速數(shù)據(jù)采集卡DDR控制器的設(shè)計(jì)與實(shí)現(xiàn)

      2013-08-13 05:06:34王曉嬌張治中
      電視技術(shù) 2013年5期
      關(guān)鍵詞:標(biāo)識符荷包存儲器

      王曉嬌,張治中

      (重慶郵電大學(xué)通信網(wǎng)與測試技術(shù)重點(diǎn)實(shí)驗(yàn)室,重慶 400065)

      隨著網(wǎng)絡(luò)流量的日益龐大,鏈路帶寬的不斷提升,在高速數(shù)據(jù)采集系統(tǒng)中,對雙倍速率同步動(dòng)態(tài)隨機(jī)存儲器(Double Data Rate Synchronously Dynamic RAM,DDR SDRAM)[1]所提供的大容量緩沖技術(shù)也提出了挑戰(zhàn)。

      現(xiàn)有技術(shù)中,DDR控制器對數(shù)據(jù)的封裝處理和讀寫控制方法難以很好地兼顧數(shù)據(jù)訪問的可靠性和有效性,且容錯(cuò)糾錯(cuò)能力較低、內(nèi)存管理復(fù)雜。本文研究并設(shè)計(jì)了一種改進(jìn)型高性能DDR控制器,保證了數(shù)據(jù)存儲取的正確性、高效性和連續(xù)性,有效提高DDR存儲器的管理效率和內(nèi)存利用率。適用于多光口/電口的千兆線速數(shù)據(jù)采集系統(tǒng),提供高速大容量的緩沖能力,在網(wǎng)絡(luò)流量峰值時(shí),能夠?qū)崿F(xiàn)動(dòng)態(tài)均衡,平滑處理,可顯著提高數(shù)據(jù)采集密度與速率。

      1 DDR控制器工作原理

      基于FPGA實(shí)現(xiàn)的DDR控制器通常主要包括前端主控模塊和后端用戶模塊。以目前主流的Virtex-5 FPGA器件參考設(shè)計(jì)結(jié)構(gòu)為例,如圖1所示。

      前端主控模塊由PHY控制器、主控制器和前端FIFO組成。PHY控制器完成DDR存儲器初始化狀態(tài)和讀數(shù)據(jù)采集時(shí)序校準(zhǔn)邏輯功能,主控制器實(shí)現(xiàn)DDR控制器狀態(tài)機(jī)和用于地址/命令/數(shù)據(jù)的FIFO邏輯,前端FIFO作為一種用戶接口,提供地址/命令、寫數(shù)據(jù)和讀數(shù)據(jù)3個(gè)FIFO。前2個(gè)FIFO由不同的用戶后端邏輯加載,而讀數(shù)據(jù)FIFO則由PHY控制器訪問,以將采集的數(shù)據(jù)存儲在每個(gè)讀周期上。通過用戶接口,可以發(fā)出命令,向DDR存儲器提供寫數(shù)據(jù)或者讀數(shù)據(jù)操作[1-3]。因此,在前端主控模塊的設(shè)計(jì)結(jié)構(gòu)相對固定的情況下,后端用戶模塊以及與前端模塊對接方式的良好設(shè)計(jì),對提升DDR控制器的整體性能具有重要作用。

      圖1 DDR SDRAM存儲器控制器的參考設(shè)計(jì)結(jié)構(gòu)

      2 DDR控制器模塊設(shè)計(jì)

      2.1 基于FPGA的模塊化設(shè)計(jì)

      針對現(xiàn)有的DDR控制器對外部DDR 存儲器數(shù)據(jù)讀寫訪問所存在的不足,提出一種基于FPGA實(shí)現(xiàn)的模塊化設(shè)計(jì),采用多數(shù)據(jù)包重組和轉(zhuǎn)義思想,以及讀寫控制方法,其模塊設(shè)計(jì)框圖如圖2所示。DDR控制器主要包括:多凈荷包組裝模塊、寫轉(zhuǎn)義模塊、讀反向轉(zhuǎn)義模塊、多凈荷包解封裝模塊、讀寫控制邏輯以及存儲器接口邏輯。

      圖2 DDR控制器模塊設(shè)計(jì)框圖

      其中,多凈荷包組裝模塊將把從前一級處理模塊送入的多個(gè)凈荷數(shù)據(jù)包拼接為一個(gè)較大的數(shù)據(jù)包;寫轉(zhuǎn)義模塊完成對預(yù)寫入DDR存儲器數(shù)據(jù)的轉(zhuǎn)義處理;讀反向轉(zhuǎn)義模塊則實(shí)現(xiàn)對從DDR存儲器讀出的數(shù)據(jù)流進(jìn)行反向轉(zhuǎn)義,解析出正確的原始組裝凈荷包;多凈荷包解封裝模塊將提取出原始單個(gè)凈荷包;讀寫控制邏輯模塊負(fù)責(zé)對DDR存儲器的讀寫訪問進(jìn)行控制;存儲器接口邏輯模塊主要實(shí)現(xiàn)圖1中的前端主控功能,完成對外部DDR存儲器的讀寫訪問,并為應(yīng)用提供命令、讀、寫接口。

      2.2 基本工作流程

      DDR控制器存儲和讀取數(shù)據(jù)的基本流程如圖3所示。首先,對多個(gè)凈荷包進(jìn)行組裝并進(jìn)行寫轉(zhuǎn)義處理;然后,在處于寫操作時(shí)鐘周期時(shí),將寫轉(zhuǎn)義處理后的數(shù)據(jù)寫入到DDR存儲器中。當(dāng)?shù)竭_(dá)讀操作時(shí)鐘周期時(shí),從DDR存儲器中讀取數(shù)據(jù),并對讀出的數(shù)據(jù)流進(jìn)行讀反向轉(zhuǎn)義和解封裝,恢復(fù)出原始單個(gè)凈荷包。

      圖3 DDR控制器存儲和讀取數(shù)據(jù)基本流程示意圖

      3 數(shù)據(jù)預(yù)處理與解析

      3.1 多凈荷包的組裝

      向DDR存儲器寫入數(shù)據(jù)前,對數(shù)據(jù)進(jìn)行兩級預(yù)處理。多凈荷包組裝是第一級數(shù)據(jù)預(yù)處理,該方法旨在有效減少短包對CPU的中斷次數(shù),降低資源開銷,提高DDR控制器的處理效率。多凈荷包組裝模塊封裝的數(shù)據(jù)包格式如圖4所示。

      圖4 多凈荷包組裝模塊封裝的數(shù)據(jù)包結(jié)構(gòu)示意圖

      多凈荷包組裝過程:首先,將一個(gè)或一個(gè)以上原始數(shù)據(jù)凈荷包分別增加一個(gè)標(biāo)識有該包長度信息的數(shù)據(jù)包包頭后級聯(lián)在一起,并在第一個(gè)數(shù)據(jù)包包頭前標(biāo)識級聯(lián)在一起的數(shù)據(jù)包的個(gè)數(shù);然后,將級聯(lián)在一起的數(shù)據(jù)包組裝為一個(gè)復(fù)合數(shù)據(jù)包;在組裝的同時(shí),在復(fù)合數(shù)據(jù)包的頭部加上64 bit特定的數(shù)據(jù)包起始標(biāo)識符(Start of Frame,SOF),在數(shù)據(jù)包的尾部加上64 bit特定的數(shù)據(jù)包結(jié)束標(biāo)識符(End of Frame,EOF)。其中,SOF和EOF可以在解析讀出的數(shù)據(jù)流時(shí),定位有效數(shù)據(jù)的起始位置與結(jié)束位置。

      3.2 寫轉(zhuǎn)義的邏輯設(shè)計(jì)

      寫轉(zhuǎn)義是第二級數(shù)據(jù)預(yù)處理,可避免在組裝后的原始數(shù)據(jù)包中出現(xiàn)與SOF、EOF以及轉(zhuǎn)義標(biāo)識符相同的有效數(shù)據(jù),從而影響數(shù)據(jù)的正確解析。寫轉(zhuǎn)義變換的規(guī)則是對相應(yīng)的64 bit原始數(shù)據(jù)的最高位進(jìn)行反碼轉(zhuǎn)換,并在其起始位置加上64 bit特定的轉(zhuǎn)義標(biāo)識符。寫轉(zhuǎn)義變換的實(shí)現(xiàn)流程如圖5所示,其對應(yīng)的寫轉(zhuǎn)義各狀態(tài)含義見表1(TM是Transferred Meaning的英文縮寫,表示轉(zhuǎn)義)。

      圖5 寫轉(zhuǎn)義狀態(tài)機(jī)

      表1 寫轉(zhuǎn)義狀態(tài)機(jī)各狀態(tài)說明

      3.3 讀反向轉(zhuǎn)義的邏輯設(shè)計(jì)

      讀反向轉(zhuǎn)義是寫轉(zhuǎn)義的逆過程,解析從DDR緩存所讀取的數(shù)據(jù)流。讀反向轉(zhuǎn)義變換的規(guī)則是:從有SOF、EOF和轉(zhuǎn)義標(biāo)識符的數(shù)據(jù)流中讀出并過濾掉SOF、EOF和轉(zhuǎn)義標(biāo)識符,同時(shí)將轉(zhuǎn)義標(biāo)識符后的64 bit數(shù)據(jù)的最高位進(jìn)行反碼轉(zhuǎn)換,以恢復(fù)出原始數(shù)據(jù)。讀反向轉(zhuǎn)義的實(shí)現(xiàn)流程如圖6所示,其對應(yīng)的轉(zhuǎn)義各狀態(tài)含義見表2(RTM是Reverse Transferred Meaning的英文縮寫)。

      圖6 讀反向轉(zhuǎn)義狀態(tài)機(jī)

      表2 讀反向轉(zhuǎn)義狀態(tài)機(jī)各狀態(tài)說明

      4 讀寫控制邏輯設(shè)計(jì)

      本方案中對DDR的讀寫控制主要有兩個(gè)關(guān)鍵點(diǎn),一個(gè)是64 bit和256 bit數(shù)據(jù)轉(zhuǎn)換,另一個(gè)是讀寫均衡控制。前者的目的在于更有效地利用接口寬度和轉(zhuǎn)義數(shù)據(jù)的讀寫粒度,存儲、讀取和解析數(shù)據(jù)。后者則以平均、輪流占用時(shí)間片的方式實(shí)現(xiàn)讀、寫操作所占用時(shí)間的均勻分配。

      4.1 存儲管理寄存器

      在讀寫控制邏輯模塊定義3個(gè)256 bit位寬的存儲管理寄存器,分別用于寫地址計(jì)數(shù)、讀地址計(jì)數(shù)和存儲數(shù)量計(jì)數(shù)。3個(gè)寄存器的協(xié)同工作運(yùn)轉(zhuǎn)過程如圖7所示。

      圖7 存儲管理寄存器協(xié)同工作運(yùn)轉(zhuǎn)過程示意圖

      寫地址寄存器存放寫入數(shù)據(jù)的地址。在寫入1個(gè)256 bit的數(shù)據(jù)后,寄存器值加1,當(dāng)達(dá)到1 Gbit容量的DDR存儲器上限值時(shí),寄存器值回到0。

      讀地址寄存器存放讀取數(shù)據(jù)的地址。讀地址寄存器在讀出1個(gè)256 bit的數(shù)據(jù)后加1,當(dāng)達(dá)到1 Gbit容量的DDR存儲器上限值時(shí),寄存器值回到0。

      存儲數(shù)量寄存器存放DDR存儲器中當(dāng)前存儲的數(shù)據(jù)個(gè)數(shù)。在寫入1個(gè)256 bit數(shù)據(jù)后加1,在讀出1個(gè)256 bit數(shù)據(jù)后減1。當(dāng)存儲數(shù)量寄存器等于DDR存儲器的容量大小時(shí),表示存儲器已滿;當(dāng)存儲數(shù)量寄存器等于0時(shí),表示DDR存儲器為空。

      4.2 64 bit和256 bit的轉(zhuǎn)換

      為了將寫轉(zhuǎn)義和讀反向轉(zhuǎn)義時(shí),數(shù)據(jù)按64 bit粒度進(jìn)行變換和解析,為達(dá)到存儲器提供的256 bit讀寫接口的數(shù)據(jù)總線要求,在寫轉(zhuǎn)義后,對輸出數(shù)據(jù)進(jìn)行64 bit—256 bit的轉(zhuǎn)換。而在讀反向轉(zhuǎn)義前,首先通過256 bit—64 bit FIFO將輸入256 bit寬度的數(shù)據(jù)轉(zhuǎn)換為64 bit位寬,為下一步反向轉(zhuǎn)義做好數(shù)據(jù)準(zhǔn)備。

      4.3 讀寫均衡控制

      為實(shí)現(xiàn)對DDR總線的分時(shí)復(fù)用[4-5],在讀寫控制模塊中定義一個(gè)讀寫計(jì)數(shù)器,完成讀寫均衡控制中的計(jì)數(shù)功能。在連續(xù)寫入固定量數(shù)據(jù)后,切換到讀狀態(tài);在連續(xù)讀出固定量數(shù)據(jù)后,又切換回寫入狀態(tài),如此反復(fù),可使讀寫吞吐量基本一致且足夠大。

      經(jīng)仿真測試和計(jì)算單位時(shí)間內(nèi)讀寫的數(shù)據(jù)個(gè)數(shù),如果每次讀寫數(shù)據(jù)為4 kbyte,讀、寫操作的總速率可達(dá)到18 Gbit/s,每個(gè)單向具有9 Gbit/s的速率。寫入數(shù)據(jù)時(shí),如果連續(xù)寫入數(shù)量未達(dá)到4 kbyte,卻出現(xiàn)沒有數(shù)據(jù)輸入或DDR存儲器已滿時(shí),將主動(dòng)切換到讀數(shù)據(jù)狀態(tài)。在讀數(shù)據(jù)時(shí),在連續(xù)讀出數(shù)量未達(dá)到4 kbyte,卻出現(xiàn)DDR存儲器已空時(shí),將切換到寫數(shù)據(jù)狀態(tài)。

      5 仿真測試

      為了驗(yàn)證方案中轉(zhuǎn)義處理的可靠性和有效性,圖8給出了寫轉(zhuǎn)義和讀反向轉(zhuǎn)義的FPGA仿真圖。圖8a中B_TM是寫轉(zhuǎn)義前的數(shù)據(jù),A_TM是寫轉(zhuǎn)義后的數(shù)據(jù),設(shè)置SOF標(biāo)識為64 bit特定數(shù)據(jù)0x7e1234567e123456,EOF標(biāo)識為64 bit特定數(shù)據(jù)0x7e12345d7e12345d,轉(zhuǎn)義標(biāo)識符為64 bit特定數(shù)據(jù)0x7e12345f7e12345f。從圖中,可以看出寫轉(zhuǎn)義前的數(shù)據(jù)為0x7e1234567e123456,0x7e12345f7e12345f,0x300000004,……,其中,SOF標(biāo)識后的第1個(gè)64 bit有效數(shù)據(jù)與轉(zhuǎn)義標(biāo)識符相同,于是對其進(jìn)行轉(zhuǎn)義變換為0x7e12345f7e12345f,0xfe12345f7e12345f,如圖 8b 所示,B_ITM是從DDR存儲器讀出數(shù)據(jù)后,讀反向轉(zhuǎn)義前的數(shù)據(jù)。圖8c中的A_ITM是讀反轉(zhuǎn)義后的數(shù)據(jù),與原始數(shù)據(jù)一致。采用轉(zhuǎn)義的方法后,讀數(shù)據(jù)時(shí)的時(shí)延問題(發(fā)送讀命令后,期望的數(shù)據(jù)要在幾十個(gè)時(shí)鐘周期后出現(xiàn)在讀數(shù)據(jù)總線上)可以得到有效解決。

      圖8 DDR控制器寫轉(zhuǎn)義與讀反向轉(zhuǎn)義仿真圖(截圖)

      6 結(jié)束語

      本文提出一種基于FPGA實(shí)現(xiàn)的DDR控制器設(shè)計(jì)方案,采用了多凈荷包組裝,轉(zhuǎn)義與反向轉(zhuǎn)義方法以及讀寫控制的流量均衡算法設(shè)計(jì),改進(jìn)了數(shù)據(jù)封裝與解析方式以及讀寫控制方法。該DDR控制器統(tǒng)籌兼顧了數(shù)據(jù)讀寫的可靠性和有效性,有效提高了DDR存儲器的管理效率和內(nèi)存利用率。經(jīng)實(shí)際應(yīng)用測試,該DDR控制器在千兆線速數(shù)據(jù)采集卡中已得到有效運(yùn)用,保證了高速大容量的數(shù)據(jù)緩沖功能,具有廣泛適用性和較高的應(yīng)用價(jià)值。

      [1]DOUBLE DATA RATE(DDR)SDRAM Specification[EB/OL].[2012-06-10].http://download.csdn.net/detail/macrojiali/3069228.

      [2]使用Virtex-5 FPGA器件實(shí)現(xiàn)DDR SDRAM控制器[EB/OL].[2012-06-10].http://www.docin.com/p -9751883.html.

      [3]門亮,王立欣.基于FPGA的DDR SDRAM控制器在高速數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].電子產(chǎn)品世界,2007(C00):99-103.

      [4]姚瑋,趙海慶,陳金樹.基于Stratix器件的高速DDR緩存系統(tǒng)優(yōu)化設(shè)計(jì)[J].電視技術(shù),2005,29(S1):69-72.

      [5]ZHOU Zude,CHENG Songlin,LIU Quan.Application of DDR Controller for High-speed Data Acquisition Board[C]//Proc.Innovative Computing Information and Control,ICICIC '06.Beijing,China:[s.n.],2006:611-614.

      猜你喜歡
      標(biāo)識符荷包存儲器
      淺析5G V2X 通信應(yīng)用現(xiàn)狀及其側(cè)鏈路標(biāo)識符更新技術(shù)
      剪下個(gè)荷包樣
      基于底層虛擬機(jī)的標(biāo)識符混淆方法
      繡荷包
      靜態(tài)隨機(jī)存儲器在軌自檢算法
      基于區(qū)塊鏈的持久標(biāo)識符系統(tǒng)①
      戴荷包
      繡荷包(女聲無伴奏合唱)
      數(shù)字美術(shù)館“數(shù)字對象唯一標(biāo)識符系統(tǒng)”建設(shè)需求淺議
      存儲器——安格爾(墨西哥)▲
      平乐县| 巴东县| 安西县| 泸州市| 富平县| 科技| 汽车| 蒙阴县| 平邑县| 离岛区| 大宁县| 景宁| 高碑店市| 镇江市| 丰宁| 丰顺县| 屏南县| 宁武县| 梅州市| 明水县| 眉山市| 上虞市| 同心县| 都匀市| 嫩江县| 兰溪市| 仲巴县| 喜德县| 太康县| 普洱| 铜鼓县| 青神县| 科尔| 阿拉善盟| 长白| 周至县| 明溪县| 博客| 衡南县| 临颍县| 台南市|