专利技术交底自适应速率串口黄建刚_第1页
专利技术交底自适应速率串口黄建刚_第2页
专利技术交底自适应速率串口黄建刚_第3页
专利技术交底自适应速率串口黄建刚_第4页
专利技术交底自适应速率串口黄建刚_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

技术交底书8/9该技术发明人依次是(须是自然人,可以是1人或多人):黄建刚,陈绍祥,罗正华技术沟通直接联系人电话术资料往来邮箱:hunter_huangjg@163.com本专利申请名称名称不得使用人名、地名、商标、型号及商业宣传用语;更不得使用代号或含糊不清的词汇。一种通用的新型串行接口速率自适应实时算法所属技术领域写明本申请所属或者直接应用的具体技术领域。 计算机通信背景技术背景技术是指该行业领域的情况介绍;结合该介绍,客观地指出现有技术中存在的问题和缺点;在可能的情况下,说明存在这种问题和缺点的原因以及解决这些问题时曾经遇到的困难;如对于现有技术的结构用文字难以描述清楚时,可附图说明。1.串行通信的设备成本低,使用简单,易于实现,可实现计算机的远程通信,因此串行通信在计算机通信中应用非常普遍,并起着非常重要的作用。2.在通信过程中,数据的传送速率称为“波特率“,只有通信双方采用相同的波特率和通信格式时,才能实现数据的正确传输。3.由于支持串口通信的设备多种多样,波特率和通信格式各不相同,这为串行通信设备的使用带来不便,特别是对于通信速率动态变化的情况。如果能够实现串行接口速率的自适应,无疑会提高串行设备使用的灵活性和通用性,从而使串口通信设备具备“即插即用”能力。4.目前,波特率自适应的常用方法主要有两种:标准波特率穷举法和码元宽度实时检测法。标准波特率穷举法要求数据终端传输数据所采用的波特率必须在有限的几个固定数值之间变化,如标准波特率序列。串行设备启动后,逐个尝试以不同的波特率接收数据终端发出的特征字符,直到能正确接收为止。码元宽度实时检测法要求数据终端按照约定发送特征字符,串行设备测量输入数据的码元宽度,而后计算出待测的波特率。该方法比标准波特率穷举法具有更大的灵活性,是目前应用比较广泛的一种自适应方法。5.以上两种方法都具有较大的局限性。标准波特率穷举法只能适应有限的几个固定波特率;码元宽度实时检测法要求串行设备发送的数据为约定的特征字符或要求接收波特率和发送波特率具有一定的比例关系。两种方法都需要对多种情况进行判断比较,实时性较差。上述局限性降低了使用上的灵活性和通用性,也难以实现异种串行通信设备间的互连互通,难以适应波特率的动态变化。6.针对上述问题,提出一种基于码元宽度实时检测法的新型串行接口波特率自适应算法,能够自适应的识别串行设备使用的波特率。该算法根据串行通信的起止式异步通信协议的协议特点,在不需要串行设备发送特征字符的情况下,即可实现对一定范围内任意波特率的自适应识别。所适应的波特率范围仅受限于系统时钟频率。当前,未见基于此算法的串行通信设备在计算机通信中的应用。本专利申请所要解决的技术问题针对现有技术中存在的缺陷和不足,说明清楚本发明的目的是什么。本专利介绍了一种新型的串行接口波特率自适应算法,该算法能解决以下技术问题:1.实时检测码元宽度,具备自适应一定范围内任意波特率的能力,解决了现有自适应方法仅支持部分特定波特率的问题,有利于提高串行通信设备的灵活性。2.算法对波特率的检测,不要求接收波特率和发送波特率具备某一比例关系,进一步简化算法,降低对发送方的要求,使波特率的检测更准确、更快速、更可靠,应用更方便。3.算法不依赖于串行设备发送的特征字符,仅要求发送设备在改变速率时其字符最低比特为1,最大限度降低对发送设备的要求,解决了现有自适应方法难以与异种设备进行通信的局限性。4.实时检测码元宽度,实时更新接收波特率,具备低波特率对高波特率的快速适应能力,支持连续数据传送过程中波特率从低到高的动态变化,提高系统的可靠性、安全性,能在复杂环境下使用。5.算法能够检测出低于当前波特率的新的波特率,并具备高波特率对低波特率的快速适应能力,解决现有自适应方法对波特率动态变化的有限支持的问题。6.通过本算法实时检测接收到的波特率,自动更新本端发送波特率,实现接收波特率和发送波特率实时同步,真正做到实时检测,实时自适应,实时匹配收发波特率。解决了现有自适应方法实时性差,判决时间长,适应时延大,使用不方便的问题。本专利申请的技术方案简介对于产品类的发明创造,应结合附图,清楚、完整地写明构件名称、各构件之间的联接关系、动作原理和工作程序,以同行能看懂为准;对于方法类的发明创造,譬如新的压制工艺,请说明其工艺步骤及工艺条件,并提供工艺流程图。本自适应算法可以由FPGA或CPLD实现,也可以由软件通过定时器实现。用FPGA或CPLD时效率更高,速度更快,计算更精确。本算法可以适应的波特率范围与系统的时钟频率有关。设系统时钟为Fs,按16倍采样计算,可以适应的波特率在1bps~(Fs/16)bps之间。如果Fs是100MHz,则可以适应的波特率范围为1bps~6.25Mbps。本算法唯一的设定是:当发送端需要改变波特率时,需要发送的第一个数据的最低位为1,以区别出超始位和数据位。除此以外,不需要任何其它特殊的设定。本算法可以支持两种数据发送方式:一是按数据的最高有效位(MSB)到最低有效位(LSB)的顺序发送;当需要改变波特率时,需要MSB为1。二是按数据的最低有效位(LSB)到最高有效位(MSB)的顺序发送;当需要改变波特率时,需要LSB为1。在下述的原理性描述当中,不指定发送顺序。本算法支持的数据间的Idle信号(空闲信号,为高电平)最少为1比特,最多不限。在下述的原理性描述当中,以信号格式8N1为例进行说明。8N1表示数据位为8位,无奇偶校验位,1位停止位。波特率变换规则如下:串行口发送方如果需要改变波特率,有以下两种方式:1).Idle信号小于9比特(通信格式为8N1,一次数据传送最少为10比特,为不发生误判,设定9比特为判断新帧标志NF的界限。本算法支持的Idle最少可到1比特)时长时,如果发送方需要改变波特率,只需要在发送第一位比特位为1的任意数据时即可改变波特率。算法支持数据间波特率由低向高方向的无缝切换。这种方式适用于发送连续数据的过程中的波特率变换。2).Idle信号大于等于9比特时长时,默认波特率可以任意改变,此时需要发送方在发送第一个数据时,确保其第一位比特为1即可(否则会出现误判)。这种情况确保间断发送的数据之间能够以不同的波特率收发数据。串行接收方对上述两种方式实现波特率自适应检测的原理如下图1和图2所示。图1实现发送连续数据时波特率动态切换的检测,适用于低波特率向高波特率的动态切换。图2实现任意波特率间动态切换的检测。图1工作原理如下:3).在串行口接收到Idle(空闲信号,为高电平)的时候,定时器T1对Idle信号的长度按上次检测到的采样周期Ta(初始化时设定Ta为最大采样周期)进行测量,如果大于等于9个比特的长度,说明串行口在发送完上一次的数据后,有较长时间没有数据发送,设定新帧标志NF为1。4).如果检测到串行接收信号有下降沿到达,表明新的数据开始发送,首先过来的低电平是起始比特,立即启动定时器T1开始对起始比特进行计时。如果上升沿到达,表明起始比特结束,此时停止定时器T1,获取定时值为T0。清除新帧标志NF,更新接收波特率SR和发送波特率ST的采样周期为T0值。在上升沿过后可以马上对后继的数据进行采样。5).在当前8位数据的传送过程当中,在每个降沿到来时利用定时器T1对每个低电平进行检测,在上升沿到来时可得某一定时值T1。将T1与Ta进行比较,如果T1=Ta(有一位数据比特为0)或T1>Ta(有连续两位以上数据比特为0),表明采样周期正确。如果T1<Ta则表明数据在传送过程中波特率发生了变化,用T1替换Ta,直至8位数据采样结束。第一个数据传送结束后是Idle信号,根据记录的Ta对Idle信号进行检测。,如果Idle信号短于9比特,则新帧标志仍然为0。否则新帧标志NF为1。6).在下一个数据开始发送时,按同样的方法对起始比特进行测量,得到定时器1的值T2。如果新帧标志NF为0,则比较T0和T2的值,如果T2小于T0,表明数据以新的波特率在发送,并且新的波特率大于上一次数据发送的波特率,因此以T2为新的采样周期更新SR和ST的采样周期,并立即采用新的T2为周期对后继的数据比特进行采样。如果NF为1,则不比较T2和T0的值,以T2的值为SR和ST的新的周期值,对后继的数据比特进行采样。上述过程实现了串行口发送连续数据时波特率动态切换的检测。这种情况适用于波特率由低到高的切换。如果波特率由高到低,则在数据的第一比特为0的情况下容易导致误判。这种情况不符合本算法的设定要求。下图2实现任意波特率间的动态切换。图2的工作原理如下:7).在串行口接收到Idle的时候,定时器T1对Idle信号的长度按上次检测到的采样周期Ta(初始化时设定Ta为最大采样周期)进行测量,如果小于9个比特的长度,设定新帧标志NF为0,否则NF为1。8).如果检测到串行接收信号有下降沿到达,表明有数据开始发送,首先过来的低电平是起始比特,立即启动定时器T1对起始比特进行计时。如果上升沿到达,表明起始比特结束,此时定时器T1的值为T3。如果NF为0,按第6)条进行判断是否需要更新波特率。9).在8位数据传送结束后是停止位和Idle信号。如果Idle信号大于9比特,说明串行口在发送完上一次的数据后,有较长时间没有数据发送,设定新帧标志NF为1,否则为0。10).在新的数据开始发送时,发方需要发送的第一个数据的第一比特要为1以标明波特率是否改变。在检测到下降沿后按第8)条的方法对起始比特进行测量,得到定时器值为T4。如果新帧标志NF为1,根据波特率变换规则第2)条,则以T4为新的采样周期,更新SR和ST,并立即采用新值T4对后继的数据比特进行采样。如果NF为0,则比较T3和T4的值,以值较小者为新的采样周期,更新SR和ST,并对后继的数据比特进行采样。上述过程实现了串行口各数据帧之间任意波特率动态切换的检测。本算法的软件流程图如下图3所示:图3流程图说明如下:11).初始化:上电启动后,进行初始化,设定当前波特率SR和ST为任一值(支持1bps~(Fs/16)bps的范围),设定波特率检测定时器T1为0,清除新帧标志NF,设定最大采样周期为Ta。12).流程图中1#判决条件启动对起始比特的检测。13).流程图中2#判决条件实现上述第3),7),9)条的功能。新帧标志NF用于区分连续数据传送中的波特率切换和不同帧数据间的波特率切换。14).流程图中3#和4#判决条件用于实现上述第5)条的功能。15).流程图中5#判决条件和7#执行框实现上述第4),10)条的功能。16).流程图中6#判决条件和7#执行框实现上述第6)条的功能。17).流程图中7#执行框在更新发送波特率ST时,如果发送侧正在发送数据,则不会马上使用新的波特率,需等待当前数据发送完成后,对下一数据的第一比特位进行判断。如果为1,则采用更新后的波特率ST进行数据的发送;如果为0,则仍然以原有的波特率发送数据,发送完成后再做上述判断。通过这种方式可以实现收发双方的自动速率匹配。上述匹配过程中可能会导致部分数据丢失。因此,要求在接收侧检测到波特率发生改变后,对于发送侧要进行协调,能够在发送新的数据时马上使用新的波特率,降低数据丢失的风险。本算法可以由软件实现,但其实时性会受到软件所采用的硬件平台、操作系统、程序执行效率等的限制。本算法建议用FPGA或CPLD实现。在上述流程图中3#,5#和6#判决条件和7#执行框可以实现并行处理,能够大大提高算法的实时性。在判决波特率改变后,只需要3个系统时钟周期即可完成7#执行框的功能,实现接收波特率SR和发送波特率ST的更新。本专利申请与以往技术相比的有益效果清楚地写明本申请与现有技术相比所具有的有益效果;有益效果是指由创新的技术特征直接带来的、必然产生的技术效果。1.本算法所支持的波特率范围仅受限于系统时钟,并且在所支持的范围内,可以实现连续的波特率检测及自适应,而不仅仅是只支持某此特定的波特率。2.本算法不依赖于任何特定字符,在改变波特率及检测波特率时仅要求发送设备发送第一比特为1的任意数据,这样最大限度降低对发送设备的要求,能够实现异种设备间的互联互通,采用本算法的所有设备可以实现“即插即用”。3.本算法支持波特率的任意切换,并且支持最少Idle为1比特宽度,能够有效提高系统的传送效率,使采用本算法的串行通信设备且有高灵活性,可靠性和安全性,支持在复杂环境下使用。4.通过算法实时检测接收到的波特率,自动更新本端发送波特率,实现接收波特率和发送波特率实时同步,真正做到实时检测,实时更新,实时自适应,实时匹配收发双方波特率。解决了现有自适应方法实时性差,判决时间长,适应时延大,使用不方便的问题。5.本算法简单可靠,设定单一,易于实现,对硬件平台和软件系统要求很低。采用软件实现时会因软件所采用的硬件平台、操作系统、程序执行效率等而使实时性较差,但仍然可以实现在停止比特过后及时更新接收和发送波特率。如果采用FPGA或CPLD等硬件实现,则可以实现在停止比特过后仅需三个系统时钟即可更新接收和发送波特率。附图附图应为示意图;使人能够直观地、形象的理解本专利申请的技术方案;附图不能是照片和效果图,只能是清晰的线条图;实用新型必须有附图。(请同时将附图保存为制图格式发送给我们,如CAD、CORELDRAW格式等)附图见图1此项专利申请的具体详细的实施方式对于产品类的发明,实施例是实现发明创造的具体化设计,这一部分应结合附图进行说明,并将附图中的标号标注在相应的零件之后。每一幅附图均应说明,每一个有标号的零件在实施例中至少提到一次;必要时可说明其功能、动态构造和使用方法。如有多个实施例,则每个实施例均应具体说明;对于方法类的发明,应详细说明其工艺过程、操作步骤及具体的工艺参数,可提供多种工艺参数结合的实施例方案。本算法简单可靠,设定单一,易于实现。以FPGA/CPLD的实现为例,采用Verilog语言实现,整个速率检测代码在70行以内(含注释行)。参考实例如下,程序中,为实现方便,将判决NF的最少Idle长度控制在16比特。本实例仅供参考。`timescale1ns/100psmoduleSpeed_Check(inputwireclk,//Clockis100MMHzinputwirerst,inputwirerxd,outputreg[12:0]Speed_New//UsedtoudpateReceivingsamplerateSRandTransmittingrateST.);//Interalvariables.//Usedforcheckingspeed.regNF;//indicatestartbitlocation.reg[16:0]Bit_cyc_cnt,Bit_cyc_min;//searchtheminvalueofbit.reg[1:0]Pkt_STATUS;parameterNFS=2'b01,Pkt_CNT=2'b10;//usedtocheckrisingedgeandfallingedgeofrxd.regrxd_delay1,rxd_delay2,rxd_Dly3,rising_rxd,falling_rxd,rising_rxd_dly,falling_rxd_dly;//measureUARTspeed.always@(posedgeclk)if(rst==0)begin //ResetisactivelowBit_cyc_cnt<=0;Bit_cyc_min<=17'h1ffff;Pkt_STATUS<=NFS;NF<=1;rxd_delay1<=0;rxd_delay2<=1;rxd_Dly3<=1;rising_rxd<=0;falling_rxd<=0;rising_rxd_dly<=0;falling_rxd_dly<=0;Speed_New<=13'd391;//defaultUARTspeedissetto256Kbps.Clockis100MHz,thenweget:10^8/256000=391.endelsebegin//Eachrising_edgeofclockcheckrising_edgeandfalling_edgeofrxdsignal.rxd_delay1<=~rxd;rxd_delay2<=~rxd_delay1;rxd_Dly3<=rxd_delay2;falling_rxd<=rxd_delay1&rxd_delay2;//Gettingthefallingedgeofrxdrising_rxd<=~(rxd_delay1|rxd_delay2);//Gettingtherisingedgeofrxdrising_rxd_dly<=rising_rxd;falling_rxd_dly<=falling_rxd; //NFcontrolprocess.BasedontheSTARTbitrate,tomatchwholepacketspeed. //ItdoesnotneedspeciallBYTEtoswitchspeeds,andDynamicallysupportsspeedchangesframebyframe. case(Pkt_STATUS) NFS:begin Bit_cyc_cnt<=0; if(falling_rxd==1)Pkt_STATUS<=Pkt_CNT;//Whenstartbitiscoming

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论