基于 FPGA 的 UART 控制器设计(VHDL)(上)

2020-12-30 16:15:47 浏览数 (1)

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来基于FPGA的 UART 控制器设计(VHDL)(上),由于篇幅较长,分三篇。今天带来第一篇,上篇,计算机接口技术简介RS-232 串口通信简介。话不多说,上货。

之前有关于 Veriliog HDL 实现的 UART 控制器设计,这里放上超链接,仅供各位大侠参考。

FPGA零基础学习:UART协议驱动设计

源码系列:基于FPGA的串口UART设计(附源工程)

导读

串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。串口也可以应用于两台计算机(或设备)之间的互联及数据传输。由于串口(COM)不支持热插拔及传输速率较低,部分新主板和大部分便携电脑已开始取消该接口。串口多用于工控和测量设备以及部分通信设备中。

串口是串行接口的简称,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。串口通信的两种最基本的方式为:同步串行通信方式和异步串行通信方式。

同步串行通信是指SPI(Serial Peripheral interface)的缩写,顾名思义就是串行外围设备接口。SPI是一种高速的全双工通信总线。封装芯片上总共有四根线,PCB布局布线也简单,所以现在很多芯片集成了这个协议。主要用于CPU和各种外围器件进行通信,TRM450是SPI接口。

异步串行通信是指UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包含TTL电平的串口和RS232电平的串口。RS232也称标准串口,也是最常用的一种串行通讯接口。RS-232-C 标准对两个方面作了规定,即信号电平标准和控制信号线的定义。RS-232-C 采用负逻辑规定逻辑电平,信号电平与通常的TTL电平也不兼容,RS-232-C 将-5V~-15V 规定为“1”, 5V~ 15V 规定为“0”。

一般情况下外设不能直接和主机直接相连,它们之间的信息交换主要存在以下问题:

• 速度不匹配 通常情况下外设的工作速度会比主机慢许多,而且外设之间的速度差异也比较大。

• 数据格式不匹配 不同的外设在进行信息存储和处理时的数据单元可能不同,例如最基本的数据格式可以分为并行数据和串行数据。

• 信息类型不匹配 不同的外设可能采用不同类型的信号,有些是模拟信号,有些是数字信号,因此所采用的处理方式也不同。

为了解决外设和主机之间信息交换的问题,就需要设计一个信息交换的中间环节——接口。本篇将首先对接口技术进行简要的介绍,然后以接口中最常用的 UART 控制器为例,详细介绍用 FPGA 实现 UART 控制器的方法。

第一篇内容摘要:本篇会介绍计算机接口技术简介,包括常用的计算机接口简介和计算机接口的控制方式等相关内容。

一、计算机接口技术简介

1.1 常用的计算机接口简介

常用的计算机接口有并行接口、串行接口、磁盘接口等,下面对它们作一下简要的介绍。

1)并行接口

并行接口的数据传输方式是并行传输,即若干位数据同时传输,一般来说是一个字节(8位)或者一个字(16 位)。并行接口的特点如下:

• 接口中包括了与主机总线直接相连的输入/输出数据缓冲器和一组数据线;

• 接口中还包括了起联络作用的联络信号;

• 数据传输速率高,但有效传输距离短。

当外设的工作方式是并行数据传输并且和主机距离较近时,应该选择并行数据传输方式。最典型的例子就是打印机,这也是为什么 PC 主机上的 25 针并口常被称作打印机接口的原因。

2)串行接口

和并行接口对应,串行接口的数据传输方式是串行的,即数据是一位位地进行传输。串行接口的应用非常广泛,例如 PC 主机上一般就至少有两个串行接口——COM1 和 COM2。虽然串行接口的传输方式导致其传输速度会比较慢,但是它却具有较强的抗干扰能力,并能有较长的传输距离。例如,RS-232C 口最大传输距离为 15m,而 RS-422 的最大传输距离甚至达到了 1200m。

3)磁盘接口

常见的磁盘接口包括 IDE 接 口 和 EIDE 接 口 。IDE 的 全 称 为 Integrated DriverElectronics,即集成驱动电子部件,也可称为 ATA(AT-Attachment)。它是由 Compaq 公司开发并且由 Western Digital 公司生产的控制器接口。EIDE 接口较 IDE 接口有了很大的改进,是目前应用比较广泛的接口,两者之间的比较如表1 所示。

表 1 EIDE 接口和 IDE 接口的比较

4)SCSI 接口

SCSI(Small Computer System Interface)接口,即小型计算机系统接口,被广泛地作为硬盘接口以及 CD-ROM 驱动器、扫描仪等设备的接口,它具有以下特点:

• 可同时连接 7 个外设;

• 总线配置为并行 8 位、16 位或 32 位;

• 允许最大硬盘空间为 8.4GB(有些已达到 9.09GB);

• 更高的数据传输速率,SCSI 通常可以达到 5Mbit/s,FASTSCSI(SCSI-2)能达到 10Mbit/s,最新的 SCS-3 甚至能够达到 40Mbit/s,而 EIDE 最高只能达到 16.6Mbit/s;

• SCSI 接口是智能化的,设备间可以彼此通信而不增加 CPU 的负担;在 IDE 和 EIDE 设备之间传输数据时,CPU 必须介入。SCSI 设备在数据传输过程中起主动作用,并能在 SCSI 总线内部具体执行,直至完成再通知 CPU。

虽然 SCSI 接口有以上特点,但是其成本较 IDE 和 EIDE 接口高很多。

5)USB 接口

USB 接口在当前的 PC 领域非常通用,平常生活中可以发现许多种使用 USB 接口的设备。USB 接口标准是由 Microsoft、Intel、Compaq、IBM 等大公司共同推出的,它是新一代的接口标准。USB 接口提供机箱外的即插即用连接,用户在连接外设时不用打开机箱、关闭电源。

USB总线采用“级联”方式,每个 USB 设备用一个 USB 插头连接到一个外设的 USB 插座上,而其本身又提供一个 USB 插座给下一个 USB 设备使用,通过这种方式的连接,一个 USB 控制器可以连接多达 127 个外设,每个外设间的距离可达 5m。USB 统一的 4 针圆形插头将取代机箱后的众多的串/并口(鼠标、MODEM)键盘等插头。

USB 能智能识别 USB 链上外围设备的插入或拆卸,除了能够连接键盘、鼠标等外,还可以连接 ISDN、电话系统、数字音响、打印机以及扫描仪等低速外设。

6)其他接口

除了上述的接口外,还有一些接口也是经常使用的,比如用于连接键盘的 PS/2 接口,用于支持无线传输的红外、蓝牙接口,以及 PC 电脑上常见的音频输入/输出、视频输入/输出接口等。

1.2 计算机接口的控制方式

主机通过接口对外设进行控制的方式有下面几种。

1)查询方式

在查询方式中,主机通过 I/O 指令循环访问当前外设的状态,如果外设准备就绪,则进行数据输入或者输出,否则主机会继续查询。这种控制方式的优点是实现简单,只需要少量的硬件电路即可。其缺点是由于主机速度较快而外设速度较慢,因此主机将常常处于等待状态,大大降低工作效率。

2)中断方式

在中断方式中,主机不再循环检查外设,而是进行其他工作。外设则会自己检查状态,一旦可以进行数据传输,立即向主机发送一个信号提出数据传输请求。如果主机响应这个请求,则暂停当前工作并且进行与外设的数据传输,完成之后再继续执行原来的工作。

中断方式的优点是显而易见的,它不必使主机循环检查设备,省去了主机查询和等待所花费的时间,提高了主机的工作效率。中断方式还使得系统具有实时性,可以满足一些实时性要求较高的外设。

中断方式的缺点是每次数据传输都需要经过启动中断控制器、保存现场数据和恢复现场数据的过程,这样会消耗很大的主机资源,在中断过于频繁的系统中,将会明显降低系统的整体性能。

3)DMA 方式

DMA(Direct Memory Access)的意思是直接存储器访问,这种方式最为明显的一个特点是它不用软件而是采用了一个特殊的硬件电路——DMA 控制器来实现内存与外设之间的数据传输。该方式无需主机介入,大大提高了主机的工作效率和系统的整体性能。

在进行 DMA 传输之前,DMA 控制器会向主机申请数据总线的控制权,如果主机允许则将控制权交出。所以,当 DMA 方式进行数据传输时,总线控制权是由 DMA 控制器掌握的;完成数据传输后,DMA 控制器会将总线控制权交还给主机。

本篇到此结束,下一篇带来基于FPGA的 UART 控制器设计(VHDL)(中),RS-232 串口通信简介 ,包括串口通信概述协议 、RS-232 通信时序和 UART以及串口通信实现方案等相关内容。

END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

0 人点赞