Verilog 中的字符串操作

sjt*_*eri 4 string verilog system-verilog

我需要在 Verilog 模拟中对字符串执行基本操作,例如连接、替换和比较。怎么可能?有内置支持吗?

提前致谢。

小智 5

Verilog 中没有字符串数据类型,但 verilog 支持字符串文字并将其用作字节向量。这是规范中的示例:

module string_test;
reg [8*14:1] stringvar;
initial begin
  stringvar = "Hello world";
  $display ("%s is stored as %h", stringvar,stringvar);
  stringvar = {stringvar,"!!!"};
  $display ("%s is stored as %h", stringvar,stringvar);
  end
endmodule
Run Code Online (Sandbox Code Playgroud)

由于字符串使用 reg 数据类型,因此您可以使用普通运算符来操作它们,请记住每个字符使用 8 位。

5.2.3.1 字符串操作

Verilog HDL 运算符支持常见的字符串操作复制、连接和比较。通过简单的分配来提供副本。串联由串联运算符提供。比较由相等运算符提供。当操作向量寄存器中的字符串值时,寄存器应至少为 8*n 位(其中 n 是 ASCII 字符的数量),以便保留 8 位 ASCII 代码。

如果您需要搜索等操作,则必须编写一些任务或函数。