微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用FPGA实现外设通信接口之:利用FPGA实现RS-232C串行接口

利用FPGA实现外设通信接口之:利用FPGA实现RS-232C串行接口

时间:06-04 来源:互联网 点击:

10.2利用FPGA实现RS-232C串行接口

10.2.1RS-232C接口概述

RS-232C标准最初是为远程通信连接数据终端设备DTE(DataTerminalEquipment)与数据通信设备DCE(DataCommunicationEquipment)而制定的。因此这个标准的制定,并未考虑计算机系统的应用要求。

目前,RS-232C又广泛地应用于计算机与终端或外设之间的近端连接标准。显然,这个标准的有些规定和计算机系统是不一致的,甚至是相矛盾的。

RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。

RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,RS(Recommendedstandard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969年)。

10.2.2RS-232C接口的电气标准

RS-232C采用的不是TTL电平的接口标准,而是负逻辑,即逻辑“1”为−3V~−15V,逻辑“0”为+3V~+15V。

RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。

在TxD和RxD上:逻辑1(MARK)为3V~−15V,逻辑0(SPACE)为+3~+15V。

在RTS、CTS、DSR、DTR和DCD等控制线上:

信号有效(接通,ON状态,正电压)为+3V~+15V;

信号无效(断开,OFF状态,负电压)为−3V~−15V。

RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在RS-232C与TTL电路之间进行电平和逻辑关系的变换。

10.2.3RS-232C的通信协议

所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度,如图10.1所示。

图10.1RS-232C接口的数据通信方式

这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。

由于FPGA与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。典型的串行接口的结构如图10.2所示。

图10.2串行接口模块的结构示意图

在数据输入过程中,数据一位一位地从外设进入接口的“接收移位寄存器”,当“接收移位寄存器”中已接收完1个字符的各位后,数据就从“接收移位寄存器”进入“数据输入寄存器”。

FPGA从“数据输入寄存器”中读取接收到的字符,并行读取,即D7~D0同时被读至累加器中;“接收移位寄存器”的移位速度由“接收时钟”确定。

在数据输出过程中,FPGA把要输出的字符(并行地)送入“数据输出寄存器”,“数据输出寄存器”的内容传输到“发送移位寄存器”,然后由“发送移位寄存器”移位,把数据一位一位地送到外设。“发送移位寄存器”的移位速度由“发送时钟”确定。

接口中的“控制寄存器”用来容纳FPGA送给此接口的各种控制信息,这些控制信息决定接口的工作方式。

能够完成上述串并转换功能的电路,通常称为“通用异步收发器”(UART:UniversalAsynchronousReceiverandTransmitter),包括:双缓存发送数据寄存器、并行转串行装置、双缓存输入数据寄存器、串行转并行装置。

RS232通信协议基本结构如图10.3所示,起始位低,停止位高。波特率范围是300~115200bit/s;8位数据位;一位或两位停止位;奇校验、偶校验或无校验位。

图10.3RS232通信协议基本结构

10.2.4RS-232C接口的典型应用

RS-232C不仅可以用来实现FPGA系统与PC之间的低速率数据传递,而且可以广泛应用到工业控制和自动化仪器仪表领域。RS-485和RS-422等标准与RS-232C标准一样,协议部分也采用了UART协议,因此FPGA的实现逻辑是相同的,只是接口电平不同。

在FPGA上,可以实现多个UART单元。也就是说,单片FPGA可以支持多个RS-232C接口,比较适合需要多个串口的场合。传统的单片机(MCU)或者ARM处理器一般只能支持2~3个UART接口,在这样场合就需要外围芯片来扩展UART。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top