999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

任意波形發生器ROM查找表的設計

2008-04-12 00:00:00徐丹旸張曉紅
現代電子技術 2008年11期

摘 要:基于直接數字合成器(DDS)技術設計的任意波形發生器中,ROM查找表是DDS模塊的一個重要環節,主要用于存儲系統的波形數據。介紹使用C語言、Matlab和DSP Builder三種方法生成正弦波、三角波、鋸齒波和方波的查找表初始化波形數據,并對每一種方法的程序設計、參數設置以及波形仿真都作了詳細說明,所有波形數據均在GW48-SOPC開發系統中測試通過。

關鍵詞:直接數字合成器;查找表;任意波形發生器;DSP Builder

中圖分類號:TP311 文獻標識碼:B

文章編號:1004-373X(2008)11-172-02

Design of Arbitrary Waveform Generator ROM LUT

XU Danyang,ZHANG Xiaohong,WANG Yong

(Electronic Information Engineering College,Henan University of Science and Technology,Luoyang,471003,China)

Abstract:In the arbitrary waveform generator based on DDS,ROM LUT is an important element of the DDS module,which is used to store waveform data of the system.In the paper,using three methods,including C language,Matlab and DSP Builder,producing the arbitrary waveform initialization data of the sine wave,the triangular wave,the saw-tooth wave and the square-wave.Programming,parameter setting and waveform simulation are described to every method detailedly.All waveform data are verified by GW48-SOPC development system.

Keywords:DDS;LUT;arbitrary waveform generator;DSP Builder

1 引 言

目前,利用FPGA設計任意波形發生器是經常采用的一種方法,其核心是直接數字頻率合成器(DDS)。DDS系統一般包括系統時鐘、頻率預置與調節電路(頻率累加器)、相位累加器、ROM 查找表,輸出的數據通過外接的D/A轉換器和濾波器完成波形輸出。此系統中,ROM中波形數據的設計是完成任意波形的關鍵環節。構成ROM中初始化波形數據文件的格式有兩種:Memory Initialization File(.mif)格式和Hexadecimal(Intel-Format)File(.hex)格式,實際應用中使用其中一種格式的文件即可。本文以圖1所示DDS系統為例,采用三種方法生成正弦波、三角波、矩形波和鋸齒波的ROM查找表。

圖1 直接數字頻率合成器系統

圖1所示系統參數:系統時鐘(FCLK)為166.67 MHz(由FPGA時鐘50 MHz晶振通過PLL 3分頻10倍頻得到);頻率累加器位寬(N)為24位;相位累加器位寬為10位;ROM表數據位寬為8位;ROM表地址為10位。硬件選用GW48-SOPC開發系統,其目標芯片為Altera公司Cyclone系列EP1C6Q240C8。

2 利用C語言生成MIF文件

產生正弦波數據的C程序:

#include\"stdio.h\"

#include\"math.h\"

#define N 1024

void main()

{

FILE *fp;

double y;

int n;

if((fp=fopen(\"sindata.mif\",\"w\"))==NULL)

{printf(\"cannot open this file\\\\");

exit(0);

}

fprintf(fp,\"WIDTH=10;\\\\");

fprintf(fp,\"DEPTH=1024;\\\\");

fprintf(fp,\"ADDRESSRADIX=DEC;\\\\");

fprintf(fp,\"DATARADIX=DEC;\\\\");

fprintf(fp,\"CONTENT BEGIN\\\\");

for(n=0;n<=N-1;n++)

{y=127.5+127.5*sin(n*3.1415926535/128);

if(fmod(n,10)==0)

{fprintf(fp,\"\\\\");}

fprintf(fp,\"%4d:%4.0f;\",n,y);

}

fprintf(fp,\"\\\END;\");

fclose(fp);

}

在TC環境下運行,在Output文件夾下生成SIN101~1文件,運行此文件得到SINDATA.mif文件。文件內容如下:

WIDTH=10;

DEPTH=1024;

ADDRESSRADIX=DEC;

DATARADIX=DEC;

CONTENT BEGIN

0:128;1:131;2:134;3:137;4:140;5:143;6:146;7:149;8:152;9:155;10:158;11:162;12:165;13:167;14:170;15:173;16:176;17:179;18:182;19:185;

…(略去數據)

1020:115;1021:118;1022:121;1023:124;

END;

3 用Matlab生成.mif數據文件

利用Matlab可以生成.mif文件,但此文件不能直接在定制ROM中使用,可以把Matlab計算出來的數據粘貼到QuartusⅡ中生成.mif文件,以三角波為例說明。

圖2 Matlab中三角波波形

Matlab生成三角波數據的程序:

clear

clc

Fs=1023;%只要1 024個值

t=0:0.2/Fs:0.2;

x1=round((sawtooth(2*pi*5*t,0.5)+1)/2*255)′;%三角波歸一化

plot(t,x1),axis([0,0.2,0,255])

len=length(x1)%len=1 024

fid= fopen(′d:\\\\deltarom.mif′,′w′);%為幅度值的存儲準備一個文件

fprintf(fid,′MEMORYINITIALIZATIONRADIX=16;\\\′);

fprintf(fid,′MEMORYINITIALIZATIONVECTOR=\\\′);

for i = 1:len%len=1 024

fprintf(fid,′%x,\\\′,x1(i));%循環將值寫入文件中

end

fclose(fid);

打開Matlab的Workspace中參量X1, 復制里面生成的1 024個數據。在QuartusⅡ中打開ROM數據文件編輯窗,即File\\\\New\\\\Other files\\\\Memory Initialization File,根據DDS設計要求,設置ROM的數據數Number為1 024,數據寬Word size取8位,把Matlab中的波形數據粘貼入.mif數據表格,保存此數據文件即可。若希望生成其他波形數據,只需修改程序中“x1=round((sawtooth(2*pi*5*t,0.5)+1)/2*255)′”語句即可。

4 利用DSP Builder生成波形數據文件

利用DSP Builder生成.mif和.hex格式的波形數據文件是最簡便的方法。在Matlab的Simulink環境中,用圖形方式調用DSP Builder和Simulink庫中的圖形模塊完成設計和仿真,如圖3所示。若仿真正確, DSP Builder可直接生成.hex和.mif文件,在其數據文件目錄中可以找到。只需設置圖3中LUT模塊參數,就可以改變輸出波形類型、幅值和數據文件(.hex或.mif) 大小。

圖3 利用DSP Builder設計信號發生器

根據前述設計要求,在LUT參數選項中,Bus Type:Unsigned Integer;Out:8;LUT Address Wide:10;Matlab Array:127*sawtooth([0:2*pi/(2^10):2*pi],1)+128(鋸齒波公式,使用了歸一算法,保證波形幅值在0~255之間,便于進行D/A轉換)。仿真結果如圖4所示。修改Matlab Array中的式子,即可生成正弦波(圖5)、方波(圖6)、三角波。

圖4 鋸齒波仿真波形

圖5 正弦波仿真波形

圖6 方波仿真波形

正弦波:127*sin( [0:2*pi/(2^10):2*pi] )+128

方波:127*square([0:2*pi/(2^10):2*pi],50)+128

三角波:127*sawtooth([0:2*pi/(2^10):2*pi],0.5)+128

從仿真圖中可以看到,輸出波形在0~255之間,符合8位D/A轉換器DAC0832輸入要求。

5 結 語

生成.hex或.mif文件后,就可以定制ROM元件,很多資料中都有詳細介紹,這里不再詳述。本文介紹的三種方法所生成的波形數據均已在GW48-SOPC開發系統上通過驗證,但推薦采用DSP Builder生成數據文件的方法,因該方法不但參數設置簡便,而且易于進行仿真驗證。總之,不論采用哪種方法生成ROM查找表,都要參照系統芯片類型和D/A轉換器等硬件資源條件完成設計。

參 考 文 獻

[1]鄭亞民,董曉舟.可編程邏輯器件開發軟件QuartusⅡ\\[M\\].北京:國防工業出版社,2006.

[2]潘松,黃繼業,曾毓.SOPC技術實用教程\\[M\\].北京:清華大學出版社,2005.

[3]任勇峰,莊新敏.VHDL與硬件實現速成\\[M\\].北京:國防工業出版社,2005.

[4]求是科技.Matlab 7.0從入門到精通\\[M\\].北京:人民郵電出版社,2006.

[5]余勇,鄭小林.基于FPGA的DDS正弦信號發生器的設計和實現\\[M\\].電子器件,2005,28(3):595-599.

作者簡介 徐丹旸 女,1977年出生,湖南長沙市人,講師(碩士)。研究方向為電子EDA。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 视频一区视频二区日韩专区| 麻豆精品视频在线原创| 欧美日韩免费观看| 巨熟乳波霸若妻中文观看免费| 国产屁屁影院| 91啪在线| 亚洲国产亚综合在线区| 色综合综合网| 99久久精品免费看国产电影| 国产亚洲精品资源在线26u| 视频在线观看一区二区| 国产剧情无码视频在线观看| 久久免费视频6| 国产精品一区在线观看你懂的| 97超爽成人免费视频在线播放| 久久亚洲国产最新网站| 久久成人免费| 午夜人性色福利无码视频在线观看| 在线国产欧美| 人妻91无码色偷偷色噜噜噜| 久久中文字幕2021精品| 亚洲视频一区| 国产手机在线小视频免费观看| 亚洲最大情网站在线观看| 国产精品嫩草影院av| 国产成人无码AV在线播放动漫 | 欧美69视频在线| 久久免费成人| 美女扒开下面流白浆在线试听| 日本免费新一区视频| 国产屁屁影院| 91免费国产在线观看尤物| 精品夜恋影院亚洲欧洲| 理论片一区| 欧美有码在线| 福利一区在线| 国产精品亚洲一区二区三区在线观看| 尤物精品视频一区二区三区| 青青草原国产av福利网站| 无码AV高清毛片中国一级毛片| 久久国产av麻豆| 国产免费羞羞视频| 国产手机在线ΑⅤ片无码观看| 在线观看av永久| 久久久久国产一级毛片高清板| a毛片在线播放| 精品综合久久久久久97超人该| 无码精品国产dvd在线观看9久 | 亚洲精品动漫| 久久精品亚洲专区| 97久久人人超碰国产精品| 青青青伊人色综合久久| 国产成人免费手机在线观看视频 | 久久这里只精品国产99热8| 无码 在线 在线| 国产女人喷水视频| 五月婷婷综合色| 免费一级无码在线网站| 国产香蕉97碰碰视频VA碰碰看| 国产白浆在线| 久久久久亚洲精品成人网 | 91视频首页| 欧美亚洲日韩中文| 亚洲日本www| 久久精品只有这里有| 国产精品露脸视频| 欧美伦理一区| 无码有码中文字幕| 丁香婷婷激情网| 久久精品66| 亚洲国产成熟视频在线多多| 最新亚洲人成无码网站欣赏网| 第九色区aⅴ天堂久久香| 久久综合伊人77777| 中字无码精油按摩中出视频| 国产婬乱a一级毛片多女| 日本免费福利视频| 国产69精品久久久久孕妇大杂乱| 日韩AV无码一区| 欧美精品一二三区| 亚洲AV无码一区二区三区牲色| 国产激情无码一区二区免费|