使用matlab生成rom初始化檔案 coe

2021-08-09 06:22:28 字數 1374 閱讀 6931

在進行fpga設計時,經常要對rom模組進行初始化。ise或quartus ii軟體本身具備的初始化功能對於較小的rom是行之有效的,但面對大容量的rom時就顯得捉襟見肘了。而matlab作為一神器,在這時就有了用武之地。使用它生成.coe或.mif檔案,可以起到事半功倍的效果。

一、了解.coe檔案的格式

在ise中,對rom進行初始化的檔案是.coe檔案。它的格式如下:

memory_initialization_radix=10; -->檔案儲存資料的進製,10即為10進製

memory_initialization_vector = -->資料向量

65534,65533,……,65532,65528; -->所儲存的10進製資料,每個資料使用逗號隔開,最後分號結束

**.coe檔案的前兩行的開頭格式是固定的,不能改變的。

**--|第一行:memory_initialization_radix=《進製》;

**--|第二回:memory_initialization_vector=  

**所儲存的資料數量與大小,是與設計rom的位寬和深度相對應的。

二、使用matlab生成.coe檔案

2.1 以下程式用於為位寬為16bit,深度為1024的rom生成初始化檔案

width=16;  

%rom的位寬

depth=1024; %rom的深度

x=linspace(0,2*pi,depth);  

%在乙個週期內產生1024個取樣點

y_cos=cos(x);  

%生成余弦資料

y_cos=round(y_cos*(2^(width-1)-1))+2^(width-1)-1;  

%將余弦資料全部轉換為整數

fid=fopen('c:usersadministratordeskto

pcos_coe.coe','w');  

%建立.coe檔案

fprintf(fid,'%d,n',y_cos);  

%向.coe檔案中寫入資料

fclose(fid);  

%關閉.coe檔案

2.2 編輯.coe檔案(最好使用ultraedit開啟)

--在前兩行新增

memory_initialization_radix=10;

memory_initialization_vector =

--將最後的逗號改為分號

--最後檔案格式:

memory_initialization_radix=10;

memory_initialization_vector =

65534,

65533,

.....

65334,

65287;

Verilog中ROM的使用

rom read only memory 唯讀儲存器。有兩個特點 資料不可修改。可以被初始化。呼叫記憶體中的資料前,需要先申請足夠大的記憶體空間,並將資料初始化到記憶體中,然後輸入資料所在的位址,輸出需求的資料。以比較兩個2bit二進位制數的大小的 為例。module lab3 2bit compa...

MATLAB大量生成符合變數並且使用

對於建立一兩個符號變數,直接使用sym或syms就可以,但對於大量的符號變數的建立和使用,該怎麼樣呢?本人首先得到的辦法是 for j 1 20 syms k num2str j end效果如圖 但是雖然成功解決了建立的問題,可是作為迴圈引用的話無法引用 又犯起了難題,如果有人能夠解決的話,希望不吝...

使用Matlab生成集合的冪集 powerSet

求集合的冪集網上有較多的方法,例如回溯法 遞迴法等等。在此不再進行闡述。在此使用matlab下的方法combntns,該方法介紹如下 combntnsall possible combinations of a set of values c combntns choicevec,choose re...