




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目 錄摘要11 前言22 數(shù)字信號處理簡介23 sopc簡介34 快速傅立葉變換44.1 計算dft的特點及fft的預(yù)算基本途徑44.2 時域抽取法基2fft基本原理54.3 直接計算dft與dit-fft算法運算量的比較95 dit-fft的運算規(guī)律95.1 原位計算105.2 旋轉(zhuǎn)因子的變化規(guī)律105.3 蝶形運算規(guī)律106 系統(tǒng)設(shè)計116.1 quartus部分的系統(tǒng)設(shè)計116.1.1 quartus簡介116.1.2 創(chuàng)建一個quartus工程126.1.3 創(chuàng)建cpu系統(tǒng)模塊126.1.4 建立圖形設(shè)計文件136.2 nios部分的系統(tǒng)設(shè)計136.2.1 nios簡介136.2.2
2、啟動nios ide146.2.3 建立新的軟件工程146.2.4 編程思想與程序框圖146.2.5 序列的倒序156.2.6 輸入程序與編譯工程186.2.7 運行與調(diào)試程序187 結(jié)論198 致謝19參考文獻19附錄20基于nios的fft實現(xiàn)專業(yè)名稱 電子信息科學與技術(shù)專業(yè) 作者 *指導老師 *摘要:在數(shù)字信號處理中,fft占有很重要的位置,其運算速度影響整個系統(tǒng)的性能。傳統(tǒng)實現(xiàn)方法速度慢,難以滿足信號處理的實時要求。針對這一現(xiàn)狀,本文研究了fft算法的c語言程序設(shè)計方法,討論了基于nios實現(xiàn)fft處理中的若干問題。仿真結(jié)果表明該方案正確可行,可以滿足需要處理的應(yīng)用場合。關(guān)鍵詞:快速傅
3、立葉變換(fft);可編程片上系統(tǒng)(sopc);c語言; realization of fft based on nioselectronic information science and technical specialtyouyang xu instruction teachershi weiabstract: fft plays an important role in signal processing and its operation time has effect on the performance of the system. the operational speed
4、of traditional implement method is too low to meet the need of signal processing for real-time. so, it is introduced a kind of c language program design for fft algorithm and some problems are discussed in design when fft is realized based on nios. the simulation result verified the correctness of p
5、rogram which can be applied to the fields needed.keywords: fft; sopc; c language; 1 前言dft(discrete fourier transformation)是數(shù)字信號分析與處理如圖形、語音及圖像等領(lǐng)域的重要變換工具。dft是連續(xù)傅里葉變換在時域和頻域上都離散的形式,將時域信號的采樣變換為在離散時間傅里葉變換(dtft)頻域的采樣。在形式上,變換兩端(時域和頻域上)的序列是有限長的,而實際上這兩組序列都應(yīng)當被認為是離散周期信號的主值序列。即使對有限長的離散信號作dft,也應(yīng)當將其看作經(jīng)過周期延拓成為周期信號再
6、作變換。dft不僅在理論上有重要意義,而且在各種信號的處理中亦起著核心作用。直接計算dft的計算量與變換區(qū)間長度n的平方成正比。當n較大時,因計算量太大,直接用dft算法進行譜分析和信號的實時處理是不切實際的。直到1965年發(fā)現(xiàn)了dft的一種快速算法以后,情況才發(fā)生了根本的變化??焖俑盗⑷~變換(fast fourier transformation,簡稱fft)使dft運算效率提高12個數(shù)量級。其原因是當n較大時,對dft進行了基4或基2分解運算,可以有效的減少運算量。fft算法除了必需的數(shù)據(jù)存儲器ram和旋轉(zhuǎn)因子rom外,仍需較復(fù)雜的運算和控制電路單元,即使現(xiàn)在,實現(xiàn)長點數(shù)的fft仍然是很困
7、難。本文提出的fft實現(xiàn)算法是基于sopc之上的,算法由c語言編程實現(xiàn),完成對點fft的計算。2 數(shù)字信號處理簡介數(shù)字信號處理以信號系統(tǒng)的一般理論為基礎(chǔ),在理論體系上發(fā)展專門適合于離散時間(或者空間)上的信號分析原理和方法,在實踐上發(fā)展適合于計算機處理的器件和設(shè)備,在應(yīng)用上建立針對不同信號的模型和計算方法。數(shù)字信號處理的基礎(chǔ)理論是在針對確定信號的討論發(fā)展起來的,但是其應(yīng)用幾乎無一例外地涉及隨機信號的分析,從這個意義上說,統(tǒng)計信號處理是數(shù)字信號處理的應(yīng)用表現(xiàn)。因此,數(shù)字信號處理的理論體系大體可以歸納為三個層次的結(jié)構(gòu),這個結(jié)構(gòu)更低層的基礎(chǔ)是數(shù)學,更上層的是具體的應(yīng)用。 事實上,統(tǒng)計信號處理的大多數(shù)
8、原理并不直接來源于離散時間(空間)系統(tǒng)的分析,而是來源于對一般時間(空間)序列的研究。然而上面這樣的層次對于我們利用計算機為工具來解決問題是有用的。譬如,我導師在他的博士論文工作中使用的程序庫(包含他自己編寫的大量代碼)基本上就是由數(shù)理統(tǒng)計和數(shù)值計算、信號處理工具、信息處理工具以及它們所支持的統(tǒng)計信號處理工具庫所構(gòu)成的。上面的不同層次,有不同的關(guān)鍵問題。信號與系統(tǒng)的理論基礎(chǔ)討論的核心問題就是變換域上表示信號的問題。c.e.shannon的抽樣定理(theorem 13 in “a mathematical theory of communcation”,shannon)被工程師們公認為影響這個
9、世界的最重要的公式之一(根據(jù)一項非正式的調(diào)查顯示,抽樣定理列于該調(diào)查所排列的10個最重要公式中。注意,第一位是牛頓第二定律,第二位是萬有引力定律,第五位是maxwell方程組,抽樣定理列第八,卻足以說明它的重要性。)抽樣定理唯一地提供了這樣的可能性:能夠用有限的離散的計算手段來研究連續(xù)發(fā)生的信號。1離散信號分析的理論一方面把連續(xù)時間的信號分析的方法和原理引進到離散系統(tǒng)的領(lǐng)域,比如z-變換、dtft、dft以及根據(jù)模擬濾波器按照一定準則設(shè)計數(shù)字濾波器的方法;另一方面獨立發(fā)展關(guān)于離散系統(tǒng)和信號分析的專門的理論和方法,比如濾波器的算法設(shè)計、量化的理論、有限字長的效應(yīng)。這些理論的發(fā)展有一個共同的特點,
10、就是適應(yīng)數(shù)字計算機解決信號處理的問題。需要注意到,離散信號和系統(tǒng)的理論不僅僅解決現(xiàn)實世界中連續(xù)系統(tǒng)的問題,也開辟了解決本身就具有離散特征的系統(tǒng)的問題,比如,雷達天線陣列的方向圖問題,本身就是空間離散fourier變換的問題。現(xiàn)實問題中的信號一般都不是確定的,而是隨機的。統(tǒng)計信號處理引進隨機過程和數(shù)理統(tǒng)計的成果,并且運用信號處理的基本原理,建立模型和參數(shù)估計的理論,并且同信息論關(guān)于信源和信道及其相互關(guān)系的理論結(jié)合在一起,用于解決特定系統(tǒng)、特定模型的問題。模型決定算法,而算法決定實現(xiàn)。寫到這樣一句話的時候,可以這么來歸納工程師們在數(shù)字信號處理領(lǐng)域所取得的成就:理論-模型-算法-工程實現(xiàn)-應(yīng)用。最終
11、解決問題的一定是可以運行的代碼或者設(shè)備。3 sopc簡介sopc (system on programmable chip )即可編程的片上系統(tǒng),或者說是基于大規(guī)模fpga的單片系統(tǒng)。sopc的設(shè)計技術(shù)是現(xiàn)代計算機輔助設(shè)計技術(shù)、fda技術(shù)和大規(guī)模集成電路技術(shù)高度發(fā)展的產(chǎn)物。sopc技術(shù)的目標就是試圖將盡可能大而完整的電子系統(tǒng),包括嵌入式處理器系統(tǒng)、接口系統(tǒng)、硬件協(xié)處理器或加速器系統(tǒng)、dsp系統(tǒng)、數(shù)字通信系統(tǒng)、存儲電路以及普通數(shù)字系統(tǒng)等,在單一fpga中實現(xiàn),使得所設(shè)計的電路系統(tǒng)在其規(guī)模、可靠性、體積、功耗、功能、性能指標、上市周期、開發(fā)成本、產(chǎn)品維護及其硬件升級等多方面實現(xiàn)最優(yōu)化。sopc技術(shù)
12、是一門全新的緣合性電子設(shè)計技術(shù),在電子設(shè)計技術(shù)上給出了一種以人的基本能力為依據(jù)的軟硬件綜合解決方案。由于同時涉及底層的硬件系統(tǒng)設(shè)計和相應(yīng)的軟件設(shè)計,在系統(tǒng)優(yōu)化方面有了前所未有的自由度。sopc技術(shù)使開發(fā)者更能動地在軟硬件系統(tǒng)的綜合與構(gòu)建兩個方面有了充分發(fā)揮自己創(chuàng)造性和想象力的巨大空間,從而使得從多角度、多因素和多結(jié)構(gòu)層面上大幅度優(yōu)化自己的設(shè)計成為可能。事實上,諸如單片機、dsp或arm系統(tǒng)等基于傳統(tǒng)開發(fā)技術(shù)的設(shè)計流程而言,不存在嚴格意義上的硬件設(shè)計,而只有軟件設(shè)計。這是因為,一旦方案確定,硬件系統(tǒng)的核心器件是現(xiàn)成的,功能是確定的,結(jié)構(gòu)是固定的,指令系統(tǒng)是不可更改的,從面導致硬件組織方案和連接方
13、案是限定的,用戶只能被動地遵循和適應(yīng),這時的硬件“設(shè)計”只能流于拼裝和連接。系統(tǒng)構(gòu)成后的惟一任務(wù)是依據(jù)既定的指令系統(tǒng)來編程,除了系統(tǒng)功能和算法可以通過軟件改變外,系統(tǒng)的性能和指標己無從改變。設(shè)計者的創(chuàng)新能力、想象力和優(yōu)化設(shè)計能力的發(fā)揮空間已被選定的硬件性能所界定。沒有了創(chuàng)造,更談不上超越了,進而導致了系統(tǒng)的綜合性能基本取決于器件原有的性能和指標。換言之,傳統(tǒng)技術(shù)是以既定的硬件及其性能而非以人的能力為主軸的技術(shù)。這樣不難明白,在這個以硬件決定“創(chuàng)造”的世界里,為什么在優(yōu)秀的8031單片機出現(xiàn)以后,仍然層出不窮地涌現(xiàn)出其他各種功能和性能的單片機:而同樣是dsp處理器,c5x系列與c6x系列器件則把
14、開發(fā)者帶到完全不同的技術(shù)領(lǐng)域和功能范疇。顯然,硬件的可設(shè)計性和用戶目標的適應(yīng)性在系統(tǒng)性能指標上占有更大的份額,而sopc技術(shù)的優(yōu)勢正在于是設(shè)計者本身而非器件設(shè)計商去更有效地占據(jù)這一份額。sopc在應(yīng)用理論和知識構(gòu)成上,達到了一種有機融合?;趕opc的結(jié)構(gòu)特點,sopc系統(tǒng)的開發(fā)對于設(shè)計者的知識范圍有了更高的要求。除了必須了解基本的eda軟件、硬件描述語言和fpga器件相關(guān)知識外,還必須熟悉計算機組成與接口、匯編語言和c語言、dsp算法、數(shù)字通信、嵌入式系統(tǒng)開發(fā)、嵌入式操作系統(tǒng)、片上系統(tǒng)構(gòu)建與測試等知識。這樣,sopc技術(shù)的普及必將有力地推動電子信息及工程類各學科分支與相應(yīng)的課程類別間的融合。
15、這種融合在sopc技術(shù)中已不是簡單的合并與算術(shù)相加,而是有機的融匯和充滿設(shè)計者創(chuàng)新意識的升華。例如可以利用matlab/dsp builder/quartus完成純硬件的dsp算法模型及實現(xiàn),進而構(gòu)成嵌入式系統(tǒng)外圍接口的協(xié)處理模塊,再進一步構(gòu)成軟件程序中的精簡指令,從而實現(xiàn)完全自主的、真正意義上的硬件設(shè)計和系統(tǒng)優(yōu)化。與現(xiàn)有的諸多電子系統(tǒng)設(shè)計理念和解決方案相比,sopc技術(shù)更具代表性、主流性、規(guī)范性與普遍性。sopc從設(shè)計層次上講,分硬件設(shè)計和軟件設(shè)計;從設(shè)計流程上講,是典型的自頂向下的流程:從設(shè)計手段上講,相比于傳統(tǒng)技術(shù),更廣和更深入地利用了計算機,而計算機技術(shù)無疑是當今的主流技術(shù)。在這一平臺
16、上,學科知識的融合,設(shè)計手段的融合,測試技術(shù)的融合,使sopc設(shè)計者最大限度地在優(yōu)化系統(tǒng)的性能上得以發(fā)揮自己的聰明才智,不再如傳統(tǒng)技術(shù)中那樣,把大量的時間花費在無謂的軟硬件構(gòu)建細節(jié)上,從而使人們常說的“動手能力”成了計算機應(yīng)用能力的組成部分,而非僅為諸如“焊接”、“鉆孔”和“連線”等操作行為的代名詞了。從未來的電子系統(tǒng)設(shè)計技術(shù)走勢上看,sopc技術(shù)更具發(fā)展性和前瞻性。"from concept to system in minutes”顯然是現(xiàn)代電子技術(shù)追求的方向和境界。在那里,人們可以遠離“十年磨一劍”的經(jīng)驗、變化無端的硬件結(jié)構(gòu)、空耗時光而難得要領(lǐng)的排錯,潛心于己把握的知識、智慧與
17、靈感,把電路模型、系統(tǒng)模型、功能模型、行為模型及數(shù)學模型直接通過計算機在短時間內(nèi)形成高效實用的電子線路系統(tǒng),這不能不說是一種大膽的設(shè)想。然而,在sopc領(lǐng)域,這種設(shè)想已得到了部分的實現(xiàn)。sopc技術(shù)不能簡單歸屬于哪一個學科分支。廣義地講,它是一種理念、一種思想方法、一種境界、一種趨勢。4 快速傅立葉變換4.1 計算dft的特點及fft的預(yù)算基本途徑長度為n的有限長序列x(n)的dft為x(k)= ,k=0,n考慮x(n)為復(fù)數(shù)序列的一般情況,對某一個k值,直接按上式計算x(k)值需要次復(fù)數(shù)乘法、()次復(fù)數(shù)加法,因此,對所有個k值,共需次復(fù)數(shù)乘法及n()次復(fù)數(shù)加法運算。當n時,n()。由上述可見
18、,n點dft的乘法和加法預(yù)算次數(shù)均與成正比。當n較大時,運算量相當可觀。這對于要求實時信號處理來說,必將對計算速度提出難以實現(xiàn)的要求。所以,必須減少其運算量,才能使dft在各種科學和工程計算中得到應(yīng)用。fft算法就是不斷的把長序列的dft分解成幾個短序列的dft,并利用的周期性和對稱性來減少dft的運算次數(shù)。對于變換長度為n的序列x(n)其傅立葉變換可以表示如下:x(k)=dftx(n)= 其中,w=exp(-2/n)。4.2 時域抽取法基2fft基本原理 fft算法有按時間抽取(dit)和按頻率抽取(dif)兩種形式,其區(qū)別在于輸入書記和旋轉(zhuǎn)因子乘、加的順序不同。在dit中,蝶形運算的輸入數(shù)
19、據(jù)和旋轉(zhuǎn)因子是先乘后加;而在dif中,是先加后乘。下面先介紹dif-fft算法。設(shè)序列x(n)的長度為n,且滿足,為自然數(shù)按n的奇偶把x(n)分解為兩個n/2點的子序列則x(n)的dft為由于所以k=0,1,n1其中x1(k)和x2(k)分別為x1(r)和x2(r)的n/2點dft,即 由于x1(k)和x2(k)均以n/2為周期,且,所以x(k)又可表示為 (式)(式)這樣,就將n點dft分解為兩個n/2點的dft和式以及式的運算。上面兩個式子的運算可用圖所示的流圖符號表示,根據(jù)其形狀稱之為蝶形運算符號。圖 蝶形運算符號采用這種圖示法,可將上述分解運算表示于圖中,圖中,n=2=8,x(0)x(
20、3)由(式1)給出,而x(4)x(7)則由(式2)給出。由圖可見,要完成一個蝶形運算,需要一次復(fù)數(shù)乘和兩次復(fù)數(shù)加法運算。由圖容易看出,經(jīng)過一次分解后,計算一個n 點dft共需要計算兩個n/2點dft和n/2個蝶形運算。而計算一個n/2點dft需要次復(fù)數(shù)乘和n/2(n/21)次復(fù)數(shù)加法。所以,按圖2計算n點dft總共需要2+n/2=n(n+1)/2/2(n >>1時)次復(fù)數(shù)乘法和n(n/21)+2n/2= /2次復(fù)數(shù)加法運算。由此可見,僅僅經(jīng)過一次分解,就使運算量減少近一半。既然這樣分解對減少dft的運算量是有效的,且n=,n/2仍然是偶數(shù),故可以對n/2點dft再作進一步分解。圖
21、n點dft的一次時域抽取分解圖(n=8)與第一次分解相同,將x1(r)按奇偶分解成兩個n/4長的子序列x3(l)和x4(l),即那么,x1(k)又可表示為 式中 同理,由x3(k)和x4(k)的周期性和wm n/2的對稱性 wk+n/4 n/2=-wk n/2 最后得到: (式)用同樣的方法可計算出(式)其中這樣,經(jīng)過第二次分解,又將n/2點dft分解為兩個n/4點dft和(式)或(式)所示的n/4個碟形運算,如圖3所示。依次類推,經(jīng)過m1次分解,最后將n點dft分解成n/2個2點dft。圖3 n點dft的第二次時域抽取分解圖(n=8)一個完整的8點dit-fft 運算流圖如圖4所示。圖中輸入
22、序列不是順序排列,但后面會看到,其排列是有規(guī)律的。圖4 n點dit-fft運算流圖(n=8)4.3 直接計算dft與dit-fft算法運算量的比較由dit-fft算法的分解過程及圖4可見,n=時,其運算流圖應(yīng)有m級碟形,每一級都由n/2個蝶形運算構(gòu)成。因此,每一級運算都需要n/2次復(fù)數(shù)乘和n次復(fù)數(shù)加(每個蝶形需要兩次復(fù)數(shù)加法)。所以,m級運算總共需要的復(fù)數(shù)乘次數(shù)為復(fù)數(shù)加次數(shù)為而直接計算dft的復(fù)數(shù)乘為次,復(fù)數(shù)加為n(n1)次。當n>>1時,>>(n/2) n,從而,dit-fft算法比直接計算dft 的運算次數(shù)大大減少。例如,n=210=1024時這樣,就使運算效率提高
23、200多倍,圖5為fft算法和直接dft算法所需運算量與計算點數(shù)n的關(guān)系曲線。由此圖更加直觀地看出fft 算法的優(yōu)越性,顯然,n越大時,優(yōu)越性越明顯。圖5 直接計算dft與dit-fft算法所需乘法次數(shù)的比較曲線5 dit-fft的運算規(guī)律為了最終寫出dit-dft運算程序或設(shè)計出硬件實現(xiàn)電路,下面介紹它的運算規(guī)律。5.1 原位計算由圖可以看出,dit-fft的運算過程很有規(guī)律。n=點的fft共進行m級運算,每級由n/2個蝶形運算組成。同一級中,每個蝶形的兩個輸入數(shù)據(jù)只對計算本蝶形有用,而且每個蝶形的輸入、輸出數(shù)據(jù)結(jié)點又同在一條水平線上,這就意味著計算完一個蝶形后,所得輸出數(shù)據(jù)可立即存入原輸入
24、數(shù)據(jù)所占用的存儲單元。這樣,經(jīng)過m級運算后,原來存放輸入序列數(shù)據(jù)的n個存儲單元中便依次存放x(k)的n個值。這種利用同一存儲單元存儲蝶形計算輸入、輸出數(shù)據(jù)的方法稱為原位計算。原位計算可節(jié)省大量內(nèi)存,從而使設(shè)備成本降低。5.2 旋轉(zhuǎn)因子的變化規(guī)律如上所述,n點ditfft運算流圖中,每級都有n/2個蝶形。每個蝶形都要乘以因子,稱其為旋轉(zhuǎn)因子,p稱為旋轉(zhuǎn)因子的指數(shù)。但各級的旋轉(zhuǎn)因子和循環(huán)方式都有所不同。為了編寫計算程序,應(yīng)先找出旋轉(zhuǎn)因子與運算級數(shù)的關(guān)系。用l表示從左到右的運算級數(shù)(l=1,2,m)。觀察圖不難發(fā)現(xiàn),第l級共有2 l-1個不同的旋轉(zhuǎn)因子。n=23=8時的各級旋轉(zhuǎn)因子表示如下: l=1
25、時,= = , j=0 l=2時, = = , j=0,1 l=3時, = = , j=0,1,2,3 對n=2m的一般情況,第l級的旋轉(zhuǎn)因子為由于所以(式) (式)這樣,就可按(式5)和(式6)確定第l級運算的旋轉(zhuǎn)因子(實際編程序時,l為循環(huán)變量)。5.3 蝶形運算規(guī)律設(shè)序列x(n)經(jīng)時域抽選(倒序)后,存入數(shù)組x中。如果蝶形運算的兩個輸入數(shù)據(jù)相距b個點,應(yīng)用原位計算,則蝶形運算可表示成如下形式:式中;j=0,1, 1;l=1,2,m下標l表示第l級運算,則表示第l級運算后數(shù)組元素x(j)的值。如果要用實數(shù)運算完成上述蝶形運算,可按下面的算法進行。設(shè) 式中下標r表示取實部,i表示取虛部,則6
26、 系統(tǒng)設(shè)計6.1 quartus部分的系統(tǒng)設(shè)計6.1.1 quartus簡介quartus是高級和復(fù)雜的用于可編程片上系統(tǒng)的一種設(shè)計環(huán)境。 quartusii提供完善的 timing closure 和 logiclock 基于塊的設(shè)計流程。quartusii是唯一一個包括以timing closure 和 基于塊的設(shè)計流為基本特征的programmable logic device (pld)的軟件。 quartus ii 設(shè)計軟件改進了性能、提升了功能性、解決了潛在的設(shè)計延遲等,在工業(yè)領(lǐng)域率先提供fpga與mask-programmed devices開發(fā)的統(tǒng)一工作流程。 altera q
27、uartus ii 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。 altera quartus ii (3.0和更高版本)設(shè)計軟件是業(yè)界唯一提供fpga和固定功能hardcopy器件統(tǒng)一設(shè)計流程的設(shè)計工具。工程師使用同樣的低價位工具對stratix fpga進行功能驗證和原型設(shè)計,又可以設(shè)計hardcopy stratix器件用于批量成品。系統(tǒng)設(shè)計者現(xiàn)在能夠用quartus ii軟件評估hardcopy stratix器件的性能和功耗,相應(yīng)地進行最大吞吐量設(shè)計。 altera的quartus ii可編程邏輯軟件屬于第四代pld開發(fā)平臺。
28、該平臺支持一 個工作組環(huán)境下的設(shè)計要求,其中包括支持基于internet的協(xié)作設(shè)計。quartus平臺與cadence、exemplarlogic、mentorgraphics、synopsys和synplicity等eda供應(yīng)商的開發(fā)工具相兼容。改進了軟件的logiclock模塊設(shè)計功 能,增添 了fastfit編譯選項,推進了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。altera quartus ii提供了完全集成且與電路結(jié)構(gòu)無關(guān)的開發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計的全部特性,包括:可利用原理圖、結(jié)構(gòu)框圖、veriloghdl、ahdl和vhdl完成電路描述,并將其保存為設(shè)計實體文件;芯片(電
29、路)平面布局連線編輯; logiclock增量設(shè)計方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對原始系統(tǒng)的性能影響較小或無影響的后續(xù)模塊;功能強大的邏輯綜合工具;完備的電路功能仿真與時序邏輯仿真工具;定時/時序分析與關(guān)鍵路徑延時分析;可使用signaltap ii邏輯分析工具進行嵌入式的邏輯分析;支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件;使用組合編譯方式可一次完成整體設(shè)計流程;自動定位編譯錯誤;高效的期間編程與驗證工具;可讀入標準的edif網(wǎng)表文件、vhdl網(wǎng)表文件和verilog網(wǎng)表文件;能生成第三方eda軟件使用的vhdl網(wǎng)表文件和verilog網(wǎng)表文件。6.1
30、.2 創(chuàng)建一個quartus工程在quartus軟件中利用創(chuàng)建工程向?qū)В╪ew project wizard)創(chuàng)建一個新的工程。在向?qū)е行枰付üこ痰墓ぷ髂夸?、工程名以及頂層文件名(工程名和頂層文件名必須一致),同時指定工程中所需要用到的設(shè)計文件、其他源文件、用戶庫及第三方eda工具。6.1.3 創(chuàng)建cpu系統(tǒng)模塊a 啟動sopc builder:點擊tools-sopc builder,在彈出的create new system對話框中,輸入系統(tǒng)名稱為cpu并選擇目標硬件語言為vhdl。b 定目標fpga和時鐘設(shè)置:在target欄中選擇unspecified board,在device f
31、amily欄中指定目標板所使用的類型,此處為stratix。指定系統(tǒng)的頻率為50mhz。c 添加nios處理器內(nèi)核:在元件列表中的avalon components目錄下雙擊nios2 process-altera corporation,出現(xiàn)altera nios配置向?qū)?,從nios core選項卡的三種類型的cpu中選擇經(jīng)濟型的nios/e,其它的不變,點擊next直到出現(xiàn)jtag debug module選項卡,為cpu添加jtag調(diào)試模塊為level 1,支持軟件斷點調(diào)試。最后單擊finish完成處理器配置。d 添加片內(nèi)存儲器:在元件列表中的avalon components目錄mem
32、ory組件下的on-chip memory0,設(shè)置memory width為32位,total memory size為4kbytes。再依此添加1個on-chip memory1。 e 添加一個jtag uart內(nèi)核:在元件列表中的avalon components目錄communication組件下的jtag uart,進入向?qū)е付▽慽fo緩沖區(qū)的深度設(shè)為64字節(jié),irq閾值為8。讀fifo緩沖區(qū)的深度設(shè)為64字節(jié),irq閾值為8。f 添加pio:在元件列表中的avalon components目錄other組件下的pio,出現(xiàn)avalon pio配置向?qū)?,寬度設(shè)置為8,direction
33、欄選擇為input ports only,即為輸入模式,輸入8位數(shù)據(jù),重命名為pio_i_re 。再添加一個8位的輸入pio_i_im。按照同樣的方法,添加2個16位的pio作為輸出口,分別命名為pio_i_re和pio_i_im。6.1.4 建立圖形設(shè)計文件圖6 cpu模塊圖選擇file-new工作菜單,選擇對話框中的block diagram/schmatic file,點擊ok按鈕,打開圖形編輯對話框。在圖形編輯器中,雙擊空白處,把剛才建立的模塊調(diào)入,就完成了如圖6所示的功能模塊。6.2 nios部分的系統(tǒng)設(shè)計6.2.1 nios簡介nios嵌入式處理器是fpga生產(chǎn)廠商alters推出
34、的軟核(soft core ) cpu,是一種面向用戶的,可以靈活定制的通用risc(精簡指令集架構(gòu))嵌入式cpu。 nios以軟核的方式提供給用戶,并專為在altera的fpga上實現(xiàn)作了優(yōu)化,用于sopc(片上可編程系統(tǒng))集成,最后在fpga上實現(xiàn)。nios在fpga上實現(xiàn)具有一系列不同于普通嵌入式cpu系統(tǒng)的特性,它的外設(shè)可以靈活選擇或增刪,可以自定制用戶邏輯為外設(shè),可以允許用戶定制自己的指令集,設(shè)計者可以使用nios加上外部的flash、sram來構(gòu)成一個嵌入式處理器系統(tǒng)。nios嵌入式cpu是一種專門為單芯片可編程系統(tǒng)(sopc)設(shè)計應(yīng)用而優(yōu)化的cpu軟核。sopc builder是
35、alters公司為硬件設(shè)計人員開發(fā)的一套系統(tǒng)設(shè)計工具,通過它可以創(chuàng)建nios cpu設(shè)計項目,從而為設(shè)計人員提供sopc設(shè)計必需的軟硬件設(shè)計平臺。利用sopcbuilder創(chuàng)建nios cpu設(shè)計項目之后,主要生成以下3方面的結(jié)果:首先,進行系統(tǒng)內(nèi)存映像一致性檢查,外設(shè)地址和中斷優(yōu)先權(quán)的統(tǒng)一,以及cpu有效入口范圍的正確性檢查。sopc builder將報告檢查過程中出現(xiàn)的錯誤,并提示設(shè)計者修正錯誤。然后,對于不同的cpu系統(tǒng)進行軟件開發(fā)將對應(yīng)不同的編譯器、開發(fā)平臺及開發(fā)包。sopc builder創(chuàng)建 nios cpu成功后,也將為用戶創(chuàng)建好的特定的nios系統(tǒng)生成一個定制的軟件開發(fā)包(sd
36、k)。最后,nios系統(tǒng)硬件設(shè)計人員也將得到一個sopc builder生成的nios硬件設(shè)計文件,從而將nios cpu應(yīng)用在整個硬件系統(tǒng)中。altera推出的nios ii系列嵌入式處理器擴展了目前世界上最流行的軟核嵌入式處理器的性能,把nios ii嵌入到altera的所有fpga中,例如stratixii、stratix、cycloneii,cyclone、apex,acex和hardcopy系列器件中,用戶可以獲得超過200 dmips的性能,用戶可以從三種處理器以及超過60個的ip核中選擇所需要的,nios ii系統(tǒng)為用戶提供了最基本的多功能性,設(shè)計師可以以此來創(chuàng)建一個最適合他們需
37、求的嵌入式系統(tǒng)。使用nios ii處理器的用戶可以根據(jù)他們的需要來調(diào)整嵌入式系統(tǒng)的特性、性能以及成本,快速使得產(chǎn)品推向市場,擴展產(chǎn)品的生命周期,并且避免處理器的更新?lián)Q代。6.2.2 啟動nios ide在alter sopc builder nios-cpu窗口中system generation欄中點擊run nios ide按鈕。在彈出的對話框中,選擇工作場所。6.2.3 建立新的軟件工程(1)選擇ide軟件中file-new-c/c+ application命令。(2)在出現(xiàn)的對話框中確定以下選項:在name欄填入新建項目的項目名為fft。確定選中use default location
38、欄。在select target hardware中指定當前硬件設(shè)計系統(tǒng)為nios_fft。(3)點擊finish按鈕后,新建的工程就會添加到工作區(qū)中,同時nios ide會創(chuàng)建一個系統(tǒng)庫項目。6.2.4 編程思想及程序框圖創(chuàng)建完工程以后,需要在窗口的編輯區(qū)中輸入fft的c語言程序,其編程思想及程序框圖如圖。仔細觀察圖4,還可歸納出一些對編程序有用的運算規(guī)律;第l級中,每個蝶形的兩個輸入數(shù)據(jù)相距個點;同一旋轉(zhuǎn)因子對應(yīng)著間隔為點的個蝶形??偨Y(jié)上述運算規(guī)律,便可采用下述運算方法。先從輸入端(第級)開始,逐級進行,共進行m級運算。在進行第l級運算時,依次求出個不同的旋轉(zhuǎn)因子,沒求出一個旋轉(zhuǎn)因子,就計
39、算完它對應(yīng)的所有個蝶形。這樣,我們可用三重循環(huán)程序?qū)崿F(xiàn)dit-fft運算,程序框圖如圖7所示。另外,dit-fft算法的輸出x(k)為自然順序,但為了適應(yīng)原位計算,其輸入序列不是按x(n)的自然順序排序,這種經(jīng)過m1次偶奇抽選后的排序稱為序列x(n)的倒序。程序框圖中的倒序框就是成這一功能的。圖7 dit-fft運算和程序框圖6.2.5 序列的倒序dit-fft算法的輸入序列的排序看起來似乎很亂,但仔細分析就會發(fā)現(xiàn)這種倒序是很有規(guī)律的。由于,所以順序數(shù)可用位二進制數(shù)()表示。次偶奇時域抽選過程如圖6所示。第一次按最低位的和將x(n)分解為偶奇兩組,第二次又按次低位的、值分別對偶奇組分解;依次類
40、推,第次按位分解,最后所得二進制倒序數(shù)如圖所示。圖 形成倒序的樹狀圖(n=)表列出了時以二進制數(shù)表示的順序數(shù)和倒序數(shù),由表顯而易見,只要將順序數(shù)()的二進制位倒置,則得對應(yīng)的二進制倒序值()。按這一規(guī)律,用硬件電路和匯編語言程序產(chǎn)生倒序數(shù)很容易。但用高級語言程序?qū)崿F(xiàn)時,直接倒置二進制數(shù)位是不行的,因此必須找出產(chǎn)生倒序數(shù)的十進制運算規(guī)律。由表1可見,自然順序數(shù)增加,是在順序數(shù)的二進制數(shù)最低位加,向左進位。而倒序數(shù)則是在位二進制數(shù)最高位加,逢2向右進位。例如,在(000)最高位加1,則得(100),而(100)最高位為1,所以最高位加要向次高位加進位,其實質(zhì)是將最高位變?yōu)?,再在次高位加。用這種算法
41、,可以從當前任一倒序值求得下一個倒序值。表 順序和倒序二進制數(shù)對照表順序十進制數(shù)i二進制數(shù)倒序二進制數(shù)十進制數(shù)0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 4 2 0 1 0 0 1 0 2 3 0 1 1 1 1 0 6 4 1 0 0 0 0 1 1 5 1 0 1 1 0 1 5 6 1 1 0 0 1 1 3 7 1 1 1 1 1 1 7 為了敘述方便,用j表示當前倒序書的十進制數(shù)值。對于n=,m位二進制數(shù)最高位的權(quán)值為n/2,且從左向右二進制位的權(quán)值依次為n/4,n/,2,1。因此,最高位加1相當于十進制運算j+n/2。如果最高位是0(j<n/2),則直接由j+
42、n/2得下一個倒序值;如果最高位是1(),則要將最高位變成0(),次高位加1(j+n/4)。但次高位加1時,同樣要判斷0、1值,如果0(j<n/4),則直接加1(),否則將次高位變成0(),再判斷下一位;依次類推,直到完成最高位加,適向右進位的運算。圖 倒序規(guī)律形成倒序j后,將原存儲器中存放的輸入序列重新按倒序排列。設(shè)原輸入序列x(n)先按自然順序存入數(shù)組a中。例如,對n=8,a(0),a(1),a(2),a(7)中依次存放著x(0),x(1),x(7)。對x(n)的重新排序(倒序)規(guī)律如圖所示。倒序的程序框圖如圖10所示,圖中的虛線框內(nèi)是完成計算倒序值的運算流程圖。由圖可見,第一個序列
43、值x(0)和最后一個序列值x(n1)不需要重排;當i=j時不需要交換,所以圖10中,順序數(shù)i的起始、終止值分別為1和n;倒序數(shù)j的起始值為n/2。另外,為了避免再次調(diào)換前面已調(diào)換過的一對數(shù)據(jù),框圖中只對i<j的情況調(diào)換a(i)和a(j)的內(nèi)容。圖10 倒序流程框圖6.2.6 輸入程序與編譯工程在nios編輯區(qū)的窗口中輸入fft的c語言程序(程序見附錄)。然后用鼠標右鍵點擊count_binary_0,在彈出的菜單中選擇build project選項。在編譯開始后,nios ide會首先編譯系統(tǒng)庫工程以及其他相關(guān)的工程,然后再編譯主工程,并把源代碼編譯到<project name&g
44、t;.elf文件中。編譯完成后會在task瀏覽器中顯示警告和錯誤信息。6.2.7 運行與調(diào)試程序編譯成功后,就可以運行程序了。如果編譯出現(xiàn)錯誤,根據(jù)錯誤提示信息改正程序或項目設(shè)置錯誤,重新編譯知道成功為止。 在主窗口中選擇run-debug命令,在對話框main標簽中選擇fft工程,單擊debug,就開始調(diào)試,調(diào)試器首先會下載程序,在main()處設(shè)置斷點并準備開始執(zhí)行程序。然后可選擇step into、step over等通用的調(diào)試控制來跟蹤程序。7 結(jié)論本文提出了用sopc實現(xiàn)數(shù)字信號處理的一種設(shè)計思想,對基于nios的fft的軟件實現(xiàn)進行了設(shè)計,重點設(shè)計實現(xiàn)了fft算法中的蝶形處理單元。
45、本文中fft設(shè)計采用了c語言實現(xiàn),實現(xiàn)了存取數(shù)據(jù)、旋轉(zhuǎn)因子計算、蝶形計算并進行了仿真。本設(shè)計,一方面為擴展多點fft實時信號處理器,在技術(shù)和實踐方面作了充分的準備;另一方面也證明隨著可編程器件的發(fā)展,用軟件法實現(xiàn)高速fft算法是完全可行的。 隨著高速數(shù)字信號處理的要求,sopc在數(shù)字信號處理中會得到越來越廣泛的使用。在具體應(yīng)用過程中會存在一些實際問題,如有限字長影響、并行和串行結(jié)構(gòu)的選擇和sopc內(nèi)部結(jié)構(gòu)對設(shè)計的影響等。這些問題在實際應(yīng)用中都需要慎重考慮。8 致謝本課題在選題及研究過程中得到石偉老師的悉心指導。石老師多次詢問研究進程,并為我指點迷津,幫助我開拓研究思路,精心點撥、熱忱鼓勵。石老
46、師一絲不茍的作風,嚴謹求實的態(tài)度,踏踏實實的精神,不僅授我以文,而且教我做人。對石老師的感激之情是無法用言語表達的。感謝物理學院吳伶錫院長、蔣洪沙書記、詹杰老師、羅韓君老師等老師為我提供的指導以及良好的研究條件,謹向各位表示誠摯的敬意和謝忱。還要感謝和我一起作畢業(yè)設(shè)計的一些同學,你們在本次設(shè)計里對我的幫助、鼓勵,使我克服了許多困難來完成此次畢業(yè)設(shè)計。最后感謝我的母校-湖南科技大學四年來對我的大力栽培。參考文獻1程佩青. 數(shù)字信號處理教程m.清華大學出版社.19952周立功. nios2 sopc嵌入式系統(tǒng)實驗教程m.廣州致遠電子有限公司.2006-05-15.27-283丁玉美,高西全. 數(shù)字信號處理m.西安電子科技大學出版社.2000-10.97-1054蔣清明,黃曉宇. c語言程序設(shè)計教程m.湖南高等教育出版社.19995任愛鋒,初秀琴. 基于fpga的嵌入式系統(tǒng)設(shè)計m.西安電子科技大學出版社.2005-02.60-1256黃順吉. 數(shù)字信號處理及應(yīng)用.m國防工業(yè)出版社.19827李麗. 基于ip的集成電路設(shè)計方法.r南京大學
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 司機車主違章合同范本
- 南京勞務(wù)派遣合同范例
- 分租店鋪合同范例
- 廠房出售合同范本
- 公路測繪合同范本
- 分攤費用合同范例
- 三方供貨協(xié)議合同范本百度
- 冠名廣告贊助合同范本
- 發(fā)光字協(xié)議合同范本
- 印刷電子合同范本
- 2024年甘肅天水麥積山石窟藝術(shù)研究所招聘工作人員考試真題
- 2025年山東省榮成市屬事業(yè)單位招聘崗位及歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 火星表面材料分析-深度研究
- 《職業(yè)技能等級評價規(guī)范編制指南編制說明》
- 《教育強國建設(shè)規(guī)劃綱要(2024-2035年)》解讀講座
- 畜禽養(yǎng)殖場惡臭污染物排放及其處理技術(shù)研究進展
- 超聲內(nèi)鏡引導下穿刺活檢術(shù)的配合及護理
- 新生兒常見的產(chǎn)傷及護理
- 代寫回憶錄合同
- 2024年10月自考00149國際貿(mào)易理論與實務(wù)試題及答案
- 2024年下半年教師資格考試《中學教育知識與能力》真題及答案解析
評論
0/150
提交評論