国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

FPGA在數(shù)據(jù)重排中的跨時(shí)鐘處理

2021-10-20 12:29游斌相廖育富任午龍
火控雷達(dá)技術(shù) 2021年3期
關(guān)鍵詞:信號處理排序時(shí)鐘

游斌相 廖育富 任午龍 馬 婕

(四川九洲空管科技有限責(zé)任公司 四川綿陽 621000)

0 引言

數(shù)據(jù)重排算法是雷達(dá)信號處理[1]中最常用的算法之一,要實(shí)現(xiàn)數(shù)據(jù)重排,首先需要把數(shù)據(jù)緩存起來,然后根據(jù)重排順序依次讀出數(shù)據(jù),這一過程既要求高緩存也要求高速率。DDR3 SDRAM[2]作為一種高速、高帶寬緩存器在計(jì)算機(jī)行業(yè)有著廣泛應(yīng)用,正好符合數(shù)據(jù)重排高速高緩存的要求。FPGA是當(dāng)前雷達(dá)信號處理[3-4]最常用的處理器之一,能很好地滿足大帶寬、高采樣率及多通道信號處理等要求。在FPGA上實(shí)現(xiàn)數(shù)據(jù)重排算法過程中,會(huì)遇到跨多時(shí)鐘域問題,既有邏輯時(shí)鐘域,也有DDR時(shí)鐘域,還有傳輸接口時(shí)鐘域,處理好跨時(shí)鐘域問題,也是實(shí)現(xiàn)數(shù)據(jù)重排的關(guān)鍵。

1 數(shù)據(jù)重排設(shè)計(jì)

1.1 快時(shí)間采樣與慢時(shí)間采樣

在脈沖體制雷達(dá)中[5],通常會(huì)連續(xù)發(fā)射多個(gè)脈沖信號構(gòu)成一個(gè)脈沖序列,脈沖之間的時(shí)間間隔為PRI(Pulse Repetition Interval),其導(dǎo)數(shù)就是脈沖重復(fù)頻率PRF(Pulse Repetition Frequency)。針對一個(gè)脈沖回波的采樣稱為快時(shí)間采樣??鞎r(shí)間采樣間隔為Ts,是采樣率的導(dǎo)數(shù),距離單元間隔為ΔR=cTs/2。針對多個(gè)脈沖回波等距離維的采樣稱為慢時(shí)間采樣,采集數(shù)據(jù)所需要的時(shí)間為M·PRI,通常稱為相參處理時(shí)間(CPI:Coherent Processing Interval)。例如以M個(gè)脈沖作為一個(gè)序列,每個(gè)脈沖有N個(gè)采樣點(diǎn),其快時(shí)間采樣和慢時(shí)間采樣如圖1所示。

圖1 快時(shí)間采樣與慢時(shí)間采樣

1.2 數(shù)據(jù)重排基本原理

數(shù)據(jù)重排[6]通常以一個(gè)CPI為周期進(jìn)行處理,假設(shè)一個(gè)CPI時(shí)間段內(nèi)有M個(gè)脈沖,每個(gè)脈沖有N個(gè)數(shù)據(jù)點(diǎn),則數(shù)據(jù)重排前后順序關(guān)系如圖2所示。數(shù)據(jù)重排前的順序如圖2(a)所示,脈沖內(nèi)的先后關(guān)系同慢時(shí)間采樣,脈沖間的排序規(guī)則與脈沖先后關(guān)系有關(guān),先接收到脈沖回波排序靠前,后接收到脈沖回波排序則靠后。數(shù)據(jù)重排后的順序如圖2(b)所示,其排序規(guī)則同慢時(shí)間采樣,距離單元小的排序靠前,距離單元大的則靠后。

圖2 數(shù)據(jù)重排前后關(guān)系

1.3 數(shù)據(jù)重排實(shí)現(xiàn)過程

要實(shí)現(xiàn)慢時(shí)間采樣或數(shù)據(jù)重排,必須先把所有數(shù)據(jù)提前緩存好,本設(shè)計(jì)中使用一片DDR3來做緩存,在FPGA中例化后的地址位寬為25bit,數(shù)據(jù)位寬為128bit,一個(gè)地址剛好存放和差差三個(gè)通道的IQ數(shù)據(jù)。為便于排序操作與地址控制,設(shè)計(jì)復(fù)合地址,將地址劃分為行地址和列地址,其中高8bit為列地址,低17bit為行地址。每一列存放一個(gè)脈沖數(shù)據(jù),最多可存放256個(gè)脈沖序列,每個(gè)脈沖最多131072個(gè)數(shù)據(jù)。

圖3給出了數(shù)據(jù)重排過程中DDR地址控制流程圖,輸入數(shù)據(jù)緩存時(shí),從第0行第0列開始寫入數(shù)據(jù),寫入一個(gè)數(shù)據(jù)行地址加一,當(dāng)寫完一個(gè)脈沖數(shù)據(jù)時(shí),列地址加一,行地址清零,接著按照該方法寫入第二個(gè)脈沖數(shù)據(jù),直到一組CPI數(shù)據(jù)寫完,然后開始讀出數(shù)據(jù)。讀取數(shù)據(jù)時(shí),則按照慢時(shí)間采樣規(guī)則依次從DDR3中讀出數(shù)據(jù),從第0行第0列開始讀出數(shù)據(jù),保持行不變,列加一依次讀取,當(dāng)完成一次慢時(shí)間采樣讀取時(shí),行加一,列清零,然后接著往后讀取數(shù)據(jù),直到所有數(shù)據(jù)讀完。

圖3 DDR地址控制流程圖

2 FPGA跨時(shí)鐘處理

跨時(shí)鐘域處理[7-8]是FPGA信號處理的重點(diǎn)和難點(diǎn),如果處理不當(dāng),就會(huì)出現(xiàn)亞穩(wěn)態(tài)[9],從而導(dǎo)致數(shù)據(jù)出錯(cuò),最終得到一個(gè)錯(cuò)誤的結(jié)果。本方案中涉及了三個(gè)不同時(shí)鐘域,分別是用戶邏輯時(shí)鐘user_clk,DDR時(shí)鐘ddr_clk以及PCIe時(shí)鐘pcie_clk。其中,用戶邏輯時(shí)鐘頻率高達(dá)240MHz,該時(shí)鐘域主要負(fù)責(zé)信號處理;DDR時(shí)鐘頻率有200MHz,略小于用戶邏輯時(shí)鐘,該時(shí)鐘域負(fù)責(zé)DDR模塊的讀寫操作;PCIe時(shí)鐘頻率最小,僅有125MHz,該時(shí)鐘域負(fù)責(zé)PCIe模塊的數(shù)據(jù)傳輸控制。

圖4給出了跨多時(shí)鐘域處理的邏輯框架圖,共包含三個(gè)模塊,分別是:PCIe控制模塊、信號處理模塊及DDR控制模塊。整體采用流水線方案設(shè)計(jì),極大提高了信號處理及傳輸效率。

圖4 跨多時(shí)鐘域處理邏輯框架圖

信號從信號處理模塊出發(fā),首先通過異步FIFO寫入到DDR3中。對該異步寫FIFO來說,寫入時(shí)鐘大于讀取時(shí)鐘,所以寫入數(shù)據(jù)的速度大于讀取數(shù)據(jù)的速度,為避免丟失數(shù)據(jù),需要一個(gè)狀態(tài)反壓信號。當(dāng)該FIFO即將寫滿時(shí),把wr_pfull信號拉高,并回傳給數(shù)據(jù)重排模塊,若數(shù)據(jù)重排模塊檢查到該信號為高,則停止往DDR模塊寫入數(shù)據(jù), 等到wr_pfull為低時(shí),再繼續(xù)寫入數(shù)據(jù)。當(dāng)所有數(shù)據(jù)都寫入DDR后,再根據(jù)數(shù)據(jù)重排規(guī)則,依次從DDR3中讀出數(shù)據(jù),讀出的數(shù)據(jù)通過異步FIFO做跨時(shí)鐘域處理后,再傳輸?shù)叫盘柼幚砟K做打包處理。

數(shù)據(jù)打包模塊會(huì)提前準(zhǔn)備好幀頭,當(dāng)接收到數(shù)據(jù)后,將幀頭與數(shù)據(jù)拼接到一起,然后發(fā)送給PCIe模塊。PCIe接收端首先是個(gè)異步FIFO,該FIFO的讀時(shí)鐘比寫時(shí)鐘慢,為避免丟失數(shù)據(jù),同樣需要一個(gè)反壓信號。當(dāng)數(shù)據(jù)打包模塊接收到PCIe模塊回傳的反壓信號時(shí),暫停發(fā)送數(shù)據(jù),同時(shí)將該信號轉(zhuǎn)發(fā)給數(shù)據(jù)重排模塊,讓其停止對DDR3的讀取控制,直到wr_pull信號拉低時(shí),再接著運(yùn)行。

PCIe模塊接收到打包數(shù)據(jù)后,首先進(jìn)行異步FIFO跨時(shí)鐘處理,然后經(jīng)過乒乓操作送到PCIe接口,最后發(fā)送給上位機(jī)。乒乓操作是FPGA開發(fā)中常用的一種數(shù)據(jù)緩沖及控制技術(shù),通過輸入、輸出選擇單元及兩個(gè)RAM的讀寫控制,達(dá)到數(shù)據(jù)的緩沖及控制目的。

3 仿真分析

3.1 數(shù)據(jù)重排仿真

根據(jù)前文所述,模擬了一個(gè)單通道數(shù)據(jù)重排、打包及PCIe發(fā)送過程。每組CPI有16個(gè)PRF,每個(gè)PRF有效數(shù)據(jù)長度均為300。數(shù)據(jù)重排仿真結(jié)果如圖5所示,圖5(a)為數(shù)據(jù)重排整體寫入與讀出的地址控制仿真結(jié)果,從圖中可以很明顯地看出,共輸入了16個(gè)脈沖信號,第1個(gè)脈沖寫入第0列,第2個(gè)脈沖寫入第1列,直到最后一個(gè)脈沖寫入第15列,完成數(shù)據(jù)寫入操作。圖5(b)給出了寫忙信號時(shí)的DDR地址控制,當(dāng)忙信號到來時(shí),暫停信號寫入,同時(shí)保持DDR寫入地址不變,直到忙信號結(jié)束時(shí),再接著寫入信號,DDR寫入也跟著地址同步變化。圖5(c)和圖5(d)給出了數(shù)據(jù)重排輸出地址控制的仿真結(jié)果圖,按行讀取,每一行讀取16個(gè)數(shù)據(jù),直到300行數(shù)據(jù)讀取完成。圖5(e)為讀取忙信號時(shí)的DDR地址控制,當(dāng)讀取忙信號到來時(shí),停止數(shù)據(jù)讀取,保持DDR讀取地址不變,直到忙信號結(jié)束后,再接著讀取相關(guān)信號。

圖5 數(shù)據(jù)重排寫入與讀出

3.2 數(shù)據(jù)打包仿真

數(shù)據(jù)打包模塊仿真如圖6所示,圖6(a)給出了數(shù)據(jù)打包模塊的輸入與輸出信號,輸入信號為數(shù)據(jù)重排后的信號,輸出數(shù)據(jù)為打包后的信號。圖6(b)為輸入PCIe忙信號時(shí)的仿真圖,當(dāng)輸入PCIe忙信號拉高時(shí),輸出數(shù)據(jù)保持不變,直到忙信號拉低后,繼續(xù)輸出。圖6(c)給出了打包忙信號拉高時(shí)的仿真時(shí)序圖,當(dāng)打包信號忙時(shí),信號會(huì)暫停輸入,直到忙信號結(jié)束才繼續(xù)輸入信號。

圖6 數(shù)據(jù)打包輸入及輸出

3.3 乒乓操作仿真

打包后的數(shù)據(jù)通過異步FIFO和乒乓操作后會(huì)傳輸?shù)絇CIe模塊,最后通過PCIe接口將數(shù)據(jù)發(fā)送到PC端。圖7給出了乒乓讀寫的仿真結(jié)果圖,兩個(gè)ram讀寫地址相同,當(dāng)flag_rd_ram為1時(shí),寫入數(shù)據(jù)到ram0,同時(shí)輸出ram1的結(jié)果;當(dāng)flag_rd_ram為0時(shí),寫入數(shù)據(jù)到ram1,同時(shí)輸出ram0的結(jié)果。

圖7 乒乓讀寫仿真結(jié)果

4 結(jié)束語

本文結(jié)合雷達(dá)系統(tǒng)的實(shí)際需求,基于FPGA開發(fā)平臺并利用DDR3實(shí)現(xiàn)數(shù)據(jù)重排算法邏輯架構(gòu)設(shè)計(jì),設(shè)計(jì)包含:PCIe控制模塊、信號處理模塊及DDR控制模塊。整體采用流水線方案設(shè)計(jì),結(jié)合信號反壓等跨多時(shí)鐘域處理方法,實(shí)現(xiàn)了數(shù)據(jù)重排算法的邏輯設(shè)計(jì),通過仿真分析和板級實(shí)測,滿足項(xiàng)目實(shí)際使用需求。同時(shí),該設(shè)計(jì)方案有望在類似的雷達(dá)系統(tǒng)中推廣使用。

猜你喜歡
信號處理排序時(shí)鐘
包裝過程稱量信號處理方法研究
作者簡介
古代的時(shí)鐘
恐怖排序
節(jié)日排序
這個(gè)時(shí)鐘一根針
有趣的時(shí)鐘
時(shí)鐘會(huì)開“花”