基于MicroBlaze的16點(diǎn)fft的設(shè)計(jì)實(shí)現(xiàn)
一、MicroBlaze的體系結(jié)構(gòu)
本文引用地址:http://2s4d.com/article/267943.htmMicroBlaze是基于Xilinx 公司FPGA 的微處理器IP 核和其它外設(shè)IP 核一起可以完成可編程系統(tǒng)芯片(SOPC)的設(shè)計(jì)MicroBlaze 處理器采用RISC 架構(gòu)和哈佛結(jié)構(gòu)的32位指令和數(shù)據(jù)總線可以全速執(zhí)行存儲(chǔ)在片上存儲(chǔ)器和外部存儲(chǔ)器中的程序并訪問(wèn)其中的數(shù)據(jù)。
(1)內(nèi)部結(jié)構(gòu)。MicroBlaze 內(nèi)部有32個(gè)32位通用寄存器和2 個(gè)32位特殊寄存器——PC指針和MSR狀態(tài)標(biāo)志寄存器。為了提高性能,MicroBlaze還具有指令和數(shù)據(jù)緩存所有的指令字長(zhǎng)都是32位,有3個(gè)操作數(shù)和2種尋址模式。指令按功能劃分有邏輯運(yùn)算、算術(shù)運(yùn)算、分支、存儲(chǔ)器讀/寫(xiě)和特殊指令等。指令執(zhí)行的流水線是并行流水線,它分為3級(jí)流水:取指、譯碼和執(zhí)行。
(2)存儲(chǔ)結(jié)構(gòu)。MicroBlaze 是一種大端存儲(chǔ)系統(tǒng)處理器,使用如圖1所示的格式來(lái)訪問(wèn)存儲(chǔ)器。
(3)中斷控制和調(diào)試接口。MicroBlaze可以響應(yīng)軟件和硬件中斷,進(jìn)異常處理,通過(guò)外加控制邏輯,可以擴(kuò)展外部中斷。利用微處理器調(diào)試模塊( MDM)IP核可通過(guò)JTAG 接口來(lái)調(diào)試處理器系統(tǒng)。多個(gè)MicroBlaze 處理器可以用1個(gè)MDM來(lái)完成多處理器調(diào)試。
(4)快速單一鏈路接口。MicroBlaze處理器具有8個(gè)輸入和8個(gè)輸出快速單一鏈路接口(FSL) 。FSL通道是專用于單一方向的點(diǎn)到點(diǎn)的數(shù)據(jù)流傳輸接口。FLS 和MicroBlaze 的接口寬度是32位,每一個(gè)FSL通道都可以發(fā)送和接收控制或數(shù)據(jù)字。
二、FFT處理器
FFT處理器主要對(duì)數(shù)據(jù)進(jìn)行蝶形運(yùn)算及數(shù)據(jù)存取。設(shè)計(jì)采用基2蝶形運(yùn)算器,包括存儲(chǔ)器ROM和RAM,控制器及地址產(chǎn)生單元等。其FFT的結(jié)構(gòu)模型如圖1所示。
三、基于MicroBlaze和FPGA的開(kāi)發(fā)
(1)基本開(kāi)發(fā)流程。
應(yīng)用EDK(嵌入式開(kāi)發(fā)套件)可以進(jìn)行MicroBlaze IP 核的開(kāi)發(fā)。工具包中集成了硬件平臺(tái)產(chǎn)生器、軟件平臺(tái)產(chǎn)生器、仿真模型生成器、軟件編譯器和軟件調(diào)試工具等。EDK 中提供一個(gè)集成開(kāi)發(fā)環(huán)境XPS(Xilinx 平臺(tái)工作室) ,以便使用系統(tǒng)提供的所有工具,完成嵌入式系統(tǒng)開(kāi)發(fā)的整個(gè)流程。EDK 中還帶有一些外設(shè)接口的IP核,如LMB、 OPB 總線接口、外部存儲(chǔ)控制器、SDRA M 控制器、UART、 中斷控制器、定時(shí)器等。利用這些資源,可以構(gòu)建一個(gè)較為完善的嵌入
式微處理器系統(tǒng)。在FPGA上設(shè)計(jì)的嵌入式系統(tǒng)層次結(jié)構(gòu)為5 級(jí)??稍谧畹蛯佑布Y源上開(kāi)發(fā)IP核,或利用已開(kāi)發(fā)的IP 核搭建嵌入式系統(tǒng),這是硬件開(kāi)發(fā)部分;開(kāi)發(fā)IP 核的設(shè)備驅(qū)動(dòng)、應(yīng)用接口(API)和應(yīng)用層(算法),屬軟件開(kāi)發(fā)內(nèi)容。通過(guò)標(biāo)準(zhǔn)總線接口LMB 總線和OP B總線的IP核,microBlaze 就可以和各種外設(shè)IP 核相連。EDK中提供的IP核均有相應(yīng)的設(shè)備驅(qū)動(dòng)和應(yīng)用接口,使用者只需利用相應(yīng)的函數(shù)庫(kù)就可以編寫(xiě)自己的應(yīng)用軟件和算法程序?qū)τ谟脩糇约洪_(kāi)發(fā)的IP 核需要自己編寫(xiě)相應(yīng)的驅(qū)動(dòng)和接口函數(shù)軟件設(shè)計(jì)流程。
(2)FFT的地址產(chǎn)生單元。
地址產(chǎn)生單元主要是跟蹤FFT運(yùn)算進(jìn)度,進(jìn)而更好地調(diào)配存儲(chǔ)單元,及控制各相關(guān)模塊的運(yùn)行。1.通過(guò)計(jì)數(shù)器來(lái)跟蹤記錄FFT計(jì)算的狀況。為方便對(duì)存儲(chǔ)單元操作,采用計(jì)數(shù)器來(lái)記錄FFT的計(jì)算情況。8點(diǎn)的FFT,每個(gè)單元包括4個(gè)數(shù)據(jù),所以用一個(gè)4位計(jì)數(shù)器Butterfly表示全部的運(yùn)算狀態(tài)。一個(gè)2位級(jí)計(jì)數(shù)器Stage表示三級(jí)蝶形單元。當(dāng)Butterfly計(jì)數(shù)為4時(shí),級(jí)計(jì)數(shù)器Stage加1,當(dāng)Stage計(jì)數(shù)為3時(shí),表示FFT的計(jì)算操作完成。當(dāng)Butterfly計(jì)數(shù)為15時(shí),輸入輸出信號(hào)置“1”,反饋回控制器輸入輸出操作完成。
2.ROM讀取的地址。旋轉(zhuǎn)因子Wkn存儲(chǔ)在ROM中,由實(shí)部cos(2kPi/8)和虛部sin(2kPi/8)兩部分組成,讀取由時(shí)鐘單元的信號(hào)控制。可以看出每一級(jí)參加蝶形運(yùn)算的旋轉(zhuǎn)因子不同。
3.RAM數(shù)據(jù)地址。在整個(gè)地址單元中,分配RAM中數(shù)據(jù)的地址是重點(diǎn),8點(diǎn)蝶形運(yùn)算共需l6個(gè)存儲(chǔ)單元,數(shù)據(jù)地址的產(chǎn)生遵循一定規(guī)則。
四、結(jié)論
本文采用FPGA 和MicroBlaze 進(jìn)行嵌入式系統(tǒng)設(shè)計(jì),文中在分析了FFT算法后,描述了運(yùn)算的蝶形單元,地址生成單元及FFT的實(shí)現(xiàn)過(guò)程。從實(shí)際設(shè)計(jì)出發(fā),完成了基于FPGA的單精度浮點(diǎn)運(yùn)算器的FFT設(shè)計(jì),精度達(dá)到10-6。大大縮小了接收機(jī)體積,便于系統(tǒng)實(shí)現(xiàn)小型化、集成化。捕獲及跳頻同步等算法采用硬件實(shí)現(xiàn),加快了捕獲跟蹤速度。實(shí)驗(yàn)結(jié)果表明FPGA系統(tǒng)設(shè)計(jì)是正確可行的。
評(píng)論