【FPGA】ROM/EPROM的设计(使用加载文件的方式初始化)

举报
李锐博恩 发表于 2021/07/15 03:25:28 2021/07/15
【摘要】 这篇博文开始讲ROM,在FPGA中的ROM可以同过加载文件的方式初始化ROM(就像定制IP核时加载coe文件),也可以通过case的方式在代码中进行初始化,这篇博文讲通过加载文件的方式初始化ROM,之后通过仿真读出来数据,看看是否成功。 Verilog描述: `timescale 1ns / 1ps//// Create Date: 2019/05/28 23:15:15...

这篇博文开始讲ROM,在FPGA中的ROM可以同过加载文件的方式初始化ROM(就像定制IP核时加载coe文件),也可以通过case的方式在代码中进行初始化,这篇博文讲通过加载文件的方式初始化ROM,之后通过仿真读出来数据,看看是否成功。

Verilog描述:


  
  1. `timescale 1ns / 1ps
  2. //
  3. // Create Date: 2019/05/28 23:15:15
  4. // Design Name:
  5. // Module Name: rom_using_file
  6. //
  7. module rom_using_file (
  8. input [7:0] address , // Address input
  9. output [7:0] data , // Data output
  10. input read_en , // Read Enable
  11. input ce // Chip Enable
  12. );
  13. reg [7:0] mem [0:255] ;
  14. assign data = (ce && read_en) ? mem[address] : 8'b0;
  15. initial begin
  16. $readmemb("G:/Verilog_file/Memory_/Memory_.srcs/sources_1/new/memory.list", mem); // memory_list is memory file
  17. // G:/Verilog_file/Memory_/Memory_.srcs/rom_using_file_sim/new/memory.list
  18. //G:/Verilog_file/Memory_/Memory_.srcs/sources_1/new/memory.list
  19. end
  20. endmodule

最文章的最后会粘出初始化文件memory.list.

通过在FPGA中测试,使用readmemb读出初始化数据时候,memory.list的路径要全,且分隔符是/而不是\。

下面给出测试文件:


  
  1. `timescale 1ns / 1ps
  2. module rom_using_file_tb;
  3. reg [7:0] address;
  4. reg read_en, ce;
  5. wire [7:0] data;
  6. integer i;
  7. initial begin
  8. address = 0;
  9. read_en = 0;
  10. ce = 0;
  11. //#10 $monitor ("address = %h, data = %h, read_en = %b, ce = %b", address, data, read_en, ce);
  12. for (i = 0; i < 256; i = i + 1 )begin
  13. #5
  14. address = i;
  15. read_en = 1;
  16. ce = 1;
  17. #5
  18. read_en = 0;
  19. ce = 0;
  20. address = 0;
  21. end
  22. end
  23. rom_using_file U_rom(
  24. .address(address) , // Address input
  25. .data(data) , // Data output
  26. .read_en(read_en) , // Read Enable
  27. .ce(ce) // Chip Enable
  28. );
  29. endmodule

仿真结果:

从仿真波形图看,读出数据正常。

参考链接:ROM, EPROM, EEPROM

memory.list文件如下:


  
  1. 00000000
  2. 00000001
  3. 00000010
  4. 00000011
  5. 00000100
  6. 00000101
  7. 00000110
  8. 00000111
  9. 00001000
  10. 00001001
  11. 00001010
  12. 00001011
  13. 00001100
  14. 00001101
  15. 00001110
  16. 00001111
  17. 00010000
  18. 00010001
  19. 00010010
  20. 00010011
  21. 00010100
  22. 00010101
  23. 00010110
  24. 00010111
  25. 00011000
  26. 00011001
  27. 00011010
  28. 00011011
  29. 00011100
  30. 00011101
  31. 00011110
  32. 00011111
  33. 00100000
  34. 00100001
  35. 00100010
  36. 00100011
  37. 00100100
  38. 00100101
  39. 00100110
  40. 00100111
  41. 00101000
  42. 00101001
  43. 00101010
  44. 00101011
  45. 00101100
  46. 00101101
  47. 00101110
  48. 00101111
  49. 00110000
  50. 00110001
  51. 00110010
  52. 00110011
  53. 00110100
  54. 00110101
  55. 00110110
  56. 00110111
  57. 00111000
  58. 00111001
  59. 00111010
  60. 00111011
  61. 00111100
  62. 00111101
  63. 00111110
  64. 00111111
  65. 01000000
  66. 01000001
  67. 01000010
  68. 01000011
  69. 01000100
  70. 01000101
  71. 01000110
  72. 01000111
  73. 01001000
  74. 01001001
  75. 01001010
  76. 01001011
  77. 01001100
  78. 01001101
  79. 01001110
  80. 01001111
  81. 01010000
  82. 01010001
  83. 01010010
  84. 01010011
  85. 01010100
  86. 01010101
  87. 01010110
  88. 01010111
  89. 01011000
  90. 01011001
  91. 01011010
  92. 01011011
  93. 01011100
  94. 01011101
  95. 01011110
  96. 01011111
  97. 01100000
  98. 01100001
  99. 01100010
  100. 01100011
  101. 01100100
  102. 01100101
  103. 01100110
  104. 01100111
  105. 01101000
  106. 01101001
  107. 01101010
  108. 01101011
  109. 01101100
  110. 01101101
  111. 01101110
  112. 01101111
  113. 01110000
  114. 01110001
  115. 01110010
  116. 01110011
  117. 01110100
  118. 01110101
  119. 01110110
  120. 01110111
  121. 01111000
  122. 01111001
  123. 01111010
  124. 01111011
  125. 01111100
  126. 01111101
  127. 01111110
  128. 01111111
  129. 10000000
  130. 10000001
  131. 10000010
  132. 10000011
  133. 10000100
  134. 10000101
  135. 10000110
  136. 10000111
  137. 10001000
  138. 10001001
  139. 10001010
  140. 10001011
  141. 10001100
  142. 10001101
  143. 10001110
  144. 10001111
  145. 10010000
  146. 10010001
  147. 10010010
  148. 10010011
  149. 10010100
  150. 10010101
  151. 10010110
  152. 10010111
  153. 10011000
  154. 10011001
  155. 10011010
  156. 10011011
  157. 10011100
  158. 10011101
  159. 10011110
  160. 10011111
  161. 10100000
  162. 10100001
  163. 10100010
  164. 10100011
  165. 10100100
  166. 10100101
  167. 10100110
  168. 10100111
  169. 10101000
  170. 10101001
  171. 10101010
  172. 10101011
  173. 10101100
  174. 10101101
  175. 10101110
  176. 10101111
  177. 10110000
  178. 10110001
  179. 10110010
  180. 10110011
  181. 10110100
  182. 10110101
  183. 10110110
  184. 10110111
  185. 10111000
  186. 10111001
  187. 10111010
  188. 10111011
  189. 10111100
  190. 10111101
  191. 10111110
  192. 10111111
  193. 11000000
  194. 11000001
  195. 11000010
  196. 11000011
  197. 11000100
  198. 11000101
  199. 11000110
  200. 11000111
  201. 11001000
  202. 11001001
  203. 11001010
  204. 11001011
  205. 11001100
  206. 11001101
  207. 11001110
  208. 11001111
  209. 11010000
  210. 11010001
  211. 11010010
  212. 11010011
  213. 11010100
  214. 11010101
  215. 11010110
  216. 11010111
  217. 11011000
  218. 11011001
  219. 11011010
  220. 11011011
  221. 11011100
  222. 11011101
  223. 11011110
  224. 11011111
  225. 11100000
  226. 11100001
  227. 11100010
  228. 11100011
  229. 11100100
  230. 11100101
  231. 11100110
  232. 11100111
  233. 11101000
  234. 11101001
  235. 11101010
  236. 11101011
  237. 11101100
  238. 11101101
  239. 11101110
  240. 11101111
  241. 11110000
  242. 11110001
  243. 11110010
  244. 11110011
  245. 11110100
  246. 11110101
  247. 11110110
  248. 11110111
  249. 11111000
  250. 11111001
  251. 11111010
  252. 11111011
  253. 11111100
  254. 11111101
  255. 11111110
  256. 11111111

 

 

 

 

 

 

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/90666936

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。