波特率发生器的利记博彩app

文档序号:7521568阅读:399来源:国知局
专利名称:波特率发生器的利记博彩app
技术领域
本发明涉及数字集成电路设计和串行通信技术领域,具体来说,本发明涉及一种波特率发生器。
背景技术
波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示。波特率发生器本身不产生波特率时钟,其作用是从输入的系统时钟转换出需要的波特率。一般地,波特率时钟频率/波特率因子=波特率。例如,传统单片机串行口波特率(BaudRate)由下式计算BaudRate = Fsys/[(32768-TH)*16]其中BaudRate为串行口波特率,Fsys为晶体振荡器或者系统时钟的频率,TH为通用定时器的重载数据寄存器的值。图1为现有技术中一个波特率发生器的模块结构示意图,其可以集成于单片机的内部。如图所示,当前的波特率发生器100—般可以包括通用定时器101,与系统时钟相连接,用于定时、计数、测量脉冲宽度和产生串口波特率的起始溢出信号;2分频器102,与通用定时器101相连接,用于控制波特率是否翻倍;16分频器103,分别与2分频器102和后续的串口模块104相连接,用于把波特率 16等分输出。更具体地,通用定时器101可以包括控制寄存器105,用于开关计数器107、选择通用定时器101的工作模式和控制中断; 重载数据寄存器106,与控制寄存器105相连接,用于当计数器107溢出时,把自己的值载入计数器107中;计数器107,分别与系统时钟、控制寄存器105和重载数据寄存器106相连接,用于以系统频率的速度递增计数,当计数到256时溢出。现有技术的波特率发生器100的工作原理大致如下先设置通用定时器101中重载数据寄存器106的值,再开启通用定时器101 ;当计数器107从重载数据计数到溢出时,输出反转信号;此反转信号(溢出信号)依次经过2分频器102 (由SMODE位控制)和16分频器103后输出给串口模块104,成为串口模块104的移位时钟信号,即串口波特率。在进行实际的串行通信时,电平分别在7、8和9等分时刻被采样,这样能提高串口通信的抗干扰性能。但是,目前的波特率发生器至少还存在如下的缺点a)目前的单片机内部集成的一个波特率发生器需要单独占用一个通用定时器,如果使用两个波特率发生器将会占用两个通用定时器,这可能导致定时器的缺乏,以至于不能满足应用需求;b)当系统时钟值不是所需波特率的整数倍时,那么由系统时钟经过定时器和16 分频器分出来的波特率就会出现偏差。在波特率较低时,这种偏差不大;而当波特率较高时,偏差太大,甚至无法正确通信。

发明内容
本发明所要解决的一个技术问题是提供一种波特率发生器,能够解决单片机内部的定时器被波特率发生器过多占用,导致定时器缺乏的问题。本发明所要解决的另一个技术问题是提供一种波特率发生器,能够解决波特率偏差过大,以至于影响正常串行通信的问题。为解决上述技术问题,本发明提供一种波特率发生器,包括独立定时器,与系统时钟相连接,用于产生串行口波特率的起始溢出信号;16分频器,与所述独立定时器相连接,用于将所述波特率16等分;比特宽度微调器,分别与所述系统时钟、16分频器和后续的串口模块相连接,用于对所述16等分的波特率时钟信号的宽度进行微调输出。可选地,所述独立定时器包括计数器,分别与所述系统时钟和16分频器相连接,用于以系统频率的速度递增计数,当计数到32768时溢出;重载数据寄存器,与所述计数器相连接,用于当所述计数器溢出时,把自己的值载入所述计数器中。可选地,所述比特宽度微调器包括比特微调数据寄存器,用于存放需要对所述波特率调节的数值;乘法器,分别与所述比特微调数据寄存器和系统时钟相连接,用于根据所述系统时钟将所述比特微调数据寄存器的值转化为调节的宽度值;加法器,分别与所述16分频器和乘法器相连接,用于根据波特率精度的要求改变所述16分频器后的信号宽度。可选地,所述串行口波特率由下式计算BaudRate = Fsys/[(32768-SBRT)*16+BFINE]其中BaudRate为所述串行口波特率,Fsys为所述晶体振荡器或者系统时钟的频率,SBRT为所述重载数据寄存器的值,而BFINE为所述比特微调数据寄存器的值。可选地,所述BFINE的调节精度为一个系统时钟,其值为0 15的整数。可选地,所述SBRT的值由下式计算SBRT = 32768-Fsys/16/BaudRate可选地,所述BFINE的值由下式计算BFINE = Fsys/BaudRate-(32768-SBRT)*16然后对上式计算得到的BFINE的值进行四舍五入。与现有技术相比,本发明具有以下优点本发明可以对串行口波特率进行最大限度的微调,缩小波特率偏差,以满足实际通信需求,避免为了提高通信速度而定制特殊晶振的额外花费,对波特率要求较高的单片机串口通信有着十分重要的意义。另外,本发明对波特率发生器设置独立定时器,防止单片机内部的定时器被波特率发生器过多占用,导致定时器缺乏。


本发明的上述的以及其它的特征、性质和优势将通过下面结合附图和实施例的描述而变得更加明显,其中图1为现有技术中一个波特率发生器的模块结构示意图;图2为本发明一个实施例的波特率发生器的模块结构示意图;图3为本发明一个实施例的波特率发生器的一个位宽度的组成示意图。
具体实施例方式下面结合具体实施例和附图对本发明作进一步说明,但不应以此限制本发明的保护范围。图2为本发明一个实施例的波特率发生器的模块结构示意图。如图所示,该波特率发生器200可以包括独立定时器201,与系统时钟相连接,用于产生串行口波特率的起始溢出信号;16分频器202,与独立定时器201相连接,用于将波特率16等分;其中在进行实际的串行通信时,电平可以分别在7、8和9等分时刻被采样,这样能提高串口通信的抗干扰性能;比特宽度微调器203,分别与系统时钟、16分频器202和后续的串口模块204相连接,用于对16等分的波特率时钟信号的宽度进行微调输出。在本实施例中,该独立定时器201可以具体包括计数器207,分别与系统时钟和16分频器202相连接,用于以系统频率的速度递增计数,当计数到32768时溢出;重载数据寄存器206 (最高位为开关控制位),与计数器207相连接,用于当计数器 207溢出时,把自己的值载入计数器207中。类似地,在本实施例中,该比特宽度微调器203可以包括比特微调数据寄存器208,用于存放需要对波特率调节的数值;乘法器209,分别与比特微调数据寄存器208和系统时钟相连接,用于根据系统时钟将比特微调数据寄存器208的值转化为调节的宽度值;加法器210,分别与16分频器202和乘法器209相连接,用于根据波特率精度的要求改变16分频器202后的信号宽度。下面以图2所示的本发明一个实施例的波特率发生器200为例,简要描述一下本发明的波特率发生器的一般工作原理先设置独立定时器201中重载数据寄存器206的值,再开启独立定时器201 ;当计数器207从重载数据计数到溢出时,输出反转信号;此反转信号(溢出信号)依次经过16 分频器202和比特宽度微调器203提供给串口模块204,成为串口模块204的移位时钟信号,即串口波特率。
依照上述过程16分频后的信号宽度,即传统一比特宽度的最小变化单位是系统时钟的16倍。之后,比特宽度微调器203按照比特微调数据寄存器208的值(0 15)对比特宽度增加相应数量的时钟宽度。如此,一比特宽度的最小变化单位就是一个系统周期或者晶体振荡器周期,实现了在晶体振荡器的前提下得到最精密的波特率。图3为本发明一个实施例的波特率发生器的一个位宽度的组成示意图。在本发明中,波特率的倒数为一个串口通信中1个位的宽度,此宽度等于独立定时器201的溢出率 (OverFlowTime)乘以16与比特微调数据寄存器208的值乘以系统周期(BFINE*Tsys)之和。其中,BFINE为比特微调数据寄存器208的值,Tsys为系统周期的值。在本发明中,单片机串行口波特率(BaudRate)的计算公式可以表达如下BaudRate = Fsys/[(32768-SBRT)*16+BFINE]其中,BaudRate为串行口波特率,Fsys为晶体振荡器或者系统时钟的频率,SBRT 为重载数据寄存器206的值,而BFINE为比特微调数据寄存器208的值。由上式可以看出,BFINE是用来辅助独立定时器201调节波特率的,其调节精度可以为一个系统时钟。BFINE的值则可以为0 15的整数。令BFINE的值为0时,可以由下式确定SBRT的值SBRT = 32768-Fsys/16/BaudRate本发明需要对计算得到的SBRT的值化小数为整,例如SBRT的值为32763. 2,则取 SBRT 的值为 32764。类似地,BFINE的值可以由下式确定BFINE = Fsys/BaudRate-(32768-SBRT)*16然后对通过上式计算得到的BFINE的值进行四舍五入。本发明可以对串行口波特率进行最大限度的微调,缩小波特率偏差,以满足实际通信需求,避免为了提高通信速度而定制特殊晶振的额外花费,对波特率要求较高的单片机串口通信有着十分重要的意义。另外,本发明对波特率发生器设置独立定时器,防止单片机内部的定时器被波特率发生器过多占用,导致定时器缺乏。本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。
权利要求
1.一种波特率发生器,包括独立定时器,与系统时钟相连接,用于产生串行口波特率的起始溢出信号; 16分频器,与所述独立定时器相连接,用于将所述波特率16等分; 比特宽度微调器,分别与所述系统时钟、16分频器和后续的串口模块相连接,用于对所述16等分的波特率时钟信号的宽度进行微调输出。
2.根据权利要求1所述的波特率发生器,其特征在于,所述独立定时器包括计数器,分别与所述系统时钟和16分频器相连接,用于以系统频率的速度递增计数, 当计数到32768时溢出;重载数据寄存器,与所述计数器相连接,用于当所述计数器溢出时,把自己的值载入所述计数器中。
3.根据权利要求1或2所述的波特率发生器,其特征在于,所述比特宽度微调器包括 比特微调数据寄存器,用于存放需要对所述波特率调节的数值;乘法器,分别与所述比特微调数据寄存器和系统时钟相连接,用于根据所述系统时钟将所述比特微调数据寄存器的值转化为调节的宽度值;加法器,分别与所述16分频器和乘法器相连接,用于根据波特率精度的要求改变所述 16分频器后的信号宽度。
4.根据权利要求3所述的波特率发生器,其特征在于,所述串行口波特率由下式计算 BaudRate = Fsys/[(32768-SBRT)*16+BFINE]其中BaudRate为所述串行口波特率,Fsys为所述晶体振荡器或者系统时钟的频率, SBRT为所述重载数据寄存器的值,而BFINE为所述比特微调数据寄存器的值。
5.根据权利要求4所述的波特率发生器,其特征在于,所述BFINE的调节精度为一个系统时钟,其值为0 15的整数。
6.根据权利要求5所述的波特率发生器,其特征在于,所述SBRT的值由下式计算 SBRT = 32768-Fsys/16/BaudRate。
7.根据权利要求5所述的波特率发生器,其特征在于,所述BFINE的值由下式计算 BFINE = Fsys/BaudRate-(32768-SBRT)*16然后对上式计算得到的BFINE的值进行四舍五入。
全文摘要
本发明提供一种波特率发生器,包括独立定时器,与系统时钟相连接,用于产生串行口波特率的起始溢出信号;16分频器,与独立定时器相连接,用于将波特率16等分;比特宽度微调器,分别与系统时钟、16分频器和后续的串口模块相连接,用于对16等分的波特率时钟信号的宽度进行微调输出。本发明可以对串行口波特率进行最大限度的微调,缩小波特率偏差,以满足实际通信需求,避免为了提高通信速度而定制特殊晶振的额外花费,对波特率要求较高的单片机串口通信有着十分重要的意义。另外,本发明对波特率发生器设置独立定时器,防止单片机内部的定时器被波特率发生器过多占用,导致定时器缺乏。
文档编号H03K23/66GK102324927SQ20111011466
公开日2012年1月18日 申请日期2011年5月4日 优先权日2011年5月4日
发明者徐海涛, 李剑英, 胡伟, 许成珅 申请人:中颖电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1