概述
串口通信,就是RS-232/RS-485通信,要求通信的双方波特率等通信格式一样才可以通信成功。可是在许多情况下,两种不同格式比如不同波特率的串口也要相互通信,这就必须进行串口波特率等格式的转换。解决波特率转化的途径有两种一是用单片机,接收时设置为跟上位PC机一致的波特事进行接收。发送时再设置为跟下位系统相同的波特察发送数据;二是用FPGA , 利用VHDL设计出异步串行通信电路,直接接收PC 机的数据,自行转化为另一种波特率的事行数据再发送出去。1
串行异步通信协议异步通信协议规定每个数据以相同的位串行传送,每个串行数据自起始位、数据位、奇偶校验位和停止位组成。
起始位:发送设备发送一个数据时,先发一个逻辑“0”信号,占一位,提醒接收方准备接收。
数据位:信号位数可以为5、6、7或8 位。数据位从最低有效位开始逐位发送。
奇偶校验位:用于进行有限差错检测, 占一位。通信双方需约定-致的奇偶校验方式。
停止位:用于标志一个数据的传送完毕.一般用高电平.可以为1 位、1.5位、2 位。
波特率( Baud ):它是以每秒传送的二进制位数来度量的,单位为比特/秒(b/s)。PC机常用的波特率有: 50 、75 、110、150、300、600、1200、4800、9600和19200b/s 等几种。1
串行通信数据波特率转化器首先我们约定, PC机与FPGA 进行串行通信的波特率为9600,信息格式为8 个数据位, 1 个停止位, 1 个奇偶校验位。
控制下位系统进行工作的波特率为375k ,其信息格式为8 个数据位, 1 个停止位, l 个奇偶校验位。
对于接收Baud9600 (每位敷掘的位宽大约为104 μ s )的数据而言, 采用的晶振必须要大于2 × 9600= 19200Hz 才行,考虑到发送数据需要产生375k 的时钟,被选用能被整除的24MHz 晶振。
接收过程始于在TXD9600端检测到负跳变时。此时,利用24MHz 的晶振分频得来的1MHz不断采样, 采样速率为波特率的104倍。。一旦检测到负跳变, 104计数据立即复位开始记数,当记数到52时把此刻的采样值寄存起来, 记数满104时一位数据采样完毕, 清零104 计数器,重新开始记数,对下一位数值进行采样寄存。