本篇文章使用Verilog语言编写实现带有优先级的83译码器,含有设计代码和测试代码。
一、输入输出和真值表
二、设计代码
`timescale 1ns / 1ps
module decode_3_8(
input [2:0]in,
output [7:0]out
);
assign out[0]=(in==3'd0);
assign out[1]=(in==3'd1);
assign out[2]=(in==3'd2);
assign out[3]=(in==3'd3);
assign out[4]=(in==3'd4);
assign out[5]=(in==3'd5);
assign out[6]=(in==3'd6);
assign out[7]=(in==3'd7);
endmodule
三、仿真代码
`timescale 1ns / 1ps
module decoder_3_8_tb();
reg [2:0]in0;
wire [7:0]out0;
decode_3_8 decoder_3_80(.in(in0),.out(out0));
integer i=0;
initial begin
for(i=0;i<=7;i=i+1)begin
# 10
in0=i;
end
# 30
$finish;
end
endmodule
四、仿真结果
由波形图可得,在输入信号为000时,输出信号为out0为1、在输入信号为001时,输出信号out1为1,以此类推。即该38译码器可将输入的三位二进制信号转换为其对应的十进制结果输出。
仅供学习交流,如发现错误,欢迎大家指正。