数字电路 第三章—第四节(编码器和译码器)

本文详细介绍了码制的概念、二-十进制编码(如8421码、余3码等)、循环码(包括4位循环码和循环码的优点),以及ASCII码的结构。此外,还探讨了编码器(如3位二进制编码器和8421BCD码编码器)和译码器(如3位二进制译码器和8421BCD码译码器)的工作原理及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、码制

1、概述

(1)采用多位数码,按一定规则来表示不同事物信息的方法,称为码制。

(2)将若干个二进制数码0和1按一定规则排列起来表示某种特定含义的代码,称为二进制代码,或称二进制码。

2、二-十进制编码

(1)二-十进制编码(BCD码)是用4位二进制码来表示0~9这十个状态的,如果任意取其中的十个状态并按不同的次序排列,则可以得到许多种不同的编码。

(2)常用的二-十进制编码:

①8421码:在这种代码中,每1位的权都是固定的,把它当作正常二进制数转成十进制数基本没有问题。

②余3码:每一个余3码所表示的二进制数要比它所对应的十进制数多3。

③2421码:每1位的权都是固定的,但它的第4位的权不是对应十进制中的8,而是2。(一个十进制数对应的2421码可能不唯一,下表仅给出其中一种)

④5211码:每1位的权都是固定的,4位二进制数从左到右的权依次是5、2、1、1。

⑤余3循环码:比一般循环码从0000开始计数的状态多3。

⑥右移循环码:这种编码的任何两个相邻代码之间只有1位状态不同,缺点是没有充分利用5位二进制代码的所有状态,因此二进制代码的位数比其它编码多了1位。

3、循环码

(1)循环码又称反射码、格雷码,循环码中每1位代码,从上到下的排列顺序都是以固定的周期进行循环的。

(2)4位循环码表:

十进制数

循环码

十进制数

循环码

0

0000

8

1100

1

0001

9

1101

2

0011

10

1111

3

0010

11

1110

4

0100

12

1010

5

0111

13

1011

6

0101

14

1001

7

0100

15

1000

(3)循环码的主要优点是相邻两个编码只有1位状态不同,它的缺点是不够直观。

4、ASCII码

(1)ASCII码是一组8位二进制代码,前7位二进制代码表示字符信息,第8位作为奇偶校验位。

(2)ASCII码表:

二、编码器

1、概述

(1)一般地说,用文字、符号或者数字表示特定对象的过程都可以叫做编码。

(2)用n位二进制代码对N=2^{n}个信号进行编码的电路称为二进制编码器;能实现二-十进制编码的电路称为二-十进制编码器。(编码器的工作原理并无本质区别,下面仅介绍3位二进制编码器和8421 BCD码编码器)

2、二进制编码器

(1)3位二进制编码器(8线-3线编码器):

①输入是8个需要编码的信号,输出是用来进行编码的3位二进制代码。I_{0}\sim I_{7}是一组互相排斥的输入变量,任何时刻只能有一个端输入有效信号

②真值表(编码表):

③逻辑表达式:

④逻辑图:

[1]用或门实现:

[2]用与非门实现:

(2)3位二进制优先编码器(8线-3线优先编码器):

①与前面介绍的编码器不同,优先编码器允许几个信号同时输入,但是电路只对其中优先级最高的进行编码

②真值表(编码表):(假定优先顺序为I_{7}\rightarrow I_{0}

③逻辑表达式:

④逻辑图:

3、二-十进制编码器

(1)8421 BCD码编码器:

①真值表(编码表):

②逻辑表达式:

③逻辑图:

[1]用或门实现:

[2]用或非门实现(输入、输出信号均为反变量):

(2)8421 BCD码优先编码器:(假定优先顺序为I_{9}\rightarrow I_{0}

①真值表(编码表):

②逻辑表达式:

③逻辑图:

三、译码器

1、概述

(1)译码是编码的逆过程,把代码状态的特点含义“翻译”出来的过程叫做译码,实现译码操作的电路称为译码器。

(2)把n位二进制代码翻译后按N=2^{n}个信号进行输出的电路称为二进制译码器;能实现二-十进制译码的电路称为二-十进制译码器。(译码器的工作原理并无本质区别,下面仅介绍3位二进制译码器和8421 BCD码译码器)

2、二进制译码器

(1)3位二进制译码器(3线-8线译码器):

①输入是3位二进制代码,输出是8个信号。

②真值表:

③逻辑表达式:

④逻辑图:

[1]用与门实现:

[2]用与非门实现(输入、输出信号均为反变量):

(2)集成3线-8线译码器:

①若把上图所示电路加上控制门制作在一个芯片上,便可构成集成3线-8线译码器,如下图所示。

S_{1}\overline{S_{2}}\overline{S_{3}}是三个输入选通控制端,当S_{1}=0或者\overline{S_{2}}+\overline{S_{3}}=1时,译码器被禁止,译码器的输出端\overline{Y_{0}}\sim \overline{Y_{7}}全为1,只有当S_{1}=1\overline{S_{2}}+\overline{S_{3}}=0时,译码器才能正常运行。

(3)二进制译码器的级联:

①当输入二进制代码的位数比较多时,可以把几个二进制译码器级联起来完成其译码操作。

②以上图为例分析其工作原理:

3、二-十进制译码器

(1)8421 BCD码输入的4线-10线译码器:

①真值表:

注:在8421 BCD码中,代码1010~1111六种取值没有使用,在正常情况下不会再译码器输入端出现。

②逻辑表达式:

③逻辑图:

(2)集成4线-10线译码器:

①外引脚功能端排列图:

②真值表:

4、显示译码器

(1)在数字系统和装置中,经常需要把数字、文字和符号等二进制编码翻译成人们习惯的形式直观地显示出来,于是便诞生了显示译码器。

(2)常用的数码显示器有半导体显示器和液晶显示器两种。

(3)逻辑抽象:

①输入、输出信号分析:输入为8421 BCD码,输出是驱动七段发光二极管显示字形的信号。

②若采用共阳极数码管,则Y_{a}\sim Y_{g}为低电平有效,也就是为0时对应的发光二极管亮;若采用共阴极数码管,则Y_{a}\sim Y_{g}为高电平有效,也就是为1时对应的发光二极管亮。

③真值表:

④逻辑图:

[1]驱动共阳极数码管的电路:

[2]驱动共阴极数码管的电路:

### Verilog设计实例:十六进制至七段数码管显示译码器 #### 背景介绍 数码管是一种常见的数字显示器,能够通过不同的LED组合来表示字符。对于七段数码管而言,共有七个发光二极管组成一个“8”的形状[^1]。 #### 设计思路 为了实现从十六进制数值到七段数码管的映射,需要创建一个逻辑电路,该电路接收四位二进制信号作为输入(即代表0-F的十六种状态之一),并输出相应的控制信号给定每一段LED的状态。这里采用组合逻辑的方式来进行编码转换。 #### 实现方案 下面是一个简单的Verilog代码片段,展示了如何构建这样一个译码器: ```verilog // 定义模块名为hex_to_7seg_decoder module hex_to_7seg_decoder( input [3:0] hex_in, // 十六进制输入 (4-bit) output reg [6:0] seg_out // 对应于a-g各段的输出 (active low) ); always @(*) begin case(hex_in) 4'b0000: seg_out = 7'b1000000; // '0' 4'b0001: seg_out = 7'b1111001; // '1' 4'b0010: seg_out = 7'b0100100; // '2' 4'b0011: seg_out = 7'b0110000; // '3' 4'b0100: seg_out = 7'b0011001; // '4' 4'b0101: seg_out = 7'b0010010; // '5' 4'b0110: seg_out = 7'b0000010; // '6' 4'b0111: seg_out = 7'b1111000; // '7' 4'b1000: seg_out = 7'b0000000; // '8' 4'b1001: seg_out = 7'b0010000; // '9' 4'b1010: seg_out = 7'b0001000; // 'A' or '-' 4'b1011: seg_out = 7'b0000011; // 'b' 4'b1100: seg_out = 7'b1000110; // 'C' 4'b1101: seg_out = 7'b0100001; // 'd' 4'b1110: seg_out = 7'b0000110; // 'E' default: seg_out = 7'b0001110; // 'F' endcase end endmodule ``` 此代码实现了将任意一位十六进制数转化为适合驱动共阴极型七段数码管所需的电平序列的功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值