我想将一个字节数组(或任何其他可能的类型)初始化为一个长字符串。例如,定义:string str = "abcdefg"
。我读了这两个链接(Link 1& Link 2),但我找不到一个简单的方法。这是我发现的两种硬编码方式:
1_ byte str [0:7]; = '{"a", "b", "c", "d", "e", "f", "g", "h"};
这不是一个合适的方法,因为在我的实际应用程序中字符串很长,我不能逐字写。
2_使用字符串类型:string str = "abcdefg"
。但它只能被模拟,不能合成。 Quartus只允许在函数或任务中定义字符串。所以我使用函数getStr()
来初始化字符串:
typedef byte string_t[0:7];
function string_t getStr();
int i;
string tmp_str = "abcdefgh";
string_t str;
for(i=0; i<8; i=i+1)
str[i]=tmp_str[i];
return str;
endfunction
并在我的代码中使用它:
byte str [0:7];
always @(posedge clk) begin
str = getStr(); // str will be "abcdefg" after getStr() return it.
//The rest of the code...
end
我认为必须有一种更好更简单的方法来初始化SystemVerilog中的字符串。如果你知道它对我有帮助。感谢。
答案 0 :(得分:0)
您可以使用字符串初始化压缩数组:
bit [0:87] BIT_ARRAY = "Hello world";
那足够接近吗?如果你真的需要它是一个解压缩的字节数组,那么你将不得不转换它。