3 CPLD实现计算机异步串行通讯设计
3.1异步串行通信的帧格式
在异步串行通信中,数据位是以字符为传送单位,数据位的前、后要有起始位、停止位,另外可以在停止位的前面加上一个比特位(bit)的校验位。其帧格式仍然采用1位开始位+8位数据位+1位停止位.如图2所示。此次设计中没有奇偶效验位。停止位,为逻辑1,总在每一帧的末尾。此次设计中停止位为1位。
3.2异步串行通信的波特率
串行口每秒发送或接收数据的位数为波特率。若发送或接收一位数据需要时间为t,则波特率为1/ t,相应的发送或接收时钟为1/t Hz。发送和接收设备的波特率应该设置成一致,如果两者的波特率不一致,将会出现校验错或者帧错。要产生9600b/s波特率,要有一个不低于9600 Hz的时钟才可以。为产生高精度的时钟,我们专门选取48M的晶振,通过5000分频,最终频率为48M/5000=9600BIT/S
3.3发送程序设计
根据采用的帧格式,需要发送的数据为10位(1位开始位、8位数据位、1位停止位),在发送完这10位后,就应该停止发送,并使发送端电平处于逻辑1,然后等候下次的发送。发送电路一共有3个并行进程如图3所示,进程1产生9600bps波特率,使系统能够以9600的波特率发送帧。进程2中,当允许写信号WR下降延时,发送完成标志位tdEmpty变为低电平,开始接受并行数据,并将数据放入锁存器锁存。当写允许WR标上升延时,发送完成标志位变为高。进程3,将放入锁存器中的并行数据并串转换,并依照帧格式,将10位数据,在TXD引脚上以9600波特率,串行输出经过串口芯片MAX232电平转换后实现与计算机正常通讯。
3.4接收程序设计
接收电路比发送电路要复杂,接收电路要实时检测起始位的到来,一旦检测到起始位到,就要将这一帧数据接收下来。接受电路一共设计有三个并行进程如图4所示,其中 进程1 负责产生9600bps波特率,使系统能够在9600的波特率与外界系统通讯。进程2 产生接收信号RXD的完成标志位,每次在接收到帧的起始位时,标志位RXDF变高,在完成接受数据后,标志位RXDF变低。进程3负责将RXD信号输入的10位串行数据,依照10位的帧格式,先去掉串口的接收起始位和接收结束位,取其中的8位有效数据,并将8位有效数据进行串并转换,变成并行数据后,由8位数据总线DATA0~DATA7并行输出。
4采集存储控制程序设计
4.1采样主控程序设计:
此次系统我们使用48M晶振,每路信号采样率不低于12.5khz,一共相当于16路模拟量,所以控制点为48M ÷ (16 12.5khz)=240点,所以主控计数器中有240个计数点可以用于控制。在0~240个点中实现了通道选通、启动AD、帧计数、两次SRAM地址递推等工作。每次循环结束后,系统主控计数器清零,反复循环采集。具体细节如图5所示。