用Verilog HDL语言,实现一个四选一数据选择器,给出设计代码和测试代码
时间: 2023-06-19 11:06:05 浏览: 207
设计代码:
```verilog
module mux4to1(
input [3:0] data,
input [1:0] sel,
output reg out
);
always @(*) begin
case(sel)
2'b00: out = data[0];
2'b01: out = data[1];
2'b10: out = data[2];
2'b11: out = data[3];
endcase
end
endmodule
```
测试代码:
```verilog
module test_mux4to1;
reg [3:0] data;
reg [1:0] sel;
wire out;
mux4to1 dut(
.data(data),
.sel(sel),
.out(out)
);
initial begin
data = 4'b0000;
sel = 2'b00;
#10;
if(out != 1'b0) $error("Test failed");
data = 4'b0101;
sel = 2'b01;
#10;
if(out != 1'b1) $error("Test failed");
data = 4'b1111;
sel = 2'b10;
#10;
if(out != 1'b1) $error("Test failed");
data = 4'b0010;
sel = 2'b11;
#10;
if(out != 1'b0) $error("Test failed");
$display("All tests passed");
$finish;
end
endmodule
```
该代码实现了一个四选一数据选择器,其中输入 `data` 包含四个输入数据,输入 `sel` 包含两位选择信号,表示需要选择哪个输入数据。输出 `out` 表示选择的数据。测试代码对该模块进行了四个测试,分别测试了不同的选择信号下输出数据的正确性。
阅读全文