CN103684949B - 一种高精度波特率通用串口 - Google Patents
一种高精度波特率通用串口 Download PDFInfo
- Publication number
- CN103684949B CN103684949B CN201310701622.2A CN201310701622A CN103684949B CN 103684949 B CN103684949 B CN 103684949B CN 201310701622 A CN201310701622 A CN 201310701622A CN 103684949 B CN103684949 B CN 103684949B
- Authority
- CN
- China
- Prior art keywords
- module
- serial port
- data
- nco
- baud rate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Communication Control (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明涉及一种通用串口,利用数字控制振荡器(NCO)产生高精度的串口波特率,并设计了发送缓冲区和接收缓冲区,以增强高波特率下串口通信的可靠性和稳定性,属于数据通信技术领域。本发明的通用串口具有可移植性,不受硬件平台的限制,可灵活移植到具有FPGA或者ASIC的硬件平台上,通过微处理器接口进行参数设置,实现异步串口的功能。
Description
技术领域
本发明涉及一种通用串口,利用数字控制振荡器(NCO)产生高精度的串口波特率,并设计了发送缓冲区和接收缓冲区,以增强高波特率下串口通信的可靠性和稳定性,属于数据通信技术领域。
背景技术
随着科学技术的进步,FPGA的速度越来越快、规模越来越大,串口通信对数据吞吐量的要求也越来越高,对异步串口波特率的需求已不再是传统的38.4kbps、115.2kbps,有些应用已达到600kbps以上,甚至达到Mbps以上。在这种背景条件下,传统的串口波特率生成方式已经不能满足需要,因为传统的串口波特率时钟采用整数分频方式产生,这种分频方式生成的波特率往往离基准值偏差较大,在高波特率通信时存在隐患,极易使通信变的不可靠。因此,有必要对现有的串口波特率生成方式进行革新,研究一种新的高精度波特率通用串口设计方法,来提高高波特率下串口通信的可靠性和稳定性。
发明内容
本发明的目的是为了克服现有技术的不足,提出一种高精度波特率通用串口。
本发明的目的是通过以下技术方案实现的。
本发明的一种高精度波特率通用串口,该通用串口包括控制模块、NCO模块、发送模块和接收模块;
(1)控制模块接收微处理器配置的参数,包括频率控制字M和奇偶校验方式,并把M值写入NCO累加器中;控制模块根据接收到的奇偶校验方式来控制接收模块所接收到的数据的校验方式以及发送模块所发送的数据的校验方式;
奇偶检验方式包括奇校验、偶校验和无校验三种方式;
频率控制字M的计算方法为:微处理器根据该通用串口的主时钟频率fs和串口波特率fout,以及NCO模块中保持寄存器的长度N,计算出频率控制字M;
串口波特率fout包括标准串口波特率和非标准串口波特率;
(2)NCO模块实现数字控制振荡器的功能,NCO模块包括累加器和保持寄存器;NCO模块的实现方法为:
控制模块将接收到的频率控制字M发送给累加器,累加器按照主时钟频率fs进行累加,每次累加值为M,得到累加计数值并存储在保持寄存器中供下一次累加使用;当累加计数值小于等于2N-1时,累加器继续累加,直至累加计数值大于2N-1时,产生一个时钟上升沿,之后重新进行累加,再次产生时钟上升沿,重复重新进行累加,再次产生时钟上升沿的过程;
产生时钟上升沿的频率为串口波特率fout的16倍;
N为NCO模块中保持寄存器的长度,单位为比特;
(3)发送模块包括一个发送缓冲区,该发送模块把待发送数据放入发送缓冲区,发送模块根据控制模块的校验方式计算待发送数据的检验位,并按照NCO模块产生的时钟发送数据,实现数据的并串转换功能;
(4)接收模块包括一个接收缓冲区,该接收模块按照NCO模块产生的时 钟监测该通用串口的接收数据端,当监测到起始位按照NCO模块产生的时钟解调数据位,并根据控制模块的校验方式对数据位进行校验,实现数据的串并转换功能。
有益效果
(1)本发明中串口波特率时钟采用NCO方式产生,代替原来的整数分频方式,可大大提高串口波特率的精度。
(2)本发明中串口波特率的最小步进量计算公式为:
当串口工作主时钟频率为60MHz,波特率为115.2kbps时,利用上述公式计算串口波特率的最小步进量可达到0.01bps,因此本发明可使通用串口的波特率取值更加灵活可变,不局限于标准波特率的限制。
(3)本发明的通用串口设计了发送缓冲区和接收缓冲区,防止在高波特率通信时数据来不及处理而丢失。
(4)本发明的通用串口具有可移植性,不受硬件平台的限制,可灵活移植到具有FPGA或者ASIC的硬件平台上,通过微处理器接口进行参数设置,实现异步串口的功能。
附图说明
图1为本发明高精度波特率通用串口的组成框图;
图2为本发明所使用的数字控制振荡器(NCO)模块方框图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
实施例
如图1和图2所示,一种高精度波特率通用串口,基于Altera CycloneⅢ系列FPGA EP3C120F484I7硬件平台,该通用串口包括控制模块、NCO模块、发送模块和接收模块;
通用串口的主时钟频率fs=62MHz,串口波特率fout=115.2kbps,NCO模块中保持寄存器的长度N=32,根据得到M=127685221;
(1)控制模块接收微处理器配置的参数频率控制字M和奇校验方式,把M值写入NCO累加器中;控制模块根据奇校验方式来验证接收模块所接收数据的校验位是否正确以及计算发送模块所发送数据的校验位;
(2)NCO模块实现数字控制振荡器的功能,NCO模块包括累加器和保持寄存器;NCO模块的实现方法为:
控制模块将接收到的频率控制字M发送给累加器,累加器按照主时钟频率fs进行累加,每次累加值为M,得到累加计数值并存储在保持寄存器中供下一次累加使用;当累加计数值小于等于2N-1时,累加器继续累加,直至累加计数值大于2N-1时,产生一个时钟上升沿,之后重新进行累加,再次产生时钟上升沿,重复重新进行累加,再次产生时钟上升沿的过程;
(3)发送模块包括一个发送缓冲区,该发送模块把待发送数据放入发送缓冲区,发送模块根据控制模块的校验方式计算待发送数据的检验位,并按照NCO模块产生的时钟发送数据,实现数据的并串转换功能;
(4)接收模块包括一个接收缓冲区,该接收模块按照NCO模块产生的时钟监测该通用串口的接收数据端,当监测到起始位按照NCO模块产生的时钟解 调数据位,并根据控制模块的校验方式对数据位进行校验,实现数据的串并转换功能。
把该通用串口实例应用在GPS接收机产品中,进行串口数据通信。为了易于测量数据波特率,将发送数据固定为0x55,用示波器测量GPS接收机通用串口的发送数据端,得知数据比特位的周期为8.6806μs(测量精度受限于示波器性能),即实际波特率为115199.41bps,与基准值115200bps绝对误差为-0.59bps。
在同一GPS接收机产品中应用整数分频方式生成波特率时钟的通用串口,利用相同的测试手段,得到数据比特位的周期为8.7742μs(测量精度受限于示波器性能),即实际波特率为113970.50bps,与基准值115200bps绝对误差为-1229.5bps。由此可证明:采用NCO方式生成串口波特率的通用串口,串口波特率精度得到了大幅度的提高。
本发明未详细说明部分属本领域技术人员公知常识。
Claims (1)
1.一种高精度波特率通用串口,其特征在于:该通用串口包括控制模块、NCO模块、发送模块和接收模块;
控制模块接收微处理器配置的参数,包括频率控制字M和奇偶校验方式,并把M值写入NCO累加器中;控制模块根据接收到的奇偶校验方式来控制接收模块所接收到的数据的校验方式以及发送模块所发送的数据的校验方式;
奇偶检验方式包括奇校验、偶校验和无校验三种方式;
频率控制字M的计算方法为:微处理器根据该通用串口的主时钟频率fs和串口波特率fout,以及NCO模块中保持寄存器的长度N,计算出频率控制字M;
串口波特率fout包括标准串口波特率和非标准串口波特率;
NCO模块实现数字控制振荡器的功能,NCO模块包括累加器和保持寄存器;NCO模块的实现方法为:
控制模块将接收到的频率控制字M发送给累加器,累加器按照主时钟频率fs进行累加,每次累加值为M,得到累加计数值并存储在保持寄存器中供下一次累加使用;当累加计数值小于等于2N-1时,累加器继续累加,直至累加计数值大于2N-1时,产生一个时钟上升沿,之后重新进行累加,再次产生时钟上升沿,重复重新进行累加,再次产生时钟上升沿的过程;
产生时钟上升沿的频率为串口波特率fout的16倍;
N为NCO模块中保持寄存器的长度,单位为比特;
发送模块包括一个发送缓冲区,该发送模块把待发送数据放入发送缓冲区,发送模块根据控制模块的校验方式计算待发送数据的检验位,并按照NCO模块产生的时钟发送数据,实现数据的并串转换功能;
接收模块包括一个接收缓冲区,该接收模块按照NCO模块产生的时钟监测该通用串口的接收数据端,当监测到起始位按照NCO模块产生的时钟解调数据位,并根据控制模块的校验方式对数据位进行校验,实现数据的串并转换功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310701622.2A CN103684949B (zh) | 2013-12-19 | 2013-12-19 | 一种高精度波特率通用串口 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310701622.2A CN103684949B (zh) | 2013-12-19 | 2013-12-19 | 一种高精度波特率通用串口 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103684949A CN103684949A (zh) | 2014-03-26 |
CN103684949B true CN103684949B (zh) | 2017-01-11 |
Family
ID=50321328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310701622.2A Active CN103684949B (zh) | 2013-12-19 | 2013-12-19 | 一种高精度波特率通用串口 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103684949B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298315A (zh) * | 2014-10-08 | 2015-01-21 | 北京中科泛华测控技术有限公司 | 智能串口通信卡及其波特率配置方法 |
CN105553617A (zh) * | 2015-12-21 | 2016-05-04 | 大连三高集团有限公司 | 一种串口通讯数据分析方法 |
CN108804362A (zh) * | 2018-06-08 | 2018-11-13 | 北京无线电测量研究所 | 串口批量数据传输方法、装置及存储介质 |
CN111796579A (zh) * | 2020-06-30 | 2020-10-20 | 东风电驱动系统有限公司 | 车辆远程监控终端的can总线波特率配置方法及系统 |
CN112364397B (zh) * | 2020-11-27 | 2023-01-13 | 天津七所精密机电技术有限公司 | 一种基于fpga的异步串口安全通信系统及方法 |
CN112835841A (zh) * | 2021-03-05 | 2021-05-25 | 大唐半导体科技有限公司 | 基于串口通讯的asic数据安全传输与存储装置及方法 |
CN114518781B (zh) * | 2022-01-07 | 2024-05-14 | 西安电子科技大学 | 一种双模可调高精度波特率时钟发生器及分频方法 |
CN114615104B (zh) * | 2022-03-14 | 2023-11-28 | 鹍骐科技(北京)股份有限公司 | 一种基于国产化fpga实现的智能串口通讯方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102324927A (zh) * | 2011-05-04 | 2012-01-18 | 中颖电子股份有限公司 | 波特率发生器 |
-
2013
- 2013-12-19 CN CN201310701622.2A patent/CN103684949B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102324927A (zh) * | 2011-05-04 | 2012-01-18 | 中颖电子股份有限公司 | 波特率发生器 |
Non-Patent Citations (3)
Title |
---|
《基于FPGA实现异步串行通信》;田乐,张勇;《现代电子技术》;20130701;第36卷(第13期);第71-73页 * |
《基于FPGA的UART实现》;张文,薛顺瑞;《内江师范学院学报》;20121231;第27卷(第10期);第33-35页 * |
《基于FPGA的串口通信设计》;王鹏,宋智国;《电子制作》;20131017(第14期);第125页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103684949A (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103684949B (zh) | 一种高精度波特率通用串口 | |
CN109669899B (zh) | 自适应调节串口通信波特率的方法及串口装置 | |
CN103684678A (zh) | 一种用于uart的波特率自适应方法、装置及uart | |
CN102123060B (zh) | 一种基于fpga的误码测试方法 | |
RU2014118745A (ru) | Устройство и способ для передачи и приема данных в системе связи/широковещания | |
Patel et al. | VHDL implementation of UART with status register | |
CN102331979A (zh) | 应用于usb设备的动态时钟频率校准方法 | |
CN102263690B (zh) | 一种用于随钻测量系统数据上传的方法 | |
CN110632843B (zh) | 遥感相机高精度对时信息生成系统 | |
CN104536285A (zh) | 一种高效率的晶振频率守时方法 | |
CN103106344A (zh) | 一种建立电力系统聚类负荷模型的方法 | |
CN103792552A (zh) | 一种卫星导航基带信号生成系统及方法 | |
CN103235500A (zh) | 基于北斗的卫星授时方法及计时装置 | |
CN105809925A (zh) | 一种模拟器信号源的无线控制系统 | |
CN104199054A (zh) | 一种用于北斗卫星导航系统共视数据的预处理方法 | |
CN104750633A (zh) | Fpga设备访问验证装置及方法 | |
CN107678421A (zh) | 一种列车控制系统中的脉冲校准系统及方法 | |
CN207650388U (zh) | 一种时钟管理装置及雷达寻找成像目标回波模拟器 | |
TWI477129B (zh) | 可調式振盪器之頻率調整方法 | |
CN103513698B (zh) | 一种时钟信号校准方法、装置及电子设备 | |
CN104101865A (zh) | 一种基于通用中频收发机的多普勒频移模拟方法和装置 | |
CN103576740A (zh) | 一种usb设备的时钟检测系统及其时钟检测方法 | |
CN104460314B (zh) | 一种校对时间的方法和系统 | |
CN103220243A (zh) | 一种确定频偏估计值的方法和设备 | |
CN106021183A (zh) | 一种结合混合基fft的相关辨识处理系统及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |