ROM是只讀型存儲器,寫入數據之后就不能在對數據進行更改。下面提供3種創建ROM的方法:
一、自己動手通過readmemh或readmemb函數來將自己寫的文件與ROM進行關聯;有幾點需要注意的地方:寄存器rom的大?。ㄎ粚捄蜕疃龋┤缦旅娴拇a中位寬為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進制的數據 //格式$readmemh("file_name",memory_name[,start_addr[,finish_addr]]); //file_name:文件名;memory_name:ROM名;start_addr:開始地址;finish_addr:結束地址 //[]的內容為可選內容, //readmemb 讀2進制的數據 end always(posedge clk) q<=rom[addr]; endmodule
二、第二中方法是通過ip核創建rom。選擇菜單欄中的Tools下的ip核配置工具,搜索rom,選著Verilog語言,并命名文件。點擊下一步
可以看到,在配置工具中依然需要設置位寬和深度。
在mem init中的文件名,這里需要注意的是文件必須是.mif和.hex文件。
三、第三中方法是直接生成代碼,在代碼段上進行修改。
生成的代碼段如下:這里需要修改的是兩個參數DATA_WIDTH、ADDR_WIDTH。然后將對應的文件名修改了就可以了。
// 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
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
存儲器
+關注
關注
38文章
7492瀏覽量
163843 -
ROM
+關注
關注
4文章
572瀏覽量
85773
發布評論請先 登錄
相關推薦
啟動Redis的三種方法
Redis筆記(1)——安裝、卸載、三種方法啟動Redis,Redis命令使用(干貨十足),Redis兩種方法設置密碼,時間復雜度(更完善哦~)
發表于 06-08 16:09
如何使用三種方式進行文件的創建
新建文件在GUI的桌面環境中,創建文件是很簡單的,例如Windows平臺中,大多數情況下只需要點擊右鍵,就可以新建文本文檔等各類文件。在終端中創建文件,大體有這么三種方式,使用touch命令進行
發表于 12-15 08:42
STM32的三種Boot模式的差異
如有錯誤,歡迎指正,謝謝!目錄一、STM32的三種Boot模式的差異二、創建基于MDK創建純匯編語言的STM32工程模板三、匯編基本語法的學習四、編程練習一、STM32的
發表于 12-20 07:54
記錄一下MCU存在ROM中的bootloader的三種方法
網上查到的直接進入TIVA系列MCU存在ROM中的bootloader的三種方法,記錄一下。使用 TM4C ROM bootloader 的三種方式:Flash Empty當 MCU
發表于 02-14 06:45
解決電池問題有三種方法
解決電池問題有三種方法
對于手機電池問題如何解決,業內人士指出有以下三種方法:
一、發明新型電池。目前有日本生產商已經展示了概念性的燃
發表于 11-10 14:26
?955次閱讀
三種不同的“防 Ping”技巧
三種不同的“防 Ping”技巧
淺析三種不同的“防 Ping”方法
眾所周知,Ping命令是一個非常有用的網絡命令,大家常用它
發表于 04-14 13:53
?1127次閱讀
用示波器快速捕獲異常的三種方法
萬事開頭難!當你想用示波器來分析問題時,你一定有想過,我要如何才能把問題抓下來?當然,只有抓下來之后,才能進行后面種種的分析,否則一切都是空談。本文將帶你用三種最好用的方法將異常抓下來。
三種IGBT驅動電路和保護方法
三種IGBT驅動電路和保護方法(新型電源技術作業答案)-三種IGBT驅動電路和保護方法,非常不錯,受益頗多,感興趣的可以看看,值得一看。
發表于 09-17 17:01
?296次下載
直接進入TIVA系列MCU存在ROM中的bootloader的三種方法(轉載)
網上查到的直接進入TIVA系列MCU存在ROM中的bootloader的三種方法,記錄一下。使用 TM4C ROM bootloader 的三種方式:Flash Empty當 MCU
發表于 12-09 12:51
?7次下載
繼電保護的三種狀態解析
繼電保護的三種狀態解析? 繼電保護系統是電力系統中非常重要的一個組成部分,其具有三種狀態,包括:正常狀態、故障狀態和巡檢狀態。這些狀態的作用不同,下面我們將對它們進行詳盡、詳實、細致的解析
評論