freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于fpga的fir數(shù)字濾波器設計畢業(yè)論文(已改無錯字)

2022-08-24 03:29:40 本頁面
  

【正文】 always @(posedge clk) begin y={acc16[1],acc16[1],acc16[1],acc16[1],acc16[1],acc16}+{acc17[1],acc17[1],acc17[1],acc17[1],acc17[1],acc17} +{acc15[1],acc15[1],acc15[1],acc15[1],acc15[1],acc15}+{acc14[1],acc14[1],acc14[1],acc14[1],acc14[1],acc14} +{acc13[1],acc13[1],acc13[1],acc13[1],acc13[1],acc13}+{acc12[1],acc12[1],acc12[1],acc12[1],acc12[1],acc12} +{acc11[1],acc11[1],acc11[1],acc11[1],acc11[1],acc11}+{acc10[1],acc10[1],acc10[1],acc10[1],acc10[1],acc10} +{acc9[1],acc9[1],acc9[1],acc9[1],acc9[1],acc9}+{acc8[1],acc8[1],acc8[1],acc8[1],acc8[1],acc8} +{acc7[1],acc7[1],acc7[1],acc7[1],acc7[1],acc7}+{acc6[1],acc6[1],acc6[1],acc6[1],acc6[1],acc6} +{acc5[1],acc5[1],acc5[1],acc5[1],acc5[1],acc5}+{acc4[1],acc4[1],acc4[1],acc4[1],acc4[1],acc4} +{acc3[1],acc3[1],acc3[1],acc3[1],acc3[1],acc3}+{acc2[1],acc2[1],acc2[1],acc2[1],acc2[1],acc2} +{acc1[1],acc1[1],acc1[1],acc1[1],acc1[1],acc1}。 end endmodule使用MAC單元完成乘加運算(包括單MAC和多MAC的情況)這個方法可以利用FPGA中已有的MAC單元(像Xilinx Spartan 3E-100中有四個乘加單元),只要設計好數(shù)據(jù)運算流程,就能方便高效地實現(xiàn)FIR運算。使用MAC單元還有一個優(yōu)點是系數(shù)可以存成系數(shù)表,可以方便地修改,這是移位方法代替乘法運算所不及的。使用移位代替乘法運算這個方法的優(yōu)點是速度快,例如11階的濾波器,完成一次運算需要11次乘法,如果使用單MAC的話,需要11個時鐘周期來完成,而使用移位方法可以在一個時鐘周期完成11個乘法運算;缺點是需要另外去完成濾波系數(shù)到移位位數(shù)的換算,如果修改濾波系數(shù)的話,程序修改將會比較麻煩,同時硬件資源也要使用多一些。t*={t[7],t[7],t[7],t[7:3]} t*=t/8=t3。 t為有符號數(shù),所以是帶符號右移,于是t3={t[7],t[7],t[7],t[7:3]} 之所以這么些就是為了節(jié)省資源,提高頻率以4*為例 4的原碼:10000100B補碼:11111100B 41=01111110 而符號位不能變應用原來的位代替 11111110B的原碼10000010B=22. 對程序設計中的問題分析與總結在最開始的設計中,本文初始計劃使用乘法單元。但是在程序設計的過程中我們遇見了實數(shù)乘法的問題,程序的運行遇到了困難,在與指導老師的研究中我們發(fā)現(xiàn)問題出在實數(shù)乘法的問題上。在Verilog的運算中實數(shù)乘法需要特殊的小數(shù)乘法器來單元來實現(xiàn)。在原來的38階濾波器的設計中出現(xiàn)了這樣子的問題。我們使用過這樣的程序:reg [63:0] filter_in_force [0:3344]。 reg [63:0] filter_out_expected [0:3344]。 // Function definitions function real abs_real。 input real arg。 begin abs_real = arg 0 ? arg : arg。 end endfunction //function abs_real // Component Instances filter u_filter ( .clk(clk), .clk_enable(clk_enable), .reset(reset), .filter_in(filter_in), .filter_out(filter_out) )。 initial begin // Constants filter_in_force [0] = $realtobits(+000)。 filter_in_force [1] = $realtobits(+000)。 filter_in_force [2] = $realtobits(+000)。filter_in_force [3] = $realtobits(+000)?!到y(tǒng)無法實現(xiàn)real值得計算,于是這里需要我們用小數(shù)乘法器進行特殊單元的方案解決。于是我們要進行小數(shù)乘法器的設計。隨著FPGA 的發(fā)展以及相應EDA 軟件工具的成熟,F(xiàn)PGA 在高速數(shù)字信號處理領域得到了越來越廣泛的應用。而乘法,尤其是浮點乘法運算是數(shù)值計算和數(shù)據(jù)分析中最常用的運算之一。目前,多數(shù)FPGA 上可以實現(xiàn)整數(shù)和標準邏輯矢量的乘法,但不支持浮點乘法運算, 因此使得FPGA 在數(shù)值計算、數(shù)據(jù)分析和信號處理等方面受到了限制。本文采用適合于FPGA 實現(xiàn)的自定義26 位浮點數(shù)據(jù)格式,利用改進的基4Boot h 編碼運算方式,以及CSA和4 2 壓縮器綜合的Wallace 樹形結構,減少了部分積,使系統(tǒng)具有高速度,低功耗的特點,并且結構規(guī)則。在尾數(shù)的舍入中采用了基于預測和選擇的舍入方法,進一步提高了運算的速度,優(yōu)化了乘法器的性能。 modulefix_mult ( clk,rst_n,in_a,in_b,x1,x2,x3,x4,x5,x6,x7,y_out )。 inputclk,rst_n。//時鐘和復位信號 input[31:0] in_a,in_b。//輸入的被乘數(shù)和乘數(shù) output[31:0] y_out。//輸出的乘積 /*寄存器類型變量 為了能更清楚的了解全處理過程, 特地設計為輸出的,不然仿真可能會被綜合掉*/ output[15:0] x1,x2,x3,x4。 output[0:0] x5。 output[29:0] x6。 output[31:0] x7。///////////////////////////////////////////////////// reg[31:0] y_out。 reg[15:0] x1,x2,x3,x4。 reg[0:0] x5。 reg[29:0] x6。 reg[31:0] x7。 always@ (posedgeclk ) begin if(!rst_n )//復位時,全部寄存器變量清零 begin x1=1639。b0。 x2=1639。b0。 x3=1639。b0。 x4=1639。b0。 x5=139。b0。x6=3039。b0。 x7=3239。b0。 y_out=3239。b0。 end else/ begin x1=in_a[31:16]。//截取16位被乘數(shù), x2=in_b[31:16]。//截取16位乘數(shù) x3=(x1[15]==0)?x1:{x1[15],~x1[14:0]+139。b1}。 //據(jù)最高位判斷是否為負數(shù), //若負數(shù)則把補碼轉成原碼 x4=(x2[15]==0)?x2:{x2[15],~x2[14:0]+139。b1}。 x5=x3[15]^x4[15]。//兩數(shù)符號位相異或,得到乘積的符號位 x6=x3[14:0]*x4[14:0]。//兩數(shù)的數(shù)據(jù)位相乘 x7={x5,x6,139。b0}。 //乘積由1位符號位和30位數(shù)據(jù)位及1位無關組成; //因為是小數(shù),往低位生長,所以無關位放置最低位 y_out=(x7[31]==0)?x7:{x7[31],~x7[30:0]+139。b1}。 end end endmodule 小數(shù)乘法器的仿真結果如下圖214所示:圖214小數(shù)乘法器仿真結果全過程可以看成:把32位的小數(shù)截取高16位左移16位,變?yōu)?6位整數(shù)相乘得到32位整數(shù)乘積后,右移32位調(diào)整無關位的位置得到32位小數(shù),這樣就可以完成早期程序中的小數(shù)乘法功能,然后來進行設計中的FPGA數(shù)字濾波器設計的優(yōu)化。在先前的設計中我們使用Matlab進行綜合仿真設計,并且借助FDAtool設計出濾波器。在Quartus 2的仿真中我們發(fā)現(xiàn)程序無法正常的完成運行,究其原因在于小數(shù)乘法器的問題。在原來的濾波器中需要對每一個參數(shù)進行單獨設置,這樣會使得程序占有巨量的篇幅大大的增加了工作量和容錯度。于是,我們需求另外一種方法來解決這個問題,后來我們研究了移位算法。利用移位來把小數(shù)運算轉換成整數(shù)運算,這樣我們的11階濾波器程序大大減少篇幅同時也增加了程序的可讀程度和穩(wěn)定程度。3 濾波器仿真濾波 在Matlab中進行我們設計過的FIR數(shù)字濾波器的仿真,首先我們啟動Matlab中的Simulink,啟動方式是直接在文本窗口中輸入命令Simulink,或者點擊Matlab中的快速啟動按鈕。圖215 Simulink工具窗口圖本論文模擬一個混合信號正弦波信號他包涵了10,30,60(Hz)的信號,在Matlab模擬出來是這樣一個信號:Fs=200。
t=(1:200)/Fs。
x1=sin(2*pi*t*10)。
x2=sin(2*pi*t*30)。
x3=sin(2*pi*t*60)。
X= x1+ x2+ x3。
plot(t,X)。
title(39。楊成杰本科畢業(yè)設計混合正弦波信號X(t)濾波前39。)。
grid。Module end//整個模擬濾波信號結束//使用軟件仿真出待濾波信號混合信號設定之后利用Matlab工具進行模型仿真。圖216 Matlab中模擬的混合信號 然后在程序中設置好仿真模型如下圖(217)圖217 Simulink模型仿真設置好仿真參數(shù),對各個信號進行單獨修改和設置如下圖(218):圖218 sin(2*pi*30*t)參數(shù)模塊在主設置中,振幅(Amplitude)設置為1, 頻率(Frequency)設置為30Hz, 輸出混合為實常量,樣本時間為1/1000, 采樣幀數(shù)設置為1幀,以下不同頻率信號同理設置: 圖219 sin(2*pi*10*t)參數(shù)模塊圖220 混合參數(shù)模塊圖221 仿真設計模塊最后來設置仿真參數(shù):在Matlab模型窗口打開菜單[Simulation:Configuration Parameters]。找到【Simulation Configuration Parameters】對話框,設置仿真參數(shù)如下Configuration Parameters設置完成之后運行:可以直接點擊模塊窗口中的 ,開始進行仿真。輸出結果如圖222所示:圖222 濾波前信號波形圖圖223濾波后信號波形圖 仿真總結由上面的仿真結果輸出圖可以看出,所設計的數(shù)字帶通濾波器使混合輸入信號中頻率為30Hz的正弦波信號通過,明顯的出現(xiàn)了帶中信號。而將頻率為10Hz和60Hz的正弦波信號大大衰減,從而達到濾波效果。用Matlab Simulink仿真數(shù)字濾波器設計更加直觀,操作便捷,易于分析。4 總結與展望 設計成果總結在理論積累和重復實踐的基礎上,多種濾波器設計思路已經(jīng)相當成熟,設計出來的濾波器通過仿真概率高,仿真結果符合設計要求。FIR數(shù)字濾波器的設計方式選擇更具有科學性和時效性,可以根據(jù)自己熟悉的軟件,需要的FIR數(shù)字濾波器的精度,F(xiàn)IR數(shù)字濾波器的類型和濾波器階數(shù)來靈活選擇設計思路和方法。 設計心得本次畢業(yè)設計主要包含了信號與系統(tǒng),數(shù)字信號處理和FPGA方面的相關知識。設計心得總結如下:設計路徑優(yōu)化 確定好所需要設計的FIR數(shù)字濾波器濾波器后,首先對其進行性能需求分析,明確FIR數(shù)字濾波器系統(tǒng)應該達到的各種性能指標,其次,擬定多種濾波器類型,對這些方案采用Matlab進行仿真,在這個過程中我們有許多的窗函數(shù)選擇和設計方法選擇,進行綜合分析和比較,選擇出最佳的濾波器類型作為本設計方案,然后依據(jù)其性能指標編寫Matlab程序,確定二階節(jié)系數(shù)?;蛘咧苯舆M行Verilog語言的編寫。系統(tǒng)整體
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1