The extension and implementation of multi uart based on fpga

Page 4

的波特率数值,此寄存器位宽为 6bit,每个 UART 占用 2bit 位,“00”代表 9600bps、“01”代表 19200bps、“10” 代表 38400bps、“11”代表 115200bps,系统上电默认三个 UART 的波特率都为 9600bps。 表 2 四种波特率中心点和结束点计数表

9600bps

中心点 计数值 2604

结束点 计数值 5208

19200bps

1302

2604

38400bps

651

1302

115200bps

217

434

波特率

在外部处理器配置内部寄存器的时候,首先要把地址线置为“00”,选择内部通信模块为时钟管理和寄存器 模块,然后把配置信息送入数据总线(8bit),由最高 2bit 位决定信息进入到哪个寄存器,“00”为奇偶校验寄存器, “11”为波特率寄存器,最后通过 we 信号的变化(由高到低)把数据总线其余 6bit 位信息锁存进寄存器中。

2.3 UART 模块 对于接收模块来说,接收的每一帧数据都是从通信协议中每一位的中心点取值,图 3 为 UART 接收数据的 工作示意图。由于 UART 通信在空闲时为高电平,所以对于接收而言首先要找到通信协议的起始位(低电平), 当 rx 线上检测到低电平后计数器开始从零计数到波特率寄存器指定的中心点计数值,如果在这个时间内 rx 线 一直为低电平,那么表明真实数据到来,否则认为是通信中的噪声信号。如果为真实信号,计数器清零继续计 数,并以波特率寄存器指定的结束点计数值作为计数器的上限,每计数满一回,都从 rx 线上锁存一位信息,并 清零计数器。直到计数满 8 回后,得到 8bit 数据信息。接下来再根据奇偶校验寄存器的信息来决定是否进行奇 偶校验位的判断。如果奇偶校验寄存器决定数据格式不包含奇偶校验位,那么计数器继续从零计数到上限值, 然后判断 rx 线上是否为高电平,如果为高电平,说明通信中收到结束位,数据正确;如果为低电平,通信也结 束,数据不正确。如果数据格式包含奇偶校验位,那么需要在寻找结束位之前再让计数器从零计数到上限值, 然后从 rx 线上锁存一位信息,再根据之前得到的 8bit 数据信息进行奇偶校验。如果满足奇偶校验位条件,说明 数据正确,开始寻找通信协议的结束位;如果不满足奇偶校验位条件,找到 rx 线为高电平后接收端完成一次接 收操作,标示为错误信息。当一帧正确的数据接收完,外部处理器可以通过 re 信号由高到低来控制 FPGA 把接 收到的正确数据送出到数据总线上。 起始位

bit0 LSB

bit1

bit2

bit3

bit4

bit5

bit6

bit7 MSB

奇偶位

结束位

空闲位

图 3 UART 接收示意图

对于发送模块来说,需要根据外部处理器的命令来进行串行发送。首先外部处理器把需要发送的数据信息 送入数据总线,然后 we 由高电平变化到低电平,发送模块把数据总线的信息锁存进入发送寄存器中,同时开 启发送模块。整个发送时序由奇偶校验寄存器和波特率寄存器决定。奇偶校验寄存器决定数据的宽度,10 位还 是 11 位,也就是说通信协议中是否含有奇偶校验位,如果有还需要确定类型(奇校验、偶校验)。而波特率 寄存器决定通信协议中每一位信息在 tx 线上保持的时间,换句话说,就是每一位信息保持的时间为计数器从零 计数到波特率寄存器指定的结束点计数值。图 4 为整个 UART 发送示意图。 起始位

bit0 LSB

bit1

bit2

bit3

bit4

bit5

图 4 UART 发送数据示意图 - 239 http://www.sj-ce.org/

bit6

bit7 MSB

奇偶位

结束位

空闲位


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.