摘 要:合成孔徑雷達(dá)(SAR)產(chǎn)生的數(shù)據(jù)量大,需要存儲(chǔ)在雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DDR)中,由于DDR存儲(chǔ)器在跨頁(yè)訪問(wèn)時(shí)效率低,同時(shí)SAR數(shù)據(jù)處理需要行方向和列方向計(jì)算,導(dǎo)致跨行讀取DDR存儲(chǔ)器時(shí)訪問(wèn)效率不高。文章分析了DDR的訪問(wèn)特性和SAR數(shù)據(jù)處理過(guò)程中的數(shù)據(jù)讀寫需求,設(shè)計(jì)了一種DMA控制器,基于專用命令隊(duì)列和指令集提出了一種新的方法。仿真測(cè)試結(jié)果表明,該方法有效提高了SAR數(shù)據(jù)在DDR中的訪問(wèn)效率。
關(guān)鍵詞:雷達(dá)系統(tǒng);SAR;DMA控制器;命令隊(duì)列;DDR;指令集
中圖分類號(hào):TP39;TN95 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2024)12-00-06
0 引 言
雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DDR)因容量大、讀寫速率快的優(yōu)點(diǎn)而被廣泛使用[1-2]。經(jīng)過(guò)DDR、DDR2、DDR3、DDR4的發(fā)展,最新DDR芯片能夠在順序存取數(shù)據(jù)的情況下以8倍于DDR芯片核心頻率的速率進(jìn)行讀寫[3]。由于DDR芯片在激活和預(yù)充電時(shí)不能進(jìn)行數(shù)據(jù)訪問(wèn)[4],所以在跨頁(yè)存取數(shù)據(jù)時(shí)效率顯著下降,需要根據(jù)數(shù)據(jù)的存儲(chǔ)方式和訪問(wèn)方式設(shè)計(jì)相應(yīng)的DDR讀取電路。
合成孔徑雷達(dá)(Synthetic Aperture Radar, SAR)[5-6]是一種高分辨率微波遙感成像雷達(dá),具有全天時(shí)、全天候的工作能力,并且能夠穿透云層和植被[7]。隨著數(shù)字信號(hào)處理技術(shù)的發(fā)展,SAR的分辨率越來(lái)越高,因此被廣泛應(yīng)用于地球遙感、防災(zāi)減災(zāi)等領(lǐng)域[8-9]。由于SAR數(shù)據(jù)量大,無(wú)法存放在芯片內(nèi)部存儲(chǔ)器中,只能保存在片外DDR芯片中,在SAR數(shù)據(jù)處理過(guò)程中,需要高速訪問(wèn)DDR中的數(shù)據(jù)[10],同時(shí)還要保證數(shù)據(jù)行列讀寫都高效實(shí)現(xiàn)。由于DDR存儲(chǔ)器的帶寬有限且讀取延遲較高,使得SAR在訪問(wèn)DDR時(shí),會(huì)遇到帶寬限制、延遲等問(wèn)題。
DMA(直接存儲(chǔ)器訪問(wèn))獨(dú)立于CPU,可實(shí)現(xiàn)內(nèi)存與外圍設(shè)備之間的數(shù)據(jù)傳輸,顯著降低數(shù)據(jù)傳輸對(duì)CPU的占用率,SAR處理芯片通過(guò)內(nèi)置DMA控制器來(lái)訪問(wèn)DDR,實(shí)現(xiàn)SAR數(shù)據(jù)的讀寫[11-12]。由于SAR數(shù)據(jù)量大,對(duì)數(shù)據(jù)帶寬要求高,且SAR數(shù)據(jù)處理過(guò)程中,DDR的內(nèi)部結(jié)構(gòu)和SAR數(shù)據(jù)處理訪問(wèn)需求不匹配,導(dǎo)致訪問(wèn)效率低。為解決以上問(wèn)題,本文提出了一種新的DMA控制器架構(gòu),通過(guò)設(shè)計(jì)命令隊(duì)列模塊和專用的指令集,顯著提高了SAR數(shù)據(jù)行列訪問(wèn)的效率。
1 DDR存儲(chǔ)器和SAR數(shù)據(jù)
1.1 DDR存儲(chǔ)器訪問(wèn)特性分析
DDR作為一種存儲(chǔ)芯片,可以視為由Bank、Row(行),Column(列)構(gòu)成的矩形存儲(chǔ)陣列[13]。Bank由多個(gè)行和列組成,行和列的交叉點(diǎn)稱為Cell(存儲(chǔ)單元),一行所包含的存儲(chǔ)單元被稱為Page(頁(yè)),DDR訪問(wèn)地址由行地址、列地址、Bank地址組成[14]。圖1所示為DDR的內(nèi)部結(jié)構(gòu)。
本文以DDR3為例,分析其讀寫過(guò)程及時(shí)序。DDR3的存儲(chǔ)空間可劃分為8或16個(gè)Bank。一個(gè)存儲(chǔ)單元數(shù)據(jù)為8 bit或16 bit。DDR3內(nèi)部數(shù)據(jù)的讀寫操作是突發(fā)(Burst)的,即從一個(gè)選定的存儲(chǔ)單元開(kāi)始,依次連續(xù)讀寫多個(gè)存儲(chǔ)單元的內(nèi)容[13-14]。DDR3的突發(fā)長(zhǎng)度可設(shè)置為4或8。
DDR3讀寫過(guò)程:在訪問(wèn)某行數(shù)據(jù)前,執(zhí)行激活(Active)操作,打開(kāi)某Bank中的一行以便訪問(wèn)數(shù)據(jù),然后對(duì)該行讀/寫,完成數(shù)據(jù)傳輸,數(shù)據(jù)傳輸結(jié)束后進(jìn)行預(yù)充電(Precharge)操作以關(guān)閉當(dāng)前行[15]。在激活和預(yù)充電過(guò)程中不能對(duì)DDR3進(jìn)行數(shù)據(jù)訪問(wèn)。
影響DDR3讀寫時(shí)序的參數(shù)有很多,其主要的影響參數(shù)有:
(1)tRCD:行激活到讀寫命令的最小時(shí)間間隔;
(2)tRTP:讀命令到預(yù)充電命令的最小時(shí)間間隔;
(3)tRP:預(yù)充電命令到激活之間的最小時(shí)間間隔;
(4)tCWL:寫命令到寫數(shù)據(jù)的時(shí)間延遲;
(5)tWR:數(shù)據(jù)寫操作完畢到預(yù)充電關(guān)閉該行的最小時(shí)間間隔;
(6)tCK:芯片工作時(shí)鐘周期。
1.2 SAR處理數(shù)據(jù)訪問(wèn)方式分析
(1)行列讀寫
由于DDR存儲(chǔ)器在讀寫過(guò)程中執(zhí)行激活和預(yù)充電操作時(shí)不能進(jìn)行數(shù)據(jù)傳輸,當(dāng)數(shù)據(jù)按照行順序保存在DDR中,行讀取效率很高,但列讀取效率很低,本節(jié)分析了DDR行列讀寫時(shí)的訪問(wèn)效率。
若DDR3在一行中需連續(xù)讀寫n次Burst,突發(fā)長(zhǎng)度設(shè)為8,考慮到DDR的上下沿采樣特性,會(huì)在n×4tCK時(shí)間內(nèi)完成數(shù)據(jù)傳輸。
寫數(shù)據(jù)時(shí),從某行激活命令到下一行激活命令之間的時(shí)間間隔為:
(1)
讀數(shù)據(jù)時(shí),從某行激活命令到下一行激活命令之間的時(shí)間間隔為:
(2)
假設(shè)有1 K×1 K的數(shù)據(jù)塊保存在DDR中,訪問(wèn)的突發(fā)長(zhǎng)度設(shè)為8,在順序讀取數(shù)據(jù)時(shí)要進(jìn)行1 K/8=128次突發(fā)傳輸,即n=128;在進(jìn)行列訪問(wèn)時(shí),每行完成一次Burst傳輸就需要換頁(yè),即n=1。數(shù)據(jù)訪問(wèn)效率計(jì)算見(jiàn)式(3)、式(4):
(3)
(4)
根據(jù)數(shù)據(jù)訪問(wèn)效率公式可計(jì)算出順序讀取數(shù)據(jù)的訪問(wèn)效率為:ηWRITE=92%,ηREAD=95%。列訪問(wèn)數(shù)據(jù)的效率為:ηWRITE=9%,ηREAD=11%??梢?jiàn),DDR3在連續(xù)地址空間下的數(shù)據(jù)訪問(wèn)效率很高,但是在列訪問(wèn)數(shù)據(jù)時(shí)由于頻繁跨頁(yè)導(dǎo)致操作效率極低。
(2)數(shù)據(jù)塊的讀寫
由于斜視角、非理想飛行軌跡等因素,SAR圖像目標(biāo)的位置會(huì)發(fā)生偏移、旋轉(zhuǎn)、影像失真等[16],通常需要進(jìn)行幾何校正,以便后續(xù)目標(biāo)識(shí)別和定位,因此幾何矯正是SAR處理系統(tǒng)中必不可少的操作[17-18]。
CS成像算法[19]主要包括:距離走動(dòng)矯正、補(bǔ)余距離徙步校正(RCMC)中的Chirp Scaling操作、距離壓縮、SRC、一致RCMC、方位壓縮及相位校正、方位向校正以及圖像旋轉(zhuǎn)校正[20-21]。成像算法流程如圖2所示。
對(duì)CS算法的幾何校正分2步:第一步是校正成像目標(biāo)距離向和方位向位置;第二步是對(duì)圖像作旋轉(zhuǎn)處理[22-23]。在幾何矯正的過(guò)程中會(huì)對(duì)數(shù)據(jù)塊進(jìn)行讀寫操作。與順序讀取相比,讀取操作由于涉及在不同地址之間的頻繁切換,因此通常需要更多的尋址時(shí)間和數(shù)據(jù)傳輸時(shí)間,導(dǎo)致存儲(chǔ)器訪問(wèn)效率更低[24-25]。
由以上分析可知,SAR數(shù)據(jù)的行列讀寫特點(diǎn)和幾何矯正中數(shù)據(jù)塊的讀寫特點(diǎn),顯著影響了DDR訪問(wèn)效率,本文設(shè)計(jì)了專用的DMA控制器,通過(guò)設(shè)計(jì)新的命令隊(duì)列和指令集來(lái)提高訪問(wèn)效率。
2 專用DMA控制器的設(shè)計(jì)
2.1 實(shí)現(xiàn)方案
針對(duì)列讀和數(shù)據(jù)塊讀取導(dǎo)致DDR訪問(wèn)效率低的問(wèn)題,本文設(shè)計(jì)了命令執(zhí)行控制模塊和命令隊(duì)列模塊來(lái)提高效率。命令執(zhí)行控制模塊負(fù)責(zé)解析CPU預(yù)先配置好的指令,并根據(jù)解析后的指令控制數(shù)據(jù)傳輸;命令隊(duì)列模塊負(fù)責(zé)存儲(chǔ)控制數(shù)據(jù)傳輸?shù)闹噶睢?/p>
在命令執(zhí)行控制模塊中,狀態(tài)機(jī)控制數(shù)據(jù)傳輸?shù)牧鞒毯蜖顟B(tài)轉(zhuǎn)換。狀態(tài)機(jī)根據(jù)解析后的指令控制狀態(tài)跳轉(zhuǎn),通過(guò)循環(huán)指令和循環(huán)結(jié)束指令實(shí)現(xiàn)循環(huán)功能。
為命令隊(duì)列模塊設(shè)計(jì)了新的指令集,共包括7種指令,分別為:DMAEND、SETADDR、ADDADDR、LOOP、LOOPEND、D1D、NOP。其中,D1D指令是一維DMA指令,可以設(shè)置讀取的起始地址、Burst長(zhǎng)度和Burst數(shù)量,CPU通過(guò)配置這些參數(shù),使得控制器能夠在激活和預(yù)充電的過(guò)程中連續(xù)讀取多個(gè)存儲(chǔ)單元的數(shù)據(jù),減少激活和預(yù)充電的次數(shù),從而提高訪問(wèn)效率;ADDADDR指令是跳躍地址增加量,可以設(shè)置一個(gè)固定的地址增加量,當(dāng)讀取或?qū)懭胍粋€(gè)Burst后,地址會(huì)自動(dòng)增加,這樣DMA控制器就可以在數(shù)據(jù)塊中進(jìn)行有規(guī)律的多次讀寫操作,無(wú)需CPU重新計(jì)算并配置地址;LOOP和LOOPEND指令是循環(huán)開(kāi)始和循環(huán)結(jié)束指令,循環(huán)指令可以在指定的循環(huán)次數(shù)內(nèi)重復(fù)執(zhí)行一段指令序列,循環(huán)結(jié)束后控制DMA控制器跳轉(zhuǎn)到下一個(gè)指令,可以根據(jù)實(shí)際需求靈活控制循環(huán)的次數(shù)。
本文設(shè)計(jì)的新指令集支持靈活的多重嵌套地址跳變,利用DMA地址配置的靈活性,在數(shù)據(jù)寫入時(shí)讓數(shù)據(jù)間隔寫入,讀取時(shí)間隔讀出,實(shí)現(xiàn)行列讀寫的效率均衡。
2.2 控制器的結(jié)構(gòu)和主要功能
DMA控制器架構(gòu)如圖3所示。該部分包括總線協(xié)議模塊、數(shù)據(jù)緩沖模塊、命令執(zhí)行控制模塊、命令隊(duì)列模塊。
命令隊(duì)列模塊主要用來(lái)存儲(chǔ)指令集,這些指令將用于控制數(shù)據(jù)傳輸。
命令執(zhí)行控制模塊是DMA控制器的核心部分,其功能包括從命令隊(duì)列模塊中讀取指令、解析指令內(nèi)容,并負(fù)責(zé)控制狀態(tài)機(jī)以實(shí)現(xiàn)相關(guān)狀態(tài)的轉(zhuǎn)換。
數(shù)據(jù)緩沖模塊的主要作用是臨時(shí)存儲(chǔ)來(lái)自源設(shè)備的數(shù)據(jù),并在下一階段將這些數(shù)據(jù)傳輸至目的設(shè)備。由于FIFO(先進(jìn)先出)的特性能夠通過(guò)指針來(lái)實(shí)現(xiàn)有序的數(shù)據(jù)寫入和讀取操作,因此選擇FIFO作為數(shù)據(jù)緩沖器[26]。
總線協(xié)議模塊的功能是將命令執(zhí)行模塊解析出的指令轉(zhuǎn)化為符合總線標(biāo)準(zhǔn)協(xié)議的格式,以便進(jìn)行有效的數(shù)據(jù)傳輸。
DMA控制器工作流程:CPU在數(shù)據(jù)傳輸前配置好傳輸信息并寫入命令隊(duì)列模塊的相關(guān)寄存器中。當(dāng)DMA控制器接收到傳輸請(qǐng)求后,CPU啟動(dòng)控制器開(kāi)始工作,命令執(zhí)行控制模塊從命令隊(duì)列模塊中讀取指令,并對(duì)這些指令進(jìn)行解析,根據(jù)解析的指令,DMA控制器開(kāi)始執(zhí)行數(shù)據(jù)傳輸操作。圖4為DMA控制器工作流程。
由于總線協(xié)議模塊和數(shù)據(jù)緩沖模塊是DMA控制器中的標(biāo)準(zhǔn)模塊,所以在此不做詳細(xì)描述。本文主要針對(duì)DDR訪問(wèn)的特性,設(shè)計(jì)了專用的命令執(zhí)行控制模塊和命令隊(duì)列模塊以提高訪問(wèn)效率。
2.3 命令執(zhí)行控制模塊的設(shè)計(jì)
命令執(zhí)行控制模塊是DMA控制器的核心控制模塊,其模塊結(jié)構(gòu)如圖5所示。
從結(jié)構(gòu)框圖中可以看出,此模塊主要包含3部分,分別為讀取指令、解析指令、狀態(tài)機(jī)。其工作流程如下:當(dāng)命令執(zhí)行模塊接收到傳輸請(qǐng)求信號(hào)后,DMA控制器開(kāi)始工作,讀取命令隊(duì)列中的存儲(chǔ)指令并解析,根據(jù)解析的指令控制狀態(tài)機(jī)的跳轉(zhuǎn)。狀態(tài)機(jī)是該模塊的核心部分,其根據(jù)當(dāng)前狀態(tài)控制系統(tǒng)跳轉(zhuǎn)。狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換如圖6所示。
狀態(tài)機(jī)的各個(gè)狀態(tài)以及跳轉(zhuǎn)情況說(shuō)明如下:
IDLE:空閑狀態(tài),此時(shí)為初始狀態(tài),不進(jìn)行任何操作。當(dāng)DMA控制器接收到DMA_STEAT脈沖信號(hào)后,CPU啟動(dòng)DMA控制器開(kāi)始工作,此時(shí)狀態(tài)機(jī)跳轉(zhuǎn)到L0狀態(tài)。
L0:?jiǎn)?dòng)狀態(tài)機(jī)后進(jìn)入該狀態(tài),接收到指令LOOP時(shí),狀態(tài)機(jī)跳轉(zhuǎn)到L1狀態(tài),開(kāi)始第一層循環(huán)操作;當(dāng)接收到指令DMAEND后,狀態(tài)機(jī)跳轉(zhuǎn)到IDLE,置狀態(tài)機(jī)于空閑狀態(tài);若此時(shí)狀態(tài)機(jī)未接收到任何指令,則仍處于L0狀態(tài),不做任何跳轉(zhuǎn)。
L1/2/3:L1/2/3依次為軟件的第一層循環(huán)、第二層循環(huán)、第三層循環(huán),在循環(huán)時(shí)狀態(tài)機(jī)根據(jù)配置好的傳輸信息控制系統(tǒng)進(jìn)行循環(huán)數(shù)據(jù)存取操作;當(dāng)狀態(tài)機(jī)接收到解析后的指令為L(zhǎng)OOP時(shí),此時(shí)狀態(tài)機(jī)跳轉(zhuǎn)到L2/3/4;如果狀態(tài)機(jī)接收到解析后的指令是DMAEND,則狀態(tài)機(jī)跳轉(zhuǎn)到IDLE狀態(tài);如果接收到LOOP指令且第一、二、三層循環(huán)次數(shù)歸零后,此時(shí)狀態(tài)機(jī)跳回到L1/2/3狀態(tài),否則一直保持在該狀態(tài)。
L4:該狀態(tài)表示軟件的最外層循環(huán),本文設(shè)計(jì)循環(huán)次數(shù)最大為4層循環(huán),若是編輯循環(huán)次數(shù)多于4層,則狀態(tài)機(jī)跳轉(zhuǎn)到L4_ERR狀態(tài)。
L4_ERR:該狀態(tài)表示狀態(tài)機(jī)出錯(cuò)。由于本文設(shè)計(jì)的最大循環(huán)層數(shù)為4層,所以當(dāng)編輯超過(guò)4層,且在運(yùn)行過(guò)程中超過(guò)4層,則狀態(tài)機(jī)跳轉(zhuǎn)到該狀態(tài),并且在下一個(gè)時(shí)鐘周期跳轉(zhuǎn)到IDLE狀態(tài)。
2.4 命令隊(duì)列模塊及專用指令集設(shè)計(jì)
DMA控制器中的命令隊(duì)列模塊用于存儲(chǔ)和管理DMA操作的指令,允許DMA控制器按照預(yù)定的順序執(zhí)行數(shù)據(jù)傳輸任務(wù),減輕CPU的負(fù)擔(dān),提高系統(tǒng)效率。
命令隊(duì)列由一組存儲(chǔ)位置組成,每個(gè)位置都可以存儲(chǔ)一條DMA指令。命令隊(duì)列的指令格式字段包括操作碼、源地址、目的地址、數(shù)據(jù)長(zhǎng)度和其他控制信息。
命令隊(duì)列模塊通過(guò)指令的格式來(lái)解析每個(gè)DMA操作,并根據(jù)這些信息配置DMA控制器的其他部分,以執(zhí)行數(shù)據(jù)傳輸操作。命令執(zhí)行控制模塊依次從指令隊(duì)列中取出指令,并按照指令中指定的源地址、目標(biāo)地址、數(shù)據(jù)長(zhǎng)度等傳輸信息執(zhí)行相應(yīng)的數(shù)據(jù)傳輸操作。當(dāng)一個(gè)指令執(zhí)行完成,DMA控制器會(huì)繼續(xù)執(zhí)行下一個(gè)指令,直到隊(duì)列中的所有指令都被處理完畢。
指令集是用于控制DMA傳輸操作的一組指令,能夠靈活控制數(shù)據(jù)傳輸過(guò)程,包括傳輸方向、大小、速度等,同時(shí)還支持中斷機(jī)制,確保及時(shí)通知CPU傳輸狀態(tài)[27]。通過(guò)指定DMA通道和內(nèi)存地址,還可以管理多個(gè)數(shù)據(jù)傳輸任務(wù),并確保數(shù)據(jù)被正確存取到指定地址。指令集還支持?jǐn)?shù)據(jù)校驗(yàn),確保數(shù)據(jù)的完整性和正確性。因此DMA控制器在處理大數(shù)據(jù)的情況下,指令集發(fā)揮著重要的作用。
由于傳統(tǒng)的指令集不能支持多重靈活地址跳變,使得DMA在讀取數(shù)據(jù)時(shí)效率不高[28],所以本文通過(guò)設(shè)計(jì)新的指令集,采用7種指令,以支持靈活的多重嵌套地址跳變,解決DDR跨頁(yè)訪問(wèn)效率低的問(wèn)題。
(1)DMAEND、LOOPEND、NOP
DMAEND指令表示DMA命令結(jié)束,LOOPEND指令表示循環(huán)結(jié)束,NOP表示DMA控制器無(wú)操作。圖7為指令格式,[63:56]表示指令標(biāo)號(hào),為0時(shí)代表DMAEND指令,為4時(shí)表示LOOPEND指令,為6時(shí)表示NOP指令;其余位不配置。
(2)SETADD
SETADD指令表示設(shè)置起始地址。圖8為SETADD指令格式,[63:56]表示指令標(biāo)號(hào),為1時(shí)代表SETADD指令;[56:54]為01時(shí)表示SRC,設(shè)置源起始地址;為10時(shí)表示DST,設(shè)置目的起始地址;[54:35]不配置,[34:0]表示起始地址。
(3)ADDADDR
ADDADDR指令表示設(shè)置跳躍地址增加量。圖9為ADDADDR指令格式,[63:56]表示指令標(biāo)號(hào),為2時(shí)表示ADDADDR指令;[56:54]為01時(shí)表示SRC,為10時(shí)表示DST;[54:35]不配置;[34:0]表示跳躍地址增加量。
(4)LOOP
LOOP指令表示循環(huán)。圖10為L(zhǎng)OOP指令格式,[63:56]表示指令標(biāo)號(hào),為3時(shí)代表LOOP指令;[55:20]不配置;[19:0]表示循環(huán)次數(shù)。
(5)D1D
D1D指令表示一維DMA。圖11為D1D指令格式,[63:56]表示指令標(biāo)號(hào),為5時(shí)表示D1D指令;[56:54]為01時(shí)表示SRC,為10時(shí)表示DST;[54:51]表示設(shè)置Burst長(zhǎng)度;[50:35]表示設(shè)置Burst數(shù)量;[34:0]表示設(shè)置跳躍地址增加量。
DMA的工作過(guò)程:
(1)CPU配置指令:CPU確定好數(shù)據(jù)傳輸?shù)脑吹刂贰⒛康牡刂?、?shù)據(jù)長(zhǎng)度等傳輸信息,并將相應(yīng)的指令寫入命令隊(duì)列模塊中。
(2)啟動(dòng)DMA控制器傳輸:配置好指令信息后,CPU發(fā)出DMA啟動(dòng)信號(hào)DMA_START來(lái)觸發(fā)DMA控制器開(kāi)始工作。
(3)解析指令:命令解析控制模塊接收到DMA啟動(dòng)信號(hào)后開(kāi)始解析指令,并根據(jù)指令配置狀態(tài)機(jī)。當(dāng)狀態(tài)機(jī)接收到執(zhí)行數(shù)據(jù)傳輸?shù)闹噶頓1D時(shí),命令解析控制模塊將相應(yīng)的配置傳遞給總線協(xié)議模塊。
(4)總線協(xié)議模塊:總線協(xié)議模塊負(fù)責(zé)將DMA指令轉(zhuǎn)化為實(shí)際的AXI指令,并進(jìn)行數(shù)據(jù)傳輸操作,此模塊通過(guò)AXI接口實(shí)現(xiàn)系統(tǒng)內(nèi)存與外部設(shè)備通信。在執(zhí)行完當(dāng)前指令后,此模塊會(huì)通過(guò)握手機(jī)制與命令解析控制模塊通信,確保在同一時(shí)間只有一條DMA指令被執(zhí)行。
(5)命令解析控制模塊狀態(tài)控制:命令解析控制模塊持續(xù)解析指令,并根據(jù)內(nèi)部狀態(tài)機(jī)和指令的PC指針控制跳轉(zhuǎn)。DMA控制器按照指令的順序執(zhí)行多個(gè)數(shù)據(jù)傳輸操作,直到解析到DMAEND指令。
(6)DMA傳輸完成:當(dāng)命令解析控制單元完成了DMA指令序列的執(zhí)行后,狀態(tài)機(jī)跳轉(zhuǎn)到IDLE狀態(tài),DMA傳輸過(guò)程結(jié)束。
3 仿真驗(yàn)證結(jié)果分析
本文通過(guò)系統(tǒng)級(jí)代碼仿真來(lái)驗(yàn)證DMA控制器的功能。仿真系統(tǒng)由DMA控制器、總線、DDR存儲(chǔ)器組成??偩€是連接各設(shè)備的通信通道,可以在不同設(shè)備間傳輸數(shù)據(jù)和控制信息。在本實(shí)驗(yàn)的仿真系統(tǒng)中,使用的是AXI總線和AXI-Stream總線。AXI總線協(xié)議支持高性能、高頻率系統(tǒng)設(shè)計(jì),適用于高帶寬、低延時(shí)設(shè)計(jì),而且支持突發(fā)傳輸。AXI-Stream用于高速的數(shù)據(jù)流傳輸。DMA控制器將數(shù)據(jù)從AXI總線搬運(yùn)到AXI-Stream。驗(yàn)證平臺(tái)所用的系統(tǒng)是Linux操作系統(tǒng),所用的仿真工具為VCS,通過(guò)verdi觀察仿真時(shí)序圖和打印log文件判斷功能的正確性。
設(shè)計(jì)采用12 nm工藝對(duì)DMA控制器進(jìn)行邏輯綜合,工作頻率為1 000 MHz,綜合面積為101 053 μm2。
通過(guò)系統(tǒng)仿真驗(yàn)證,得到圖12所示的DMA控制器讀數(shù)據(jù)的仿真波形,圖13所示為寫數(shù)據(jù)的仿真波形。
使用硬件平臺(tái)實(shí)測(cè)DDR的訪問(wèn)帶寬,平臺(tái)工作在400 MHz時(shí)鐘下,效率為實(shí)測(cè)數(shù)據(jù)訪問(wèn)帶寬與峰值數(shù)據(jù)訪問(wèn)帶寬的比值。表1統(tǒng)計(jì)了在特定尺寸下數(shù)據(jù)的帶寬和訪問(wèn)效率。
由表1的測(cè)試結(jié)果可知,DMA讀數(shù)據(jù)的傳輸效率達(dá)69.5%,寫數(shù)據(jù)的傳輸效率達(dá)67%,平均讀寫效率達(dá)68.25%,理論讀寫平均效率為80%,理論結(jié)果與實(shí)測(cè)結(jié)果基本吻合。因此,本文設(shè)計(jì)的DMA控制器在處理大規(guī)模雷達(dá)數(shù)據(jù)時(shí),可以滿足高效率的實(shí)時(shí)性要求。
表2為本文設(shè)計(jì)與其他文獻(xiàn)設(shè)計(jì)在DMA讀取帶寬方面的比較。從結(jié)果中可以看出,本文設(shè)計(jì)的DMA控制器讀帶寬為4.47 Gb/s,寫帶寬為4.28 Gb/s,均高于其余文獻(xiàn)設(shè)計(jì)的DMA。
4 結(jié) 語(yǔ)
本文介紹了用于訪問(wèn)DDR中合成孔徑雷達(dá)數(shù)據(jù)的DMA控制器的設(shè)計(jì)思路和實(shí)現(xiàn)過(guò)程,通過(guò)引入新的指令集,解決了DDR中SAR數(shù)據(jù)行列訪問(wèn)效率低的問(wèn)題。本文設(shè)計(jì)的DMA控制器具有一定的應(yīng)用價(jià)值和實(shí)際意義,可被廣泛應(yīng)用于高速數(shù)據(jù)傳輸系統(tǒng)中。
參考文獻(xiàn)
[1] FADNAVIS J, KARIYAPPA B S. PNR flow methodology for congestion optimization using different macro placement strategies of DDR memories [J]. International journal of advanced technology and engineering exploration (IJATEE), 2021, 8(80).
[2]沈鵬程.基于SystemC的多通道DDR控制器建模設(shè)計(jì)[D].南京:南京大學(xué),2018.
[3]吳連慧,周建江,夏偉杰.基于FPGA的DDR3多端口讀寫存儲(chǔ)管理設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015,15(1):71-74.
[4]孫少偉,沈國(guó)榮,曹峰. DDR2 SDRAM控制器在機(jī)載顯控系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2012,28(7):53-55.
[5] IIKYU K, SUNGYU L, JEONGHAE L. Tripleband uniform circular array antenna for a multi-functional radar system [J]. Electronics, 2021, 10(12): 1488.
[6]王世錦,王湛.機(jī)載雷達(dá)與通信導(dǎo)航設(shè)備[M].北京:科學(xué)出版社,2010.
[7] JOHN S R, ERASMUS D L. A study of system development in a research and development environment with a focus on radar systems [J]. INCOSE international symposium, 2020, 30(1): 1093-1105.
[8]黃禹銘.一種基于FPGA+DDR3的雷達(dá)數(shù)據(jù)高速重排方法[J].火控雷達(dá)技術(shù),2022,51(2):70-74.
[9]郭志強(qiáng).基于AMBA總線協(xié)議的可編程DMA控制器的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:湖南大學(xué),2020.
[10] ALJUMAH A , AHMED A M . AMBA based advanced DMA controller for SoC [J]. International journal of advanced computer science and applications, 2016, 7(3): 188-193.
[11]王秋實(shí),張杰,孟少鵬.基于Innovus工具的28 nm DDR PHY物理設(shè)計(jì)方法[J].雷達(dá)科學(xué)與技術(shù),2020,18(4):457-460.
[12]張曉光,尤文斌,王昊.基于FPGA的DDR多數(shù)據(jù)通道的實(shí)現(xiàn)[J].中國(guó)電子科學(xué)研究院學(xué)報(bào),2021,16(1):21-26.
[13] JENNIFER N D, SHALKHAUSER M J, THOMAS P B. Parallelized convolutional interleaver implementation for efficient DDR memory access [P]. NASA Glenn Research Ctr. (United States), 2022.
[14]王棋,張穎.一種自適應(yīng)DRAM刷新控制方法和DRAM刷新控制器[J].中國(guó)集成電路,2023,32(9):20-22.
[15]劉小寧,謝宜壯,趙博雅,等.一種二維訪問(wèn)效率均衡的SAR數(shù)據(jù)矩陣轉(zhuǎn)置方法[J].電子學(xué)報(bào),2016,44(1):33-38.
[16] LARA N V, CHAMORRO H S. Uso de los sensores remotos en mediciones forestales [J]. European scientific journal, 2018, 14(15).
[17]王恒心. 基于FPGA的嵌入式導(dǎo)航雷達(dá)顯示系統(tǒng)[D].武漢:武漢科技大學(xué),2008.
[18] TIAN H S, JU F F, NIE H S, et al. Study on the file management method of data storage system for airborne radar [J]. Royal society open science, 2021, 8(6): 1-9.
[19]李早社,禹衛(wèi)東,汪亮,等.基于SDRAM的星載SAR星上實(shí)時(shí)成像轉(zhuǎn)置存儲(chǔ)器[J].信號(hào)處理,2007(3):433-436.
[20] HAO Z J, WANG R D, DANG X C, et al. mmSight: A robust millimeter-wave near-field SAR imaging algorithm [J]. Applied sciences, 2022, 12(23).
[21]張小虎.雙站前視SAR成像算法研究[D].南京:南京理工大學(xué),2021.
[22] EUNKWAN L, SEUNGHWAN H, YOONJO C, et al. Error budget analysis of geocoding and geometric correction for KOMPSAT-5 SAR imagery [J]. GIScience remote sensing, 2022, 59(1): 1938-1955.
[23]劉業(yè)民,劉曉嫻,袁露,等.前斜視SAR成像中幾何校正問(wèn)題研究[J].航天電子對(duì)抗,2023,39(2):13-18.
[24] YING M. Evaluation of water resources environment and regional agricultural economic development based on SAR imaging algorithm [J]. Mobile information systems, 2022.
[25] BAO Q, HAN K, PENG X, et al. DLSLA 3-D SAR imaging algorithm for off-grid targets based on pseudo-polar formatting and atomic norm minimization [J]. Science China information sciences, 2016, 59(6): 1-15.
[26]凌杰,劉天奕,馮藝波.基于多層AHB總線架構(gòu)的DMA控制器設(shè)計(jì)[J].集成電路應(yīng)用,2021,38(8):12-13.
[27]高玉鑫. 基于AHB總線的DMA控制器的設(shè)計(jì)與實(shí)現(xiàn)[D].沈陽(yáng):遼寧大學(xué),2021.
[28] HE H A M G. Design and implementation of an advanced DMA controller on AMBA-based SoC [C]// Proceedings of 2009 IEEE 8th International Conference on ASIC (ASICON 2009). Changsha, Hunan: IEEE, 2009: 486-489.
[29]侯杭呈,王憶文,李輝.一種基于PCI Express總線的DMA高速傳輸系統(tǒng)[J].微電子學(xué),2013,43(3):383-386.
[30]李勝藍(lán),姜宏旭,符煒劍,等.基于PCIe的多路傳輸系統(tǒng)的DMA控制器設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2017,37(3):691-694.
作者簡(jiǎn)介:周家萍(2000—),女,在讀碩士研究生,研究方向?yàn)檫b感數(shù)據(jù)處理、實(shí)時(shí)信號(hào)處理。
楊 柱(1976—),男,博士,正高工,研究方向?yàn)檫b感數(shù)據(jù)處理、集成電路設(shè)計(jì)、計(jì)算機(jī)系統(tǒng)。
徐 明(1992—),男,在讀博士研究生,研究方向?yàn)樵谲壭盘?hào)處理、遙感信號(hào)實(shí)時(shí)處理、輕量化網(wǎng)絡(luò)設(shè)計(jì)。
張 傲(2000—),男,在讀碩士研究生,研究方向?yàn)镾AR成像實(shí)時(shí)處理。
物聯(lián)網(wǎng)技術(shù)2024年12期