ROM是只讀型存儲器,寫入數(shù)據(jù)之后就不能在對數(shù)據(jù)進(jìn)行更改。下面提供3種創(chuàng)建ROM的方法:
一、自己動手通過readmemh或readmemb函數(shù)來將自己寫的文件與ROM進(jìn)行關(guān)聯(lián);有幾點(diǎn)需要注意的地方:寄存器rom的大小(位寬和深度)如下面的代碼中位寬為8,深度為1024
// An highlighted block module myrom( clk, addr, q ); input clk; input [9:0] addr; output reg[9:0] q; reg [7:0] rom [1023:0]; initial begin $readmemh("./xxx.txt",rom,0,1023); //讀16進(jìn)制的數(shù)據(jù) //格式$readmemh("file_name",memory_name[,start_addr[,finish_addr]]); //file_name:文件名;memory_name:ROM名;start_addr:開始地址;finish_addr:結(jié)束地址 //[]的內(nèi)容為可選內(nèi)容, //readmemb 讀2進(jìn)制的數(shù)據(jù) end always(posedge clk) q<=rom[addr]; endmodule
二、第二中方法是通過ip核創(chuàng)建rom。選擇菜單欄中的Tools下的ip核配置工具,搜索rom,選著Verilog語言,并命名文件。點(diǎn)擊下一步

可以看到,在配置工具中依然需要設(shè)置位寬和深度。

在mem init中的文件名,這里需要注意的是文件必須是.mif和.hex文件。
三、第三中方法是直接生成代碼,在代碼段上進(jìn)行修改。

生成的代碼段如下:這里需要修改的是兩個參數(shù)DATA_WIDTH、ADDR_WIDTH。然后將對應(yīng)的文件名修改了就可以了。
// Quartus II Verilog Template // Single Port ROM module single_port_rom #(parameter DATA_WIDTH=8, parameter ADDR_WIDTH=8) ( input [(ADDR_WIDTH-1):0] addr, input clk, output reg [(DATA_WIDTH-1):0] q ); // Declare the ROM variable reg [DATA_WIDTH-1:0] rom[2**ADDR_WIDTH-1:0]; // Initialize the ROM with $readmemb. Put the memory contents // in the file single_port_rom_init.txt. Without this file, // this design will not compile. // See Verilog LRM 1364-2001 Section 17.2.8 for details on the // format of this file, or see the "Using $readmemb and $readmemh" // template later in this section. initial begin $readmemb("single_port_rom_init.txt", rom); end always @ (posedge clk) begin q <= rom[addr]; end endmodule
編輯:hfy
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
存儲器
+關(guān)注
關(guān)注
39文章
7739瀏覽量
171746 -
ROM
+關(guān)注
關(guān)注
4文章
579瀏覽量
89159
發(fā)布評論請先 登錄
相關(guān)推薦
熱點(diǎn)推薦
啟動Redis的三種方法
Redis筆記(1)——安裝、卸載、三種方法啟動Redis,Redis命令使用(干貨十足),Redis兩種方法設(shè)置密碼,時間復(fù)雜度(更完善哦~)
發(fā)表于 06-08 16:09
如何使用三種方式進(jìn)行文件的創(chuàng)建
新建文件在GUI的桌面環(huán)境中,創(chuàng)建文件是很簡單的,例如Windows平臺中,大多數(shù)情況下只需要點(diǎn)擊右鍵,就可以新建文本文檔等各類文件。在終端中創(chuàng)建文件,大體有這么三種方式,使用touch命令進(jìn)行
發(fā)表于 12-15 08:42
記錄一下MCU存在ROM中的bootloader的三種方法
網(wǎng)上查到的直接進(jìn)入TIVA系列MCU存在ROM中的bootloader的三種方法,記錄一下。使用 TM4C ROM bootloader 的三種方式:Flash Empty當(dāng) MCU
發(fā)表于 02-14 06:45
解決電池問題有三種方法
解決電池問題有三種方法
對于手機(jī)電池問題如何解決,業(yè)內(nèi)人士指出有以下三種方法:
一、發(fā)明新型電池。目前有日本生產(chǎn)商已經(jīng)展示了概念性的燃
發(fā)表于 11-10 14:26
?1162次閱讀
三種不同的“防 Ping”技巧
三種不同的“防 Ping”技巧
淺析三種不同的“防 Ping”方法
眾所周知,Ping命令是一個非常有用的網(wǎng)絡(luò)命令,大家常用它
發(fā)表于 04-14 13:53
?1334次閱讀
用示波器快速捕獲異常的三種方法
萬事開頭難!當(dāng)你想用示波器來分析問題時,你一定有想過,我要如何才能把問題抓下來?當(dāng)然,只有抓下來之后,才能進(jìn)行后面種種的分析,否則一切都是空談。本文將帶你用三種最好用的方法將異常抓下來。
三種IGBT驅(qū)動電路和保護(hù)方法
三種IGBT驅(qū)動電路和保護(hù)方法(新型電源技術(shù)作業(yè)答案)-三種IGBT驅(qū)動電路和保護(hù)方法,非常不錯,受益頗多,感興趣的可以看看,值得一看。
發(fā)表于 09-17 17:01
?296次下載
直接進(jìn)入TIVA系列MCU存在ROM中的bootloader的三種方法(轉(zhuǎn)載)
網(wǎng)上查到的直接進(jìn)入TIVA系列MCU存在ROM中的bootloader的三種方法,記錄一下。使用 TM4C ROM bootloader 的三種方式:Flash Empty當(dāng) MCU
發(fā)表于 12-09 12:51
?7次下載
繼電保護(hù)的三種狀態(tài)解析
繼電保護(hù)的三種狀態(tài)解析? 繼電保護(hù)系統(tǒng)是電力系統(tǒng)中非常重要的一個組成部分,其具有三種狀態(tài),包括:正常狀態(tài)、故障狀態(tài)和巡檢狀態(tài)。這些狀態(tài)的作用不同,下面我們將對它們進(jìn)行詳盡、詳實(shí)、細(xì)致的解析
三種種創(chuàng)建ROM的方法解析
評論