一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于FPGA逻辑资源延时的过采样异步通信方法与流程

2022-02-20 13:16:51 来源:中国专利 TAG:

一种基于fpga逻辑资源延时的过采样异步通信方法
技术领域
1.本发明属于电力系统通信技术领域,尤其涉及一种基于fpga逻辑资源延时的过采样异步通信方法。


背景技术:

2.电力系统中系统与系统、设备与设备、板卡与板卡间需要各种通信手段,比如系统与系统或设备与设备间通过以太网通信,板卡与板卡间通过pcie通信,设备与设备通过usb通信、低速的rs232或rs485通信等。这些通信一般基于标准的通信规约,以太网、pcie、usb通信带宽相对较高从几百兆赫兹到几十吉兆赫兹带宽不等,但这些通信方式应用在硬件时非常复杂,需要专门的物理层芯片和协议栈以及对应的驱动程序等。rs232或rs485等硬件相对简单,设计较为容易,然而带宽仅仅只有kbps至1
‑‑
20mbps,带宽受限。
3.因此,需要一种异步串行通信方法,能够应用在硬件器件少、带宽从10mbps至100mbps,且适合于中等带宽又不需很复杂的应用场景。


技术实现要素:

4.本发明的目的在于提供一种基于fpga逻辑资源延时的过采样异步通信方法,从而解决了现有异步通信复杂麻烦的缺点。
5.为实现上述目的,本发明提供了一种基于fpga逻辑资源延时的过采样异步通信方法,包括以下步骤:将需要发送的用户数据按设定的时序写入过采样异步通信系统中的异步发送子系统中,所述过采样异步通信系统为基于fpga的过采样异步通信系统,所述异步发送子系统对所述用户数据进行存储,并判断所述用户数据是否含有数据,若无数据,则输出空闲码;反之,若有数据,则对所述用户数据以数据帧格式进行编码,对编码后的数据进行字位转换,并对字位转换后的数据进行时钟插入,将时钟插入后的数据根据不同输出接口模式输出;串行输入数据通过不同输入接口输入过采样异步通信系统中的异步接收子系统,所述异步接收子系统对所述串行输入数据进行完成对指定乘积项的或运算得到延迟后的信号,将所述延迟后的信号通过寄存器阵列输出采样值,对所述采样值进行位时钟提取,将提取后的串行数据换为字数据流后,对所述数据流分割成数据帧,则完成所述串行输入数据的接收。
6.优选地,所述异步接收子系统在接收数据的过程中,实时计算接收数据中的crc来判断串行输入数据的数据帧是否存在错误。
7.优选地,所述异步发送子系统对所述用户数据进行存储,并发出空信号,通过所述空信号判断所述用户数据是否含有数据。
8.优选地,所述异步发送子系统对所述用户数据以数据帧格式进行编码包括以下步骤:
设定所述数据帧的发送规则;在第一个字时钟周期发送帧头;在第二个字时钟周期从存储的数据中读取到所述用户数据,先将第二字时钟周的初始电平设为高电平,然后依次读取后续的字时钟周期,直至读取所有用户数据;从读取所述帧头到最后一个用户数据之间实时计算期间所有数据的crc值;在计算最后一个crc值后发送空闲码;依次将所述帧头、用户数据、crc值、空闲码进行组合得到编码后的数据。
9.优选地,所述异步发送子系统对编码后的数据进行字位转换包括以下步骤:读取每一个字时钟周期的数据帧值,并按照相位高到低的方式依次每一个字时钟周期的数据帧值进行时钟移位,并依次输出得到字位转换后的数据。
10.优选地,所述时钟插入采用双相位输出规则进行时钟载入字位转换后的数据中。
11.优选地,所述不同的输出接口包括:ttl、lvds或光纤驱动器。
12.优选地,所述串行输入数据通过逻辑延时矩阵完成对指定乘积项的或运算得到延迟后的信号。
13.优选地,所述位时钟提取包括对所述采样值进行位宽测试和数据恢复。
14.优选地,所述异步发送子系统包括依次连接的fifo、编码模块、字位转换模块以及时钟插入模块。
15.优选地,所述异步接收子系统包括一次连接的逻辑延时阵列、采样寄存器阵列、位时钟提取阵列、字提取模块以及接收帧模块。
16.优选地,所述异步发送子系统和异步接收子系统属于同一过采样异步通信系统。
17.优选地,所述异步发送子系统和异步接收子系统不属于同一过采样异步通信系统。
18.与现有的技术相比,本发明具有如下有益效果:本发明所提供的基于fpga逻辑资源延时的过采样异步通信方法,通过采样异步通信系统中的异步发送子系统对需要发送的用户数据进行存储,并判断所述用户数据是否含有数据,若无数据,则输出空闲码;反之,若有数据,则对所述用户数据以数据帧格式进行编码,对编码后的数据进行字位转换,并对字位转换后的数据进行时钟插入,将时钟插入后的数据根据不同输出接口模式输出至不同的接口。同时能够通过采样异步通信系统中的异步接收子系统接收不同接口的串行输入数据,对所述串行输入数据进行完成对指定乘积项的或运算得到延迟后的信号,将所述延迟后的信号通过寄存器阵列输出采样值,对所述采样值进行位时钟提取,将提取后的串行数据换为字数据流后,对所述数据流分割成数据帧,则完成所述串行输入数据的接收,从而实现了异步串行通信,适用于带宽从10mbps至100mbps的信号传输,非常适合于中等带宽又不需很复杂的应用场景。
附图说明
19.为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一个实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1是本发明一种基于fpga逻辑资源延时的过采样异步通信系统框图;
图2是本发明其中一个实施例的数据帧格式示意图;图3是本发明其中一个实施例的发送双相位数据图;图4是本发明其中一个实施例的逻辑延时阵列示意图;图5是本发明其中一个实施例的延时时序图;图6是本发明其中一个实施例的采样位置获取时序图;图7是本发明其中一个实施例的位时钟提取图;图8是本发明其中一个实施例的接收数据相位判断真值表;图9是本发明其中一个实施例的接收数据相位时序图;图10是本发明其中一个实施例的帧头查找图;图11是本发明其中一个实施例的接收用户数据帧时序图。
具体实施方式
21.下面结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
22.本发明所提供的基于fpga逻辑资源延时的过采样异步通信方法包括:s1、将需要发送的用户数据按设定的时序写入过采样异步通信系统中的异步发送子系统中,所述过采样异步通信系统中为基于fpga的异步发送子系统,所述异步发送子系统对所述用户数据进行存储,并判断所述用户数据是否含有数据,若无数据,则输出空闲码;反之,若有数据,则对所述用户数据以数据帧格式进行编码,对编码后的数据进行字位转换,并对字位转换后的数据进行时钟插入,将时钟插入后的数据根据不同输出接口模式输出;s2、串行输入数据通过不同输入接口输入异步接收子系统,所述异步接收子系统对所述串行输入数据进行完成对指定乘积项的或运算得到延迟后的信号,将所述延迟后的信号通过寄存器阵列输出采样值,对所述采样值进行位时钟提取,将提取后的串行数据换为字数据流后,对所述数据流分割成数据帧,则完成所述串行输入数据的接收。
23.上述的基于fpga逻辑资源延时的过采样异步通信方法,通过采样异步通信系统中的异步发送子系统对需要发送的用户数据进行存储,并判断所述用户数据是否含有数据,若无数据,则输出空闲码;反之,若有数据,则对所述用户数据以数据帧格式进行编码,对编码后的数据进行字位转换,并对字位转换后的数据进行时钟插入,将时钟插入后的数据根据不同输出接口模式输出至不同的接口。同时能够通过采样异步通信系统中的异步接收子系统接收不同接口的串行输入数据,对所述串行输入数据进行完成对指定乘积项的或运算得到延迟后的信号,将所述延迟后的信号通过寄存器阵列输出采样值,对所述采样值进行位时钟提取,将提取后的串行数据换为字数据流后,对所述数据流分割成数据帧,则完成所述串行输入数据的接收,从而实现了异步串行通信,适用于带宽从10mbps至100mbps的信号传输,非常适合于中等带宽又不需很复杂的应用场景。
24.其中一个实施例,所述异步接收子系统在接收数据的过程中,实时计算接收数据中的crc来判断串行输入数据的数据帧是否存在错误。
25.其中一个实施例,过采样异步通信系统包括依次连接的:不同输出接口、异步发送子系统、pll、异步接收子系统以及不同输入接口。
26.所述不同的输出接口包括:ttl、lvds或光纤驱动器。
27.所述异步发送子系统包括依次连接的fifo、编码模块、字位转换模块以及时钟插入模块。
28.所述pll为通用时钟倍频率器,按照需要的时钟频率设置输出时钟即可,可以是fpga内部的pll,也可以为外部pll。
29.所述异步接收子系统包括一次连接的逻辑延时阵列、采样寄存器阵列、位时钟提取阵列、字提取模块以及接收帧模块。
30.所述不同输入接口包括:ttl接收器、lvds接收器以及光纤接收器。
31.当异步发送子系统和异步接收子系统为同一系统中的不同板卡时,可以用ttl驱动器和ttl接收器配对,或lvds驱动器和lvds接收器配对;当异步发送子系统和异步接收子系统为两个独立的设备或系统时,可以用lvds驱动器和lvds接收器,也可以用光纤驱动器或光纤接收器配对使用。
32.上述的过采样异步通信系统,采用的硬件器件少,能够降低异步通信的成本。
33.其中一个实施例,步骤s1中,所述异步发送子系统的fifo对所述用户数据进行存储,并发出空信号,通过所述空信号判断所述用户数据是否含有数据。
34.具体的,当空信号为高电平时,则所述数据帧为无数据,即时序为无数据;当空信号为低电平时,则所述数据帧为有数据,即时序为有数据。
35.其中一个实施例,步骤s1中,所述异步发送子系统中的编码模块对所述用户数据以数据帧格式进行编码包括以下步骤:设定所述数据帧的发送规则;具体的,发送规则包:按照字时钟周期发送,每个字节(字)之间间隔16个时钟周期;在第一个字时钟周期发送帧头;在第二个字时钟周期从存储的数据中读取到所述用户数据,先将第二字时钟周的初始电平设为高电平,然后依次读取后续的字时钟周期,直至读取所有用户数据;从读取所述帧头到最后一个用户数据之间实时计算期间所有数据的crc值;在计算最后一个crc值后发送空闲码;依次将所述帧头、用户数据、crc值、空闲码进行组合得到编码后的数据。
36.其中一个实施例,步骤s1中,所述异步发送子系统中的字位转换模块对编码后的数据进行字位转换包括以下步骤:读取每一个字时钟周期的数据帧值,并按照相位高到低的方式依次每一个字时钟周期的数据帧值进行时钟移位,并依次输出得到字位转换后的数据。
37.其中一个实施例,步骤s1中,所述时钟插入采用双相位输出规则进行时钟载入字位转换后的数据中。
38.具体的,包括以下步骤:当字位转换后的数据为高相位时,则输出的数据为字位转换后的数据的相位为正180度,即相位从低电平到高电平;当字位转换后的数据为低相位时,则输出的数据为字位转换后的数据的相位为负
180度,即相位从高电平到低电平;无字位转换后的数据是高还是低、亦或是常高或常低,则时钟插入后的数据上将始终有数据跳变,跳变的最大频率为两个时钟,最小频率为一个时钟,即将发送侧的时钟载入到发送数据中。
39.其中一个实施例,步骤s2中,所述串行输入数据通过逻辑延时矩阵完成对指定乘积项的或运算得到延迟后的信号。
40.具体的,所述逻辑延时阵列包括多个逻辑资源的查找表lut,逻辑资源的查找表lut采用一一串联方式,一共由32组查找表lut组构成,每个查找表lut组有2个独立的物理位置上邻近的查找表lut组成。查找表lut为fpga内部逻辑资源的基本组成单元,可以做为多输入或一输入、一输出的任一函数发生器。每组查找表lut配置为直接输出等于输入模式。
41.查找表lut在fpga内部的物理放置方法为第一组查找表必须放置靠近串行输入数据的最近位置,采用绝对物理位置约束方式放置每个查找表lut位置。
42.一个查找表lut延时为500ps,两个查找表lut为一组的延时为1ns,32组查找表lut总延时为32ns。因此,当串行输入数据输入的数据时间周期为20ns时,32组查找表lut总能找到对应的采样位置。
43.其中一个实施例,步骤s2中,所述位时钟提取包括对所述采样值进行位宽测试和数据恢复。
44.对本发明基于fpga逻辑资源延时的过采样异步通信方法的实施例进行详细说明,以使本领域技术人员更了解本发明:基于fpga逻辑资源延时的过采样异步通信方法以及过采样异步通信系统中:发送串行数据tx_ser_drv的带宽定义为tx_ser_dw,单位为mbps,发送两倍时钟tx_2x_clk与tx_ser_dw数值相等的时钟频率值,即tx_ser_dw为100mbps,则tx_2x_clk即为100mhz,因此tx_1x_clk频率为tx_2x_clk一半,即50mhz。
45.接收串行数据rx_ser_rcv的带宽定义为rx_ser_dw,单位为100mbps,则接收时钟rx_clk为输入数据带宽相等,即100mhz。
46.如图1所示,一种基于fpga逻辑资源延时的过采样异步通信方法具体包括如下步骤:步骤100,用户将需要发送数据按照一定的时序写入到fifo中,当写入的数据信号tx_dvld为高电平,则时序数据tx_data[15:0]数据将写入发送fifo中,用户数据帧形式写入,数据帧固定帧长tx_len;且fifo输出空信号tx_fifo_empty,通过空信号指示是否有数据,tx_fifo_empty为高电平,则为无数据,tx_fifo_empty为低电平,则为有数据,用以后续模块读出数据;当tx_dvld为低电平时,则不写入数据。
[0047]
步骤110,编码模块用来将用户数据按照一定的数据帧格式发送数据,具体如图2所示,一帧数据包括:帧头、用户数据、crc字段、空闲码。帧头定义为十六进制0x0564,crc字段为帧头和用户数据计算的crc值,crc字段为2个字节,当无数据发送时空闲码为常值0xffff。编码模块按照16bit一次发送,即按照字时钟周期发送,每个字之间的间隔为16个tx_1x_clk时钟周期(一个时钟周期)。具体的,包括以下步骤:步骤111,当编码模块获取tx_fifo_empty为低时,表示有用户数据需要发送,首先
编码模块的第一个字时钟周期发送帧头0x0564,表示一帧数据的开始,该帧头字0x0564输出到tx_word_dou,并将编码模块的tx_word_dvld置高;步骤112,在第二个字时钟周期开始从发送fifo读出用户数据,先置第二个字时钟的初始电平tx_rd为高电平,再依次后续的字时钟周期中读出剩余的用户数据,总长度为tx_len。
[0048]
步骤113,从帧头0x0564开始到最后一个用户数据结束,实时计算所有数据的crc值,并在最后一个字时钟周期输出crc值到tx_word_dou。
[0049]
步骤114,当一帧完成的数据输出完成后,将tx_word_dou置为0xffff。
[0050]
步骤115,依次将帧头、用户数据、crc值、空闲码进行组合得到编码后的数据tx_word_dou。
[0051]
步骤120,字位转换模块在每个字时钟周期依据编码模块的tx_word_dlvd读取编码后的数据tx_word_dou值,并按照高相位优先、最低相位最后的方式依次对每个tx_1x_clk时钟移位操作,根据tx_1x_clk时钟移位将tx_word_dou的值依次移位输出到tx_word2bit_out。
[0052]
步骤130,如图3所示,在时钟插入模块中,tx_2x_clk为tx_1x_clk时钟的2两倍,时钟插入模块的输出数据tx_ser_drv按照双相位输出规则进行双相位输出数据,具体的,双相位输出规则包括:当tx_word2bit_out为高相位时,则时钟插入模块的输出数据tx_ser_drv的相位为正180度,即从低到高;当tx_word2bit_out为低相位时,则时钟插入模块的输出数据tx_ser_drv的相位为负180度,即从高到低。因此,无论tx_word2bit_out数据是高还是低、亦或是常高或常低,则tx_ser_drv上将始终有数据跳变,跳变的最大频率为tx_2x_clk,最小频率为tx_1x_clk,即将发送侧的时钟载入到发送数据中。
[0053]
步骤140,时钟插入模块的输出数据tx_ser_drv数据输出到ttl、lvds或光纤驱动器,即发送数据完成。
[0054]
步骤150,串行数据首先进入ttl、lvds或光纤接收器,完成物理信号的转换,输出为串行输入数据rx_ser_rcv信号,该信号进入逻辑延时阵列。
[0055]
步骤160,如图4所示,串行输入数据rx_ser_rcv信号进入逻辑延时阵列,逻辑延时阵列为若干个逻辑资源的查找表lut组成,逻辑资源的查找表lut采用一一串联方式,一共由32组查找表lut组构成,每个查找表lut组有2个独立的物理位置上邻近的查找表lut组成。查找表lut为fpga内部逻辑资源的基本组成单元,可以做为多输入或一输入、一输出的任一函数发生器。串行输入数据rx_ser_rcv进入第一组查找表,第一组查找表输出信号rx_ser_dly0到第二组查找表,依次连接,最后一组查找表的输出信号rx_ser_dly31,并且每组查找表的输出信号rx_ser_dly0
‑‑
31输出到采样寄存器阵列。每组查找表lut配置为直接输出等于输入模式。
[0056]
步骤161,查找表lut在fpga内部的物理放置方法为第一组查找表必须放置靠近rx_ser_rcv输入信号的最近位置,采用绝对物理位置约束方式放置每个查找表lut位置。第一组查找表的第一lut放置在loc_x0y0的位置,第一组查找表第二lut放置在loc_x1y0;第二组查找表必须放置在loc_x0y1位置,后续组查找表依次放置,最后一组查找表放置在loc_x1y31位置。
[0057]
步骤162,如图5所示,一般一个查找表lut延时为500ps,两个查找表lut为一组的
延时为1ns,32组查找表lut总延时为32ns;依据步骤161的方法,每组查找表输出延时分别是rx_ser_dly0为1ns,rx_ser_dly1为2ns,最后一个rx_ser_dly31为32ns;当输入信号的数据时间周期为20ns时,32组查找表lut总能找到对应的采样位置,从而得到延迟后的信号rx_ser_dly0
‑‑
31。
[0058]
步骤170,如图6所示,经过32组查找表延时后的信号rx_ser_dly0
‑‑
31进入采样寄存器阵列,该采样寄存器阵列包括32个d触发器,在接收时钟rx_clk上升沿分别采样如上的32组查找表得到的延时后的信号,并输出32个采样值rx_ser_q0
‑‑
31。
[0059]
假设输入串行输入数据rx_ser_rvc信号与rx_clk相位为0,即同时跳变,经过步骤160的延时后,在时钟边2的输出是rx_ser_q0
‑‑
8全为高电平,其他输出rx_ser_q10
‑‑
31全为低电平。因此通过第一个高电平(rx_ser_q0)到下一个低电平(rx_ser_q9)即是一个脉宽值,由于每一组查找表的延时值为1ns,因此测试出延时后的信号的脉宽值为10ns;步骤180,32个采样值rx_ser_q0
‑‑
31进入位时钟提取模块,如图7所示,位时钟提取模块包括位宽测试模块和数据恢复模块。rx_ser_q0
‑‑
31首先进入位宽测试模块,宽测试模块分析通过第一个高电平(rx_ser_q0)到下一个低电平(rx_ser_q9)即是一个脉宽值,由于每一组查找表的延时值为1ns,因此测试出脉宽值为10ns;并且第一个高电平(rx_ser_q0)到下一个低电平(rx_ser_q9)的中间值即为采样的稳定点,即稳定点可以满足采样的建立时间和保持时间要求,因此该稳定值即rx_ser_q5,并将稳定值进行多路选择器输出到稳定采样信号rx_ser_qmux。
[0060]
步骤181,确定稳定采样信号rx_ser_qmux后,将该稳定采样信号送至数据恢复模块,数据恢复模块对每个rx_clk时钟采样rx_ser_qmux信号,并将上个时钟采样值与当前时钟采样值组合得到相位真值表,如图8所示。当相位是正180度时,数据恢复模块输出串行数据恢复后的采样信号rx_ser_sample_out为逻辑高,相位为负180度是输出逻辑低,无变化则保持,并每两个rx_clk时钟输出一个数据有效信号rx_ser_clken指示rx_ser_sample_out信号有效,如图9所示。
[0061]
步骤182,串行数据恢复后的采样信号rx_ser_sample_out、有效信号rx_ser_clken进入字提取模块,字提取模块内部包括16个d触发器,第一个d触发器输入接rx_ser_sample_out,第一个d触发器的输出接第二d触发器输入,后续d触发器依次连接,并在rx_ser_clken每个脉冲时刻进行移位输出,形成16位的移位寄存器rx_ser_sht[15:0];移位寄存器每接收一个有效信号rx_ser_clken,计数器rx_ser_cnt加1,计数器rx_ser_cnt为4位,计数值从0至15;在每个有效信号rx_ser_clken时刻判断移位寄存器rx_ser_sht[15:0]是否等于步骤101中的帧头字0x0564,当移位寄存器rx_ser_sht[15:0]等于帧头0x0564后,并记录当前时刻的rx_ser_cnt值定义为rx_ser_cnt_hd;从获取帧头0x0564开始,每16个有效信号rx_ser_clken进行计数周期,当该计数周期内的rx_ser_cnt等于rx_ser_cnt_hd时,将移位寄存器rx_ser_sht[15:0]输出数据rx_data_word[15:0],并在rx_ser_cnt等于rx_ser_cnt_hd时输出字数据流rx_dvld_word为高电偶,其他时刻保持为低电平; 即该字提取模块对串行数据恢复后的采样信号rx_ser_sample_out实时检查帧头,准确提起位流数据中的字分割,保证位数据流转换为字数据流,如图10。
[0062]
步骤183,如图11所示,接收成帧模块将字数据流分割成用户帧数据,当字数据流rx_dvld_word为高,字数据流rx_data_word[15:0]为0x0564时,输出帧起始信号rx_sof为
高,帧起始信号rx_sof开始后,在每个字数据流rx_dlvd_word通过用户数据帧计数器rx_data_cnt加1,直到用户数据帧计数器rx_data_cnt等于步骤102的总长度为tx_len结束;从0x0564开始,持续将每个字数据流rx_data_word输出至输出数据rx_data上,并从帧起始信号rx_sof开始置rx_dlvd为高,直到rx_data_cnt等于总长度tx_len为低,并在rx_data_cnt等于总长度tx_len时输出rx_eof帧结束信号为高,指示一帧数据结束,则完成所述串行输入数据的接收。
[0063]
在整个接收数据过程中,实时计算接收数据crc确认该用户数据是否正确,并输出rx_crc值以指示该用户数据帧是否有错误。
[0064]
综上,本发明一种基于fpga逻辑资源延时的过采样异步通信方法,只需简单的过采样异步通信系统即可以传输,非常容易在系统与系统、设备与设备、板与板间进行异步通信。
[0065]
以上所揭露的仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或变型,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献