用Verilog HDL語言實現基于DDS技術的余弦信號發生器,其輸出位寬為 16bit。
3.2 使用MATLAB定點正、余弦波形數值借助MATLAB生成ROM中的定點正、余弦波形數值,形成.coe文件。
1.利用MATLAB計算出正、余弦波形的浮點值,并量化 16bit 的定點波形數值[2]。
x= linspace(0,6.28,1024); %在區間[0,6.28]之間等間隔地取1024個點
y1=cos(x); %計算相應的正余弦值
y2=sin(x);
%由于正余弦波形的值在[0,1]之間,需要量化成16bit,先將數值放大
y1=y1*32678;
y2=y2*32768;
%再將放大的浮點值量化,并寫到存放在E盤的文本中
fid = fopen('e:/cos_coe.txt', 'wt');
fprintf(fid, '%16.0f\n', y1); %在寫文件時量化成16bit
fclose(fid)
fid = fopen('e:/sin_coe.txt', 'wt');
fprintf(fid, '%16.0f\n', y2);
fclose(fid)
2.產生.coe 文件
在 e 盤根目錄下,將 cos_coe.txt 和 sin_coe.txt 的后綴改成.coe,打開文件,把每一行之間的空格用文本的替換功能換成逗號“,”,并在最后一行添加一個分號“;”。最后在文件的最開始添加下面兩行:
memory_initialization_radix=10;
memory_initialization_vector =
然后保存文件退出。
3.3將 coe 文件加載到BLOCKROM所生成的ROM中新建一個BLOCKRAM的 IP Core,其位置為Memories & Storage Elements/RAMs & ROMs/Block Memory Generator v4.3,在第一頁選擇single port rom,在第二頁選擇位寬為16、深度為1 024,在第三頁下載.coe 文件,然后雙擊 finish,完成IP core 的生成。如果.coe文件生成的不對,圖中用橢圓標志之處是紅色的,.coe 文件錯誤的類型主要有數據基數不對和數據的長度不對這兩類。