原创 用FPGA器件实现UART核心功能的一种方法

2006-11-4 17:07 2448 5 6 分类: FPGA/CPLD


一、波特率发生部分


---- 从图一可以看出,UART的接收和发送是按照相同的波特率进行收发的(当然也可以实现成对的不同波特率进行收发),波特率是可以通过CPU的总线接口设置的。UART收发的每一个数据宽度都是波特率发生器输出的时钟周期的16倍,即假定当前按照9600bps进行收发,那么波特率发生器输出的时钟频率应为 9600*16Hz,当然这也是可以改变的,我们只是按照UART的方法进行设计。


---- 我们假定提供的时钟为1.8432MHz,那么可以很简单地用CPU写入不同的数值到波特率保持寄存器,然后用计数器的方式生成所需要的各种波特率,这个值的计算原则就是1843200/(16*所期望的波特率),如果希望输出9600Hz的波特率,那么这个值就是1843200/(16*9600)= 12(0CH)。


二、 发送部分


---- 这里应重点分析几个问题:首先是何时CPU可以往发送保持寄存器(THR)写人数据?也就是说CPU要写数据到THR时必须判一个状态,当前是否可写?很明显如果不判这个条件,发送的数据会出错,除非CPU写入THR的频率低于当前传输的波特率,而这种情况是极少出现的。其次是CPU写入数据到THR后,何时THR的数据传送到发送移位寄存器(TSR)并何时移位?即如何处理THR和TSR的关系?再次是数据位有7、8位两种,校验位有三种形式,这样发送一个字节可能有9、10、11位三种串行长度,所以我们必须按照所设置的传输情况进行处理。数据位、效验方式可以通过CPU写一个端口来设置,发送和接受都根据这个设置进行,由于这部分很简单,所以我就不给出程序了。


---- 根据上面的分析,引进了几个信号:


---- bigin1、begin2:引入两个附加移位,目的是为送出起始位、停止位而加入串行长度。


---- txdone7、txdone8:分别表示7、8位的结束标志。Txdone<=txdone8 when“8bit”else txdone7;


---- Paritycycle7、paritycycle8:分别表示7、8位下的校验位。Parity<=parity8 when“8 bit”else parity7;


---- Writerdy:为0时表示CPU不能将数据写入THR,为1时可以写入。


---- 这样就可以得到以下信息:在移位时钟的上升沿检测到txdone和writerdy都为高电平时,进入LOAD状态即将THR的数据LOAD到TSR,在下一个时钟就进入移位状态。在移位中同时进行校验位的运算,在需要送出校验位的时候将运算好的校验位送出,txdone="1"的时候将高电平送出,其它时候移位输出。


---- 最后还有一个小程序,那就是写出writerdy的状态,很明显没数据写入时为高,而当txdone为低时为低,注意这里也必须同时同步。图二给出了一个奇效验8bit数据的发送时序图。





三、 接受部分


---- 对于接收同样存在9、10、11位三种串行数据长度的问题,必须根据所设置的情况而将数据完整地取下来。接收还有一个特别的情况,那就是它的移位的时钟不是一直存在的,这个时钟必须在接受到起始位的中间开始产生,到停止位的中间结束。接受到停止位后,必须给出中断,并提供相应的校验出错、FRAME错以及溢出等状态。


---- 这样需引入hunt和idle两个信号,其中hunt为高表示捕捉到起始位,idle为高表示不在移位状态,利用这两个信号就可以生成接收所需要的移位时钟。


---- 下面还有一个小程序,就是如何将接收的状态和标志表示出来。溢出标志很简单,那就是在idle从低变高,也就是说在接收到一个完整的串行序列后,去判一下当前的中断是否有效?(高有效,数据没有被读走)如果为高那么溢出,否则没有。在移位的时候,同时对接收的数据进行校验,这样就可以判断接收的数据是否有错,在接收完成时判一下当前的RX是否为高电平就可以知道FRAME是否有错,图三是一个8bit奇校验的接收时序图(假定接收正确,所以没有给出校验、溢出、帧出错信号)。

文章评论1条评论)

登录后参与讨论

用户1034360 2006-12-1 10:52

good
相关推荐阅读
用户64191 2006-11-27 17:35
MAX1148型高精度14位串行A/D转换器
1 概述    模/数转换器(ADC)是现代测控中非常重要的环节。它有并行和串行两种数据输出形式。并行ADC虽然数据传输速度快,但有引脚多、体积大、占用微处理器接口多的缺点;而串行ADC的传输速率目前...
用户64191 2006-11-27 17:29
模拟信号隔离放大器技术应用
   无源型IC 内部包含有电流信号调制解调电路、信号耦合隔离变换电路等,很小的输入等效电阻,使该IC的输入电压达到超宽范围(7.5—32V),以满足用户无需外接电源而实现信号远距离、无失真传输的需要...
用户64191 2006-11-27 17:23
构成信号发生器的DDS和变换器
许多设备需要使用能产生高性能、高分辩率信号的低频信号发生器。本实例提供一种能产生0~1MHz频率的电路。你利用这种电路就可产生正弦波、三角波和方波,并能达到优于0.1Hz的频率分辨率和优于0.1○ 的...
用户64191 2006-11-27 17:17
内容可寻址存储器CAM在交换机中的应用
内容可寻址存储器CAM(Content Addressable Memory是一种特殊的存储阵列。它具有将输入数据与CAM中存储的所有数据项同时进行比较,迅速判断输入数据是否与CAM中存储的数据项相...
用户64191 2006-11-25 21:09
BGA布线规则
BGA是PCB上常用的组件,通常CPU、NORTH BRIDGE、SOUTH BRIDGE、AGP CHIP、CARD BUS CHIP…等,大多是以bga的型式包装,简言之,80﹪的高频信号及特殊信...
用户64191 2006-11-25 20:35
数据统计在印制电路板品质控制的重要性
     在印制电路板生产过程中,经常出现诸多的质量缺陷,有许多质量问题很难及时而又快速地解决之。为此,要确保印制板的高品质,就必须对发现的问题进行有计划的、按程序和规程、步骤进行数据统计,以便于更好...
我要评论
1
5
关闭 站长推荐上一条 /2 下一条