FPGA做串口通信,波特率自适应怎么编程

FPGA连接电脑,把串口调试助手的波特率自适应部分自己编程写出来

首先,从技术上的必要性上该技术可分为两类:
一、接收端工作频率固定,使用典型波特率通讯。程序员比较喜欢这种情况,无论是测量计算还是比对查表,都相对简单。
然后,从技术实现方式的方式上也可分为两类:
一、具有独立的同步字符。使用串行通讯时,要先进行同步操作,即接收端通过对比接收到的字符与同步字符的差异调整波特率,或者通过定时器测量同步字符的位宽计算波特率。
二、没有独立的同步字符。即不管波特率如何,可以直接通讯。这里面通常又有两种情况。1、通讯命令开始字符固定,比如一些短消息模块使用AT指令集,每条指令都是以AT开始的,这样虽然是命令但是有同步的作用,只不过要求必须在真实命令到来前调整波特率,判断必须快速准确。2、随机字符可以同步波特率,这种方法在周立功的文章里有描述。这种情况,其实也是有限制的:即字符最后一位必须是0,且同步字符只能是独立的字符,不能有连发字符。
没有一种方法是万能的,各种方法都有自己的使用范围。应该说字符比对比较简单,速度快但适用范围小,容易中断化处理;定时器测量比较麻烦,但适用范围差,必须主程序处理。像短消息模块那种没有独立同步字符的设计支持的波特率通常是有限的。
在此理论的指导下,我认为具体程序编制可参考以下两种:
1、 RC震荡时钟源,主程序检测IO口—RXD,使用定时器计算波特率。细分可考虑a、使用同步字符,b、使用任意ASCII码。
2、 固定频率时钟源、仅支持有限典型波特率。细分可考虑a、反复使用同步字符,扩大支持波特率范围;b、迅速比对支持无同步命令
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-31
关注这个问题追问

谢谢 可以交流

追答

我也在学习

第2个回答  2015-03-31
有现成的 百度一下就可以了 我原来写过追问

谢谢 现在算法还没弄懂 正在看