verilog 表示 verilog 中的二进制值问题

verilog representing binary value problem in verilog

我的任务是创建一个文本文件并将我的名字作为二进制数据放入文本文件中,然后读取此文件并将此二进制文件转换为字符并将其作为字符放入另一个文件中。

所以我的问题是如何用二进制表示我的名字。

我试过了:

reg [255:0] myname = 01001110011010010110101101101111011011000110111101111010;

但是没有用。错误说数字太大。

然后我尝试了:

reg [1:0] myname1 = 2'b0100_1110_0110_1001_0110_1011_0110_1111_0110_1100_0110_1111_0111_1010;

这也没有用。它总是给出“_”作为输出。

reg [255:0] myname = 01001110011010010110101101101111011011000110111101111010;

在这种情况下,您有一个巨大的十进制数 1,001,110,011,010,010,110,101,101,101,111,011,011,000,110,111,101,111,010,您试图将其分配给一个相对较小的 reg(256 位宽)。它确实适合 256 位,但解码它会遇到很大问题。

reg [1:0] myname1 = 2'b0100_1110_0110_1001_0110_1011_0110_1111_0110_1100_0110_1111_0111_1010;

此处您试图将 56 位 二进制 数字压缩为 2 位变量。这在物理上是不可能的,数字会被截断为 2 位。下划线仅用于可读性目的,没有任何其他作用。

我想,您需要如下内容:

reg [255:0] myname = 256'b01001110011010010110101101101111011011000110111101111010;

您可以根据需要添加下划线以提高可读性。