一种速率可调的FPGA异步串口通信装置及方法与流程

文档序号:20838765发布日期:2020-05-22 17:13阅读:333来源:国知局
一种速率可调的FPGA异步串口通信装置及方法与流程

本发明涉及星载数字处理技术领域,特别是一种速率可调的fpga异步串口通信装置及方法。



背景技术:

卫星数字处理载荷向着大规模、集成化、网络化方向持续发展,需要处理的协议越来越复杂,处理的数据量与内部交互需求也越来越大。星载处理载荷一般由多个数字处理板卡组成,采用cpu(centralprocessingunit,中央处理器)+fpga(field-programmablegatearray,现场可编程门阵列)或全fpga的构架设计,cpu需要与所有板卡的fpga之间进行通信,cpu通过异步总线访问直连的fpga,然后通过同一板卡内fpga之间和不同板卡fpga之间的通信机制进行其他fpga的间接访问,实现一些大数据量且实时性要求高的交互通信,如实时控制信息交互、路由表项配置、数据转发等。

采用i2c总线、rs422、rs232等接口通信速率最高115.2kbps很难满足需求;采用spi(serialperipheralinterface,串行外设接口)、can(controllerareanetwork,控制器局域网络)、1553b、spacewire等总线接口实现复杂,硬件设计还需额外的接口芯片支持;采用rapidio、serdes、gtx等点对点串行接口设计实现复杂且功耗高。



技术实现要素:

本发明解决的技术问题是:克服现有技术中的不足,提供了一种速率可调的fpga异步串口通信装置及方法。

为了解决上述技术问题,本发明实施例提供了一种速率可调的fpga异步串口通信装置,包括:

主端fpga和从端fpga,所述主端fpga包括:主发送异步fifo、主串口发送模块、主串口接收模块和主接收异步fifo,所述从端fpga包括:从发送异步fifo、从串口发送模块、从串口接收模块和从接收异步fifo,其中,

所述主串口发送模块和所述主发送异步fifo连接,所述主串口接收模块和所述主接收异步fifo连接;

所述从串口发送模块和所述从发送异步fifo连接,所述从串口接收模块和所述从接收异步fifo连接;

所述主串口接收模块和所述从串口发送模块连接,以接收所述从端fpga通过所述从串口发送模块发送的数据;

所述从串口接收模块和所述主串口发送模块连接,以接收所述主端fpga通过所述主串口发送模块发送的数据。

优选地,所述从串口发送模块和所述主串口发送模块,用于根据分频系数产生数据采样控制使能信号,维护循环计数器,及在主状态机下实现串口数据发送。

优选地,所述主端fpga还包括:cpu总线处理模块,其中,

所述cpu总线处理模块分别与所述主接收异步fifo和所述主发送异步fifo连接。

优选地,所述装置还包括:cpu,

在所述主端fpga和所述从端fpga的模式为主从模式时,所述cpu和所述cpu总线处理模块连接。

优选地,在所述主端fpga和所述从端fpga的模式为平等模式时,所述主端fpga和所述从端fpga的串口相连两侧的fpga关系相等。

优选地,所述主串口发送模块、主串口接收模块、所述从串口接收模块和所述从串口发送模块均为单总线全双工异步串口。

为了解决上述技术问题,本发明实施例提供了一种速率可调的fpga异步串口通信方法,应用于上述任一项所述的装置,包括:

在发送端拉长链路通信帧发送间隔;

在接收端采样计数停止位,并检测起始位方式;

在所述发送端和所述接收端给定输入时钟时,改变分频系数以调节通信速率。

优选地,采用下述公式(1)计算所述通信速率:

rate=clock/(2*div)(1)

上述公式(1)中,rate为通信速率,clock为输入时钟,div为分频系数。

优选地,根据一体化链路通信帧格式设计主从工作模式和平等工作模式。

优选地,所述发送端和所述接收端的串口接收端采样计数最小发送帧间隔,并采用检测链路起始位的方式定位链路通信帧起始。

本发明与现有技术相比的优点在于:收发两端输入时钟要求同频即可,串口通信速率调节通过同时改变收发两端的分频系数实现,链路同步方式采用拉长通信帧发送间隔即停止位‘1’并在接收端采样计数并检测起始位‘0’的方式实现,具备低功耗、低实现复杂度和可ip化的优势,可满足中高速的串行数据访问和交互需求。

附图说明

图1为本发明实施例提供的一种速率可调的fpga异步串口通信装置的结构示意图;

图2为本发明实施例提供的另一种速率可调的fpga异步串口通信装置的结构示意图;

图3为本发明实施例提供的串口通信装置的帧格式定义的示意图;

图4为本发明实施例提供的一种速率可调的fpga异步串口通信方法的步骤流程图;

图5为本发明实施例提供的串口数据发送方法的示意图;

图6为本发明实施例提供的串口接收链路同步与采样的示意图。

具体实施方式

下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的实施例一部分实施例,而不是全部的实施例。基于本发明的实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。

实施例一

参照图1,示出了本发明实施例提供的一种速率可调的fpga异步串口通信装置的结构示意图,如图1所示,该速率可调的fpga异步串口通信装置具体可以包括:

主端fpga和从端fpga(如图1所述,fpga1为主端fpga,fpga2为从端fpga),主端fpga可以包括:主发送异步fifo、主串口发送模块、主串口接收模块和主接收异步fifo,从端fpga可以包括:从发送异步fifo、从串口发送模块、从串口接收模块和从接收异步fifo,其中,

主串口发送模块和主发送异步fifo连接,主串口接收模块和主接收异步fifo连接;

从串口发送模块和从发送异步fifo连接,从串口接收模块和从接收异步fifo连接;

主串口接收模块和从串口发送模块连接,以接收从端fpga通过从串口发送模块发送的数据;

从串口接收模块和主串口发送模块连接,以接收主端fpga通过主串口发送模块发送的数据。

在本发明的一种优选实施例中,从串口发送模块和主串口发送模块,用于根据分频系数产生数据采样控制使能信号,维护循环计数器,及在主状态机下实现串口数据发送。

在本发明的另一种优选实施例中,主端fpga还可以包括:cpu总线处理模块,其中,cpu总线处理模块分别与主接收异步fifo和主发送异步fifo连接。

在本发明的另一种优选实施例中,该装置还可以包括:cpu,

在主端fpga和从端fpga的模式为主从模式时,cpu和cpu总线处理模块连接。

在本发明的另一种优选实施例中,在主端fpga和从端fpga的模式为平等模式时,主端fpga和从端fpga的串口相连两侧的fpga关系相等。

在本发明的另一种优选实施例中,主串口发送模块、主串口接收模块述从串口接收模块和从串口发送模块均为单总线全双工异步串口。

本发明实施例提供的速率可调的fpga异步串口通信装置,可以通过收发两端输入时钟要求同频即可,串口通信速率调节通过同时改变收发两端的分频系数实现,链路同步方式采用拉长通信帧发送间隔即停止位‘1’并在接收端采样计数并检测起始位‘0’的方式实现,具备低功耗、低实现复杂度和可ip化的优势,可满足中高速的串行数据访问和交互需求。

实施例二

参照图4,示出了本发明实施例提供的一种速率可调的fpga异步串口通信方法的步骤流程图,如图4所示,该速率可调的fpga异步串口通信方法可以应用于上述实施例一中任一项所述的速率可调的fpga异步串口通信装置,具体可以包括如下步骤:

步骤101:在发送端拉长链路通信帧发送间隔;

步骤102:在接收端采样计数停止位,并检测起始位方式;

步骤103:在所述发送端和所述接收端给定输入时钟时,改变分频系数以调节通信速率。

在本发明实施例中,可以采用分频降速的方式实现串口数据发送和稳定采样,在发送端拉长链路通信帧发送间隔并在接收端采样计数停止位同时检测起始位方式实现链路同步,在给定输入时钟下通过改变分频系数实现通信速率调节,速率计算方法:通信速率rate=输入时钟clock/(2*分频系数div)。

串口接收端采样计数最小发送帧间隔(有效数据比特长度*分频系数)同时检测链路起始位的方式定位链路通信帧起始,确保链路可靠同步。

基于所述通信方法设计的串口通信装置,其一体化链路通信帧格式设计支持主从和平等两种工作模式,可分别应用在cpu(32位)对非直接相连fpga的访问以及fpga之间大数据交换的场景。

接下来,结合图5和6对本发明实施例进行如下详细描述。

1、异步串口工作机制

串口为单总线全双工异步串口,收发两端采用相同频率的本地时钟作为输入工作时钟,在发送端将输入时钟进行2倍以上分频后对数据帧进行降速发送,有效数据发送前以1bit的‘0’作为起始位,无有效数据默认发送停止位‘1’;在接收端首先采用同频时钟对输入异步信号2级采样和捕获同步,然后基于快时钟对慢时钟信号的稳定采样机制,实现对有效数据帧的采样和恢复;捕获同步时通过检测数据帧间隔停止位‘1’的数量和下降沿,采用停止位‘1’的采样数量大于或等于有效数据帧比特长度乘以分频系数的方式解决链路误同步问题。

2、数据发送方法

串口发送端模块需实现3个基本功能:一是根据分频系数产生数据采样控制使能信号,二是维护一个循环计数器,第三就是在主状态机下实现串口数据发送,前两项功能接受发送状态机控制。为提高链路传输的可靠性,可以增加差错控制功能如crc校验等。

数据采样控制信号发生器根据输入本地时钟clock_in和分频系数div,产生降频的采样控制信号sample,采样控制信号有效周期为1个输入本地时钟周期,其信号生成同时还受发送使能信号控制。循环计数器用于链路数据发送时的比特计数。

串口发送电路模块在一个主状态机控制下工作,在上电后处于空闲等待状态,默认往数据线发送高电平信号‘1’(停止位)。当有数据要发送时,首先向链路上发送1个分频采样周期的低电平起始位‘0’(起始位),同时将发送使能置为高电平,然后再按顺序串行发送有效数据,数据发送同样受分频采样控制信号的使能控制从而实现比特降速发送,发送波特率为clock_in/div。有效数据发送结束后发送使能拉低,状态机回到空闲态并往链路发送停止位‘1’。串口发送方法如图3所示。

3、接收同步与信号采样方法

串口接收端处理的关键在于链路捕获同步和数据采样恢复。常用的链路同步和定位方式为检测链路下降沿作为链路有效数据采样接收的起始标识,然后再辅助以特定同步字符匹配确定链路数据帧定位,这种方式在串口某一端程序复位或链路传输出现错误时,将可能导致链路误同步和失步问题。

本发明中采用降低有效传输效率换可靠性的方式解决链路误同步和失步问题,在发送端加大链路有效数据帧传输间隔,要求发送停止位‘1’的计数值需大于等于发送有效数据帧的计数值(以输入本地时钟周期计算),在接收端采样并计数间隔同时检测链路起始位从而确定有效数据的起始。为避免毛刺信号对后续电路的影响,需对输入数据信号进行2以上级同步处理。串口接收同步如图1所示。

4、串口通信速率调节

串口通信有效信息速率由输入时钟频率clock_in、分频系数div、链路同步机制共同确定,链路同步采用拉长停止位换取可靠同步捕获的机制使得实际信息传输速率降低了50%。在给定输入时钟频率下,串口通信速率rate的调节通过改变分频系数实现,速率计算公式rate=clock_in/(2*div)。以200mhz时钟输入为例,分频比为16时可支持6.25mbps有效信息速率,分频比为2时支持50mbps有效信息速率传输。

5、串口通信装置设计

本专利给出一种基于上述串口通信方法的串口通信装置设计,可以较好的支持cpu(32位)对非直接相连fpga的访问以及fpga之间数据交换的应用场景,定义了串口通信装置两种对应工作模式:主从模式和平等模式。链路通信帧格式定义如图2所示:

1)启动位:1bit,值为‘0’,标示一个通信帧的起始。

2)控制标识:8bits,|7:cpu读写指示|6-4:连续读次数指示|3:主-从crc错误指示|2:从-主crc错误指示|1:用户帧起始指示|0:用户帧结束指示|,详细定义如下:

①cpu读写指示:控制标识[7],指示当前通信帧为cpu写或读操作帧,‘1’表示写操作,‘0’表示读操作;主从模式下有效,平等模式下默认填0;

②连续读次数指示:控制标识[6-4],指示一次cpu读指令可以连续在同一地址读取数据的次数,不适用时默认填0。

③主-从crc错误指示:控制标识[3],指示串口主端发往从端的通信帧crc校验是否有错,‘1’表示crc有错,‘0’表示crc正确;主从模式下有效,平等模式下默认填0;

④从-主crc错误指示:控制标识[2],主从模式下指示串口从端发往主端的通信帧crc校验是否有错,平等模式下指示接收端通信帧crc校验是否有错,‘1’表示crc有错,‘0’表示crc正确;

⑤用户帧起始指示:控制标识[1],指示当前通信帧的数据是否为用户定义帧的起始,‘1’表示起始,‘0’表示非起始;平等模式下有效,主从模式下默认填0;

⑥用户帧结束指示:控制标识[0],指示当前通信帧的数据是否为用户定义帧的结束,‘1’表示结束,‘0’表示非结束;平等模式下有效,主从模式下默认填0。

3)地址:32bits,指示cpu访问fpga的地址,由用户自定义。

4)数据:32bits,cpu写操作时为32位有效写入数据,读操作时默认填0;平等模式下无32bits地址,数据位64bits。

5)crc:8bits,计算范围包括控制标识、地址和数据,计算多项式自定义。

6)停止位:80bits。

本发明设计的串口通信装置包含1个发送隔离fifo、1个串口发送模块、1个串口接收模块和1个接收隔离fifo,发送和接收fifo的数据位宽为72bits,fifo深度可自定义,串口发送和串口接收模块可实现ip化。串口通信两端分别输入本地时钟clock,要求同频但不要求同相;输入分频系数div范围为2~16,在输入时钟200mhz下支持6.25mbps~50mbps串口通信信息速率。

主从模式下需确定主端(模式配置字2b11)和从端(模式配置字2b01),主端为与cpu异步总线相连的主fpga,从端为cpu待访问的fpga,与主fpga通过pcb或背板相连。接收和发送fifo数据位宽72bits,其中第71-64存储控制标识,第63-32存储访问地址,第31-0存储写或读的有效数据。cpu写操作时,在串口从端将收到的串口通信帧在填写控制标识的主-从crc校验指示,并重新校验crc后将其发往主端作为写操作的ack。cpu读操作时,从端从发送fifo读取读操作的数据并校验crc后发往主动供cpu查询。

平等模式下(模式配置字2b00)串口相连两侧fpga关系平等,串口可支持变长的用户自定义帧传输。接收和发送fifo数据位宽72bits,第71-64存储控制标识,其中第71-67比特为保留位,默认填0,第66比特存储接收端crc校验结果(1表示crc有错,0表示无错),发送端默认填0;第65比特指示用户自定义数据帧的第一个64bits数据,第64比特指示用户自定义数据帧的最后一个64bits数据,这两个指示位使得后续电路在处理用户自定义数据帧时很方便的定位帧起始和帧结尾;第63-0为有效数据位。当收到串口通信帧里用户帧结束指示有效时,串口接收模块输出1个clock的用户帧结束指示,提示后续电路可以从接收fifo中读取一个完整数据帧。

本发明实施例提供的速率可调的fpga异步串口通信方法,可以通过收发两端输入时钟要求同频即可,串口通信速率调节通过同时改变收发两端的分频系数实现,链路同步方式采用拉长通信帧发送间隔即停止位‘1’并在接收端采样计数并检测起始位‘0’的方式实现,具备低功耗、低实现复杂度和可ip化的优势,可满足中高速的串行数据访问和交互需求。

以上所述,仅为本发明的实施例的具体实施方式,但本发明的实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明的实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的实施例的保护范围之内。因此,本发明的实施例的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1