我正在编写一个测试台,我试图在其中定义一个位流,如下所示:
`define PREAMBLE (10'b1010101011)
`define FUNC_ENERGY (4'b0001)
reg bit_stream_tb = {`PREAMBLE, `FUNC_ENERGY, 1'b1};
一旦我在
bit_stream_tb
语句中显示 initial
,我只得到“1”。
$display("bit_stream: ", bit_stream_tb);
输出:
bit_stream: 1
如何连接它以使输出为:
bit_stream: 1010101011 0001 1
PREAMBLE FUNC_ENERGY
当然没有空格。
在程序的后期阶段,我希望能够“垃圾邮件”一系列
`DEFINES
以获得比特流。我认为最简单的方法就是连接成 reg
,这并不能按预期工作。
我确实不想要像这样有一个很长的`DEFINE:
`DEFINE `PREAMBLE `FUNC_ENERGY 1,
因为它不像我喜欢的那样模块化。
输出仅显示
1
,因为您将 bit_stream_tb
声明为 1 位信号,并且仅将其分配给串联的 LSB,即 1'b1
。
此声明创建一个 1 位信号,因为没有范围说明符:
reg bit_stream_tb
您应该使用指定 15 位信号的范围,如下所示:
reg [14:0] bit_stream_tb = {`PREAMBLE, `FUNC_ENERGY, 1'b1};
这是一个完整的代码示例:
module tb;
`define PREAMBLE (10'b1010101011)
`define FUNC_ENERGY (4'b0001)
reg [14:0] bit_stream_tb = {`PREAMBLE, `FUNC_ENERGY, 1'b1};
initial begin
$display("bit_stream: ", bit_stream_tb);
end
endmodule
输出:
bit_stream: 21859