CN117215980A - 一种自定义处理器外设接口方法及装置 - Google Patents
一种自定义处理器外设接口方法及装置 Download PDFInfo
- Publication number
- CN117215980A CN117215980A CN202311095306.5A CN202311095306A CN117215980A CN 117215980 A CN117215980 A CN 117215980A CN 202311095306 A CN202311095306 A CN 202311095306A CN 117215980 A CN117215980 A CN 117215980A
- Authority
- CN
- China
- Prior art keywords
- peripheral
- software
- fpga
- module
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000002093 peripheral effect Effects 0.000 title claims abstract description 102
- 238000000034 method Methods 0.000 title claims abstract description 14
- 238000004891 communication Methods 0.000 claims description 28
- 230000006870 function Effects 0.000 claims description 14
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Landscapes
- Bus Control (AREA)
Abstract
本申请提出了一种自定义处理器外设接口方法及装置,本装置包括处理器及软件驱动操作模块,PCIE总线,FPGA模块,需求外设接口由FPGA模块通过软件IP核自定义。本申请灵活扩展处理器的外设接口。本发明特征在于包括使用PCIE总线为处理器挂载了一个FPGA模块,利用FPGA可自由编程,支持多类接口的特点,通过软件IP核来自定义各种外设接口,处理器通过PCIE总线操作控制各种FPGA自定义的外设接口。
Description
技术领域
本申请涉及嵌入式计算机技术领域,特别涉及一种自定义处理器外设接口方法及装置。
背景技术
处理器外设接口,指的是处理器芯片内部用于和处理器的外围设备进行通信的接口,它主要负责外围设备数据的寄存、缓冲、转换,联络,同时还支持中断或者DMA管理。每种处理器自带的外设接口通常都是固定的,不同的外设接口支持不同的通信协议。
在嵌入式板卡的设计过程中,由于一些特殊应用场景和芯片原因,以某国产处理器为例:飞腾处理器自带2路标准SPI接口,而用户需要使用3到4路标准SPI接口;又或者用户需要使用SRIO接口,而处理器不支持。为了满足用户需求,这时候就需要在处理器和其他接口之间插入一个专用的接口转换芯片或者桥接芯片,而且不同的接口转换芯片需要针对其开发不同的驱动,这样就增加了板卡设计的难度和使用复杂度。
发明内容
本申请提供了一种自定义处理器外设接口方法及装置,可用于解决现有技术中处理器外接接口需要专用转换芯片的技术问题。
本申请提供一种自定义处理器外设接口装置,装置包括:
处理器:
应用于所有支持PCIE总线的处理器;
软件驱动操作模块:
软件驱动操作模块支持Linux和VxWorks操作系统;软件驱动操作模块包含驱动模块和标准API函数,驱动模块根据PCIE总线的不同地址空间来划分各种外设,并加载对应外设接口的驱动,而标准API函数将所有外设的数据通信都抽象为标准读写函数;
PCIE总线:
PCIE总线是连接处理器和FPGA模块的总线接口;
FPGA模块:
FPGA模块包括FPGA芯片和软件模块;
软件模块包括PCIE DMA通信模块、AXI总线和软件IP核;
其中,PCIE DMA通信模块用于处理器和FPGA之间的PCIE通信数据搬运,并且提供中断控制,以及FPGA内部的AXI总线接口,用户通过访问PCIE地址空间来访问AXI总线地址;
AXI总线:
AXI总线用于连接PCIE DMA通信模块和软件IP核;软件IP核对内接口统一为AXI总线接口,用户只需要访问AXI总线地址来使用不同的软件IP核;
软件IP核:
软件IP核是通过硬件语言编写的各种外设程序封装,软件IP核能够由用户自行编写打包;
软件IP核用于自定义各种外设接口;软件IP核由用户自由选择,用户能够通过在FPGA程序内添加所需响应数目的软件IP核为处理器扩展对应的外设接口;
FPGA的管脚能灵活自定义,用户根据需要能将管脚定义为所需IP核的接口;多种外设接口统一为FPGA管脚。
可选的,软件IP核包括外设接口通信协议、配置参数、中断接口和AXI总线接口。
可选的,外设接口包括FPGA模块支持的所有接口。
可选的,根据不同的外设接口封装在对应的软件IP核内部,设立需求;
其中,串口需要配置的参数包括波特率、停止位、校验位;
而I2C外设接口的配置参数需要配置参数包括物理地址、通信速率。
本申请还提供一种自定义处理器外设接口方法,方法利用本申请提供的装置实现,方法包括:
加载FPGA程序,程序包括PCIE DMA通信模块、AXI总线和自定义外设软件IP核,FPGA程序加载完毕后启动处理器;
处理器启动后加载标准外设接口驱动,并扫描PCIE总线上挂载的外设IP核对应的地址空间;在识别外设IP核后,初始化模块读取IP核内部寄存器的初始化参数信息,并对其进行初始化,中断处理模块开始给外设IP核进行中断注册;外设接口初始化完成,进入用户使用阶段。
用户通过标准API函数对外设进行写操作、读操作、或者也对外设发出的中断操作出响应。
当用户对外设执行读写数据操作后,处理器通过PCIE总线往FPGA发送指令,FPGA通过PCIE DMA模块将数据搬运至外设的AXI总线地址,,外设接收到指令后,开始数据传输。
本申请提供的方法通过FPGA自定义生成各种外设接口,将原本有限的处理器固定外设自由扩展,节省硬件开销,在驱动编写上可以做到标准化,通用化。用户只需要在处理器端调用统一的读写API函数就能完成各种外设通信。
附图说明
图1是本申请实施例提供的功能框图;
图2为本申请实施例提供的FPGA内部的连接示意图;
图3是本申请实施例提供的使用的软件IP核的基本架构;
图4是本申请实施例提供的处理器驱动接口定义;
图5是本申请实施例提供的标准使用流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请提供一种自定义处理器外设接口装置,装置包括:
处理器
应用于所有支持PCIE总线的处理器
软件驱动操作模块
软件驱动操作模块支持Linux和VxWorks及对应的国产化操作系统;软件驱动操作模块包含驱动模块和标准API函数,驱动模块根据PCIE总线的不同地址空间来划分各种外设,并加载对应外设接口的驱动,而标准API函数将所有外设的数据通信都抽象为标准读写函数,这样用户就可以忽略外设的不同协议标准,只需要关注外设接口的数据收发,相对于传统外设的的驱动操作模块,本发明的驱动操作模块完成了外设接口的标准化,在使用性和方便性等方面都得到了很大提升。
PCIE总线
PCIE总线是连接处理器和FPGA模块的总线接口;
FPGA模块
FPGA模块包括FPGA芯片和软件模块;本申请适用于所有支持PCIE总线的FPGA芯片。
软件模块包括PCIE DMA通信模块、AXI总线和软件IP核;
其中,PCIE DMA通信模块用于处理器和FPGA之间的PCIE通信数据搬运,并且提供中断控制,以及FPGA内部的AXI总线接口,用户通过访问PCIE地址空间来访问AXI总线地址;PCIE DMA通信模块使用FPGA厂商自带的IP核搭建。
AXI总线
AXI总线用于连接PCIE DMA通信模块和软件IP核;软件IP核对内接口统一为AXI总线接口,用户只需要访问AXI总线地址来使用不同的软件IP核;便于驱动程序的统一规范。
软件IP核
软件IP核是通过硬件语言编写的各种外设程序封装,软件IP核能够由用户自行编写打包;也可以使用FPGA厂商支持AXI总线的IP核。
软件IP核用于自定义各种外设接口;软件IP核由用户自由选择,用户能够通过在FPGA程序内添加所需响应数目的串口IP核,再通过本发明的使用流程就可以为处理器扩展出多路串口外设接口;
FPGA的管脚能灵活自定义,用户根据需要能将管脚定义为所需IP核的接口;以串口、I2C总线、标准SPI接口为例子,串口和I2C总线都只需要两根信号线,标准SPI接口需要4根信号线,用户可以对外引出FPGA的4个管脚,只要在FPGA程序内选用不同的IP核,这4个管脚就能变处理器的标准SPI接口,又或者是两个串口接口、两个I2C总线接口、一个串口和一个I2C接口。本申请在硬件上把多种外设接口统一为FPGA管脚;避免为了某些特定接口而进行不同的板卡设计,节约了硬件成本。
软件IP核包括外设接口通信协议、配置参数、中断接口和AXI总线接口。
外设接口包括FPGA模块支持的所有外设接口,例如串口、I2C接口、CAN总线接口、SPI接口、以太网接口、USB接口、DDR3接口等FPGA芯片支持的外设接口。
根据不同的外设接口封装在对应的软件IP核内部,设立需求;
其中,串口需要配置的参数包括波特率、停止位、校验位;
而I2C外设接口的配置参数需要配置参数包括物理地址、通信速率。
本申请提供一种自定义处理器外设接口方法,方法包括:
加载FPGA程序,程序包括PCIE DMA通信模块、AXI总线和自定义IP核,FPGA程序加载完毕后启动处理器;
处理器启动后加载标准外设接口驱动,并扫描PCIE总线上挂载的外设IP核对应的地址空间;在识别外设IP核后,初始化模块读取IP核内部寄存器的初始化参数信息,并对其进行初始化,中断处理模块开始给外设IP核进行中断注册;外设接口初始化完成,进入用户使用阶段。
用户通过标准API函数对外设进行写操作、读操作、或者也对外设发出的中断操作出响应。
当用户对外设执行读写数据操作后,处理器通过PCIE总线往FPGA发送指令,FPGA通过PCIE DMA模块将数据搬运至外设的AXI总线地址,外设接收到指令后,开始数据传输。
下面首先结合附图对本申请实施例进行阐述。
图1是本申请的功能框图。如图所示,本申请是基于PCIE总线为通用处理器自定义外设接口,实现的功能是由FPGA模块来取代各种物理外设接口。首先应用范围是支持PCIE总线的通用处理器,处理器通过PCIE总线和FPGA完成所有外设的数据交互,具体到FPGA内部,是使用软件IP核把AXI总线接口直接转换为物理外设接口,用户可以通过软件的方法自定义各种FPGA支持的接口,如图1所示,FPGA模块列出了几种常用的接口,并连接了不同的外设设备。
图2是本申请FPGA内部的连接示意图。如图所示,本申请FPGA模块通过PCIE总线同处理器进行数据通信,在收到处理器发送过来的指令后,FPGA内部的DMA将需要传输的数据通过PCIE总线搬运到AXI总线,并根据数据包内的地址请求将数据分发到各个软件IP核对应的AXI总线地址。软件IP核解析收到的指令后开始启动自定义的外设接口并做出操作。
图3是本申请使用的软件IP核的基本架构。如图所示,本申请所有软件IP核都使用统一架构,内部接口分为AXI总线接口和中断接口,对外接口为外设的收发接口。
图4是处理器自定义外设设备驱动及标准API接口定义,适用于所有类型自定义外设。
图5是本申请标准使用流程图。如图所示,板卡或者系统启动后,首先加载FPGA程序,同时通过IP核形成自定义外设接口,FPGA程序加载完后,处理器开始初始化PCIE DMA驱动程序,该初始化通过后,处理器会通过PCIE总线扫描FPGA模块,构建处理器和FPGA之间的PCIE DMA物理通道。然后用户通过标准自定义外设驱动程序及API接口对自定义外设接口进行操作,操作指令通过外设接口传递给物理设备。
以上所述的本申请实施方式并不构成对本申请保护范围的限定。
Claims (5)
1.一种自定义处理器外设接口装置,其特征在于,所述装置包括:
处理器:
应用于所有支持PCIE总线的处理器;
软件驱动操作模块:
软件驱动操作模块支持Linux和VxWorks操作系统;软件驱动操作模块包含驱动模块和标准API函数,驱动模块根据PCIE总线的不同地址空间来划分各种外设,并加载对应外设接口的驱动,而标准API函数将所有外设的数据通信都抽象为标准读写函数;
PCIE总线:
PCIE总线是连接处理器和FPGA模块的总线接口;
FPGA模块:
FPGA模块包括FPGA芯片和软件模块;
软件模块包括PCIE DMA通信模块、AXI总线和软件IP核;
其中,PCIE DMA通信模块用于处理器和FPGA之间的PCIE通信数据搬运,并且提供中断控制,以及FPGA内部的AXI总线接口,用户通过访问PCIE地址空间来访问AXI总线地址;
AXI总线:
AXI总线用于连接PCIE DMA通信模块和软件IP核;软件IP核对内接口统一为AXI总线接口,用户只需要访问AXI总线地址来使用不同的软件IP核;
软件IP核:
软件IP核是通过硬件语言编写的各种外设程序封装,软件IP核能够由用户自行编写打包;
软件IP核用于自定义各种外设接口;软件IP核由用户自由选择,用户能够通过在FPGA程序内添加所需响应数目的外设IP核,为处理器扩展对应的外设接口
FPGA的管脚能灵活自定义,用户根据需要能将管脚定义为所需IP核的接口;多种外设接口统一为FPGA管脚。
2.根据权利要求1所述的装置,其特征在于,软件IP核包括外设接口通信协议、配置参数、中断接口和AXI总线接口。
3.根据权利要求1所述的装置,其特征在于,外设接口包括FPGA模块支持的所有外设接口。
4.根据权利要求3所述的装置,其特征在于,根据不同的外设接口封装在对应的软件IP核内部,设立需求;
其中,串口需要配置的参数包括波特率、停止位、校验位;
而I2C外设接口的配置参数需要配置参数包括物理地址、通信速率。
5.一种自定义处理器外设接口方法,所述方法利用权利要求1至4中的任一装置实现,其特征在于,所述方法包括:
加载FPGA程序,程序包括PCIE DMA通信模块、AXI总线和自定义串口IP核,FPGA程序加载完毕后启动处理器;
处理器启动后加载标准外设接口驱动,并扫描PCIE总线上挂载的串口外设IP核对应的地址空间;在识别外设IP核后,初始化模块读取IP核内部寄存器的初始化参数信息,并对其进行初始化,中断处理模块开始给外设IP核进行中断注册;外设接口初始化完成,进入用户使用阶段。
用户通过标准API函数对外设进行写操作、读操作、或者也对外设发出的中断操作出响应。
当用户对外设执行读写数据操作后,处理器通过PCIE总线往FPGA发送指令,FPGA通过PCIE DMA模块将数据搬运至外设的AXI总线地址,,外设接收到指令后,开始数据传输。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311095306.5A CN117215980A (zh) | 2023-08-29 | 2023-08-29 | 一种自定义处理器外设接口方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311095306.5A CN117215980A (zh) | 2023-08-29 | 2023-08-29 | 一种自定义处理器外设接口方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117215980A true CN117215980A (zh) | 2023-12-12 |
Family
ID=89050334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311095306.5A Pending CN117215980A (zh) | 2023-08-29 | 2023-08-29 | 一种自定义处理器外设接口方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117215980A (zh) |
-
2023
- 2023-08-29 CN CN202311095306.5A patent/CN117215980A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5649128A (en) | Multiple bus interface adapter for connection to a plurality of computer bus architectures | |
JP4279451B2 (ja) | ロー・ピン・カウントのバスにおけるメモリ・トランザクション | |
US7890690B2 (en) | System and method for dual-ported flash memory | |
KR100352224B1 (ko) | 핀-총수가 적은 버스 상에서의 직접 메모리 억세스 트랜잭션 | |
US8103803B2 (en) | Communication between a processor and a controller | |
US6567875B1 (en) | USB data serializer | |
US5729767A (en) | System and method for accessing peripheral devices on a non-functional controller | |
JP5641754B2 (ja) | インターフェースカードシステム | |
CN113396565B (zh) | 一种控制方法及装置 | |
CN101317364A (zh) | 一种实现业务板和主控板通信的装置和方法 | |
JP2008522325A (ja) | Usb・otgコントローラ | |
US5748945A (en) | Method for slave DMA emulation on a computer system bus | |
US7636797B2 (en) | LPC configuration sharing method | |
CN110795369B (zh) | 基于gpio管脚实现mdio从机功能的方法及终端 | |
CN111736792B (zh) | 可编程逻辑器件及其控制方法、控制系统和视频处理器 | |
US20220206970A1 (en) | Configurable Multi-Function PCIe Endpoint Controller in an SoC | |
US5664198A (en) | High speed access to PC card memory using interrupts | |
KR100801759B1 (ko) | 슬레이브의 디버깅 방법 및 시스템 | |
US6230216B1 (en) | Method for eliminating dual address cycles in a peripheral component interconnect environment | |
CN112988637A (zh) | 促进与i2c的向后兼容性的i3c集线器 | |
CN117215980A (zh) | 一种自定义处理器外设接口方法及装置 | |
US20160314086A1 (en) | Secure digital host controller virtualization | |
CN110795373A (zh) | 一种i2c总线到并行总线的转换方法、终端及存储介质 | |
US6826628B2 (en) | PCI-PCMCIA smart card reader | |
JP3477306B2 (ja) | 拡張入出力インターフェイス |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |