Verilog数据转换



我知道这对于一个问题来说似乎有点愚蠢,但我必须自己学习verilog,有时我对基本的东西有点困惑,所以我的问题是,当我在verilog中读取带有符号小数和逗号等特殊字符的文件时,当我存储我首先读取的行时,数据类型是否重要?就像如果我存储它作为一个整数的数据将转换为一个字符串的ascii字符?如果我将其存储为reg类型,它会自动转换为二进制字符串吗?对不起,如果这看起来很愚蠢,但我对verilog如何处理外部数据有点困惑谢谢!

我试图读取一个文件与传感器数据,并把它放在一个reg类型,在一行文件的最大总字符是25,所以我已经分配了我的变量的宽度为8*25,但由于我上面的问题,我不知道如何与关于我的数据的操作进展

如果您使用$fscanf读取文件,则该文件将被视为ASCII文本,如果您使用任何整数格式化说明符(如%d用于有符号十进制,%h用于十六进制),则该文件将被转换为二进制字符串。例如,假设文件text:

123,-456, 789
-987, 654, -321

和代码

module top;

integer A,B,C;
integer file, code;
initial begin
file = $fopen("text","r");
repeat(2) begin
code = $fscanf(file,"%d,%d,%d",A,B,C);
$display(code,,A,,B,,C);
end
end
endmodule

这将显示

# run -all
#           3         123        -456         789
#           3        -987         654        -321
# exit

如果您需要以ASCII字符串的形式读取文件(i。e ASCII字符"0"是二进制字符串'00110000'),那么您将使用$s格式说明符,它将读取整行。我怀疑那是不是你想做的。

最新更新