Verilog中ROM的使用

2021-10-10 05:23:55 字數 1029 閱讀 3450

rom(read only memory)唯讀儲存器。有兩個特點:

資料不可修改。

可以被初始化。

呼叫記憶體中的資料前,需要先申請足夠大的記憶體空間,並將資料初始化到記憶體中,然後輸入資料所在的位址,輸出需求的資料。 以比較兩個2bit二進位制數的大小的**為例。

module lab3_2bit_comparator(add_a,add_b,lt,gt,eq);

input [1:0] add_a,add_b;//輸入資料所在的位址。

wire [1:0] data_a,data_b;

output lt,gt,eq;//輸出資料。

reg lt,gt,eq;

reg [1:0] rom1 [3:0];//申請記憶體空間,資料為2位元,4個locations。

reg [1:0] rom2 [3:0];

assign data_a=rom1[add_a];//將記憶體中某位址下所存的資料賦值給data_a,data_b。

assign data_b=rom2[add_b];

initial //初始化記憶體

begin

$readmemb ("data_a.txt",rom1,0,3);//.txt檔案應和module放在同乙個目錄下。

$readmemb ("data_b.txt",rom2,0,3);

end

always @(data_a,data_b)

if(data_adata_b) =3'b010;

else =3'b001;

endmodule

readmemb:系統任務,末尾的b,表示資料為二進位制,若末尾為h,表示資料為十六進製制。呼叫格式有三種:

$readmemb (「data_a.txt」,rom1,0,3);//記憶體名稱+起始位置+結束位置。

$readmemb (「data_a.txt」,rom1);//記憶體名稱。

$readmemb (「data_a.txt」,rom1,0);//記憶體名稱+起始位置。

Verilog中的函式

verilog中的函式 verilog hdl與大多數可程式語言一樣,將使用率很高的 按照軟體工程的思想,寫成函式,這樣,該函式可以被多次呼叫。verilog中函式常用語三種情況 verilog中的函式與c語言中的函式的主要不同之處是 在verilog中,呼叫函式時,需要將乙個或則多個自變數傳給函式...

verilog中的task用法

定義乙個任務。task task demo 任務定義結構開頭,命名為 task demo input 7 0 x,y 輸入埠說明 output 7 0 tmp 輸出埠說明 if x y 給出任務定義的描述語句 tmp x else tmp y endtask 上述 定義了乙個名為 task demo...

Verilog中generate的用法

一 generate verilog 2001新增了generate迴圈,允許產生module和primitive的多個例項化,同時也可以產生多個variable,net,task,function,continous assignment,initial和always。在generate語句中可以...