一种基于AXI4接口的PCIExpress总线适配多接口的设计方法与流程

文档序号:17358021发布日期:2019-04-09 21:51阅读:660来源:国知局
一种基于AXI4接口的PCI Express总线适配多接口的设计方法与流程

本发明属于计算机通信技术领域,具体涉及一种基于axi4接口的pciexpress总线适配多接口的方法。



背景技术:

pciexpress总线不同于以往的pci总线,与pci总线相比,pciexpress总线是一种点对点的基于报文传输的数据总线,传输线速度可扩展,通常应用在io模块与外部模块的高速数据传输。

在航空嵌入式电子系统中,当主机接口为pciexpress总线时,板内包含fpga内部寄存器、多种串口(rs232、rs422和rs485)、gjb289a总线和arinc429总线等,主机和板卡进行数据交换时,则必须有pciexpress总线与板内总线间的转换,之前的实现多采用桥芯片的方法实现,成本高。

本专利提出了一种基于axi4接口的pciexpress总线,采用fpga逻辑电路实现了与local并行总线之间的转换,从而实现了pciexpress总线对多接口设备的访问。



技术实现要素:

本发明目的:提供一种pciexpress总线转换local并行总线的方法,用于支持pciexpress主机与多接口设备之间通信。

本发明的技术方案:

通过本发明的基于axi4接口的pciexpress总线适配多接口的方法实现上述目的,该方法包括以下步骤:转换步骤:pciexpress总线经由axi4接口与local并行总线连接,以实现pciexpress总线到local并行总线的转换;适配步骤:将local并行总线与外部接口设备连接,以访问外设资源。

在上述方法中,将pciexpress总线转换到local并行总线后,经local并行总线传输的信号可以包括以下各项中的一个或多个:地址线、字节使能、数据线、写使能、读使能、写等待和读有效信号。

在上述方法中,axi4接口可以经由状态机与local并行总线连接,所述状态机产生读时序和写时序,在读时序的情况下,pciexpress总线通过local并行总线从外部接口设备读取数据;在写时序的情况下,pciexpress总线通过local并行总线向外部接口设备写入数据。

在上述方法中,local并行总线可以通过同步模块与外部接口设备连接,以实现同步访问外设资源。

在上述方法中,pciexpress总线可以经由ip核与axi4接口连接。

如上所述,本发明的方法可包括如下过程:首先将xilinxfpgaxc7a75t的pciexpress硬核配置为endpoint模式,处理来自pciexpress主机物理层和数据链路层的报文,然后对pciexpress的endpoint节点的传输层tlp包解析,产生local并行总线,最后对local并行总线进行同步处理以访问不同的外设资源。

本发明针对pciexpress总线与多接口设备无法直接互连,提出了一种基于axi4接口的pciexpress总线访问自定义的local并行总线方法,从而实现pciexpress主机对嵌入式系统的rs232、离散量输入输出、gjb289a、arinc429和rs485总线的访问。通过实际工程中的应用,该方法能够使pciexpress总线正确可靠的访问多接口设备。

本发明的优点:

1)采用fpga实现,不需要增加任何外围扩展电路,可控制研发成本;

2)具备单周期访问方式,适用范围广;

3)不会对pciexpress总线的其他设备正常工作产生影响;

4)可保证pciexpress主机的能够正常对多接口设备进行读写访问。

附图说明

将参考附图详细描述本发明,其中:

图1示出pciexpress总线转换localbus总线过程;

图2示出rx_engine模块控制器状态机;

图3示出pciexpress主机对rs485总线进行写操作处理时序;

图4示出tx_engine模块控制状态机;

图5示出pciexpress主机对rs485总线进行读操作处理时序;

图6示出ep_mem_access同步模块连接方法。

具体实施方式

本设计方法仅针对pciexpress主机(rootcomplex)访问pciexpressendpoint的情况,结构框图见图1。下面进行详细描述:

1.逻辑电路单元:

1)一个pciexpress硬核电路,用于将主机的pciexpress请求转换为传输层tlp包;

2)rx_engine逻辑电路,用于接收和解析收到的pciexpress核的tlp包,并产生local并行写时序。

3)tx_engine逻辑电路,用于生成pciexpress核的内存和io读请求tlp包的响应包,并产生local并行读时序。

4)同步逻辑电路,用于将local并行总线时序同步以访问不同的外设资源。

2.各个模块的详细说明:

a.rx_engine模块说明

rx_engine模块从pciexpress核接收、并解析tlp包,判断tlp包的类型,产生local并行总线的写时序,进行相应操作,并控制tx_engine模块生成响应包,该模块用状态机来实现,见图2,图2中的名词解释如下:

rx_rst_state:rx_engine控制状态机初始状态;

rx_mem_rd32_dw1dw2:收到tlp包头的h0和h1解析,当tlp包类型为rx_mem_rd32_fmt_type转换到该状态,收取tlp包头的h2和h3并解析;

rx_mem_wr32_dw1dw2:收到tlp包头的h0和h1解析,当tlp包类型为rx_mem_wr32_fmt_type转换到该状态,收取tlp包头的h2和h3并解析;

rx_mem_rd64_dw1dw2:收到tlp包头的h0和h1解析,当tlp包类型为rx_mem_rd64_fmt_type转换到该状态,收取tlp包头的h2和h3并解析;

rx_mem_wr64_dw1dw2:收到tlp包头的h0和h1解析,当tlp包类型为rx_mem_wr64_fmt_type转换到该状态,收取tlp包头的h2和h3并解析;

rx_mem_rd32_dw1dw2:收到tlp包头的h0和h1解析,当tlp包类型为rx_io_rd32_fmt_type转换到该状态,收取tlp包头的h2和h3并解析;

rx_io_wr_dw1dw2:收到tlp包头的h0和h1解析,当tlp包类型为rx_io_wr32_fmt_type转换到该状态,收取tlp包头的h2和h3并解析;

rx_rd_io_wr_wait_state:收到tlp包为需要返回pcie核响应包时,转换到该状态,进行响应并等待tx_engine返回compl_done信号,转换到rx_rst_state状态;

rx_mem_wr32_wait_state:收到tlp包不需要返回pcie核响应包时,转换到该状态,进行32位的存储器写,等待wr_busy信号转换到rx_rst_state状态。

图3为pciexpress主机对低速总线rs485进行写访问,rx_engine模块产生local并行总线写时序。图3中的名词解释如下:

user_clk_out:传输层时钟;

m_axis_rx_tdata:接收的数据(正在被接收的报文数据);

m_axis_rx_tkeep:表示接收的数据有效的字节;

m_axis_rx_tlast:表示一个数据包的结束;

m_axis_rx_tready:表示用户应用准备好接收数据;

sop:表示rx_engine模块的状态机开始从rx_rst_state状态转移;

state:表示rx_engine模块状态机的状态;

wr_en:表示local并行总线写有效信号;

wr_addr:表示local并行总线地址信号;

wr_data:表示local并行总线数据信号;

rs485_cs_n:表示对rs485模块的片选使能;

rs485_wr:表示对rs485模块的写有效信号;

rs485_addr:表示rs485模块地址信号;

rs485_data:表示rs485模块数据信号。

b.tx_engine模块说明:

tx_engine模块根据rx_engine模块接收到的tlp包请求进行响应,产生local并行总线读时序,响应包根据req_compl和req_compl_wd将响应包分为不带数据的响应包和带数据的响应包,见图4。图4中的名词解释如下:

req_cpld:带数据的响应,req_cpl:不带数据的响应,s_axis_tx_tready表示pciexpress核准备好接收数据。

tx_rst_state:tx_engine控制状态机的初始状态,在该状态当req_cpld&&rd_dvalid或者req_cpl有效时,生成tlp响应包的h0和h1并转换状态;

tx_cpld_state:当rx_engine模块的req_compl_wd有效且rd_dvalid读取数据已完成转换到该状态,生成带有数据的tlp相应包的h2和h3,在pcie核准备好接收数据时转换到tx_wait_state状态;

tx_cpl_state:当rx_engine模块的req_compl有效时转换到该状态,在该状态生成不带数据的tlp响应包的h2和h3,在pcie核准备好接收数据时转换到tx_wait_state状态;

tx_wait_state:在该状态下设置s_axis_tx_tlast表示为tlp响应包的最后一帧,并设置compl_done信号。

图5为pciexpress主机对低速总线rs485进行读访问,rx_engine模块产生local并行总线读时序。图5中的名词解释如下:

user_clk_out:传输层时钟;

m_axis_rx_tdata:接收的数据(正在被接收的报文数据);

m_axis_rx_tkeep:表示接收的数据有效的字节;

m_axis_rx_tlast:表示一个数据包的结束;

m_axis_rx_tready:表示用户应用准备好接收数据;

sop:表示rx_engine模块的状态机开始从rx_rst_state状态转移;

rx_state:表示rx_engine模块状态机的状态;

req_compl和req_compl_wd:表示tx_engine模块的响应包是否带数据;

tx_state:表示tx_engine模块的状态机状态;

rd_en:表示local并行总线读有效信号;

rd_addr:表示local并行总线地址信号;

rs485_rd:表示对rs485模块的读有效信号;

rs485_addr:表示rs485模块地址信号;

rs485_data:表示rs485模块数据信号。

c.同步模块说明:

ep_mem_access模块主要提供了通过local并行总线访问rs422、arinc429、gjb289a、rs485和离散量接口等模块。主要连接方法如图6所示。

将各个接口模块的数据线、地址线、读写使能信号分别与local并行总线的相关信号连接,ep_mem_access模块为各个接口模块提供片选使能信号,从而使各个接口模块有不同的访问地址和访问时序。

本发明已成功应用于某型号航电系统中(主要用于接口模块的实现中),已取得良好的效果,并实现了高安全和高可靠性的要求,具有很好的应用前景。

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