FPGA Verilog开发实战指南:基于Intel Cyclone IV(基础篇)
上QQ阅读APP看书,第一时间看更新

9.1 理论学习

9.1.1 多路选择器

在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路叫作数据选择器,也称多路选择器或多路开关。在选择变量的控制下,从多路数据输入中将某一路数据送至输出端。对于一个具有2n个输入和1个输出的多路选择器,有n个选择变量。多路选择器也是FPGA内部的一个基本资源,主要用于内部信号的选通。简单的多路选择器还可以通过级联生成更大的多路选择器。

9.1.2 译码器

译码是编码的逆过程,在编码时,每一种二进制代码都有特定的含义,即都表示了一个确定的信号或者对象。把代码状态的特定含义翻译出来的过程叫作译码,实现译码操作的电路称为译码器(decoder)。或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其原来含义的电路。

译码器是一类多输入多输出组合逻辑电路器件,可以分为变量译码和显示译码两类。变量译码器一般是一种较少输入变为较多输出的器件,常见的有n线-2n线译码和8421BCD码译码两类;显示译码器用来将二进制数转换成对应的七段码,一般可分为驱动LED和驱动LCD两类。

本节我们主要讲解变量译码,最常见的变量译码器为3-8译码器,主要用于端口的扩展。假如我们有8个LED灯需要单独控制,理论上需要用8个I/O口,普通的单片机也够用,但是如果我们控制的不是8个LED灯,而是一个点阵屏,那可想而知,我们要使用的I/O口数量不是一般控制器能满足的,即便是I/O资源丰富的FPGA在面对巨大的点阵屏时也可能面临引脚资源不够用的尴尬情况。此种情况下,使用3-8译码器就可以很好地解决这个问题。我们可以通过控制器控制3个I/O输出的8种情况来分别控制8个输出状态,相当于用3个I/O口就可以独立控制8个LED灯,即一个3-8译码器就能够节约出5个I/O口,是相当划算的。现在的3-8译码器大都做成了独立ASIC芯片,价格也往往非常便宜。

9.1.3 半加器

数字电路中加法器是经常用到的一种基本器件,主要用于两个数或者多个数的加和,加法器又分为半加器(half adder)和全加器(full adder)。半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路,是实现两个一位二进制数的加法运算的电路。全加器是半加器的升级版,除了加数和被加数加和外,还要加上上一级传进来的进位信号。