版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> 課程名稱:FPGA課程設(shè)計</p><p> 設(shè)計題目: 正交信號發(fā)生器 </p><p> 系 別: 通信與控制工程系 </p><p>
2、專 業(yè): 電子信息工程 </p><p> 班 級: 10級電子信息工程3班 </p><p> 學(xué)生姓名: </p><p> 學(xué) 號: </p>&l
3、t;p> 起止日期: 2013年6月8日 ~ 2012年6月18日 </p><p> 指導(dǎo)教師: </p><p> 教研室主任: </p><p><b> 摘 要</b></p><p&g
4、t; EDA技術(shù)是指以計算機為工作平臺,融合了應(yīng)用電子技術(shù)、計算機技術(shù)、信息處理及智能化技術(shù)的最新成果,進(jìn)行電子產(chǎn)品的自動設(shè)計。本文詳細(xì)介紹了基于FPGA的DSP開發(fā)技術(shù),提供了一種設(shè)計正交信號發(fā)生器的方案。在信號檢測和信號處理中經(jīng)常需要正交信號。由于正交方波信號較易得到,所以工程人員進(jìn)行相關(guān)檢測時所采用的正交信號源通常為方波信號。但通過對方波信號作傅立葉分析可知,這種信號含有豐富的諧波分量,嚴(yán)重影響相關(guān)檢測中的接收精度及檢測靈敏度。
5、采用可控的正、余弦波作正交信號,就可以有效地避免諧波問題。本文采用Matlab/DSP Builder建立模型來實現(xiàn)正交信號發(fā)生器,使用自頂向下的設(shè)計方法,設(shè)計簡單,能夠提高設(shè)計效率。利用DSP Builder 建立起數(shù)學(xué)模型,實現(xiàn)了模塊化的設(shè)計變得直觀。在Simulink中進(jìn)行仿真驗證,通過Signal Compiler 將模型轉(zhuǎn)換成硬件描述語言,經(jīng)過QuartusⅡ仿真正確后,下載到FPGA里,輸出的正交信號能靈活的調(diào)頻,調(diào)相,調(diào)幅
6、,實現(xiàn)全數(shù)字化設(shè)計。該方案簡化了硬件設(shè)計的難度。對各個模塊的參數(shù)進(jìn)行簡單的設(shè)置就能完成復(fù)雜的電子設(shè)計系統(tǒng)設(shè)計。</p><p> 關(guān)鍵詞:EDA技術(shù);DSP Builder;正交信號發(fā)生器;Signal Compiler</p><p><b> 目 錄</b></p><p><b> 設(shè)計要求1</b><
7、;/p><p> 1、方案論證與對比1</p><p><b> 1.1方案一1</b></p><p><b> 1.2 方案二1</b></p><p><b> 1.3方案選擇2</b></p><p> 2、系統(tǒng)總體方案設(shè)計及實現(xiàn)
8、2</p><p> 2.1正交信號發(fā)生器設(shè)計2</p><p> 2.1.1 DDS原理及設(shè)計2</p><p> 2.1.2 頻率字輸入的計算6</p><p> 2.1.3 輸出波形峰峰值的計算6</p><p> 2.1.4 相位差的計算6</p><p> 2.1
9、.5正交信號發(fā)生器電路模型圖7</p><p> 2.1.6 Simulink模型的仿真8</p><p> 2.2 SignalCompiler的使用9</p><p> 2.2.1 分析當(dāng)前的模塊9</p><p> 2.2.2 設(shè)置SignalCompiler9</p><p> 2.2.3
10、把模型文件MDL 轉(zhuǎn)換成VHDL9</p><p> 2.2.4 綜合9</p><p> 2.2.5 QuartusⅡ試配10</p><p> 2.3嵌入式鎖相環(huán)的設(shè)計10</p><p> 2.4 引腳的鎖定10</p><p> 3、設(shè)計結(jié)果與結(jié)論11</p><p&g
11、t; 4、結(jié)束語及致謝11</p><p> 5、元器件及儀器設(shè)備明細(xì)表12</p><p><b> 6、參考文獻(xiàn)13</b></p><p><b> 7、程序清單13</b></p><p><b> 正交信號發(fā)生器</b></p><
12、;p><b> 設(shè)計要求</b></p><p> 能通過按鍵進(jìn)行幅度控制,輸出信號的頻率在10—50kHZ,或者固定在某一頻率上,要求峰-峰值大于3V,且輸出波形不失真。</p><p><b> 1、方案論證與對比</b></p><p><b> 1.1方案一</b></p&
13、gt;<p> 該方案根據(jù)矩陣式鍵盤輸入給FPGA送出頻率控制字與相位控制字,用于設(shè)定輸出正弦波的頻率與相位。高速D/A轉(zhuǎn)換器用于正弦波的DA轉(zhuǎn)換。FPGA構(gòu)成DDS的核心部分,用于接收送來的頻率字與相位字,同時給DA轉(zhuǎn)換器輸出正弦波數(shù)據(jù)。采用字符型液晶顯示屏實時顯示輸出的頻率與相位。該方案需借助QuartusⅡ來完成。</p><p><b> 1.2 方案二</b>&l
14、t;/p><p> 該方案是基于DSP Builder與DDS并借助于MATLAB進(jìn)行設(shè)計的。首先在Matlab中DSP Build的Simulink中進(jìn)行建模,系統(tǒng)仿真通過SignalCompiler將模型設(shè)計文件轉(zhuǎn)換成相應(yīng)的硬件描述語言(VHDL),在QuartusⅡ平臺上進(jìn)行綜合生成網(wǎng)表文件,并適配下載至FPGA。在這個方案中,有兩路正弦信號,一路為參考信號,另一路是可數(shù)控的移動信號,并且這兩路可同步進(jìn)行幅度
15、和頻率數(shù)控,即對于這兩路輸出的正弦信號,在相位、頻率和幅度3個參數(shù)上都能完成等步長數(shù)控步進(jìn),而且還能對指定的參數(shù)進(jìn)行設(shè)定。</p><p><b> 1.3方案選擇</b></p><p> 方案一是基于QuartusⅡ,在設(shè)計的過程中,利用VHDL完成電路設(shè)計,必須借助于EDA工具中的綜合器、適配器、時序仿真器和編程器等工具進(jìn)行相應(yīng)的處理,才能使此項設(shè)計在FPG
16、A上完成硬件實現(xiàn)并得到硬件測試,在進(jìn)行HDL文本輸入設(shè)計流程中比較繁瑣,而且容易出錯。而方案二是基于DSP Builder進(jìn)行手動流程設(shè)計,在設(shè)計過程中,DSP Builder會自動完成VHDL的轉(zhuǎn)換、綜合、適配,而不像方案一那樣要進(jìn)行HDL文本輸入,這樣的話就能避免文本輸入過程中的絕大多數(shù)錯誤。</p><p> 因而我們選擇方案二。</p><p> 2、系統(tǒng)總體方案設(shè)計及實現(xiàn)&l
17、t;/p><p> 2.1正交信號發(fā)生器設(shè)計</p><p> 2.1.1 DDS原理及設(shè)計</p><p> 直接數(shù)字頻率合成技術(shù)(Direct Digital Synthesis,DDS)是一種從相位概念出發(fā)直接合成所需要的波形的新的全數(shù)字頻率合成技術(shù),該技術(shù)具有頻率分辨率高、頻率變化速度快、相位可連續(xù)性變化等特點,在數(shù)字通信系統(tǒng)中被廣泛采用,是信號生成的最佳
18、選擇。</p><p> DDS主要由相位累加器、相位調(diào)制器、正弦ROM查找表、D /A轉(zhuǎn)換器等組成。系統(tǒng)時鐘clk由一個穩(wěn)定的晶體振蕩器產(chǎn)生,用來同步整個合成器的各組成部分。同步寄存器的使用是為了當(dāng)輸入的頻率字改變時不會干擾相位累加器的正常工作。相位累加器是整個DDS的核心,它由N位加法器和N位相位寄存器級聯(lián)構(gòu)成,類似一個簡單的加法器,完成上面推導(dǎo)中的相位累加功能。每來一個時鐘脈沖,加法器就將輸入的N位頻率字
19、與相位寄存器輸出的累加相位數(shù)據(jù)相加,然后將相加后的結(jié)果送至相位累加器的輸入端,相位寄存器就將在上一個時鐘作用后產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個時鐘的作用下繼續(xù)將相位數(shù)據(jù)與輸入的頻率字相加。</p><p> 當(dāng)相位累加器累加滿量(2π) 時,就會產(chǎn)生一次溢出,完成一個周期性的動作,這個周期就是合成信號的一個周期,累加器的溢出頻率就是DDS的合成信號頻率。相位調(diào)制器接收相位累加器的相位輸出
20、,并與一個相位偏移值相加,主要用于信號的相位調(diào)制, 如PSK(相移鍵控)等。在不使用時可去掉該部分,或加一個固定的相位字輸入。注意相位字輸入也要用同步寄存器保持同步,但相位字輸入的寬度M與頻率字輸入N往往是不相等的,一般M < N。</p><p> 正弦ROM查找表的作用是完成查表轉(zhuǎn)換,或理解為相位到幅度的轉(zhuǎn)換。將相位累加器或相位調(diào)制器輸出的相位數(shù)據(jù)作為取樣地址,來尋找正弦ROM表進(jìn)行相位到幅度的變換,
21、輸出不同的幅度編碼。經(jīng)D /A轉(zhuǎn)換器得到相應(yīng)的階梯波,最后經(jīng)過低通濾波器對階梯波進(jìn)行平滑處理,得到由輸入的頻率字決定的連續(xù)變化的輸出正弦波。下面的即為基本DDS結(jié)構(gòu)的常用參數(shù)計算公式:</p><p> 輸出頻率: </p><p><b> 頻率字: </b></p>
22、<p> 其中是頻率控制字,為系統(tǒng)基準(zhǔn)時鐘的頻率值,N為相位累加器的數(shù)據(jù)位寬,也是頻率控制字的數(shù)據(jù)位寬。</p><p> 下圖為 DDS基本結(jié)構(gòu)原理圖,仔細(xì)觀察。</p><p> 頻率控制字的可調(diào)整性使得系統(tǒng)輸出頻率非常容易調(diào)整。輸出正弦波頻率f=fclk*frequword/2^20,系統(tǒng)時鐘,頻率控制字DDS系統(tǒng)時鐘12MHz,異步于CPU時鐘20bit頻率控制
23、字,8bit相位控制字,8bit數(shù)據(jù)輸出每波形抽樣256個點。</p><p><b> 相位累加器</b></p><p> 相位累加器結(jié)構(gòu)如圖(4)所示。假設(shè)系統(tǒng)時鐘為Fc,輸出頻率為Fout。每次轉(zhuǎn)動一個角度360°/2N, 則可以產(chǎn)生一個頻率為Fc/2N 的正弦波的相位遞增量。那么只要選擇恰當(dāng)?shù)念l率控制字M,使得 Fout / Fc= M / 2
24、N,就可以得到所需要的輸出頻率Fout,F(xiàn)out = Fc*M / 2N,相位幅度轉(zhuǎn)換通過相位累加器,我們已經(jīng)得到了合成Fout 頻率所對應(yīng)的相位信息,然后相位幅度轉(zhuǎn)換器把0°~360°的相位轉(zhuǎn)換成相應(yīng)相位的幅度值。</p><p> ?。?)相位累加器結(jié)構(gòu)如圖(4)所示。</p><p> ?。?)如圖5所示,該部分是頻率字輸入,不同的頻率字輸入會使得信號輸出波形的頻
25、率不同。</p><p> ?。?)如圖6所示,該部分是輸入地址為6位,輸出值位寬為8的正弦查找表模塊,且輸入地址總線為無符號整數(shù)。</p><p> 圖6 LUT模塊 </p><p><b> 高速D/A模塊</b></p><p> GW_ADDA板含兩片10位超高速DAC(轉(zhuǎn)換速率最高150MHz),D
26、/A全部處于使能狀態(tài),除了數(shù)據(jù)線外,任一器件的控制信號線只有時鐘線,這有利于高速控制和直接利用MATLAB/DSP Builder工具的設(shè)計。GW_ADDA板上工作時鐘必須由FPGA的I/O口提供,優(yōu)點是時鐘頻率容易變化,且可通過Cyclone中的PLL的到幾乎任何時鐘頻率。由此即可測試DAC的最高轉(zhuǎn)換頻率。 </p><p> 兩個電位器可分別調(diào)協(xié)兩個D/A輸出的幅度(輸出幅度峰峰值不可大于5V,否則波形失真
27、);模擬信號從接插口的2針“AIN”輸入,J1和J2分別是模擬信號輸出的PA、PB口,也可在兩掛鉤處輸出,分別是兩個10位DA5651輸出口。電路原理圖如圖7所示。</p><p> 相位累加器結(jié)構(gòu)如圖(4)所示。假設(shè)系統(tǒng)時鐘為Fc,輸出頻率為Fout。每次轉(zhuǎn)動一個角度360°/2N, 則可以產(chǎn)生一個頻率為Fc/2N 的正弦波的相位遞增量。</p><p> 下圖為高速DA模
28、塊電路原理圖,認(rèn)真理解并運用:</p><p> 圖7 高速DA模塊電路原理圖</p><p> 2.1.2 頻率字輸入的計算</p><p> 由DDS的頻率輸入字公式:計算,式中N為相位累加器的數(shù)據(jù)位寬,也是頻率輸入字的數(shù)據(jù)位寬,fclk是系統(tǒng)基準(zhǔn)時鐘的頻率值。本設(shè)計中N=20,fclk=12MHZ,fout=50KHZ根據(jù)計算得出頻率輸入字為4369。&
29、lt;/p><p> 2.1.3 輸出波形峰峰值的計算</p><p> 本設(shè)計中正弦查找模塊輸入地址為8位,輸出位寬為10位,且輸入地址總線為無符號整數(shù),可設(shè)置起始值為0、結(jié)束值為2π、步進(jìn)值為2π/26。為了得到完整滿度的波形輸出,計算式可寫成:</p><p> 511*sin[0:2*pi/2^8]:2*pi]+512</p><p&g
30、t; 2.1.4 相位差的計算</p><p> 本設(shè)計用8bit相位控制字,8bit數(shù)據(jù)輸出每波形抽樣2^8=256個點,所以每按一鍵增加或減小相位差為3600/256=1.400 符合設(shè)計要求。</p><p> 2.1.5正交信號發(fā)生器電路模型圖</p><p> 兩個電位器可分別調(diào)協(xié)兩個D/A輸出的幅度,使用時一定要調(diào)節(jié)好,使之能調(diào)幅。</p&
31、gt;<p> 基于DDS的正交信號發(fā)生器是整個系統(tǒng)的設(shè)計核心部分,其電路模型圖如圖8所示。</p><p> 圖8 基于DDS的正交信號發(fā)生器MDL模型</p><p> DDS用來產(chǎn)生頻率、相位和幅度可變的正弦波。DDS的工作原理是利用正弦信號的相位與時間呈線性關(guān)系的特性”1,采用相位累加方法作為地址,讀出相應(yīng)ROM中的值,得到正弦信號的瞬時幅值,實現(xiàn)頻率合成。DD
32、S包括頻率控制字、相位控制字、同步寄存器、相位累加器、波形存儲器、數(shù)模轉(zhuǎn)換器、低通濾波器。</p><p> 在系統(tǒng)時鐘的控制下.相位累加器對頻率控制字K進(jìn)行累加,得到相位碼,相位碼尋址ROM得到幅值碼,經(jīng)過數(shù)模轉(zhuǎn)換后得到相應(yīng)的階梯波,再經(jīng)過低通濾波得到連續(xù)平滑的、由頻率控制字K決定的模擬輸出波形。DDS可以用來產(chǎn)生多種波形,只要改變ROM中的數(shù)據(jù).預(yù)先設(shè)置成正弦波、余弦波等,根據(jù)查表就可以實現(xiàn)不同的波形。利用
33、DSP</p><p> Builder設(shè)計DDS。然后轉(zhuǎn)換成VHDL。DDS的分辨率在相位累加器的位數(shù)^,足夠大時,理論上可以獲得相應(yīng)的分辨精度。DDS是一個全數(shù)字結(jié)構(gòu)的開環(huán)系統(tǒng),無反饋環(huán)節(jié),速度非??臁DS的相位誤差主要依賴于時鐘的相位特性,相位誤差小,相位是連續(xù)變化的,形成的信號具有良好的頻譜。這是傳統(tǒng)的直接頻率合成方法無法實現(xiàn)的。相位字輸入的數(shù)據(jù)寬度M往往小于相位寄存器字長,實際的DDS結(jié)構(gòu)中Ⅳ很大。
34、</p><p> 其中Subsystem的原理圖如圖9</p><p> 圖9 Subsystem的原理圖</p><p> 2.1.6 Simulink模型的仿真</p><p> 在Sinout模型編輯窗口中,選擇Slimulation→Start命令,開始仿真,等待仿真結(jié)束后,雙擊Scope模塊,打開Scope觀察窗口。其仿真
35、波形如圖10</p><p> 圖10 simulink模型仿真圖</p><p> 2.2 SignalCompiler的使用</p><p> 2.2.1 分析當(dāng)前的模塊</p><p> 雙擊Sinout模型中的SignalCompiler模塊,之后單擊Analyze按鈕后,SignalCompiler就會對Sinout模型進(jìn)行
36、分析,檢查模型有無錯誤,并在MATLAB主窗口中彈出對話框,并給出相關(guān)信息。</p><p> 2.2.2 設(shè)置SignalCompiler</p><p> SignalCompiler窗口中大致分為3個功能部分:</p><p><b> 項目設(shè)置選項 </b></p><p><b> 硬件編譯流
37、程</b></p><p><b> 信息框</b></p><p> 2.2.3 把模型文件MDL 轉(zhuǎn)換成VHDL</p><p> 當(dāng)設(shè)置好Device和Synthesis后,右側(cè)的硬件編譯部分就會列出一個操作:</p><p> (1)Convert MDL to VHDL</p>
38、<p> (2) Synthesis</p><p> (3) QuartusⅡ</p><p><b> 2.2.4 綜合</b></p><p> 單擊步驟(2)的圖標(biāo),完成綜合過程。</p><p> 2.2.5 QuartusⅡ試配</p><p> 單擊步驟(3)
39、的圖標(biāo),調(diào)用QuartusⅡ完成編譯試配過程,生成編譯文件。編譯文件可以直接用于FPGA的編譯配置。打開QuartusⅡ后 ,需在VHDL文件程序中實體說明中添加: </p><p> CLK : out std_logic;</p><p><b> 在結(jié)構(gòu)體最后加入:</b></p><p> CLK&
40、lt;=CLOCK;</p><p> 2.3嵌入式鎖相環(huán)的設(shè)計</p><p> 當(dāng)輸出波形頻率較高時,由于采樣一個完整周期的波形數(shù)據(jù)點數(shù)減少,勢必引起波形失真,要消除波形失真,一是可以增加采樣波形數(shù)據(jù)的點數(shù),二是提高系統(tǒng)的主工作時鐘頻率。若不增加外配ROM的情況下,可以使用后一種方法。本系統(tǒng)設(shè)計時在充分利用FPGA的存儲空間的情況下,為了提高波形的輸出頻率(在不失真的條件下),還使
41、用了Cyclone器件中的嵌入式鎖相環(huán),提高系統(tǒng)的主工作時鐘頻率,在實際工作時的主時鐘頻率達(dá)12 MHz。</p><p><b> 2.4 引腳的鎖定</b></p><p> 設(shè)計中各引腳的鎖定如圖11所示。</p><p> 本設(shè)計選擇工作模式1,通過鍵盤控制波形輸出的幅度。</p><p><b>
42、; 圖11各引腳的鎖定</b></p><p><b> 3、設(shè)計結(jié)果與結(jié)論</b></p><p> ?。?)嵌入式邏輯分析儀輸出波形如圖12</p><p> 圖12 嵌入式邏輯分析儀輸出波形</p><p> (2)波形失真度與儲存波形ROM的位數(shù)及主工作時鐘頻率有關(guān)。</p>&
43、lt;p> ?。?)1.,2,3鍵控制幅度,其中1是微調(diào),2,3粗調(diào)。由于我們頻率設(shè)定在一個固定值,在10HZ到50KHZ之間,能夠?qū)崿F(xiàn)在峰峰值大于3V波形不失真。且波形較穩(wěn)定。</p><p><b> 4、結(jié)束語及致謝</b></p><p> 在本文的撰寫過程中,老師作為我們的指導(dǎo)老師,他們治學(xué)嚴(yán)謹(jǐn),學(xué)識淵博,視野廣闊,為我營造了一種良好的學(xué)術(shù)氛圍。置
44、身其間,耳濡目染,潛移默化,使我不僅接受了全新的思想觀念,樹立了明確的學(xué)術(shù)目標(biāo),領(lǐng)會了基本的思考方式,掌握了通用的研究方法,而且還明白了許多待人接物與為人處世的道理。其嚴(yán)以律己、寬以待人的崇高風(fēng)范,樸實無華、平易近人的人格魅力,與無微不至、感人至深的人文關(guān)懷,令人如沐春風(fēng),倍感溫馨。</p><p> 這段時間的學(xué)習(xí),使我們了解到了理論和實際之間的差別,第一次真正接觸到了實際中的問題,并通過和老師、同學(xué)交流,加
45、強了自身的分析問題、解決問題的能力。同時,我們也發(fā)現(xiàn)了自己在某些方面的不足,這是我們以后要加以改進(jìn)的方面。對于如何運用MATLAB與DSPbuilder有了更好的運用,使我們對硬件課程的學(xué)習(xí)有了更濃的興趣, 使我們對我們所學(xué)的這個方向服了更濃的興趣。雖然在做課設(shè)的過程中遇到過許多困難,尤其是思路一開始不正確的時候也產(chǎn)生過放棄的念頭,但最終還是堅持了下來,終于把這個課設(shè)完整圓滿的做完了。</p><p> 在此特
46、向老師致以衷心的謝意!向他們無可挑剔的敬業(yè)精神、嚴(yán)謹(jǐn)認(rèn)真的治學(xué)態(tài)度、深厚的專業(yè)修養(yǎng)和平易近人的待人方式表示深深的敬意!</p><p> 5、元器件及儀器設(shè)備明細(xì)表</p><p><b> 6、參考文獻(xiàn)</b></p><p> [1].邊計年,薛宏熙譯. 用VHDL設(shè)計電子線路. 北京:清華大學(xué)出版社,2000.</p>
47、<p> [2].黃正謹(jǐn),徐堅等. CPLD系統(tǒng)設(shè)計技術(shù)入門與應(yīng)用. 北京:電子工業(yè)出版社,2002.</p><p> [3].蔣璇,蔵春華. 數(shù)學(xué)系統(tǒng)設(shè)計與PLD應(yīng)用技術(shù). 北京:電子工業(yè)出版社,2001..</p><p> [4].李宗伯,王蓉暉譯. VHDL設(shè)計表示和綜合. 北京:機械工業(yè)出版社,2002.</p><p> [
48、5].潘松,黃繼業(yè),王國棟. 現(xiàn)代DSP技術(shù). 西安:西安電子科技大學(xué)出版社,2003.</p><p> [6].王金明,楊吉斌. 數(shù)字系統(tǒng)設(shè)計與Verilog HDL. 北京:電子工業(yè)出版社,2002.</p><p> [7].王鎖萍. 電子設(shè)計自動化(EDA)教程. 成都: 電子科技大學(xué)出版社,2000.</p><p> [8].徐志軍,徐光輝.
49、 CPLD/FPGA開發(fā)與應(yīng)用. 北京:電子工業(yè)出版社,2002.</p><p> [9].Altera Corporation. Altera Digital Library. Altera,2002.</p><p> [10].Xilinx Inc. Data Book 2001. Xilinx,2000.</p><p><b>
50、 7、程序清單</b></p><p> use dspbuilder.dspbuilderblock.all;</p><p> library lpm;</p><p> use lpm.lpm_components.all; library ieee;</p><p> use ieee.std_logic_1164
51、.all;</p><p> use ieee.std_logic_signed.all;</p><p> library dspbuilder;</p><p> Entity biaozhun1 is </p><p> Port(clk:out std_logic;</p><p> clock:
52、in std_logic;</p><p> sclrp :in std_logic:='0';</p><p> Input:in std_logic_vector(7 downto 0);</p><p> Input1:in std_logic_vector(31 downto 0);</p><
53、;p> Input2:in std_logic_vector(7 downto 0);</p><p> Input3:in std_logic_vector(7 downto 0);</p><p> Output:out std_logic_vector(9 downto 0);</p><p> Output1:out s
54、td_logic_vector(9 downto 0)</p><p><b> );</b></p><p> end biaozhun1;</p><p> architecture aDspBuilder of biaozhun1 is</p><p> signalSAOutputO:std_lo
55、gic_vector(9 downto 0);</p><p> signalSAOutput1O:std_logic_vector(9 downto 0);</p><p> signal sclr :std_logic:='0';</p><p> signalA0W:std_logic_vector(32 downt
56、o 0);</p><p> signalA1W:std_logic_vector(9 downto 0);</p><p> signalA2W:std_logic_vector(15 downto 0);</p><p> signalA3W:std_logic_vector(8 downto 0);</p><
57、p> signalA4W:std_logic_vector(32 downto 0);</p><p> signalA5W:std_logic_vector(8 downto 0);</p><p> signalA6W:std_logic_vector(8 downto 0);</p><p> signalA7W:
58、std_logic_vector(33 downto 0);</p><p> signalA8W:std_logic_vector(23 downto 0);</p><p> signalA9W:std_logic_vector(32 downto 0);</p><p> signalA10W:std_logic_vector(1
59、9 downto 0);</p><p> signalA11W:std_logic_vector(19 downto 0);</p><p> signalA12W:std_logic_vector(33 downto 0);</p><p> signalA13W:std_logic_vector(34 downto 0);<
60、/p><p> signalA14W:std_logic_vector(10 downto 0);</p><p> signalA15W:std_logic_vector(10 downto 0);</p><p> signalA16W:std_logic_vector(10 downto 0);</p><p>
61、; signalA17W:std_logic_vector(10 downto 0);</p><p> signalA18W:std_logic_vector(10 downto 0);</p><p><b> Begin</b></p><p> assert (1<0) report altversion
62、 severity Note;</p><p> Output<=SAOutputO;</p><p> Output1<=SAOutput1O;</p><p> -- Global reset circuitry for the input global reset sclrp</p><p> sclr
63、<=sclrp;</p><p> -- Input - I/O assignment from Simulink Block "Input"</p><p> A3W(7 downto 0) <= Input;</p><p> A3W(8) <= '0';</p><
64、p> -- Input - I/O assignment from Simulink Block "Input1"</p><p> A4W(31 downto 0) <= Input1;</p><p> A4W(32) <= '0';</p><p> -- Input - I/O ass
65、ignment from Simulink Block "Input2"</p><p> A5W(7 downto 0) <= Input2;</p><p> A5W(8) <= '0';</p><p> -- Input - I/O assignment from Simulink Block
66、 "Input3"</p><p> A6W(7 downto 0) <= Input3;</p><p> A6W(8) <= '0';</p><p> A0W(32)<='0';</p><p> -- Constant assignment
67、 - Simulink Block "Constant0"</p><p> A1W(9)<='0';</p><p> A1W(8 downto 0)<="000000000";</p><p> -- Constant assignment - Simulink Block &
68、quot;Constant1"</p><p> A2W(15)<='0';</p><p> A2W(14 downto 0)<="000000000000000";</p><p> -- Concatenation Operation - Simulink Block "Bu
69、sConcatenation"</p><p> A8W(22 downto 0) <= A3W(7 downto 0) & A2W(14 downto 0);</p><p> A8W(23)<='0';</p><p> -- Concatenation Operation - Simulink Blo
70、ck "BusConcatenation1"</p><p> A9W(31 downto 0) <= A1W(8 downto 0) & A8W(22 downto 0);</p><p> A9W(32)<='0';</p><p> A16W(10)<='0';&
71、lt;/p><p> A17W(10)<='0';</p><p> A18W(10)<='0';</p><p> -- Output - I/O assignment from Simulink Block "Output"</p><p> Outputi
72、 : SBF generic map(</p><p> width_inl=>11,</p><p> width_inr=>0,</p><p> width_outl=>10,</p><p> width_outr=>0,</p><p> lpm_signed=>Bus
73、IsUnsigned,</p><p><b> round=>0,</b></p><p><b> satur=>0)</b></p><p> port map (</p><p> xin=>A17W,</p><p> yout=>
74、SAOutputO);</p><p> -- Output - I/O assignment from Simulink Block "Output1"</p><p> Output1i : SBF generic map(</p><p> width_inl=>11,</p><p> width_
75、inr=>0,</p><p> width_outl=>10,</p><p> width_outr=>0,</p><p> lpm_signed=>BusIsUnsigned,</p><p><b> round=>0,</b></p><p>&l
76、t;b> satur=>0)</b></p><p> port map (</p><p> xin=>A18W,</p><p> yout=>SAOutput1O);</p><p> --Bus Formatting Simulink Block "AltBus"&l
77、t;/p><p> AltBusi : SBF generic map(</p><p> width_inl=>34,</p><p> width_inr=>0,</p><p> width_outl=>32,</p><p> width_outr=>0,</p>&
78、lt;p> lpm_signed=>BusIsUnsigned,</p><p><b> round=>0,</b></p><p><b> satur=>0)</b></p><p> port map (</p><p> xin =>A7W,&
79、lt;/p><p> yout=>A0W(31 downto 0));</p><p> -- Delay Element - Simulink Block "Delay"</p><p> Delayi : SDelaygeneric map (</p><p> LPM_WIDTH =>
80、; 34,</p><p> LPM_DELAY => 1,</p><p> SequenceLength => 1,</p><p> SequenceValue => 1)</p><p> port map (dataa=>A12W,</p><p> clo
81、ck=>clock,</p><p> ena =>'1',</p><p> sclr =>sclr,</p><p> result=>A7W);</p><p> -- Product Operator - Simulink Block "Prod
82、uct"</p><p> Producti : AltiMult generic map (</p><p> LPM_WIDTHA=>11,</p><p> LPM_WIDTHB=>9,</p><p> PIPELINE=>0,</p><p> one_
83、input=>0,</p><p> lpm =>1,</p><p> lpm_hint=>"UNUSED",</p><p> cst_val =>"000000000",</p><p> SequenceLength=>
84、1,</p><p> SequenceValue=>1,</p><p> dspb_widthr=>20)</p><p> port map (</p><p> DATAA=>A14W,</p><p> DATAB=>A5W,</p>&l
85、t;p> clock=>'0',</p><p> ena =>'1',</p><p> sclr =>'0',</p><p> result=>A10W);</p><p> -- Product Operator -
86、 Simulink Block "Product1"</p><p> Product1i : AltiMult generic map (</p><p> LPM_WIDTHA=>11,</p><p> LPM_WIDTHB=>9,</p><p> PIPELINE=>0
87、,</p><p> one_input=>0,</p><p> lpm =>0,</p><p> lpm_hint=>"UNUSED",</p><p> cst_val =>"000000000",</p><
88、p> SequenceLength=>1,</p><p> SequenceValue=>1,</p><p> dspb_widthr=>20)</p><p> port map (</p><p> DATAA=>A15W,</p><p> DAT
89、AB=>A6W,</p><p> clock=>'0',</p><p> ena =>'1',</p><p> sclr =>'0',</p><p> result=>A11W);</p><
90、p> -- Sum Operator - Simulink Block "ParallelAdderSubtractor"</p><p> ParallelAdderSubtractori : SAdderSub generic map (</p><p> lpm_width =>33,</p><p> pipeline
91、=>1,</p><p> SequenceLength=>1,</p><p> SequenceValue=>1,</p><p> AddSubVal=>AddAdd)</p><p> port map (</p><p> dataa=>A0W,&
92、lt;/p><p> datab=>A9W,</p><p> clock=>clock,</p><p> ena =>'1',</p><p> sclr =>sclr,</p><p> result=>A12W);<
93、/p><p> -- Sum Operator - Simulink Block "ParallelAdderSubtractor1"</p><p> ParallelAdderSubtractor1i : SAdderSub generic map (</p><p> lpm_width =>34,</p><p
94、> pipeline=>1,</p><p> SequenceLength=>1,</p><p> SequenceValue=>1,</p><p> AddSubVal=>AddAdd)</p><p> port map (</p><p> data
95、a(32 downto 0)=>A4W(32 downto 0),</p><p> dataa(33)=>A4W(32),</p><p> datab=>A7W,</p><p> clock=>clock,</p><p> ena =>'1',&l
96、t;/p><p> sclr =>sclr,</p><p> result=>A13W);</p><p> -- Look-up table - Simulink Block "LUT"</p><p> LUTi : lpm_romgeneric map (</p>&
97、lt;p> LPM_WIDTH => 10,</p><p> LPM_WIDTHAD => 10,</p><p> lpm_address_control => "REGISTERED",</p><p> lpm_outdata => "UNREGISTERED",</p>
98、;<p> lpm_file => "biaozhun1LUT.hex")</p><p> port map (</p><p> address(9 downto 0)=>A16W(9 downto 0),</p><p> inclock=>clock,</p><p>
99、 q=>A14W(9 downto 0));</p><p> A14W(10)<='0';</p><p> -- Look-up table - Simulink Block "LUT1"</p><p> LUT1i : lpm_romgeneric map (</p><
100、p> LPM_WIDTH => 10,</p><p> LPM_WIDTHAD => 10,</p><p> lpm_address_control => "REGISTERED",</p><p> lpm_outdata => "UNREGISTERED",</p>
101、<p> lpm_file => "biaozhun1LUT1.hex")</p><p> port map (</p><p> address(9 downto 0)=>A16W(9 downto 0),</p><p> inclock=>clock,</p><p>
102、q=>A15W(9 downto 0));</p><p> A15W(10)<='0';</p><p> -- Bus Conversion - Simulink Block "BusConversion1"</p><p> BusConversion1i : SRED generic map(&
103、lt;/p><p> widthin=>32,</p><p> widthout=>10,</p><p><b> msb=>31,</b></p><p><b> lsb=>22,</b></p><p><b> round=
104、>0,</b></p><p> lpm_signed=>BusIsUnsigned,</p><p><b> satur=>0)</b></p><p> port map (</p><p> xin(31 downto 0)=>A13W(31 downto 0),&l
105、t;/p><p> yout=>A16W(9 downto 0));</p><p> -- Bus Conversion - Simulink Block "BusConversion2"</p><p> BusConversion2i : SRED generic map(</p><p> widt
106、hin=>20,</p><p> widthout=>10,</p><p><b> msb=>18,</b></p><p><b> lsb=>9,</b></p><p><b> round=>0,</b></p>
107、<p> lpm_signed=>BusIsUnsigned,</p><p><b> satur=>0)</b></p><p> port map (</p><p> xin(19 downto 0)=>A10W(19 downto 0),</p><p> yout
108、=>A17W(9 downto 0));</p><p> -- Bus Conversion - Simulink Block "BusConversion3"</p><p> BusConversion3i : SRED generic map(</p><p> widthin=>20,</p><
109、p> widthout=>10,</p><p><b> msb=>18,</b></p><p><b> lsb=>9,</b></p><p><b> round=>0,</b></p><p> lpm_signed=>
110、BusIsUnsigned,</p><p><b> satur=>0)</b></p><p> port map (</p><p> xin(19 downto 0)=>A11W(19 downto 0),</p><p> yout=>A18W(9 downto 0));<
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 正交信號發(fā)生器課程設(shè)計
- 信號發(fā)生器課程設(shè)計----函數(shù)信號發(fā)生器
- 信號發(fā)生器課程設(shè)計
- 信號發(fā)生器課程設(shè)計
- 課程設(shè)計--信號發(fā)生器設(shè)計
- 信號發(fā)生器課程設(shè)計報告--函數(shù)信號發(fā)生器的設(shè)計
- eda課程設(shè)計--基于fpga的dds信號發(fā)生器設(shè)計
- 信號發(fā)生器課程設(shè)計---函數(shù)發(fā)生器的設(shè)計
- 基于fpga的正交信號發(fā)生器設(shè)計【開題報告】
- 函數(shù)信號發(fā)生器課程設(shè)計
- 簡易信號發(fā)生器課程設(shè)計
- 課程設(shè)計-簡易信號發(fā)生器
- 函數(shù)信號發(fā)生器課程設(shè)計
- 555信號發(fā)生器課程設(shè)計
- 函數(shù)信號發(fā)生器課程設(shè)計
- 簡易信號發(fā)生器 課程設(shè)計
- 函數(shù)信號發(fā)生器課程設(shè)計
- 基于fpga的正交信號發(fā)生器設(shè)計【任務(wù)書】
- 接口課程設(shè)計--信號發(fā)生器
- labview課程設(shè)計--信號發(fā)生器
評論
0/150
提交評論