数字电路:AHDL中的组合逻辑

1. Decoders and Encoders

1.1 Decoder

Decoder

上图是一个译码器的AHDL代码,译码器的输入可以分为两部分,图中的e1 ,e2bar, e3bar决定了a是否表达
只有当e1=1, e2=0, e3=0时,a才能够决定输出
通过DEFAULT,代码为所有未声明的输出都定义了一个VCC,只有当CASE触发时,才会将特定的输出变为GND
通过定义情况 ENABLE 和运用逻辑语句 IF,代码实现了只有当e1,e2,e3满足特定情况时,下方的CASE才会被执行

1.2 Encoder

Encoder

上图是一个编码器的AHDL代码,编码器的输入存在优先级,当优先级较高的输入触发时,编码器就不会去考虑优先级相对低的输入了。
如图,在出现“0”后,所有的输入都被“X”代替,意味着之后的数位是1还是0都已经不重要了。

在AHDL中有一个名为TRI的库基元(library primitive),可被用于三态缓冲(Tristate buffers),使用方式如下:

VARIABLE buffer[3..0]	 :TRI;

一个基元可以被认为是存储中的组件,类似C中的structure

实现ENCODER还可以用IF/ELSIF/THEN,是利用触发的顺序现后来实现优先级的效果,本质上的逻辑是一样的

2. MUX and DEMUX

多路转接器(Multiplexer)可以从多个输入中选择一个输出
信号分离器(Demultiplexer)可以将一个输入转化成多个输出

2.1 MUX

MUX除了正常的输入之外,还有一组选择输入用来决定接纳哪个正常输入作为输出。
在代码中,会将选择输入存在一个变量里,,然后通过CASE来决定不同的变量对应输出哪一个输入
代码如下:
在这里插入图片描述

2.2 DEMUX

DEMUX也拥有选择输入,不同的是,这个选择输入用于决定选择哪一个输出来接纳输入
在代码中,会通过DEFAULT来为四个输出设定默认值,之后,将选择输入存进变量,并根据变量的不同经“CASE”决定用哪个输出来容纳输入
代码如下:

3. Comparators

比较器有两组输入a,b,每组输入一个数,最后会通过三个输出来分别对应a>b,a<b,a=b三种情况
在代码中,可以直接通过<,>,=配合“IF/ELSIF/THEN”来选择与输入对应的输出
代码如下

4. Adders

加法器可以输入两个数字和一个进位,输出一个sum和一个进位
代码如下:
ADDER

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值