verilog - 如何在 Verilog 测试台中写入字符串值?
问题描述
我正在尝试编写一个 Verilog 测试平台,我必须在其中编写一些寄存器的输出。我想写L
而不是0
, 而H
不是1
例如'100101'
g 'HLLHLH'
。我知道编写二进制、十六进制或十进制值,但我不确定是否可以在 Verilog 中完成?
解决方案
假设您没有使用 SystemVerilog,您可以编写一个任务,例如:
task LHwrite (input integer bin, input integer length);
integer i;
for (i=length-1; i>=0; i=i-1)
$write("%s", "L"-(bin[i]*8'h4));
endtask
bin
是您要显示的值(最多 32 位);length 是要显示的位数。任务迭代输入:
for (i=length-1; i>=0; i=i-1)
然后使用$write
系统任务(类似于$display
但没有换行符)来显示您想要的字符串。这是基于 'H' 的 ASCII 码8'h48
和 'L'的 ASCII 码的知识计算得出的8'h4C
。
https://www.edaplayground.com/x/4Ewk
module M;
task LHwrite (input integer bin, input integer length);
integer i;
for (i=length-1; i>=0; i=i-1)
$write("%s", "L"-(bin[i]*8'h4));
endtask
initial
begin : test
reg [5:0] bin = 6'b100101;
LHwrite(bin, 6);
$write("\n");
end
endmodule
推荐阅读
- ms-access - 访问 docmd.transferspreadsheet 特定单元格
- react-native - React - 本机 StackNavigator 在点击返回按钮后刷新前一个组件
- angular - 使用 LocalStorage 中的 AuthToken 为 NgRx Store 补水的正确方法和位置
- javascript - 字体真棒性能
- javascript - 添加或删除行时如何使文本区域保持在正确的位置
- python - Python:如何在打印到文件时为日志着色?
- node.js - 如何解决 TypeError: Cannot read property 'push' of undefined in simple node project?
- sql - 将不同表中的列与条件和 AVG 组合
- cookies - ASP.NET Core 设置 Cookie 名称
- html - 使用 Flex Box Grid 系统的列之间没有空间