一种用fpga实现通用串行总线触发与解码的方法

文档序号:9844061阅读:327来源:国知局
一种用fpga实现通用串行总线触发与解码的方法
【技术领域】
[0001] 本发明涉及通讯技术领域,特别涉及一种用FPGA实现通用串行总线触发与解码的 方法。
【背景技术】
[0002] 嵌入式系统在当下的人类社会非常流行和普遍,移动电话、自动柜员机、打印机、 微波炉、导弹惯性引导系统等等比比皆是。嵌入式系统的构成一般有微处理器、微控制器、 05卩、1^14?如1小?64^0/04及专用芯片等。以前,这些设备之间及系统与外界之间的通信 大多通过并行总线完成。运用并行总线实现通信时存在布线信号线较多、占用电路板空间 大、功率较高、通信距离近、抗噪性能差等缺点,串行总线的发展有效地解决了这些问题。
[0003] 如图1所示,本实施例以常见的RS232信号为例说明通用的串行总线触发和解码的 过程,一次采样点数即存储深度选取1000个点。
[0004] 选择RS232信号,波特率为9600,8bi t数据,无奇偶校验位,极性正常,这里触发模 式为RS232开始位触发。软件实现通用串行总线触发与解码过程。
[0005] 如图2所述,软件实现触发与解码时,每次先采样一定量(往往大于一屏,便于同步 显示)的数据(图中示意〇~999个数据采样点),放置于内存中,通过指针移位操作,按照串 行总线协议特点和参数设置实现触发和解码过程。当达到预触发深度并且满足触发要求 时,软件则同步调取采集波形并实时显示解析好的标签。
[0006] 结合图1和图2可以看出,在软件实现串行总线解析的过程中,每次解析需要等待 采集一定量的数据(往往大于一屏)之后才能开始解析过程,耗时较多;并且,已经采集的数 据堆经过解析不满足触发要求,则需要舍弃,重新开始下一次采集解析过程,耗时较多,且 容易漏掉有效信号。

【发明内容】

[0007] 本发明的目的是克服或减缓至少上述缺点中的部分,特此提供一种用FPGA实现通 用串行总线触发与解码的方法,其具有步骤:
[0008] (1)参数设置,通过软件在FPGA的触发模块设置触发条件;
[0009] (2)总线解码,由FPGA的解码模块对总线的输入信号进行解码,且产生由标签类 型、解码数据和数据地址组成的结构数组,多组所述的结构数组异步储存于FPGA的存储模 块;
[0010] (3)总线触发,触发模块在判断触发条件满足后,产生触发信号;
[0011] (4)总线解标签,在触发信号产生时,FPGA的解标签模块读取地址计数器的计数值 至软件;
[0012] (5)同步控制,软件根据地址计数器的计数值读取储存模块中的结构数组,且根据 调取的结构数组,实时地显示采集波形和数字信号。
[0013] 优选地,
[0014] (1)参数设置,所述触发条件包括触发类型、触发数据和触发数据长度;
[0015] (3)总线触发,通过比较触发数据、触发数据长度与解码数据,产生触发信号。
[0016] 优选地,
[0017] (3)总线触发,触发模块在满足触发条件后,产生触发信号。
[0018] 优选地,于(5)中,软件采集示波器的时基周期与所述地址计数器的计数周期一 致。
[0019] 优选地,以解码RS232信号为例,所述地址计数器的计数值变化周期Δ T为:
[0020]
[0021] 式中,fbaud为输入信号的波特率,Ttb为示波器的时基周期,X为触发深度。
[0022] 本发明相比于传统的软件解码,具有触发、解码速度快、仪器显示等待耗时少的优 点,能够有效地提尚不波器捕捉相关?目号的能力。
【附图说明】
[0023] 现在将参照所附附图更加详细地描述本发明的这些和其它方面,其所示为本发明 的当前优选实施例。其中: 图1为现有技术的串行总线触发与解码原理图; 图2为现有技术的串行总线触发与解码流程图; 图3为本实施例的串行总线触发与解码流程图; 图4为本实施例的串行总线触发与解码具体步骤图。
【具体实施方式】
[0024] 下面结合附图和具体实例,进一步阐明本发明,应理解这些实施例仅用于说明本 发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种 等价形式的修改均落于本申请所附权利要求所限定的范围。
[0025] 如图3所示,本实施例与现有技术的主要区别是本发明提供的方法其流程分比较 触发和解标签两部分同步进行,且其工作过程是连续不断地进行着,且一次解码完成以后 立即开始比较触发和解标签,避免了软件解法的预触发采集等待和未触发重新采样耗时。
[0026] 如图4所示,一种用FPGA实现通用串行总线触发与解码的方法,其具有步骤:
[0027] (1)命令解析及参数设置,通过软件在FPGA的触发模块设置触发条件,触发条件主 要包括总线触发种类、总线触发与解码通道、总线触发模式、触发数据长度以及触发数据 等。那么,仅在上述总线以及总线的输入信号与上述触发条件均匹配时,方可由输入信号产 生有效数据输入。
[0028] (2)总线解码,由FPGA的解码模块对总线的输入信号进行解码,且产生由标签类 型、解码数据和数据地址组成的结构数组,多组结构数组均异步储存于FPGA的存储模块。那 么,任意一组结构数组的由存储模块的调用均是独立的。
[0029] (3)总线触发比较,触发模块在判断输入信号满足触发条件后,随即产生触发信 号。那么,这里的输入信号根据已设置的触发类型、触发数据及数据长度,由触发模块对其 进行解析来判断其是否符合触发条件。
[0030] (4)总线解标签,在触发信号产生时,FPGA的解标签模块记录所述触发信号产生 时,地址计数器的计数值至软件。
[0031] (5)同步显示,软件根据计数器的计数值读取储存模块中的结构数组,再根据结构 数组中的解码数据来实时地显示采集波形和数字信号等测试数据。
[0032]针对上述步骤,本实施例以9600波特率、8bit位宽、无奇偶检验且极性正常的 RS232输入信号进行试验,其试验步骤如下:
[0033] (1)首先根据RS232输入信号的波特率9600确定16倍频采样需要的时钟频率,由 FPGA内部的50MHz时钟同步产生。由50MH分频得到16倍频时钟,分频因子计算公式为:
[0034]
[0035] 其中fbaud为对应的RS232输入信号的波特率,f为基准时钟,这里为FPGA的基准时 钟50MHz,分频后的时钟当作模块触发和解码的采样时钟。
[0036] (2)根据RS232的协议内容和电平规范,通过FPGA的解码模块对RS232输入信号进 行解码,取得开始位、8bit数据、停止位。解码模块建立、多组结构数组。取得的结构数组均 独立地存储在FPGA的储存模块中,且其存储形式以表1为例,开始位、Data-8bit和停止位, 将分别存储一次,每个数据包将分别包含标签类型,解码数据和数据地址,数据地址是地址 计数器的计数值。 表1RS232解码结构数组示例
[0037] (3)当输入信号满足触发深度和触发条件时,FPGA会将此时的地址计数器值的计 数值记录下来供软件读取。
[0038] (4)软件根据该标签类型对应的地址计数器的计数值或计数范围,读取储存模块 中存储的解码数据,来显示采集波形和数字信号。
[0039]另外,软件在同步显示时,需要实现采集波形、标签类型、数字信号与示波器的时 基刻度档位协调一致,以实现在不同时基档位下都能正常观测总线信号。那么,需要使地址 计数器的计数周期与示波器的时基刻度档位协调一致。
[0040]以RS232信号9600的波特率为例,在存储深度为1000个点时,结构数据的显示单位 与时基的计算关系公式为:
[0041]
[0042]扩展到其他波特率及时基档位可得公式:
[0043]
[0044] 式中,fbaud为输入信号的波特率,Ttb为示波器的时基单位,X为触发深度。
[0045]结合上述设计步骤,本实施例通过使用FPGA实现串行总线的触发和解码工作,硬 件实现实时性很高,并且解析模块实时运行,无需任何等待,能够将软件从繁重的解码任务 中解放出来,给嵌入式系统开发者提供准确快速的观测工具,减少开发周期,提高工作效 率。
[0046]同时,本实施例能够减少仪器捕捉耗时,实现快速而准确的触发和解码。并且无论 是否在示波器平台下都能实现解析过程,具有较好的移植性和独立性,目前应用该方法已 经成功实现RS232、SPI、USB等总线的触发和解码。
【主权项】
1. 一种用FPGA实现通用串行总线触发与解码的方法,其特征在于具有步骤: (1) 参数设置,通过软件在FPGA的触发模块设置触发条件; (2) 总线解码,由FPGA的解码模块对总线的输入信号进行解码,且产生由标签类型、解 码数据和数据地址组成的结构数组,多组所述的结构数组异步储存于FPGA的存储模块; (3) 总线触发,触发模块在判断触发条件满足后,产生触发信号; (4) 总线解标签,在触发信号产生时,FPGA的解标签模块读取地址计数器的计数值至软 件; (5) 同步控制,软件根据地址计数器的计数值读取储存模块中的结构数组,且根据读取 的结构数组,实时地显示采集波形和数字信号。2. 根据权利要求1所述的用FPGA实现通用串行总线触发与解码的方法,其特征在于, (1)参数设置,所述触发条件包括触发类型、触发数据和触发数据长度; (3)总线触发,通过比较触发数据、触发数据长度与解码数据,产生触发信号。3. 根据权利要求1所述的用FPGA实现通用串行总线触发与解码的方法,其特征在于, (3)总线触发,触发模块在满足触发条件后,产生触发信号。4. 根据权利要求3所述的用FPGA实现通用串行总线触发与解码的方法,其特征在于, 于(5)中,软件采集示波器的时基周期与所述地址计数器的计数周期一致。5. 根据权利要求4所述的用FPGA实现通用串行总线触发与解码的方法,其特征在于, 以解码RS232信号为例,所述地址计数器的计数值变化周期△ T为:式中,fbaud为输入信号的波特率,Tlb为示波器的时基周期,X为触发深度。
【专利摘要】本发明公开了一种用FPGA实现通用串行总线触发与解码的方法,其具有步骤:参数设置,通过软件在FPGA的触发模块设置触发条件;总线解码,由FPGA的解码模块对总线的输入信号进行解码,且产生由标签类型、解码数据和数据地址组成的结构数组,多组所述的结构数组异步储存于FPGA的存储模块;总线触发,触发模块在判断触发条件满足后,产生触发信号;总线解标签,在触发信号产生时,FPGA的解标签模块读取地址计数器的计数值至软件;同步控制,软件根据地址计数器的计数值读取储存模块中的结构数组,且根据读取的结构数组,实时地显示采集波形和数字信号。
【IPC分类】G06F13/42
【公开号】CN105608040
【申请号】CN201510956422
【发明人】刘永, 刘洪庆, 向前, 刘纪龙, 姜正吉, 贺增昊
【申请人】中国电子科技集团公司第四十一研究所
【公开日】2016年5月25日
【申请日】2015年12月21日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1