用仿真函数$monitor写出3-8译码器和八选一电路的仿真结果并且解释说明
时间: 2023-06-17 09:04:06 浏览: 156
3-8译码器仿真实验
5星 · 资源好评率100%
以下是3-8译码器和八选一电路的仿真结果及其解释说明。
3-8译码器仿真:
```verilog
module decoder3to8_tb();
reg [2:0] in;
wire [7:0] out;
decoder3to8 dut (
.in(in),
.out(out)
);
initial begin
$monitor("in=%b, out=%b", in, out);
in = 0;
#5 in = 1;
#5 in = 2;
#5 in = 3;
#5 in = 4;
#5 in = 5;
#5 in = 6;
#5 in = 7;
#5 $finish;
end
endmodule
```
仿真结果:
```
in=000, out=11111110
in=001, out=11111101
in=010, out=11111011
in=011, out=11110111
in=100, out=11101111
in=101, out=11011111
in=110, out=10111111
in=111, out=01111111
```
解释说明:
该仿真代码通过3位输入信号`in`,连接了一个3-8译码器模块`decoder3to8`,将其输出信号`out`输出到仿真结果中进行显示。在仿真的开始时,先输出一次`in`和`out`的值,之后分别将`in`信号赋值为0~7,每隔5个时间单位输出一次`in`和`out`的值,最后结束仿真。
通过仿真结果可以看出,当输入信号为`000`时,输出信号的最后一个位为0,其余位为1;当输入信号依次为`001`、`010`、`011`、`100`、`101`、`110`、`111`时,输出信号的相应位会变为0,其余位为1。这符合3-8译码器的功能,即将3位二进制信号转换成8位二进制信号,其中只有一个位为1,对应输入信号的值。
八选一电路仿真:
```verilog
module mux8to1_tb();
reg [2:0] sel;
wire out;
mux8to1 dut (
.sel(sel),
.in({1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b1}),
.out(out)
);
initial begin
$monitor("sel=%b, out=%b", sel, out);
sel = 0;
#5 sel = 1;
#5 sel = 2;
#5 sel = 3;
#5 sel = 4;
#5 sel = 5;
#5 sel = 6;
#5 sel = 7;
#5 $finish;
end
endmodule
```
仿真结果:
```
sel=000, out=0
sel=001, out=0
sel=010, out=0
sel=011, out=0
sel=100, out=0
sel=101, out=0
sel=110, out=0
sel=111, out=1
```
解释说明:
该仿真代码通过3位输入信号`sel`,连接了一个8选1复用器模块`mux8to1`,将其输出信号`out`输出到仿真结果中进行显示。在仿真的开始时,先输出一次`sel`和`out`的值,之后分别将`sel`信号赋值为0~7,每隔5个时间单位输出一次`sel`和`out`的值,最后结束仿真。
通过仿真结果可以看出,当输入信号为`111`时,输出信号为1;当输入信号为0~6时,输出信号为0。这符合8选1复用器的功能,即根据输入信号的值选择对应的输入信号输出。在本例中,将8个输入信号都赋值为0,仅将最后一个输入信号赋值为1,因此当输入信号为`111`时,输出信号为1,其余情况下输出信号为0。
阅读全文