总结
图8 接口说明
1 DCD 载波检测 2 RXD 接收数据
3 TXD 发送数据 4 DTR 数据终端准备好 5 SG 信号地 6 DSR 数据准备好 7 RTS 请求发送
8 CTS 允许发送 9 RI 振铃提示
4.2 系统硬件框图
第27页 (共37页)
基于FPGA的串口设计
MAX232 PC终端 AS下载方式 JTAG接口 FPGA 时钟晶振 电源
图9 系统硬件图
4.3 主要组成电路分析
本系统设计目标主要包括两个部分:FPGA模块、电平转换模块。
。
4.3.1 FPGA模块
FPGA模块主要由波特率产生模块、数据发送模块、数据接收模块三部分组成。
下图为FPGA的顶层原理图。
第28页 (共40页)
总结
图10 .顶层模块的电路图
波特率产生模块: 波特率发生器实际上就是一个分频器。可以根据给定的系统时钟(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率分频器的分频数。即分频数=系统时钟/(16×波特率),波特率分频数可以根据不同的应用需要更改。题目要求波特率为9600bit/s,由于FPGA的EP1C12核心板提供了高精度、高稳定性的40MHz时钟源。
波特率发生器模块图如下所示
第29页 (共37页)
基于FPGA的串口设计
图11 波特率发生器模块图
波特率发生器的仿真结果如图:
Clk:时钟信号周期 Resetb:复位信号
Bclk:输出波特率时钟信号周期
图12 波特率发生器的仿真波形
UART接收器模块: 由于串行数据帧和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一个数据帧的起始位。然而,为了避免毛刺影响,能够得到正确的起始位信号,必须要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑0才可认定接收到的是起始位。由于内部采样时钟bclk周期(由波特率发生器产生)是发送或接收波特率时钟频率的16倍,所以起始位需要至少8个连续bclk周期的逻辑0被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔16个bclk周期被采样一次(即每一个波特率时钟被采样一次)。如果起始位的确是16个bclk周期长,那么接下来的数据将在每个位的中点处被采样。
1、R_START状态:当UART接收器复位后,接收状态机将处于这一状态。在此状态,
第30页 (共40页)