基于fpga的串口设计_毕业设计(编辑修改稿)内容摘要:

电源电平转换芯片 ,使用 +5v 单电源供电。 40M时钟信号 EP1C12引脚 40MHZ J3 总结 第 11 页 (共 37 页) 图 7 MAX232 芯片 引脚介绍 第一部分是电荷泵电路。 由 6 脚和 4 只电容构成。 功能是产生 +12v 和 12v 两个电源,提供给 RS232 串口电平的需要。 第二部分是数据转换通道。 由 1 1 1 14 脚构成两个数据通道。 其中 13 脚( R1IN)、 12 脚( R1OUT)、 11 脚( T1IN)、 14 脚( T1OUT)为第一数据通道。 8 脚( R2IN)、 9 脚( R2OUT)、 10 脚( T2IN)、 7 脚( T2OUT)为第二数据通道。 TTL/CMOS 数据从 T1IN、 T2IN 输入转换成 RS232 数据从 T1OUT、 T2OUT送到电脑 DB9 插头; DB9 插头的 RS232 数据从 R1IN、 R2IN 输入转换成TTL/CMOS 数据后从 R1OUT、 R2OUT 输出。 第三部分是供电。 15 脚 GND、 16 脚 VCC( +5v)。 主要特点 符合所有的 RS232C 技术标准 只需要单一 +5V 电源供电 片载电荷泵具有升压、电压极性反转能力,能够产生 +10V 和 10V 电压V+、 V 功耗低,典型供电电流 5mA 内部集成 2 个 RS232C 驱动器 内部集成两个 RS232C 接收器 高集成度,片外最低只需 4 个电容即可工作。 RS232 RS232 接口是 1970 年由美国电子工业协会( EIA)联合贝尔系统、调制解调器厂家及计算机终 端生产厂家共同制定的用于串行通讯的标准。 它的全名是 “ 数据终端设备( DTE)和数据通讯设备( DCE)之间串行二进制数据交换接口技术标准 ”。 该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,基于 FPGA 的串口设计 第 12 页 (共 40 页) 还对各种信号的电平加以规定。 随着设备的不断改进,出现了代替 DB25 的 DB9 接口,现在都把 RS232 接口叫做 DB9。 RS232C 的接口信号 : RS232C 的功能特性定义了 25芯标准连接器中的 20根信号线,其中 2 条地线、 4 条数据线、 11 条控制线、 3 条定时信号线,剩下的 5 根线作备用或未定 义。 常用的只有 10 根,它们是: ( 1)联络控制信号线: 数据发送准备好( Data set readyDSR)—— 有效时( ON)状态,表明 MODEM处于可以使用的状态。 数据终端 准备好 (Data terminal readyDTR)—— 有效时( ON)状态,表明数据终端可以使用。 这两个信号有时连到电源上,一上电就立即有效。 这两个设备状态信号有效,只表示设 备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。 请求发送 (Request to sendRTS)—— 用来表示 DTE 请求 DCE 发送数据,即当终端要发送数据时,使该信号有效( ON 状态),向 MODEM 请求发送。 它用来控制 MODEM 是否要进入发送状态。 允许发送( Clear to sendCTS) —— 用来表示 DCE 准备好接收 DTE 发来的数据,是对请求发送信号 RTS 的响应信号。 当 MODEM 已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发 送数据线 TxD 发送数据。 这对 RTS/CTS 请求应答联络信号是用于 半双工 MODEM 系统中发送方式和接收方式之间的切换。 在全双工系统中,因配置双向通道,故不需要 RTS/CTS联络信号,使其变高。 接收线信号检出 (Received Line detectionRLSD)—— 用来表示 DCE 已接通通信链路,告知 DTE 准备接收数据。 当本地的 MODEM 收到由通信链路另一端(远地)的 MODEM 送来的载波信号时,使 RLSD 信号有效,通知终端准备接收,并且由 MODEM 将接收下来的载波信号解调成数字两数据后,沿接收数据线 RxD送到终端。 此线也叫做数据载波检出 (Data Carrier dectectionDCD)线。 振铃指示 (RingingRI)—— 当 MODEM 收到交换台送来的振铃呼叫信号时,使该信号有效( ON 状态),通知终端,已被呼叫。 ( 2)数据发送与接收线: 发送数据 (Transmitted dataTxD)—— 通过 TxD 终端将串行数据发送到MODEM, (DTE→DCE)。 接收数据 (Received dataRxD)—— 通过 RxD 线终端接收从 MODEM 发来的串行数据, (DCE→DTE)。 ( 3)地线 : 总结 第 13 页 (共 37 页) GND、 —— 保护地和信号地,无方向。 上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。 例如,只有当 DSR 和 DTR 都处于有效( ON)状态时,才能在 DTE 和 DCE 之间进行传送操作。 若 DTE 要发送数据,则预先将 DTR 线置成有效 (ON)状态,等CTS 线上收到有效 (ON)状态的回答后,才能在 TxD 线上发送串 行数据。 这种顺序的规定对半双工的 通信线路 特别有用,因为半双工的通信才能确定 DCE 已由接收方向改为发送方向,这时线路才能开始发送。 2 个数据信号:发送 TXD;接收 RXD。 1 个信号地线: SG。 6 个控制信号: DSR 数传发送准备好, Data Set Ready。 DTR 数据终端准备好, Data Terminal Ready。 RTS DTE 请求 DCE 发送( Request To Send)。 CTS DCE 允许 DTE 发送( Clear To Send),该信号是对 RTS 信号的回答。 DCD 数据载波检测( Data Carrier Detection),当本地 DCE 设备( Modem)收到对方的 DCE 设备送来的载波信号时,使 DCD 有效,通知 DTE 准备接收, 并且由 DCE 将接收到的载波信号解调为 数字信号 , 经 RXD 线送给 DTE。 RI 振铃信号( Ringing),当 DCE 收到对方的 DCE 设备送来的振铃呼叫信号时,使该信号有效,通知 DTE 已被呼叫。 由于 RS232 接口标准出现较早,难免有不足之处,主要有以下四点: ( 1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与 TTL 电平不兼容故需使用电平转换电路方能与 TTL 电路连接。 ( 2)传输速率较低,在 异步传输时,波特率 ≤20Kbps。 ( 3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 ( 4)传输距离有限,最大传输距离标准值为 50 英尺(实际 ≤15 米)。 RS232( DB9) 接口定义 图 8 接口说明 基于 FPGA 的串口设计 第 14 页 (共 40 页) 1 DCD 载波检测 2 RXD 接收数据 3 TXD 发送数据 4 DTR 数据终端准备好 5 SG 信号地 6 DSR 数据准备好 7 RTS 请求发送 8 CTS 允许发送 9 RI 振铃提示 系统硬件框图 图 9 系统硬件图 主要 组成电路分析 本系统设计目标 主要 包括 两个 部分: FPGA 模块 、 电平转换 模块。 FPGA AS 下载方式 JTAG 接口 MAX232 PC 终端 电源 时钟晶振 总结 第 15 页 (共 37 页) FPGA 模块 FPGA 模块主要由波特率产生 模块 、数据发送模块、数据接收模块三部分组成。 下图为 FPGA 的顶层原理图。 图 10 .顶层模块的电路图 波特率产生模块 : 波特率发生器实际上就是一个分频器。 可以根据给定的系统时钟(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率 分频器的分频数。 即 分频数 =系统时钟 / (16 波特率 ), 波特率分频 数 可以根据不同的应用需要更改。 题目要求 波特率为 9600bit/s, 由于 FPGA的 EP1C12核心板提供了高精度、高稳定性的40MHz时钟源。 波特率发生器模块图如下所示 图 11 波特率发生器模块图 基于 FPGA 的串口设计 第 16 页 (共 40 页) 波特率发生器的仿真结果 如图: Clk:时钟信号周期 Resetb:复位信号 Bclk:输出波特率时钟信号周期 图 12 波特率发生器的仿真波形 UART 接收器模块 : 由于串行数据帧和接收时钟是异步的,由逻辑 1 转为逻辑 0 可以被视为一个数 据帧的起始位。 然而,为了避免毛刺影响,能够得到正确的起始位信号,必须要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑 0 才可认定接收到的是起始位。 由于内部采样时钟 bclk 周期(由波特率发生器产生)是发送或接收波特率时钟频率的 16 倍,所以起始位需要至少 8 个连续 bclk 周期的逻辑0 被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔 16 个 bclk 周期被采样一次(即每一个波特率时钟被采样一次)。 如果起始位的确是 16 个 bclk 周期长,那么接下来的数据将在每个位的中点处被采样。 R_START 状态:当 UART 接收器复位后,接收状态机将处于这一状态。 在此状态,状态机一直在等待 RXD 的电平跳转,从逻辑 1 变为逻辑 0,即起始位,这意味着新的一帧 UART 数据帧的开始,一旦起始位被确定,状态机将转入 R_CENTER 状态。 图 6 中的 RXD_SYNC 信号是 RXD 的同步信号,因为在进行逻辑 1 或逻辑 0 判断时,不希望检测的信号是不稳定的,所以不直接检测 RXD 信号,而是检测经过同步后的RXD_SYNC 信号。 R_CENTER 状态:对于异步串行信号,为了使每一次都检测到正确的位信号,而是在较后的数据位检测时累计误差 较小,显然在每位的中点检测是最为理想的。 在本状态,就是由起始位求出每位的中点,通过对 bclk 的个数进行计数( RCNT16),但计数值不是想当然的“ 1000”,要考虑经过一个状态,也即经过了一个 bclk 周期,所希望得到的是在采样时 1/2 位。 另外,可能在 R_START 状态检测到的起始位不是总结 第 17 页 (共 37 页) 真正的起始位,可能是一个偶然出现的干扰尖脉冲(负脉冲)。 这种干扰脉冲的周期是很短的,所以可以认为保持逻辑 0 超过 1/4 个位时间的信号一定是起始位。 图 13 UART 接收器的接收状态机 注:状态机一共有 5 个状态: R_START(等待起始位)、 R_CENTER(求中点)、R_WAIT(等待采样)、 R_SAMPLE(采样)和 R_STOP(停止位接收)。 R_WAIT 状态:当状态机处于这一状态,等待计满 15 个 bclk,在第 16 个 bclk是进入 R_SAMPLE 状态进行数据位的采样检测,同时也判断是否采集的数据位长度已达到数据帧的长度,如果到来,就说明停止位来临了。 在本设计中默认为 8,即对应的 UART 工作在 8 位数据位、无校验位格式。 R_SAMPLE 状态:即数据位采样检测,完成后无条件状态机转入 R_WAIT 状态,等待下次数据 位的到来。 R_ST。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。