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

正文內(nèi)容

基于modelsim的fft算法的設(shè)計學(xué)士學(xué)位論文-閱讀頁

2025-07-26 15:03本頁面
  

【正文】 十進制數(shù)表示范圍 Q15 1=x= Q14 2=x= Q13 4=x= Q12 8=x= Q11 16=x= Q10 32=x= Q9 64=x= Q8 128=x= Q7 256=x= Q6 512=x= Q5 1024=x= Q4 2048=x= Q3 4096=x= Q2 8192=x= Q1 16384=x= Q0 32768=x=32767 有限字長效應(yīng) 和單片機、 DSP等器件一樣, FPGA也是不能直接處理模擬信號的。由于 A/D器件的精度是一定的,所以轉(zhuǎn)換之后的數(shù)值和真實值之間存在著偏差,這就是輸入的量化誤差。進行舍位就會自然而然的引入誤差,這種誤差屬于運算量化誤差,也稱為運算噪聲。為了得到精確結(jié)果,一 方面可以選用合適的運算結(jié)構(gòu),盡量減少有限字長效應(yīng),另一方面可以采用合適的字長以降低運算噪聲 [3]。由于在執(zhí)行算術(shù)運算時需要大量的硬件資源,所以浮點數(shù)記數(shù)方法的使用成本很高。在用 FPGA實現(xiàn) FFT算法的時候,經(jīng)常會使用塊浮點的方式來進行。塊浮點數(shù)可以跟蹤數(shù)值動態(tài)范圍的變化,例 如做 256點 FFT變換,數(shù)據(jù)寬度為 16位,動態(tài)范圍是 32768~ 32767,經(jīng)過 FFT的第一級運算后,取值范圍是 65536~ 65535。這種記數(shù)方法就是塊浮點數(shù)記數(shù)方法。 理工大學(xué)學(xué)士學(xué)位論文 18 3 FFT 的算法設(shè)計 FFT 處理 器的實現(xiàn)框圖 本論文主要研究的是 32 點的按時間抽取的基 2FFT 算法的 FPGA 實現(xiàn),同時為了提高運行速度還運用了流水線結(jié)構(gòu),為了兼顧高精度和復(fù)雜度的特點還引入了塊浮點結(jié)構(gòu)。 圖 FFT處理器結(jié)構(gòu)框圖 圖 中:蝶算單元采用 DIT 方式來完成基 2 蝶形運算,如果數(shù)據(jù)從雙口 RAM1中讀出,則計算結(jié)果存入雙口 RAM2 中,反之亦然;存儲單元主要用來存儲輸入數(shù)據(jù)、中間結(jié) 果 (RAM),預(yù)置旋轉(zhuǎn)因子 (ROM),以及最后的計算結(jié)果 (RAM);地址產(chǎn)生單元產(chǎn)生 RAM 的讀、寫地址和 ROM 的讀地址;功能切換單元用來完成 RAM1 和 RAM2 間數(shù)據(jù)讀寫功能的切換;塊浮點單元記錄蝶算單元輸出數(shù)據(jù)的位信息,并完成蝶算單元輸入數(shù)據(jù)的截位;時序控制單元產(chǎn)生各個模塊的使能、控制信號,使整個流程正常工作。這種形式的 FFT 只有一個蝶形運算單理工大學(xué)學(xué)士學(xué)位論文 19 元,蝶形運算按遞歸的方式,根據(jù)蝶形圖從左向右、從上向下先計算第一級的每個蝶形,然后 計算第二級、第三級,逐級地循環(huán)運算,直至第 N/2 log2N 個蝶形,完成 N 點 FFT的全部運算。在實際應(yīng)用中,輸入緩沖單元和輸出緩沖單元可以是同一個存儲單元,完成 N 點 FFT 運算最少只需要 N 個存儲單元來緩存輸入數(shù)據(jù)和中間計算結(jié)果。這種結(jié)構(gòu)的優(yōu)點是只有一個蝶形運算單元,所占的硬件資源少,結(jié)構(gòu)簡單,穩(wěn)定 性能好,缺點是運算速度緩慢,且時序控制較為復(fù)雜。 圖 遞歸順序型 FFT 結(jié)構(gòu)框圖 module cfft32( clk, rst_n, slice_number, normal_re, normal_im, normal_valid, startfft, fft_finish, address_a, dataout_a, address_b, dataout_b, dataout_valid, number)。 input rst_n。 input [15:0] normal_re。 input normal_valid。 output fft_finish。 output [13:0] dataout_a。 output [13:0] dataout_b。 output [3:0] number。 wire [15:0] d_re。 assign d_valid=normal_valid。 assign d_im[15:0]=normal_im[15:0]。 //ram control signal and databus ,address bus reg [35:0] dina,dinb。 reg blka,blkb。 wire [35:0] douta,doutb。 reg [4:0] state。 wire [31:0] datain_cf1,datain_cf2。//cfft dataout output signal wire [4:0] addr_cf1,addr_cf2。//cfft read write and blk_en signal wire finish_butterfly。 reg valid。 reg datain_wr,datain_blk。 wire [31:0] twiddle_dataout。 wire [15:0] d_im_conj。 reg dataout_valid。 wire [1:0] shift。 assign blk_cf=rd_ramamp。wr_ram。 assigndatain_cf1[31:0]=(shift[1:0]==0)?{douta[33:18],douta[15:0]}:(shift[1:0]==1)?{douta[34:19],douta[16:1]}:(shift[1:0]==2)?{douta[35:20],douta[17:2]}:3239。 assigndatain_cf2[31:0]=(shift[1:0]==0)?{doutb[33:18],doutb[15:0]}:(shift[1:0]==1)?{doutb[34:19],doutb[16:1]}:(shift[1:0]==2)?{doutb[35:20],doutb[17:2]}:3239。 wire [24:0] dataout_cf1_t,dataout_cf2_t,dataout_cf1_t2,dataout_cf2_t2。 assigndataout_cf2_t[24:0]={dataout_cf2[35],dataout_cf2[35],dataout_cf2[35],dataout_cf2[35],dataout_cf2[35],dataout_cf2[35],dataout_cf2[35],dataout_cf2[35:18]}number[3:0]。 assign dataout_cf2_t2[24:0]=dataout_cf2_t[24:0]slice_number[4:0]。b0。b0。b0。b0。 if(!rst_n) valid=0。 always(posedge clk or negedge rst_n) //input datain sync。 else if(d_valid) datain[31:0]={d_re[15:0],d_im_conj[15:0]}。 if(!rst_n) datain_t[4:0]=0。 always(posedge clk or negedge rst_n)//write data into the pingpong ram if(!rst_n) begin datain_wr=1。 end else if(d_valid) begin datain_wr=0。 理工大學(xué)學(xué)士學(xué)位論文 22 end else begin datain_wr=1。 end always(posedge clk or negedge rst_n) begin if(!rst_n) state =st0。 else state = st0。// start input datain into the ram1 st2 : begin if(startfft) state = st3。 end st3: begin // start the cfft ram1。 else state=st3。 if(finish_butterfly) state=st5。 end st5:begin if(startfft) state=st3。 理工大學(xué)學(xué)士學(xué)位論文 23 end default:state=st0。//cfft address generate enable signal dina[35:0]=0。 addra[4:0]=0。 dinb[35:0]=0。 addrb[4:0]=0。 dataout_valid=0。 dina[35:0]={datain[31],datain[31],datain[31:16],datain[15],datain[15],datain[15:0]}。 addra[4:0]=datain_t[4:0]。 dinb[35:0]=0。 addrb[4:0]=0。 dataout_valid=0。 dina[35:0]={datain[31],datain[31],datain[31:16],datain[15],datain[15],datain[15:0]}。 addra[4:0]=datain_t[4:0]。 dinb[35:0]=0。 addrb[4:0]=0。 理工大學(xué)學(xué)士學(xué)位論文 24 dataout_valid=0。 dina[35:0]=dataout_cf1[35:0]。 addra[4:0]=addr_cf1[4:0]。 dinb[35:0]=dataout_cf2[35:0]。 addrb[4:0]=addr_cf2[4:0]。 dataout_valid=0。 dina[35:0]=0。 addra[4:0]=addr_cf1[4:0]。 blkb=blk_cf。 dataout_valid=~wr_ram。 dina[35:0]={datain[31],datain[31],datain[31:16],datain[15],datain[15],datain[15:0]}。 addra[4:0]=datain_t[4:0]。 dinb[35:0]
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1