第七章 以 FPGA 为核心的系统电路设计
为什么以微处理器为核心的电子系统被称为智能电子系统?
因为这种系统可以对输入信号/环境条件进行感知/预测/采集/处理/判断,进而可以对外界条件/外界设备做出响应和控制。这种自适应和自学习的能力是智能控制的重要特点。
简述智能电子系统的软、硬件设计的相互关系以及各自的特点。
软/硬件设计之间既相互依存又相互制约。
较多地使用硬件来完成系统功能,可以提高工作速度,减少软件工作量,但硬件结构会比较复杂。
较多地使用软件来完成系统功能,可降低硬件的结构和成本,但运行速度会受到影响,也增加了软件工作量。采用通用微处理器、DSP和PLD为核心构建的系统各有什么侧重点?
- 微处理器:着重于控制功能。
- DSP:侧重于实时数字信号处理运算。
- PLD:侧重于灵活的硬件重构。
简述FPGA的三个发展阶段。
- 第一阶段:逻辑级 FPGA。是可编程逻辑芯片,内部结构包括必要的三个部分:可编程逻辑块,可编程 I/O 模块,可编程内部连线。主要实现逻辑功能,起到逻辑粘合作用。
- 第二阶段:系统级 FPGA。其内部添加了诸如大块的嵌入式 RAM、数字时钟管理器等模块,也支持更多类型的 I/O 接口标准,可以实现一个系统的功能。
- 第三阶段:平台级 FPGA。芯片内部集成了更加丰富的硬件资源,如乘法器、DSP 模块、高速接口等,应用延伸到数字信号处理、高密度运算、通信接口等更广阔的领域。单个 FPGA 平台就可以实现多种应用功能。
什么叫做FPGA基本系统?
以 FPGA 为核心构建的系统电路在硬件上主要包括基本系统和各种通道接口。
基本系统包括 FPGA 正常工作所需的电源、时钟和配置等电路,在各种应用系统中基本相同,具有典型结构。以Cyclone器件中的EP1C6为例(TQFP封装),说明FPGA引脚功能的分类以及I/O内部分块(BANK)的目的。
引脚功能分类
- 专用功能引脚:主要有电源、地端、时钟、配置和 JTAG 引脚等,其功能固定。
- 通用 I/O 引脚:可以由用户进行设计和使用。
分块目的
可以使同一个块内的引脚具有相同的特性,而处于不同块的引脚可以使用不同电压值的电源或不同频率的时钟,也可以支持不同的 I/O 标准。因此同一片 FPGA 芯片就可以通过配置不同块里的引脚来连接不同的外部设备。以EP1C6为例(TQFP封装),说明其外部电源引脚、时钟引脚有哪几种类型?
电源引脚
- VCCINT:内部操作和输入缓冲器的电源,BANK2 和 BANK4 各有3个。
- VCCIO:I/O 端口输出驱动的电源,每个 BANK 有2个(VCCIO1-VCCIO4 各2个)。
- VREF:外接诸如 DDR 存储器时的参考电源,每个 BANK 有3个(VREF0Bx-VREF2Bx, x取1、2、3、4)。
- 其中 VCCINT 和 VCCIO 是专用引脚,只能作为电源使用;VREF 在不连接外部存储器时,可以作为通用的 I/O 引脚使用。
时钟引脚
- 4个专用的时钟引脚(CLK0-CLK3):2个位于 BANK1,2个位于 BANK3。
- 8个时钟的复用引脚(DPCLK0-DPCLK7):可用于高扇出数的控制信号;不用于时钟引脚时,可以当作通用 I/O 引脚来使用。
什么叫做FPGA的配置?Cyclone系列FPGA的配置有哪几种方式?上电时的配置方式是如何确定的?
在系统上电时,对 FPGA 内部的 SRAM 装载数据的物理过程叫做配置。
Cyclone 器件的配置有三种模式:主动串行(AS)、被动串行(PS)和 JTAG 模式。
MSEL1 和 MSEL0 两个引脚的电平决定了器件的配置模式。
MSEL 引脚必须连接到所在 BANK 的 VCCIO 或者 GND,并且不加上拉或下拉电阻。
若采用 JTAG 模式,则忽略 MSEL 的状态;若不采用 JTAG 模式,MSEL1 = 0 MSEL0 = 0 时使用主动串行,MSEL1 = 0 MSEL0 = 1 时使用被动串行。以FPGA为核心构建的系统电路的外围电路包括哪些通道?各部分的主要功能是什么?
- 输入通道:被测信号通过输入通道进入系统电路。
- 信号获取:通过敏感元件/传感器/测量仪表将外界非电参量转换成电信号量。
- 信号调节:将输出的电信号转换成能满足数字电路接口或A/D输入要求的标准电平信号。
- A/D转换:对于频率信号和开关信号,满足TTL电平要求后可直接接入FPGA系统;对于模拟信号,则采用A/D转换器转换成数字信号,再进行数字信号处理。
- 抗干扰措施:包括电源隔离、模拟通道隔离、数字通道隔离。
- 输出通道:输出经过处理的信号并对控制对象实施控制。
- 人机交互通道:方便人对应用系统进行状态干预、数据输入,同时应用程序向人报告运行状态和运行结果。
- 相互通道:FPGA 与微处理器或 FPGA 与其他外部设备之间实现通信的通信接口。 ~
- 输入通道:被测信号通过输入通道进入系统电路。
了解LED灯、按键、矩阵键盘、数码管、点阵、蜂鸣器的工作原理以及用FPGA控制它们的方式。
- 单个LED
- 工作原理
与一般的二极管工作原理相似,有一个阴极和一个阳极。当阳极电压高于阴极电压时,LED导通(导通电压大约在2.0V左右),同时发光;当阴极电压高于阳极电压时,LED截止,不发光。导通时,发光强度随着流通LED的电流大小而变化。 - 控制方式
采用静态方式,一个LED灯占用一个端口,同一时刻显示不同灯的状态。
- 工作原理
- 七段数码管
- 工作原理
共阳极数码管,8个发光二极管的阳极连接在一起,形成公共端 COM;阴极分开,分别用a b c d e f g dp来表示。其中dp用于显示小数点,a-g用于控制其他七个灯的亮/灭,以此组成字母或数字。 - 控制方式
采用动态扫描方式,在不同的时刻送出不同LED灯的控制信号,轮流循环地控制各LED灯,利用人眼的残留效应得到稳定的显示状态。
在电路连接中,多个数码管的a端连接在一起,占用一个 I/O 端口(b-dp端接法相同);每个数码管的 COM 独立占据一个 I/O 端口。在进行显示时,FPGA 将要显示的字符的编码信号同时送到多个数码管的阴极端,但只有 COM 为高电平的数码管会显示。
- 工作原理
- 8 \(\times\)
8LED点阵
- 工作原理
每行的8个LED灯的阳极接在一起,每列的8个LED灯的阴极接在一起。限流电阻可以接在行方向或列方向。第i行接高电平,第j列接低电平时,第(i, j)个LED灯被点亮,由多个LED灯的点亮状态就可以显示图形、汉字或字符。 - 控制方式
将LED点阵的8条列线连接在 FPGA 的一组 I/O 引脚上,8条行线通过限流电阻接在 FPGA 的另一组 I/O 引脚上。FPGA 内部逻辑按照设定在在行和列两组 I/O 接口输出与内部字符对应的代码电平,送至LED点阵的行列线,从而选中相应的像素LED发光,并利用人眼的视觉残留效应显示整个字符。
- 工作原理
- 独立按键
- 工作原理
以开关状态来设置控制功能和输入数据,按键按下则开关所在连线接通。 - 控制方式
一个按键单独连接一根 I/O 端口线,其状态不会影响其他 I/O 端口线的工作状态。
- 工作原理
- 矩阵键盘
- 工作原理
将多个按键排成阵列,通过由列线送入全扫描字、行线读入状态来判断有无按键按下。 - 控制方式
每一行按键共用一根 I/O 端口线,每一列按键也共用一根 I/O 端口线。
给列线依次输入低电平,如果行线输入状态都为高电平,则无按键被按下;否则送入低电平的列线与读到低电平的行线的交叉点上的按键被按下。
- 工作原理
- 蜂鸣器
- 工作原理
压电蜂鸣器中包含一个压电陶瓷片。当施加交变电压时,陶瓷片产生震动并传导到蜂鸣器的振动片或共振腔,使整个蜂鸣器产生声音。通过控制施加在压电蜂鸣器上的交变电压的频率,可以控制蜂鸣器产生的声音的频率。 - 控制方式
蜂鸣器一端接高电平,另一端接到三极管的发射极。三级管的基极通过一个电阻接到 FPGA 的 I/O 端口,集电极接地。
当 I/O 端口输出高电平时,三极管截止,蜂鸣器无法发声;输出低电平时三极管导通,蜂鸣器发声。
通过改变输出端口的占空比,即可改变蜂鸣器的发声频率。
- 工作原理
- 单个LED
以讲义中 TLC549 模/数转换器和 TLC7528 数/模转换器为例,了解 ADC 和 DAC 与 FPGA 的硬件连接方法,了解在 FPGA 中设计 ADC/DAC 控制器的方法。
TLC549 (ADC)
| 管脚 | 说明 |
| ----- | -------- |
| REF+ | 正基准电压输入 |
| ANALOG IN | 模拟信号输入 |
| REF- | 负基准电压输入 |
| GND | 接地 |
| VCC | 接系统电源 |
| I/O CLOCK | 外接输入/输出时钟输入,用于同步芯片的输入输出操作;连接到 EP1C6 FPGA 的27脚 |
| DATA OUT | 数字信号串行输出,高位在前,低位在后;连接到 EP1C6 FPGA 的11脚 |
| #CS | 片选信号,低电平有效;连接到 EP1C6 FPGA 的28脚 |TLC7528 (DAC)
| 管脚 | 说明 | 与 EP1C6 的连接 |
| ---- | ------- | -------------- |
| #CS, #WR | 当 #CS 和 #WR 有一个是高电平时,两路输出均处于保持状态;当两个信号均为低电平时,依据 #DACA/DACB 将数据写入到对应锁存器 | 分别连接到142、143脚 |
| #DACA/DACB | 若该端口为低电平,则数据写入到锁存器A;若该端口为高电平,则数据写入到锁存器B | 连接到144脚 |
| DB7 - DB0 | 8位并行数据输入 | 依次连接到10,7,6,5,4,3,2,1脚 |
了解FPGA与各种接口的连接方法。
与存储器的连接
- 24LC02(串行 EEPROM 存储器)
| 管脚 | 说明 | 连接 |
| ---- | ---- | ---- |
| SCL | 向存储器提供时钟信号 | I2C线,连接到 FPGA 的 I/O端口 |
| SDA | 控制存储器的读写 | I2C线,连接到 FPGA 的 I/O端口 |
- SDRAM
SDRAM 的引脚直接与 FPGA 的通用 I/O 引脚连接。
- 24LC02(串行 EEPROM 存储器)
与接口芯片的连接
以下 FPGA 端口 均为 I/O 端口。UART 转 RS232
| FPGA | MAX232 | 说明 |
| --------- | ----------- | --- |
| UART_TX1 | T1in | 转换后,T1out 和 R1in 接到9针插座(J5),插座外接电缆线 |
| UART_RX1 | R1out | |
| UART_TX2 | T2in | 转换后,T2out 和 R2in 接到 J7 插座上 |
| UART_RX2 | R2out | |UART 转 USB
| FPGA | CH340 | 说明 |
| ---- | ----- | ---- |
| USB_TXD | RXD | 转换后由 UD+ 和 UD- 连接到USB插座 J16 上 |
| USB_RXD | TXD | |
与处理器的连接
FPGA 与微处理器、DSP 等连接的方式有多种形式,可以通过标准接口连接,也可以通过微处理器提供的总线连接。以 S3C2410X 为例。
S3C2410X 提供了地址线 [L]ADDR[0:25]、数据线 [L]DATA[0:31] 和控制线 1。
这些连接线首先通过 74LVCH162245 (U6-U9) 进行第一步缓冲,得到相应的地址线 ADDR[0:25]、数据线 DATA[0:31] 和控制线 2。
再经过 74LVCH162245 (U67-U70) 进行第二级缓冲,得到连接 FPGA 的地址线 XADDR[0:24]、数据线 XDATA[0:31] 和控制线 3。
这些信号线都接到 FPGA 的通用 I/O 引脚上。
其中控制线1是一组信号线,包括写使能信号 nWE、输出使能信号 nOE 以及写字节使能信号 nWBE[3:0] 等。控制线1中各信号线通过两级缓冲器后,只是名称改变,性质不变。S3C2410X 芯片内部还有一些专用的标准接口,包括 I2C 总线、I2S 总线和 SPI 总线接口等,也可以通过这些标准接口与 FPGA 相连。