3-8译码器设计与仿真

简介

3-8译码器,就是把3种输入状态翻译成8种输出状态,译码器是将输入的具有特定含义的二进制代码翻译成输出信号的不同组合,实现电路控制功能的逻辑电路。译码器在数字系统中应用广泛,可用于代码的转换、终端数字的显示、数据的分配等等。

一、实验目的

3-8译码器本身没有什么实际意义,本次实验主要是为了理解verilog基础语法,掌握组合逻辑的设计方法。

二、设计原理

3-8 译码器有 3 个输入和 8 个输出,所以可以指定当输入为 111 时,译码后为指定的状态,即输出00000001,紧接着依次类推,当输入为 110 时,输出 01111111,当输入为 101 时,输出 11011111,当输入为 100 时,输出 11101111,输入 011 时,输出为 11110111,输入为 010 时,输出 11111011,输入为 001 时,输出 11111101,输入为 000 时,输出为 11111110。
如下图所示:
在这里插入图片描述

三、代码

module decoder(
	input wire [2:0] a,//输入信号,3位
	
	output reg [7:0] b//输出信号,8位
);

	//译码器组合逻辑
	always@(*)begin
		case(a)
			3'b000: b=8'b11111110;
			3'b001:	b=8'b11111101;
			3'b010: b=8'b11111011;
			3'b011:	b=8'b11110111;
			3'b100: b=8'b11101111;
			3'b101:	b=8'b11011111;
			3'b110:	b=8'b01111111;
			3'b111:	b=8'b10000000;
			default: b=8'b00000000;
		endcase 
	end 
endmodule 

四、仿真

4.1 仿真代码

`timescale 1ns/1ns //单位/精度
module decoder_tb();

reg [2:0]  a;//输入信号
wire [7:0] b;//输出信号

initial begin
	a = 3'b000;
	#1        ;//延迟1ns
	a = 3'b001;
	#1        ;//延迟1ns
	a = 3'b010;
	#1        ;//延迟1ns
	a = 3'b011;
	#1        ;//延迟1ns
	a = 3'b101;
	#1        ;//延迟1ns
	a = 3'b110;
	#1        ;//延迟1ns
	a = 3'b111;
	#1        ;//延迟1ns
	a = 3'bxxx;
	#1        ;//延迟1ns
end 

decoder	u_decoder(
.a	(a),//输入信号,3位
	
.b	(b)//输出信号,8位
);
endmodule 

4.2 仿真结果

在这里插入图片描述

五、总结

3-8译码器的设计原理还是非常简单易懂的,就是通过3个输入来输出8个信号。主要还是理解verilog的语法,掌握组合逻辑的设计。

猜你喜欢

转载自blog.csdn.net/asdhnkhn/article/details/131704209