一、3-8译码器简介

  • 译码是编码的逆过程。其功能是将具有特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路称为译码器。如果有n个二进制选择线,则最多可译码转换成2n个数据。

2、功能:

  • 将输入的3位2进制数翻译成10进制的8位输出。
  • 3-8译码器输入是二进制。3只脚也就是3位二进制数。输入可以3位二进制数。3位二进制最大是111 也就是8。
  • 3-8译码器输出是8个脚,表示10进制。是根据输入的二进制数输出。如果输入是101 那么就是第5只脚高电平,表示二进制数是5。
  • 3-8线译码器是一种全译码器(二进制译码器)。全译码器的输入是3位二进制代码,3位二进制代码共有8种组合,故输出是与这8种组合一一对应的8个输出信号。
  • 译码器将每种二进制的代码组合译成对应的一根输出线上的高(低)平信号。3-8译码器的逻辑图和引脚排列图如下所示:
    在这里插入图片描述

3、逻辑真值表

  • 逻辑真值表中,输入信号的每种组合对应着一个输出端的高电平信号 ,即输出端为高电平(1) 时认为该输出端有输出信号。当然,根据有需要也可以定义输出端为低电平(0) 时认为该输出端有输入信号,此时称输出端低电平有效。这些都是我们在设计译码器的时候人为设定的。
    通过逻辑真值表我们可以写出逻辑表达式
    在这里插入图片描述

  • 译码器的知识就介绍这些,这些足够咱们进行下面的操作。其他的知识大家想了解的话可以看一下模拟电子技术的书。

1、真值表

通过上面对3-8译码器的了解,我们可以写出我们今天实例的真值表。首先当SW3处于OFF状态时,所有灯灭,当SW3处于ON状态时,点亮的LED的位是由SW4/SW5/SW6拨码决定的。真值表如下所示:
在这里插入图片描述

2、代码解析

module cy4(
input ext_clk_25m, //外部输入 25MHz 时钟信号
input ext_rst_n, //外部输入复位信号,低电平有效
input[3:0] switch, //4 个拨码开关接口,ON -- 低电平;OFF -- 高电平
output reg[7:0] led //8 个 LED 指示灯接口
always @ (posedge ext_clk_25m or negedge ext_rst_n)
if(!ext_rst_n) led <= 8'hff; //所有 LED 关闭
else if(switch[0]) led <= 8'hff; //SW3 处于 OFF 状态,所有 LED 关闭
else begin //SW3 处于 ON 状态,点亮的 LED 位由 SW4/SW5/SW6 拨码开关的输入决定
case(switch[3:1])
3'b111: led <= 8'b1111_1110; //D2 点亮
3'b110: led <= 8'b1111_1101; //D3 点亮
3'b101: led <= 8'b1111_1011; //D4 点亮
3'b100: led <= 8'b1111_0111; //D5 点亮
3'b011: led <= 8'b1110_1111; //D6 点亮
3'b010: led <= 8'b1101_1111; //D7 点亮
3'b001: led <= 8'b1011_1111; //D8 点亮
3'b000: led <= 8'b0111_1111; //D9 点亮
default: ;
endcase
endmodule
  • 首先我们依旧是和上一个例程一样在底层模块中写好我们的输出和输出信号。输出信号有25MHZ的信号和复位信号和四个拨码开关。三个拨码开关来充当我们3-8译码器的输入。用我们的八个LED灯来充当我们3-8译码器的输出。所以输出信号接LED灯。
  • 接下来是,多个沿触发的时序逻辑,posedge ext_clk_25m or negedge ext_rst_n复位信号是低电平有效,当复位信号为低电平的时候,则该程序不执行,全部处于复位状态。当复位信号为高电平时,执行程序。
  • 最后就是由Verilog中的case语句。这个在之前的博客中没有涉及到。
case(控制表达式) 
	分支值1:begin 一条或者多条语句end 
	分支值2:begin 一条或者多条语句end 
	…..default: begin 一条或者多条语句
end endcase
  • case的各分支语句没有优先级而if…case语句有优先级。在上面中,case的各分支的值必须互斥,不能含有相同的分支值。default是为了避免没有必要的锁存。case中执行的值与真值表中的我们所想得到的结果一一对应。当SW6、SW5、SW4为OFF、OFF、OFF时,D2灯亮,也就是当对应的三个拨码开关为111时八个灯的结果为11111110.以此类推即可。

三、效果展示

在这里插入图片描述
注意,拨码开关向上板为NO向下板为OFF,大家可以从图中看出,当SW3为NO、SW4为NO、SW5为OFF、SW6为OFF时,灯D3亮,与我们的真值表相符。说明该程序成功。下面两张图同理。
在这里插入图片描述
在这里插入图片描述可以和真值表对比。实际操作与我们想要实现的功能一样。

https://www.diangon.com/wenku/rd/dianzi/201505/00023654.html
https://blog.csdn.net/weixin_41445387/article/details/82998004

一、3-8译码器简介1、简介译码是编码的逆过程。其功能是将具有特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路称为译码器。如果有n个二进制选择线,则最多可译码转换成2n个数据。2、功能:将输入的3位2进制数翻译成10进制的8位输出。3-8译码器输入是二进制。3只脚也就是3位二进制数。输入可以3位二进制数。3位二进制最大是111 也就是8。3-8译码器输出是8个脚,表示10进制。是根据输入的二进制数输出。如果输入是101 那么就是第5只脚高电平,表示二进制数是5。3-8
本关任务:在Logisim中,利用上一关中设计的2-4译码器级联来构建3-8译码器,使能信号Enable高电平有效。 译码器(Decoder)能将二进制代码的特定含义翻译出来,是一类多输入多输出组合逻辑器件,其可以分为:变量译码和显示译码两类。 变量译码器一般是一种较少输入变为较多输出的器件,常见的有n线-2^n线译码和BCD码译码两类;显示译码器用来将二进制数转换成对应的七段码,一般其可分为驱动LED和驱动LCD两类。 计算机中通常有地址译码器、指令译码器等。 利用2-4译码器级联扩展构建3-8
一、组合逻辑电路与时序逻辑电路 组合逻辑电路:任意时刻的输出仅仅由该时刻的输入决定,与电路当前的状态无关。 时序逻辑电路:任意时刻的输出不仅由该时刻的输入决定,还与电路当前的状态有关。 二、38译码器的工作原理 表①、38译码器真值表 3种输入状态翻译成8种输出状态。 三、Verilog代码实现 module decoder_38 ( a,b,c,data input wire a; input wire b; input wire c; output reg
output reg [7:0]out; always @(a,b,c)begin //当a,b,c信号变化时,always语句触发 case({a,b,c}) //位拼接 {} 3'b000: out = 8'b0000_0001; 3'b001: out = 8'b0000_001 2.实验原理不太清楚:课下要好好看看原理。 3.文件名必须与VHDL文件中的设计实体名保持一致。 4.思考软件仿真时输入信号应如何设置?: 在修改时钟信号的地方,可选时间和频率选项,而频率的选项在时间下面,容易忽视,选完频率后,就可以继续设置了。 5.在设置引脚时,一定要看电路板,以及电路图,找对各个输入输出接口对应的芯片引脚。 用Verilog设计一个3-8译码器,要求分别使用if-elsecase语句。输入端分别为三个拨码开关,确认键为按钮,其中三个为3-8译码器的输入,另一个为确认键,先按输入,再按下确认键,开始译码。 (1)学习并掌握Quartus II的使用方法 (2)学习使用原理图方法进行逻辑设计输入,并初步了解可编程器件设计的全过程 (3)熟悉ALTERA公司EDA设计工具软件Quartusll设计一个3-8译码器,并在实验开发系统上熟悉原理图输入及仿真步骤,掌握组合逻辑电路的设计及静态测试方法 二、实验仪器设备 (1) PC机一台。 (2)Quartus Ⅱ开发软件一套 (3)EDA实验开发系统一套 三、实验原理 译码是相对于编码的逆过程,在基于一定硬件支持下能是将