一、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线译码器是一种全译码器(二进制译码器)。全译码器的输入是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
end
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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐