[轉載](轉)ISE中ROM初始化文件(.coe)的創建

UltraEditphp

 

 

 

對於ROM模塊,主要是生成相應的.coe文件。html

1.在Matlab中生成正餘弦波形的浮點值,並量化爲16bit定點波形數值app

% 生成 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;   spa

 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);     htm

 fclose(fid);blog

2.生成.coe文件。在D盤根目錄下,將cos_coe.txt和sin_coe.txt的後綴改爲.coe。打開文件,把每一行之間的空格用文本替換功能換成「,」(這能夠經過強大的UltraEdit來實現!),並在最後一行添加一個分號「;」。最後,在文件的最開始添加下面兩行:開發

memory_initialization_radix=10;get

memory_initialization_vector=it

而後,保存文件退出。

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文件錯誤類型主要有數據基數不對和數據的長度不對兩種。

另外一種方法:

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不太同樣),說明數據導入正確。

 

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的仿真庫,而後按照通常仿真過程就能夠了