摘要:RS 232接口是现在最常用的一种通信接口。随着FPGA技术的高速发展,一些常见的接口电路的时序电路可以通过FPGA实现,通过这种设计可减少电路系统元件的数量,提高系统集成度和可靠性。详细阐述了如何通过FPGA实现RS 232接口的时序逻辑设计。
关键词:FPGA;时序电路;RS 232;串行通信
0 引言
RS 232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通信的标准。它的全名是“数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。随着设备的不断改进,出现了代替DB25的DB9接口,现在都把RS 232接口叫做DB9。RS 232接口是最常见的一种串行通信接口,普通PC机一般都具有此类接口,其最高通信速率(波特率)为115.2 Kb/s。采用9 600b/s进行数据传输交换的应用较多。通过FPGA实现其时序电路,主要完成发送和接收两部分逻辑电路的设计。
1 发送逻辑电路的设计
1.1 时序近似
RS 232接口可选的波特率如9 600b/s,115.2 Kb/s等同11.059 2 MHz的时钟有着整数倍的关系,但通常情况下提供FPGA的时钟大多采用频率为40~80 MHz,同11.059 2 MHz之间存在一定的时序误差。
例如一个由1个起始位,8个数据位,1个停止位组成,假定串行信号的波特率为9 600b/s,则每个位的时序时间为:
104 166.666 666 666 666 666 666 666 666 67 ns
相当于80 MHz计数器计数到:
8 333.333 333 333 333 333 333 333 333 333 3舍去小数部分。
由80 MHz驱动的计数器产生时序时每个字符误差为4.166 666 666 666 666 666 666 666 666 666 7 ns。这样由10个字符组成的一次发射时序误差约为41.7 ns小于1/1 000可以忽略不计。
1.2 发送时序设计
RS 232接口的时序电路由启动电路、字符产牛电路、同步时钟产生电路。波特率控制电路,和时序关闭电路组成。发送时序电路原理框图如图1所示。
1.3 发送电路原理描述
以波特率为9 600b/s的时序为例,在发送数据之前,系统微处理器将相应波特率参数锁存在FPGA内部的波特率控制电路的寄存器内(由触发器构建),使每次输出的字符同步信号的周期为104.167μs(对应波特率9 600b/s)。
当系统发出发送启动信号时,字符时序电路以每个字符104.167μs的速率在预发射数据的逻辑电平控制之下输出时序信号,同时在时序中插入停止位和起始位字符信号。
在完成上述发送时序的过程中,时序计数控制电路会检测发送时序的工作状态,当检测每次时序的停止位完成输出后,时序计数控制电路会发出时序关闭反馈信号,使电路回复到预发射的初始工作状态,并等待处理器再次触发时序电路和对数据参数的重置。
2 接收逻辑电路的设计
2.1 接收时序设计
接收时序电路原理框图如图2所示。
2.2 接收电路原理描述
以波特率为9 600b/s的时序为例,在接收数据之前系统微处理器将相应波特率参数锁存在FPGA内部的波特率控制电路的寄存器内(由触发器构建),使每次输出的字符位同步信号的周期为104.167 μs(对应波特率9 600b/s)。字符位同步信号是接收电路存储接收数据逻辑状态的关键。作为同步时钟信号,该信号可驱动接收到的串行数据电平输入移位寄存器内并锁存。
当系统接收到一帧串行信号时,首先要判断是否是新的一帧数据,接收判决电路通过对输入串行信号的起始位字符脉宽进行裁决,按照RS 232接口通信协议在某一特性波特率下,一帧信号的起始是一定脉宽的负脉冲。通过计数器可以检测到负脉冲的起始时间和脉冲宽度,当脉冲宽度达到某一数值时启动接收时序。
接收时序电路会通过被记录下的接收信号的准确到达时间,推算出每个串行数据位对应的时序时刻,从而输出对应每个位中间时刻的字符位同步信号(脉冲)作为接收移位寄存器的同步时钟信号驱动移位寄存器对接收数据电平的记录。
被锁存的数据通过并行总线被系统微处理器提取。这一过程可以通过对处理器的中断实现,但需要接收时序电路在完成数据接收后立即产生一个中断信号,通知处理器提取接收数据。
接收时序计数器会对接收时序时间进行检测,当接收时序到达结束时刻时,其输出的时序关闭反馈信号会使接收电路恢复到初始工作电路,等待下一帧数据的到达。
3 结论
通过FPGA实现RS 232接口时序逻辑电路,已经在工程实践过程中实现了接口标准规定的全部功能。可以认为,通过FPGA的逻辑电路设计可以完全取代专用芯片。介于FPGA的可塑性和灵活性,可以通过相应逻辑电路设计实现包括以太网,USB、RS 485等常见的数据接口。
上一篇:一种基于FPGA的多电平变流器脉冲生成方法
下一篇:基于FPGA的LCD测试用信号发生器设计
推荐阅读最新更新时间:2024-05-02 22:15
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
- pic16f887 TMR0计时器讲解及准确定时程序
- 用PIC16F1824的内部DAC做正弦波发生器测试
- 51单片机MPX4115压力传感器+ADC0832仿真课设程序
- L297,L298驱动步进电机原理图proteus仿真+程序 LCD显示速度
- 基于STC15W408AS单片机内部EEPROM读写接口函数
- 中国邮政无人投递车亮相乌镇
- “V – Hackathon”伟世通杯自动驾驶算法竞赛圆满落幕
- CeMAT ASIA 2019展前预告|仙知机器人邀您现场体验如何打造移动机器人
- 联想推出自己倒垃圾的智能扫地机 石头、科沃斯要拿什么抗衡?
- 京东补贴员工3亿!追求“无人化”的京东还有必要提升员工福利吗?