vivado中fft IP核的使用

姓名:劉保闊

學(xué)號(hào):19021210887

【嵌牛導(dǎo)讀】

? ? ? FFT(快速傅里葉變換)作為數(shù)字信號(hào)處理的核心算法具有重要的研究?jī)r(jià)值糟袁,可應(yīng)用于傅里葉變換所能涉及的任何領(lǐng)域蔗怠,如圖像處理跌造、音頻編碼摩泪、頻譜分析吼鱼、雷達(dá)信號(hào)脈沖壓縮等數(shù)字信號(hào)處理領(lǐng)域。FFT的鮮明特征之一是計(jì)算離散傅里葉變換(DFT)的高效算法谆奥,把計(jì)算N點(diǎn)DFT的乘法運(yùn)算量從N2次降低到N/2*log2N次眼坏。而采用FPGA實(shí)現(xiàn)FFT的緣由在于:FPGA具有并行處理、流水線處理酸些、易編程宰译、片上資源豐富等方面特點(diǎn)檐蚜,用于實(shí)現(xiàn)高速、大點(diǎn)數(shù)的FFT優(yōu)勢(shì)明顯沿侈。

【嵌牛正文】

? ? 本設(shè)計(jì)使用的軟件編程環(huán)境是Xilinx公司的Vivado 2018.3闯第,筆者將從FFT IP核的創(chuàng)建,模塊文件的編寫缀拭,波形仿真等方面來具體講述FFT算法在Xilinx FPGA上的實(shí)現(xiàn)乡括。

【更新日志】

? ? 1.修正了IP核創(chuàng)建時(shí)設(shè)置和下面verilog模塊文件不對(duì)應(yīng)的問題,本例程為128點(diǎn)FFT智厌。

??? 2.FFT.interface.v模塊有bug,現(xiàn)做了相應(yīng)的修改盲赊。

??? 3.這個(gè)例程寫的較早铣鹏,有些地方可能過于復(fù)雜了,可參考我在CSDN上的文章https://blog.csdn.net/qq_43622265/article/details/105905927哀蘑。

? ? 1.FFT IP核的創(chuàng)建诚卸。

? ? 在Vivado軟件主界面,打開IP Catalog绘迁,在搜索框內(nèi)輸入FFT合溺,然后找到Digital Signal Processing->Transforms->FFTs目錄下的Fast Fourier Transform,雙擊進(jìn)入配置界面缀台。

圖1

? ? 進(jìn)入到配置界面棠赛,左邊是IP核的接口圖、實(shí)現(xiàn)的一些細(xì)節(jié)信息和FFT的延遲膛腐,右邊是Configuration睛约、Implementation和Detailed Implementation三個(gè)標(biāo)簽卡。

? ? Vivado的FFT IP核支持多通道輸入(Number of Channels)和實(shí)時(shí)更改FFT的點(diǎn)數(shù)(Run Time Configurable Transform Length)哲身。Configuration標(biāo)簽下可設(shè)置FFT的點(diǎn)數(shù)(Transform Length)和工作時(shí)鐘(Target Clock Frequency)辩涝,以及選擇一種FFT結(jié)構(gòu)。FFT的結(jié)構(gòu)包括流水線Streaming勘天、基4 Burst怔揩、基2 Burst和輕量級(jí)基2 Burst,它們的計(jì)算速度和消耗的資源依次減少脯丝,可根據(jù)工程實(shí)際進(jìn)行選擇商膊。

圖2

? Implementation標(biāo)簽卡下可設(shè)置FFT的數(shù)據(jù)格式為定點(diǎn)Fixed Point或浮點(diǎn)Float Point;輸出截位方式選擇:不截位(Unscaled)宠进,截位(Scaled)翘狱,塊浮點(diǎn)(Block Floating Point);設(shè)置輸入數(shù)據(jù)的位寬和相位因子位寬砰苍。還有一些可選的附加信號(hào)潦匈,如時(shí)鐘使能(ACLKEN)阱高,復(fù)位信號(hào)(ARESETn,低有效)等茬缩〕嗑“Output Ordering”用以選擇FFT計(jì)算結(jié)果以自然順序(Nature Order)或位倒序(Bit/Digit Reversed Order)輸出。

圖3

? ? Detailed Implementation里可設(shè)置優(yōu)化方式凰锡、存儲(chǔ)的類型未舟。存儲(chǔ)類型分為兩種:Block RAM(塊RAM)和Distributed RAM(分布式RAM);優(yōu)化方式可選擇資源最優(yōu)或者速度最優(yōu)。

圖4

配置完成后掂为,可在Latency下看到計(jì)算fft所需的時(shí)間裕膀,可以以此衡量設(shè)計(jì)是否滿足實(shí)時(shí)處理的要求。如不滿足勇哗,可選擇性能更好的FFT結(jié)構(gòu)或選擇可以提高運(yùn)算速度的優(yōu)化選項(xiàng)

圖5

? ? ? 2.模塊文件的編寫昼扛。

? ? IP核工作必須要滿足一定的時(shí)序要求,所以需要編寫一個(gè)fft核的接口模塊(FFT_interface)欲诺,用于產(chǎn)生該IP核的時(shí)序控制信號(hào)并將輸入的實(shí)部抄谐、虛部數(shù)據(jù)根據(jù)需要拼接成一個(gè)數(shù)據(jù)。和該IP核交互是用AXI-Stream接口扰法,關(guān)于AXI-Stream接口的時(shí)序可自行查一些相關(guān)資料蛹含,這里不做詳細(xì)介紹。

圖6
圖7

? ? 接口模塊編寫完成后就可在頂層模塊(FFT_TOP)進(jìn)行調(diào)用塞颁,并將其輸出端口連接到FFT IP核上浦箱,以實(shí)現(xiàn)對(duì)IP核的時(shí)序控制。

圖8
圖9
圖10

? ? 此工程的RTL視圖:該視圖下祠锣,可清楚直觀的顯示各模塊間的連線關(guān)系以及輸入輸出端口信息憎茂。

圖11

? ? 3.功能仿真。

? ? 模塊編寫完成后锤岸,需要通過功能仿真來驗(yàn)證我們?cè)O(shè)計(jì)邏輯的正確性竖幔。進(jìn)行仿真之前,我們需要編寫仿真測(cè)試文件(testbench)是偷。

圖12
圖13

? ? testbench中輸入的時(shí)域波形數(shù)據(jù)是我們通過matlab生成的拳氢,在matlab中我們仿真的是采樣率為2kHz情況下,頻率分別為50Hz和200Hz的兩正弦波疊加后的信號(hào)蛋铆。

圖14

? ? 進(jìn)行功能仿真時(shí)我們將仿真時(shí)長(zhǎng)設(shè)置為11us馋评。為了直觀驗(yàn)證fft是否正確,可將輸入的時(shí)域數(shù)據(jù)和做完fft后信號(hào)功率值的數(shù)據(jù)格式均設(shè)置為anolog(模擬)刺啦,如下圖留特,可以看到fft后的功率譜為兩根獨(dú)立的譜線,分別代表50Hz和200Hz兩個(gè)頻率點(diǎn),和matlab仿真結(jié)果一致蜕青。

圖15
圖16

? ? ?? 程序設(shè)計(jì)到此就告一段落苟蹈,對(duì)于該IP核更復(fù)雜的應(yīng)用,大家可以閱讀Xilinx官方提供的文檔右核,根據(jù)自己的實(shí)際需要進(jìn)行設(shè)計(jì)慧脱。限于筆者水平有限,文章內(nèi)難免會(huì)有錯(cuò)誤出現(xiàn)贺喝,希望大家批評(píng)指正菱鸥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市躏鱼,隨后出現(xiàn)的幾起案子氮采,更是在濱河造成了極大的恐慌,老刑警劉巖染苛,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹊漠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡殖侵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門镰烧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拢军,“玉大人,你說我怎么就攤上這事怔鳖≤园Γ” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵结执,是天一觀的道長(zhǎng)度陆。 經(jīng)常有香客問我,道長(zhǎng)献幔,這世上最難降的妖魔是什么懂傀? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蜡感,結(jié)果婚禮上蹬蚁,老公的妹妹穿的比我還像新娘。我一直安慰自己郑兴,他們只是感情好犀斋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著情连,像睡著了一般叽粹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天虫几,我揣著相機(jī)與錄音锤灿,去河邊找鬼持钉。 笑死衡招,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的每强。 我是一名探鬼主播始腾,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼空执!你這毒婦竟也來了浪箭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤辨绊,失蹤者是張志新(化名)和其女友劉穎奶栖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體门坷,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宣鄙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了默蚌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冻晤。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绸吸,靈堂內(nèi)的尸體忽然破棺而出鼻弧,到底是詐尸還是另有隱情,我是刑警寧澤锦茁,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布攘轩,位于F島的核電站,受9級(jí)特大地震影響码俩,放射性物質(zhì)發(fā)生泄漏度帮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一稿存、第九天 我趴在偏房一處隱蔽的房頂上張望够傍。 院中可真熱鬧,春花似錦挠铲、人聲如沸冕屯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)安聘。三九已至痰洒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浴韭,已是汗流浹背丘喻。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留念颈,地道東北人泉粉。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像榴芳,于是被迫代替她去往敵國(guó)和親嗡靡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容