0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数字电路教程的组合逻辑部分介绍

电子森林 来源:电子森林 作者:苏老师 2021-10-08 11:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

数字电路教程的组合逻辑部分,最经典的示例除了加法器以外就是:

Encoder - 编码器

Decoder - 译码器

Multiplexer - 简写Mux,多路复用器,也叫数据选择器

Demultiplexer - 简写Demux,解复用器,也叫数据分配器

其实是两对概念:Encoder/Decoder是跟code(码)相关的正反两个操作,Mux/Demux是跟数据流相关的正反两个操作。

翻看各种教科书,我们很难理清楚它们之间的功能差异以及相互之间的关系,只是有一些点滴应用在书本上提及。

这两组概念其实是非常重要的,是构成我们信息组织和信息传输的重要基础,并且在我们的生活中处处都能够找到与之对应的应用:

比如我们看谍战片中神秘的电报编码(要用密码本来翻译);我们用的键盘上面有100多个按键、而几根线就可以将它跟计算机连接;我们使用的旋转拨码开关、模数转换器中通过比较器输出的比较结果到最终用于表征模拟信号大小的数据,这些都被称为Encode - 编码。

99421436-23b9-11ec-82a8-dac502259ad0.png

单刀八掷的旋转开关可以用3根二进制数据线来表征其状态

简而言之,编码器是一种把熟悉的数字、字符或符号转换成二进制代码的装置,它将给定的信息编码成更紧凑的形式,主要用于减少表示给定信息所需的比特数。在数字系统中,编码器用来传输或存储信息,通过编码传输链路可以使用更少的线路来传输或更少的空间来存储。将量化的音乐通过编码器转换为MP3格式,将采集到的视频流通过编码器转换为MP4的数据格式,这些过程都统称为“编码” ,当然在我们的数字电路教程中,只是通过最简单的示例来讲述其原理。

就像电报中的编码有很多中一样,用二进制来表征数字、字符或符号也有多种不同的方式,比如BCD、5421码、2421码、余3码、格雷码等,每种编码方式都有其优缺点,因此有用于不同的场景。

译码器(Decoder)是编码器的逆过程,它是把二进制表征的信息给翻译过来,或者说映射过来,我们生活中的门牌号、车牌号、邮箱、组合开关对多个灯的控制、嵌入式系统中的存储器/外设寻址,这些都是译码的过程,通过代码中的数字,找到其对应的对象。在数字计算中,代码中的数字都是用二进制(扩展为8进制、16进制等,本质上也是2进制)。数字电路教程中,在译码器部分最常用到的例子就是3:8译码器,这是因为74HC138就是这么一个IC,比较适合做各种实验,当然7段数码管的控制也是非常重要的实验项目让同学们来体会译码的过程,通过几根控制线的电平组合,可以点亮数码管上7个LED灯中的若干个,从而组合出我们需要显示的数字。

我们硬禾学堂也专门针对译码部分制作了两个视频案例,一个是2:4译码,一个是3:8译码,虽然看起来没啥大的区别,但我们还是通过这两个实例来让大家体会Verilog代码实现的不同方式,希望对学习Verilog的同学有帮助。

FPGA中的逻辑单元的基本构成就是LUT - 查找表,其理论基础就是译码,比如我们小脚丫FPGA中采用的是4输入LUTS,通过查找表的方式代替逻辑门的构成,4个输入作为RAM的地址,可以寻址16个不同的地址空间内存储的信息。

是不是感觉编码器/译码器用途很广?

那Mux/Demux呢?想象一下从四条不同路径过来的车辆要并线到一条路上,由红绿灯控制,控制部分就相当于一个分时切换的开关,根据开关的控制码来决定哪一路的车辆通行,Mux又称为多路数据选择器,Demux又被称为数据分配器。

其实MUX不仅用于数字器件中,模拟电路中也有这个概念,我们所说的模拟开关,可以切换不同的输入与输出的连接,在模拟电路中Mux和Demux是一体的,同一个电路即是Mux又是Demux。而数字的Mux和Demux需要使用不同的器件。

9a343734-23b9-11ec-82a8-dac502259ad0.png

复用器的构成

从上面的图中可以看出译码器是复用器构成的重要部分。复用器的控制信号就是通过译码以后,对应到相应的控制端点,从而实现对输入信号的选择通过的。

复用器/解复用器的Verilog逻辑异常简单,有一点程序基础的同学一看就懂,比如下面的4选1多路选择器,一个case语句搞定,case的条件是2个选择数据为sel1、sel0,sel1和sel0的4种组合决定了一个LED同4个不同输入信号的连接。

很容易看懂,是因为我们任何一门编程语言中的if else、case本质上都是Mux的功能,只是我们太习以为常了而已。

module mult4 ( input wire a, //定义四位输入 input wire b, input wire c, input wire d, input wire [1:0] sel, //定义输出的选择变量 output reg led //定义选择器输出结果对应的led ); always@(sel) //根据sel结果选择输出,当sel变化时执行 begin case(sel) 2‘b00: led = a; 2’b01: led = b; 2‘b10: led = c; 2’b11: led = d; endcase end endmodule

从这几行代码看,FPGA的使用非常简单,不需要你画门与门之间的逻辑关系图,只需要用Verilog这种硬件描述语言来描述一下其因果关系就可以了。

与Encoder、Decoder、Mux、Demux相关的案例及其FPGA实现都汇总在www.stepfpga.com的网站百科中,如果您使用我们的Web IDE(不需要下载安装FPGA工具),也可以找到相关的参考案例,自己去发掘喽。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路
    +关注

    关注

    173

    文章

    6064

    浏览量

    177552
  • 复用器
    +关注

    关注

    1

    文章

    794

    浏览量

    29717

原文标题:浅谈“数字电路”的学习(8)- 编码器、译码器、多路复用器、解复用器的关系和应用

文章出处:【微信号:xiaojiaoyafpga,微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    掌握数字设计基础:迈向芯片设计的第一步

    最小信息单位,最终构建出庞大的数据世界。 2、逻辑门与布尔代数:电路的积木与语法 数字电路的运作离不开 逻辑门(Logic Gates)。最基本的 AND、OR、NOT 门就像乐高积木
    发表于 10-09 21:11

    实用电子电路设计(全6本)——数字逻辑电路的ASIC设计

    由于资料内存过大,分开上传,有需要的朋友可以去主页搜索下载哦~ 本文以实现高速高可靠性的数字系统设计为目标,以完全同步式电路为基础,从技术实现的角度介绍ASIC逻辑电路设计技术。
    发表于 05-15 15:22

    数字电路设计中:前端与后端的差异解析

    本文介绍数字电路设计中“前端”和“后端”的区别。 数字电路设计中“前端”和“后端”整个过程可类比盖一栋大楼:前端好比建筑师在图纸上进行功能和布局的抽象设计,后端则是工程队把图纸变成实体建筑的过程
    的头像 发表于 02-12 10:09 1375次阅读

    数字电路有哪些特点和作用

    在电子技术领域,数字电路具有一系列鲜明的特点,这些特点使其在众多应用场景中发挥关键作用,推动着现代科技不断向前发展。 信号的离散性是数字电路最为突出的特点之一。数字电路所处理的数字信号
    的头像 发表于 02-04 17:17 1605次阅读

    数字电路与控制系统关系

    在现代技术领域,数字电路和控制系统是两个不可或缺的组成部分数字电路作为电子技术的基础,为控制系统提供了必要的硬件支持。而控制系统则是利用这些硬件来实现对各种机械设备或过程的精确控制。 数字电
    的头像 发表于 01-24 09:43 1190次阅读

    数字电路在嵌入式系统中的应用

    随着科技的迅猛发展,嵌入式系统已经成为现代电子产品不可或缺的一部分。从简单的家用电器到复杂的工业控制系统,嵌入式系统无处不在。数字电路作为嵌入式系统的核心组成部分,其设计和应用直接影响着系统的性能
    的头像 发表于 01-24 09:41 1168次阅读

    数字电路中常见组件

    数字电路是由一系列电子组件组成的,它们处理的是二进制信号,即电压水平的高低,通常对应于逻辑“0”和“1”。以下是数字电路中常见的一些组件,以及它们的基本功能和特点: 逻辑门(Logic
    的头像 发表于 01-24 09:40 1558次阅读

    数字电路编程语言介绍

    文本形式描述电路的行为和结构。 并行性和并发性 :数字电路编程语言支持并行和并发操作的描述,这是数字电路设计中的基本特性。 模块化 :这些语言支持模块化设计,允许设计师将复杂的电路分解
    的头像 发表于 01-24 09:39 1416次阅读

    数字电路与模拟电路的区别

    在电子工程领域,数字电路和模拟电路是两种截然不同的技术。它们在处理信号、设计方法、应用领域以及性能特点上有着明显的差异。 一、信号处理方式 1.1 模拟电路 模拟电路处理的是连续变化的
    的头像 发表于 01-24 09:36 2138次阅读

    模拟电路数字电路的区别

    在现代电子技术中,模拟电路数字电路是两种截然不同的电路类型,它们各自有着独特的特点和应用场景。 一、信号处理方式 模拟电路: 模拟电路处理
    的头像 发表于 01-24 09:22 2103次阅读

    数字电路仿真实现

    电子发烧友网站提供《数字电路仿真实现.pdf》资料免费下载
    发表于 01-21 09:24 2次下载
    <b class='flag-5'>数字电路</b>仿真实现

    TTL电平在数字电路中的作用

    数字电子学中,TTL电平是一种广泛使用的逻辑电平标准,它为数字电路的设计和实现提供了一种标准化的电压级别。TTL电平的定义和应用对于理解数字电路的工作原理至关重要。 1. TTL电平
    的头像 发表于 01-16 09:56 3255次阅读

    卡诺图在数字电路中的应用

    卡诺图(Karnaugh map,简称K-map)在数字电路中具有广泛的应用,它主要用于布尔代数表达式的简化和最小化,从而优化数字电路的设计。以下是卡诺图在数字电路中的具体应用: 一、布尔代数
    的头像 发表于 01-14 17:08 2380次阅读

    BJT在数字电路中的应用

    数字电路设计中,BJT因其独特的电气特性和成本效益而被广泛使用。BJT可以作为开关使用,控制电流的流动,从而实现逻辑功能。 1. BJT作为开关 在数字电路中,BJT最常见的应用之一是作为开关
    的头像 发表于 12-31 16:34 1648次阅读

    如何使用 Verilog 进行数字电路设计

    首先,你需要清楚地了解你的数字电路需要实现什么功能。这可能包括输入输出的数量、数据宽度、时钟频率、时序要求等。明确的需求是设计成功的关键。 2. 设计逻辑电路 在明确了需求之后,你需要设计逻辑电路。这可以通过手绘
    的头像 发表于 12-17 09:47 1789次阅读