http://www.eefocus.com/guozhiyang/blog/14-03/302479_5e3a4.html
1.在Matlab中生成正餘弦波形的浮點值,並量化為16bit定點波形數值:
另一種方法:
Xilinx的ROM的初始化是一件很麻煩的事情,要匯入Coe檔案。
Alteral是mif和hex檔案,有專門的軟體可以生成。
coe檔案的格式如下:
MEMORY_INITIALIZATION_RADIX=10;
MEMORY_INITIALIZATION_VECTOR=
512,515,518,522,525,528,531,535,538,54
。。。。。。。。12,23;
注意:前面的2行不要動,RADIX後面的數字表示的是進位制,這裡取10進位制。結尾用的是分號
在matlab中關鍵的步驟如下,我們以一個週期1000個取樣,位數為10位的正弦表格為例子。
n=0:999 ;y=round(sin(2*pi*0.001*n)*512)+512;//後面加上512是為了防止出現負數
y=mod(y,1024);//因為是10位,所以,沒有1024,對1024取餘數,把1024轉化成0
dlmwrite('b.txt',y);//dlmwrite函式是使得產生的資料之間是用逗號隔開的。
得到b.txt檔案,用記事本開啟,在最上面加上
MEMORY_INITIALIZATION_RADIX=10;
MEMORY_INITIALIZATION_VECTOR=
同時資料結尾用分號結尾
最後另存為,選擇字尾為.coe,將檔案匯入到ROM以後,單擊show,或者是顯示初始資料的按鈕(各個ISE不太一樣),說明資料匯入正確。
對於ROM模組,主要是生成相應的.coe檔案。
% 生成 ROM 的 .coe檔案
clc
clear all
close all
x = linspace(0, pi/2 ,1024); % 在區間[0,2pi]之間等間隔地取1024個點
y_cos = cos(x);
y_sin = sin(x);
y_cos = y_cos * 2^16;
y_sin = y_sin * 2^16;
fid = fopen('D:/cos_coe.txt','wt'); fprintf(fid, ' .0f \n ' , y_cos);
fclose(fid);
fid = fopen('D:/sin_coe.txt','wt');
fprintf(fid, ' .0f \n ' , y_sin);
fclose(fid);
2.生成.coe檔案。在D盤根目錄下,將cos_coe.txt和sin_coe.txt的字尾改成.coe。開啟檔案,把每一行之間的空格用文字替換功能換成“,”(這可以通過強大的UltraEdit來實現!),並在最後一行新增一個分號“;”。最後,在檔案的最開始新增下面兩行:
memory_initialization_radix=10;
memory_initialization_vector=
然後,儲存檔案退出。
3.將coe檔案載入到BLOCKROM所生成的ROM中。新建一個BLOCKROM的IP Core, 其位置為“Memories & Storage Elements---->RAMs & ROMs----->Block Memory Generator v2.4”。在第1頁中選擇“single port rom”,在第2頁中選擇位寬為16,深度為1024,在第3頁下載coe檔案,如下圖,然後雙擊Finish,完成IP Core的生成。如果coe檔案生成得不對,Browse前面的框中是顯示紅色的檔名,coe檔案錯誤型別主要有資料基數不對和資料的長度不對兩種。
MODELSIM下rom模擬。
利用Xilinx公司的晶片做FPGA開發的時候用到了ROM,肯定要對ROM做模擬,經過了一天的努力,總算可以做模擬了,現在把過程寫出來,供大家參考一下。
1.首先需要編譯XINLINX的庫檔案,常用有三個庫xinlixcorelib,unisims,simprims,編譯過程在上一個帖子中。
2.Modelsim不支援mif檔案只支援HEX檔案,這裡需要對檔案進行轉換,下載DLL檔案convert_hex2ver.dll下載地址為:
http://www.eccsdk.com/bbs/read.php?tid=1562&fpage=2
3.把Modelsim安裝目錄下的配置檔案modelsim.ini檔案中進行修改,把
List of dynamically loaded objects for Verilog PLI applications
; Veriuser = veriuser.sl
修改為
List of dynamically loaded objects for Verilog PLI applications
Veriuser = C:/Modeltech_6.1e/win32/convert_hex2ver.dll
其中 C:/Modeltech_6.1e/win32/convert_hex2ver.dll為dll檔案的儲存位置
4.把rom.v和rom.mif檔案拷貝到同一個目錄下,在模擬時首先需要載入XIlinx的模擬庫,然後按照一般模擬過程就可以了