verilog - 使用 Verilog 中的参数获取错误
问题描述
我是使用 verilog 验证记忆的新手。我已经在测试台中将地址宽度和数据宽度定义为参数,我在下面尝试这样,这给了我一个错误:
parameter ADDRESS_WIDTH =9
在某处的测试台下方,我正在调用任务:
Read_mode(ADDRESS_WIDTH’134)
我遇到了这个错误。请帮忙。
解决方案
ADDRESS_WIDTH’134
产生语法错误,因为将参数用于这样的数字文字大小是非法的,并且当您使用撇号时,它必须后跟一个基本说明符(例如h
十六进制格式)。此外,您问题中的撇号可能是个问题,具体取决于您如何将其复制并粘贴到编辑器中。
要将数字文字传递给 a ,无需指定值的位宽,因为在声明输入task
时可以考虑这一点。task
您可以使用所需的位宽声明输入,然后仅使用基本说明符传递数值,例如'h134
十六进制值:
module tb;
parameter ADDRESS_WIDTH = 9;
task Read_mode (input [ADDRESS_WIDTH-1:0] addr);
$displayh(addr);
endtask
initial begin
Read_mode('h134);
Read_mode(134);
Read_mode('hfff);
end
endmodule
印刷:
134
086
1ff
请注意,134
(没有底数)是十进制值,大于 9 位 ( 'hfff
) 的值将被强制为 9 位 ( 1ff
)。
请参阅 IEEE Std 1800-2017,第 5.7.1 节整数文字常量。
推荐阅读
- postgresql - AWS、RDS:如何使用硬盘文件将 +40GB Postgres 数据库从 AWS ec2 实例迁移到 RDS?
- java - 使用 Mockito 模拟类时出现 NullPointerException
- python - 将字符串转换为日期时间 - python 数据框
- azure - 在 Azure 应用服务中为多个虚拟应用配置 AspNetCoreModuleV2
- ruby - `selenium-webdriver` ruby gem 无法在 Ubuntu 14.04 上与 chromedriver 连接
- c++ - QSerialPort 无法打开,错误代码为 11
- vb.net - 如何从 URL 传递值
- python - 使用该数据帧的三列之间的比较过滤数据帧
- java - 我想使用 Fluent 等待根据元素的存在返回 true 或 false,该怎么做?
- git - 在 Android Studio 中登录了错误的 Git 帐户