謝晨 卓敏
摘?要:5G通信的主要特征包括“高速率、大帶寬”,為了滿足高速率、大帶寬數(shù)據(jù)的傳輸要求,需要一種存儲(chǔ)技術(shù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)。本文就存儲(chǔ)技術(shù)結(jié)合DDR4協(xié)議,設(shè)計(jì)了一種DDR4傳輸機(jī)制,本研究采用高性能的XCVU9P系列的FPGA芯片作為控制芯片,使用其內(nèi)部自帶的DDR4 SDRAM(MIG)IP核進(jìn)行例化核設(shè)計(jì)。經(jīng)過驗(yàn)證,實(shí)現(xiàn)在250 MHz時(shí)鐘下對(duì)DDR4 SDRAM的讀/寫操作,數(shù)據(jù)無丟失,能夠保證高速率、大帶寬數(shù)據(jù)正常傳輸,該傳輸機(jī)制具有良好的可靠性、適用性及有效性。
關(guān)鍵詞:DDR4;高速率;大帶寬;FPGA
0 引言
隨著通信技術(shù)的不斷發(fā)展,5G技術(shù)作為當(dāng)前新一代通信的熱點(diǎn)技術(shù)將面臨很多研究課題,除了要傳輸?shù)退俾?、小帶寬?shù)據(jù)外,還需要分析高速率、大帶寬數(shù)據(jù),分析帶寬從100 MHz提高到1 GHz,甚至更高帶寬。當(dāng)前最大的難題就是5G高速率的傳輸將會(huì)導(dǎo)致信號(hào)的帶寬變大,因此對(duì)這些高速率的數(shù)據(jù)流進(jìn)行實(shí)時(shí)處理將變得更加困難[1]。
伴隨著數(shù)字化的高速發(fā)展,目前存儲(chǔ)是大容量數(shù)據(jù)存儲(chǔ)系統(tǒng)的核心部分,甚至?xí)绊懙较到y(tǒng)的性能。DDR最大的特點(diǎn)就是傳輸速率是時(shí)鐘的兩倍,數(shù)據(jù)同時(shí)在上升沿和下降沿同時(shí)采樣[2]。
本文提出一種基于DDR4 SDRAM的高速數(shù)據(jù)緩存技術(shù),主控器選用Xilinx公司XCVU9P系列FPGA芯片,數(shù)據(jù)緩存器選用MT40A512M16HA-083E,通過對(duì)DDR4 SDRAM的存儲(chǔ)尋址原理及DDR4 IP核的讀寫控制邏輯的研究,實(shí)現(xiàn)了在250 MHz的時(shí)鐘下,DDR4 SDRAM能夠正常進(jìn)行讀寫操作。經(jīng)過測試驗(yàn)證,讀寫數(shù)據(jù)正常,無數(shù)據(jù)丟失。
1 整體設(shè)計(jì)方案
整體設(shè)計(jì)方案使用模塊化,主要包括光口傳輸模塊、DDR4存儲(chǔ)模塊、SRIO接口模塊。本設(shè)計(jì)主要對(duì)控制芯片F(xiàn)PGA內(nèi)部邏輯進(jìn)行了優(yōu)化設(shè)計(jì),其中包括DDR4控制器、不同時(shí)鐘域之間的數(shù)據(jù)緩存FIFO。整體方案傳輸流程如圖1所示。
● 光口模塊:主要是接收采集模塊傳輸過來的數(shù)據(jù)。
● DDR4存儲(chǔ)模塊:用于緩存數(shù)據(jù),由于SRIO接口的數(shù)據(jù)傳輸速率慢,需要通過DDR4存儲(chǔ)模塊先將高速數(shù)據(jù)存儲(chǔ)到DDR4中,然后再通過SRIO的時(shí)鐘將數(shù)據(jù)傳輸給SRIO接口模塊。
● SRIO接口模塊:接收DDR4讀出來的數(shù)據(jù),然后傳輸給上位機(jī)進(jìn)行測試分析。
2 DDR4 SDRAM內(nèi)部結(jié)構(gòu)
DDR4 SDRAM是一種內(nèi)部可配置高速動(dòng)態(tài)隨機(jī)存儲(chǔ)器,其內(nèi)部由多個(gè)Bank組成,Bank又是由很多行和列構(gòu)成[3],DDR4的尋址操作就是對(duì)行列地址進(jìn)行操作。
DDR4存儲(chǔ)器有幾個(gè)重要概念,即Bank、Bank Group及Page,例如512Mx16的8 Gb容量的DDR4,內(nèi)部主要包括2個(gè)Bank Group,每個(gè)Bank Group包括4個(gè)Bank[3]。每個(gè)Bank是由多個(gè)Page組成的,通過多Page地址去選擇相應(yīng)的Page。
3 DDR4控制器模塊設(shè)計(jì)
DDR4控制器模塊設(shè)計(jì)如圖2所示,將控制器分為IDLE、WR-DELAY、DDR-WR_s、RD_DELAY和DDR_RD_s五個(gè)模塊。
● IDLE:初始化狀態(tài)。主要對(duì)DDR4內(nèi)部的信號(hào)進(jìn)行初始化。當(dāng)收到rd_en_reg和rd_dat_s_reg信號(hào)同時(shí)有效時(shí),將進(jìn)入RD_DELAY狀態(tài);當(dāng)收到wr_en_ reg信號(hào)有效時(shí),進(jìn)入WR_DELAY狀態(tài);如果在該狀態(tài)下沒有收到相應(yīng)的有效信號(hào)將繼續(xù)保持該狀態(tài)。
● WR-DELAY:寫等待狀態(tài)。當(dāng)在此狀態(tài)下收到rd_en_reg有效時(shí)將會(huì)跳到IDLE狀態(tài);在沒有收到rd_ en_reg有效時(shí),根據(jù)條件app_bl_cnt >= WR_BURST_ CNT來判斷是否已經(jīng)寫到規(guī)定的數(shù)據(jù)量,如果已經(jīng)寫到規(guī)定的數(shù)據(jù)量,將繼續(xù)保持在該狀態(tài),等待其他有效信號(hào)的到來,如果沒有寫到規(guī)定的數(shù)據(jù)量,判斷寫FIFO的wr_prog_empty信號(hào),如果wr_prog_empt無效則跳轉(zhuǎn)到DDR_ WR_S狀態(tài),反之wr_ prog_empt有效,則繼續(xù)在該狀態(tài)下等待有效信號(hào)到來。
● DDR_ WR_s:寫狀態(tài)。此狀態(tài)主要是往DDR4里寫數(shù)據(jù),由于DDR4 IP核內(nèi)的Burst Length設(shè)為了8[4],所以根據(jù)條件ddr_cnt == WR_BURST_NUM來判斷,當(dāng)ddr_cnt計(jì)數(shù)到了WR_ BURST_NUM的值時(shí),會(huì)跳轉(zhuǎn)到WR-DELAY狀態(tài),如果沒有計(jì)數(shù)到WR_BURST_NUM的值,則繼續(xù)保持在該狀態(tài)。
● RD_DELAY:讀等待狀態(tài)。當(dāng)在此狀態(tài)下收到wr_en_reg有效時(shí)將會(huì)跳轉(zhuǎn)到IDLE狀態(tài);在沒有收到wr_en_reg有效時(shí),根據(jù)讀FIFO的rd_prog_full信號(hào)來判斷,如果rd_prog_full有效時(shí)則繼續(xù)在該狀態(tài)下等待,若無效則根據(jù)條件app_bl_cnt >= RD_BURST_ CNT來判斷,如果計(jì)數(shù)達(dá)到了設(shè)定的讀數(shù)據(jù)量,則會(huì)跳轉(zhuǎn)到IDLE狀態(tài),若沒有到達(dá)設(shè)定的讀數(shù)據(jù)量,則跳轉(zhuǎn)到DDR_RD_s狀態(tài)。
● DDR_RD_s:讀狀態(tài)。此狀態(tài)主要是將DDR4里的數(shù)據(jù)往外讀,根據(jù)條件ddr_cnt >= RD_BURST_ CNT來判斷,當(dāng)計(jì)數(shù)達(dá)到設(shè)定的讀數(shù)據(jù)量時(shí)則會(huì)跳轉(zhuǎn)到IDLE狀態(tài),如果沒有達(dá)到設(shè)定的讀數(shù)據(jù)量,且讀FIFO的rd_prog_full信號(hào)有效,則會(huì)繼續(xù)在該狀態(tài)下讀取DDR4里的數(shù)據(jù)。
4 仿真驗(yàn)證
采用Vivado 2018.3軟件,其中FPGA芯片型號(hào)為XCVU9P-flga2104-1-i,進(jìn)行開發(fā)板上驗(yàn)證。在光口模塊產(chǎn)生一組遞增數(shù),通過光口將數(shù)據(jù)發(fā)送給DDR4存儲(chǔ)模塊。通過在ILA抓取相應(yīng)的信號(hào)來觀察DDR4。
圖3是通過ILA抓取的DDR4內(nèi)部信號(hào)狀態(tài)圖[5]。
通過圖3可以看出,一開始DDR4處于初始化狀態(tài),當(dāng)wr_en_reg變成高電平時(shí),state跳轉(zhuǎn)到WR_DELAY狀態(tài);當(dāng)wr_prog_empty變成低電平時(shí),state跳轉(zhuǎn)到DDR_WR_s狀態(tài)。之后,當(dāng)app_bl_cnt計(jì)數(shù)到96250時(shí),state跳轉(zhuǎn)到WR_DELAY;如果對(duì)寫數(shù)據(jù)部分放大,可以看出數(shù)據(jù)是遞增數(shù);當(dāng)rd_en_reg和rd_dat_s_reg同時(shí)有效時(shí),state從IDLE狀態(tài)跳轉(zhuǎn)到RD_DELAY狀態(tài),當(dāng)rd_prog_full為低電平時(shí),且app_bl_cnt未計(jì)數(shù)到RD_BURST_CNT,這個(gè)state從RD_DELAY狀態(tài)跳轉(zhuǎn)到DDR_RD_s狀態(tài);當(dāng)ddr_cnt計(jì)數(shù)到768000時(shí),state從DDR_RD_s狀態(tài)跳轉(zhuǎn)到IDLE狀態(tài);圖4是對(duì)讀數(shù)據(jù)部分放大,可以看出數(shù)據(jù)是正整數(shù)。
5 結(jié)束語
本研究在Xilinx公司的XCVU9P系列FPGA芯片上完成了DDR4存儲(chǔ)模塊的讀寫狀態(tài)機(jī)的設(shè)計(jì)、代碼編寫以及驗(yàn)證。使用其內(nèi)部自帶的DDR4 SDRAM(MIG)IP核進(jìn)行例化核設(shè)計(jì)。經(jīng)過開發(fā)板上驗(yàn)證,實(shí)現(xiàn)在250 MHz時(shí)鐘下對(duì)DDR4 SDRAM的讀/寫操作,數(shù)據(jù)無丟失,能夠保證高速率、大帶寬數(shù)據(jù)正常傳輸,該傳輸機(jī)制具有良好的可靠性、適用性及有效性。
參考文獻(xiàn):
[1] 袁行猛,陳亮,徐蘭天.基于CPRI協(xié)議的5G基帶數(shù)據(jù)傳輸技術(shù)的研究與實(shí)現(xiàn)[J].電子產(chǎn)品世界,2019,26(04):41-45+61.
[2] 張亞軍.實(shí)時(shí)頻譜儀的數(shù)字中頻處理設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2017.
[3] 汪繼友.一種特殊應(yīng)用場景下的DDR4寫緩沖設(shè)計(jì)與驗(yàn)證[D].合肥:安徽大學(xué), 2019.
[4] 蘇健淵.基于ARM+FPGA的多屏圖像顯示系統(tǒng)研究[D].西安:西安電子科技大學(xué), 2014.
[5] 武春鋒.基于DDR4 SDRAM的光電圖像實(shí)時(shí)存儲(chǔ)技術(shù)研究[D].北京:中國科學(xué)院大學(xué),2018.