永发信息网

fpga中reg[7:0] mem[0:255]怎么赋初值,还有它与通过mif初始化的ROM有什么区别?

答案:3  悬赏:60  手机版
解决时间 2021-02-06 03:59
  • 提问者网友:温柔港
  • 2021-02-05 07:55
fpga中reg[7:0] mem[0:255]怎么赋初值,还有它与通过mif初始化的ROM有什么区别?
最佳答案
  • 五星知识达人网友:長槍戰八方
  • 2021-02-05 09:31
首先,verilog中对数组赋初始值没有简便的方法,只能对数组中的每个元素单独赋值。

第二,直接声明一个数组与调用一个IP核的ROM没有本质区别,取决于你的具体需求。前者简单易移植,后者性能更有保障。如果需要调用的存储深度很大,那么建议老老实实的用IP核、或者直接调用BlockRAM原语。追问哦,是这样啊,那就是说数组赋初值是相当麻烦的,毕竟这么多,但是用的时候要快些,直接用就行了,而且一次可以对多个进行操作,ROM的话初始化容易些,但是后面要用的话就必须牵涉的地址操作追答如果仅是仿真的话,你说的倒也没错。
但是在硬件实现时,定义的数组最终还是会映射到分布式RAM(寄存器)或者BlockRAM,具体映射到哪种取决于数组的容量。
像你举得这个例子,编译器会把它映射到BlockRAM,地址操作是绕不开的。某一时刻仅能读(写)某一个地址的内容(双口RAM的话可以同时两个地址)。
说到底,还是看你的具体需求。如果仅是想跑跑仿真,倒也不需想太多。如果需要硬件实现并上器件调试,那么建议你先看看FPGA的结构概述,先对其结构和资源有个感性认识。
全部回答
  • 1楼网友:胯下狙击手
  • 2021-02-05 12:15
一个是用EAB做的,一个是用逻辑宏单元的资源做的!
  • 2楼网友:往事隔山水
  • 2021-02-05 10:47
相当于c语言里的数组,声明了一系列的mem寄存器,具体用的时候可以m[0],m[1],每一个寄存器是8位的,mif初始化的是fpga的内部资源,相当于把不用的资源拿来做rom用,mem只是寄存器,占用的资源不一样吧,个人理解
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯