初学verilog 用verilog 实现83译码器
**## ****//初学verilog 用verilog 实现83译码器******
module decoder83(
input wire clk,
input wire rst,
input wire [7:0] indata,
output reg [2:0] out
);
always@(posedge clk or posedge rst) begin
if(rst) //高电平有效
out<=3'b000;
else
case(indata)
8'b0000_0001 : out<=3'b000;
8'b0000_0010 : out<=3'b001;
8'b0000_0100 : out<=3'b010;
8'b0000_1000 : out<=3'b011;
8'b0001_0000 : out<=3'b100;
8'b0010_0000 : out<=3'b101;
8'b0100_0000 : out<=3'b110;
8'b1000_0000 : out<=3'b111;
default : out<=3'b000;
endcase
end
endmodule
**// 测试仿真代码**
`timescale 1ns/1ns
module decoder83_tb ();
reg clk;
reg rst;
reg [7:0] indata;
wire [2:0] out;
initial begin
clk=0;
rst=1;
#1 rst=0; indata=8'b0000_0001;
#20 indata=8'b0000_0010;
#20 indata=8'b0000_0100;
#20 indata=8'b0000_1000;
#20 indata=8'b0001_0000;
#20 indata=8'b0010_0000;
#20 indata=8'b0100_0000;
#20 indata=8'b1000_0000;
#850 $stop;
end
always #10 clk=~clk;
decoder83 inst_decoder83(
.clk (clk ),
.rst (rst ),
.indata (indata),
.out (out )
);
endmodule