fpga中reg[7:0] mem[0:255]怎么赋初值,还有它与通过mif初始化的ROM有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fpga中reg[7:0] mem[0:255]怎么赋初值,还有它与通过mif初始化的ROM有啥区别?相关的知识,希望对你有一定的参考价值。
首先,verilog中对数组赋初始值没有简便的方法,只能对数组中的每个元素单独赋值。第二,直接声明一个数组与调用一个IP核的ROM没有本质区别,取决于你的具体需求。前者简单易移植,后者性能更有保障。如果需要调用的存储深度很大,那么建议老老实实的用IP核、或者直接调用BlockRAM原语。追问
哦,是这样啊,那就是说数组赋初值是相当麻烦的,毕竟这么多,但是用的时候要快些,直接用就行了,而且一次可以对多个进行操作,ROM的话初始化容易些,但是后面要用的话就必须牵涉的地址操作
追答如果仅是仿真的话,你说的倒也没错。
但是在硬件实现时,定义的数组最终还是会映射到分布式RAM(寄存器)或者BlockRAM,具体映射到哪种取决于数组的容量。
像你举得这个例子,编译器会把它映射到BlockRAM,地址操作是绕不开的。某一时刻仅能读(写)某一个地址的内容(双口RAM的话可以同时两个地址)。
说到底,还是看你的具体需求。如果仅是想跑跑仿真,倒也不需想太多。如果需要硬件实现并上器件调试,那么建议你先看看FPGA的结构概述,先对其结构和资源有个感性认识。
以上是关于fpga中reg[7:0] mem[0:255]怎么赋初值,还有它与通过mif初始化的ROM有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
verilog 定义memory类型变量 reg[16:1] a[7:0], 赋值时候可不可以这样:a[5][16:9]=8'b11111111;