华为 海思数字芯片
参考 :FPGA开发/数字IC笔试系列(5) 华为海思IC笔试解析
FPGA开发/数字IC笔试系列(6) 华为海思IC笔试解析
SystemVerilog Function与Task的区别
$readmemh与$readmemb这两个系统任务是用来从指定文件中读取数据到寄存器数组或者RAM、ROM中。除了可以在仿真的任何时刻被执行使用外,根据综合工具的不同,也可以用来对RAM或者ROM进行初始化(Vivado支持)。
使用格式共6种:
- $readmemb("<数据文件名>",<数组名>)
- $readmemb("<数据文件名>",<数组名>,<起始地址>)
- $readmemb("<数据文件名>",<数组名>,<起始地址>,<结束地址>)
- $readmemh("<数据文件名>",<数组名>)
- $readmemh("<数据文件名>",<数组名>,<起始地址>)
- $readmemh("<数据文件名>",<数组名>,<起始地址>,<结束地址>)
$readmemh(h,hexadecimal,十六进制)用来读取16进制的数据,而$readmemb(b,binary,2进制)则用来读取2进制的数据。由于二者用法几乎一样,仅仅是读取数字的进制不同。
在这两个系统任务中,被读取的数据文件的内容只能包含:空格、换行、制表格、注释、二进制或十六进制的数字。数字中不能包含位宽说明和格式说明,对于$readmemb和$readmemh系统任务,每个数字可以是二进制或者十六进制数字。另外,数字必须用空白或注释来分隔开。
----------------------------------------------------------------------------------------------------------------------------