CN111198837B - 基于fpga的sdio接口系统、控制器桥接方法 - Google Patents
基于fpga的sdio接口系统、控制器桥接方法 Download PDFInfo
- Publication number
- CN111198837B CN111198837B CN201911361203.2A CN201911361203A CN111198837B CN 111198837 B CN111198837 B CN 111198837B CN 201911361203 A CN201911361203 A CN 201911361203A CN 111198837 B CN111198837 B CN 111198837B
- Authority
- CN
- China
- Prior art keywords
- controller
- data
- sdio
- transceiver module
- control module
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明实施例提供的基于FPGA的SDIO接口系统,基于FPGA的SDIO接口系统包括:第一SDIO控制器、第二SDIO控制器、缓冲单元;第一SDIO控制器用于接收第一控制器发送的第一数据,并将第一数据写入缓冲单元,还用于接收第一控制器发送的第一数据读取命令,从缓冲单元读取第二SDIO控制器写入的数据并返回给第一控制器;第二SDIO控制器用于接收第二控制器发送的第二数据,并将第二数据写入缓冲单元,还用于接收第二控制器发送的第二数据读取命令,从缓冲单元读取第一SDIO控制器写入的数据并返回给第二控制器。决了SDIO数据读取的读取速度和可扩展性都较低,同时存在数据丢失导致无法采到预期中的信号的问题。
Description
技术领域
本发明实施例涉及但不限于存储器接口处理领域,具体而言,涉及但不限于基于FPGA的SDIO接口系统、控制器桥接方法。
背景技术
随着通信、存储等领域对信号传输灵活的要求,当前相关技术中,需要两个控制器同时作为主机对接时,难以满足灵活处理接口和进行数据处理速率的要求。同时,由于SDIO接口数据的读取需要根据SDIO协议进行初始化、数据收发控制等,SDIO数据读取的读取速度和可扩展性都受到很大限制,尤其是在对应控制器的接口时钟达到100MHz以上,上升沿下降沿都需要对数据进行采样时,通常软件无法直接实现升沿下降沿都对数据进行采样,同时SDIO作为一种接口,其内部逻辑参考时钟由控制器提供,例如由CPU提供,对于两个CPU主机桥接而言,两个CPU时钟域不同,可能导致数据丢失,无法采到预期中的信号,及亚稳态的产生从而导致某个电路模块或者整颗IC无法工作,从而导致无法满足客户不同控制器时钟下数据交互的应用需求。
发明内容
本发明实施例提供的基于FPGA的SDIO接口系统、控制器桥接方法,主要解决的技术问题是SDIO数据读取的读取速度和可扩展性都较低,同时无法满足客户不同控制器时钟下数据交互的应用需求的问题。
为解决上述技术问题,本发明实施例提供一种基于FPGA的SDIO接口系统,包括:第一SDIO控制器、第二SDIO控制器、缓冲单元;
所述第一SDIO控制器用于接收第一控制器发送的第一数据,并将所述第一数据写入所述缓冲单元,还用于接收所述第一控制器发送的第一数据读取命令,从所述缓冲单元读取所述第二SDIO控制器写入的数据并返回给所述第一控制器;
所述第二SDIO控制器用于接收第二控制器发送的第二数据,并将所述第二数据写入所述缓冲单元,还用于接收所述第二控制器发送的第二数据读取命令,从所述缓冲单元读取所述第一SDIO控制器写入的数据并返回给所述第二控制器。
可选的,所述第一SDIO控制器包括:
第一收发模块,用于接收所述第一控制器发送的初始化指令,并传递给第一控制模块;
所述第一控制模块,用于根据所述初始化指令对所述第一SDIO控制器进行初始化,从而与所述第一控制器建立连接。
可选的,所述第一收发模块,还用于接收所述第一控制器发送的第一配置命令,并传递给所述第一控制模块;
所述第一控制模块,用于根据所述第一配置指令对所述第一SDIO控制器进行相应配置。
可选的,所述第一收发模块,还用于接收所述第一控制器发送的第一写命令,并将所述第一写命令传递给所述第一控制模块;
所述第一控制模块,还用于当接收到所述第一写命令时,改变所述第一收发模块的状态,使得所述第一收发模块可以接收所述第一控制器发送的所述第一数据;
所述第一收发模块,还用于接收所述第一控制器发送的所述第一数据,并对所述第一数据进行校验,将校验完成的所述第一数据传递给所述第一控制模块;
所述第一控制模块,还用于控制所述第一收发模块将校验完成的所述第一数据写入所述缓冲单元。
可选的,所述第一收发模块,还用于接收所述第一控制器发送的第一读取命令,将所述第一读取命令传递给所述第一控制模块;
所述第一控制模块,还用于当接收到所述第一读取命令时,改变所述第一收发模块的状态,使得所述第一收发模块可以接收所述第一控制器发送的所述第一数据读取命令;
所述第一收发模块,还用于接收所述第一控制器发送的所述第一数据读取命令,将所述第一数据读取命令传递给所述第一控制模块;
所述第一控制模块,还用于控制所述第一收发模块从所述缓冲单元读取所述第二SDIO控制器写入的数据,读取的数据与所述第一数据读取命令对应,并控制所述第一收发模块对读取的数据进行校验,将检验完成的数据返回给所述第一控制器。
可选的,所述第二SDIO控制器包括:
第二收发模块,用于接收所述第二控制器发送的初始化指令,并传递给第二控制模块;
所述第二控制模块,用于根据所述初始化指令对所述第二SDIO控制器进行初始化,从而与所述第二控制器建立连接。
可选的,所述第二收发模块,还用于接收所述第二控制器发送的第二配置命令,并传递给所述第二控制模块;
所述第二控制模块,用于根据所述第二配置指令对所述第二SDIO控制器进行相应配置。
可选的,所述第二收发模块,还用于接收所述第二控制器发送的第二写命令,并将所述第二写命令传递给所述第二控制模块;
所述第二控制模块,还用于当接收到所述第二写命令时,改变所述第二收发模块的状态,使得所述第二收发模块可以接收所述第二控制器发送的所述第二数据;
所述第二收发模块,还用于接收所述第二控制器发送的所述第二数据,并对所述第二数据进行校验,将校验完成的所述第二数据传递给所述第二控制模块;
所述第二控制模块,还用于控制所述第二收发模块将校验完成的所述第二数据写入所述缓冲单元。
可选的,所述第二收发模块,还用于接收所述第二控制器发送的第二读取命令,将所述第二读取命令传递给所述第二控制模块;
所述第二控制模块,还用于当接收到所述第二读取命令时,改变所述第二收发模块的状态,使得所述第二收发模块可以接收所述第二控制器发送的所述第二数据读取命令;
所述第二收发模块,还用于接收所述第二控制器发送的所述第二数据读取命令,将所述第二数据读取命令传递给所述第二控制模块;
所述第二控制模块,还用于控制所述第二收发模块从所述缓冲单元读取所述第一SDIO控制器写入的数据,读取的数据与所述第二数据读取命令对应,并控制所述第二收发模块对读取的数据进行校验,将校验完成的数据返回给所述第一控制器。
本发明实施例还提供一种基于FPGA的控制器桥接方法,其特征在于,包括:
第一安全数字输入输出SDIO控制器接收第一控制器发送的第一数据,并将所述第一数据写入所述缓冲单元;且所述第一SDIO控制器接收第一控制器发送的第一数据读取命令,从所述缓冲单元读取所述第二SDIO控制器写入的数据并返回给所述第一控制器;
第二SDIO控制器接收第二控制器发送的第二数据,并将所述第二数据写入所述缓冲单元;且所述第二SDIO控制器接收第二控制器发送的第二数据读取命令,从所述缓冲单元读取所述第一SDIO控制器写入的数据并返回给所述第二控制器。
本发明的有益效果是:
根据本发明实施例提供的基于FPGA的SDIO接口系统,基于FPGA的SDIO接口系统包括:第一SDIO控制器、第二SDIO控制器、缓冲单元;第一SDIO控制器用于接收第一控制器发送的第一数据,并将第一数据写入缓冲单元,还用于接收第一控制器发送的第一数据读取命令,从缓冲单元读取第二SDIO控制器写入的数据并返回给第一控制器;第二SDIO控制器用于接收第二控制器发送的第二数据,并将第二数据写入缓冲单元,还用于接收第二控制器发送的第二数据读取命令,从缓冲单元读取第一SDIO控制器写入的数据并返回给第二控制器。在某些实施过程中解决了SDIO数据读取的读取速度和可扩展性都较低,同时存在数据丢失导致无法采到预期中的信号,及亚稳态的产生从而导致某个电路模块或者整颗IC无法工作的问题。
本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。
附图说明
图1为本发明实施例一的一种基于FPGA的SDIO接口系统的结构示意图;
图2为本发明实施例一的第一SDIO控制器基本结构示意图;
图3为本发明实施例一的第二SDIO控制器基本结构示意图;
图4为本发明实施例二的一种SDIO接口桥接CPU系统框图;
图5为本发明实施例二的一种sdio_device_stack模块连接图;
图6为本发明实施例三的一种基于FPGA的控制器桥接方法基本流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
为了解决SDIO数据读取的读取速度和可扩展性都较低,同时存在数据丢失无法采到预期中的信号,及亚稳态的产生从而导致某个电路模块或者整颗IC无法工作的问题。
请参见图1,图1所示为一种基于FPGA的SDIO接口系统的结构示意图,该基于FPGA的SDIO接口系统包括:第一SDIO控制器10、第二SDIO控制器12、缓冲单元11;其中,第一SDIO控制器10用于接收第一控制器发送的第一数据,并将第一数据写入缓冲单元11,还用于接收第一控制器发送的第一数据读取命令,从缓冲单元11读取第二SDIO控制器12写入的数据并返回给第一控制器;第二SDIO控制器12用于接收第二控制器发送的第二数据,并将第二数据写入缓冲单元11,还用于接收第二控制器发送的第二数据读取命令,从缓冲单元11读取第一SDIO控制器10写入的数据并返回给第二控制器;需要理解的是,FPGA的型号不受限制。
需要理解的是,其中第一控制器和/或第二控制器包括以下任一:CPU、以太网、SDIO接口等;本实施例并不用于限定第一控制器和/或第二控制器为CPU、以太网、SDIO接口;第一控制器和/或第二控制器可以发出时钟信号、CMD命令,data数据即可。需要理解的是,第一SDIO控制器10和第二SDIO控制器12的时钟信号分别根据第一控制器和第二控制器发送的时钟信号确定;具体的,第一SDIO控制器10与第一控制器连接,第二SDIO控制器12与第二控制器连接时,第一SDIO控制器10根据第一控制器通过第一CLK(CLOCK)时钟线发送的时钟信号进行数据的读或写,第二SDIO控制器12根据第二控制器通过第二CLK发送的时钟信号进行数据的读或写。
在本实施例中,如图2所示,第一SDIO控制器10包括:第一收发模块101,用于接收第一控制器发送的初始化指令,并传递给第一控制模块102;第一控制模块102,用于根据初始化指令对第一SDIO控制器10进行初始化,从而与第一控制器建立连接;具体的,第一SDIO控制器10在接收第一控制器发送的其他命令之前,至少需要先接收一次第一控制器发送的初始化指令,第一SDIO控制器10根据第一控制器发送的初始化指令进行初始化,从而使得第一SDIO控制器10与第一控制器建立连接。
在本实施例中,第一收发模块101,还用于接收第一控制器发送的第一配置命令,并传递给第一控制模块102;第一控制模块102,用于根据第一配置指令对第一SDIO控制器10进行相应配置。具体的,第一控制模块102用于根据第一配置指令对第一SDIO控制器10的第一配置模块103进行相应配置;需要理解的是,第一配置模块103包括但不限于:第一功能配置模块,第一用户定义配置模块;其中第一功能配置模块用于存储第一SDIO控制器10自身所携带的功能参数。第一用户定义配置模块用于存储用户定义的功能参数,第一收发模块101用于接收第一控制器发送的配置指令,并发送给第一控制模块102,第一控制模块102接收到该配置指令后,根据配置指令对该配置指令对应的第一功能配置模块或第一用户定义配置模块的功能参数进行配置。
需要理解的是,第一SDIO控制器10的每次操作都是由第一控制器通过CMD(command)线上发起一个CMD命令给第一SDIO控制器10,对于CMD命令,第一SDIO控制器10需要返回回应Response。
在本实施例中,第一收发模块101,还用于接收第一控制器发送的第一写命令,并将第一写命令传递给第一控制模块102;第一控制模块102,还用于当接收到第一写命令时,改变第一收发模块101的状态,使得第一收发模块101可以接收第一控制器发送的第一数据;第一收发模块101,还用于接收第一控制器发送的第一数据,并对第一数据进行校验,将校验完成的第一数据传递给第一控制模块102;第一控制模块102,还用于控制第一收发模块101将校验完成的第一数据写入缓冲单元11。具体的,对于写命令,首先第一控制器向第一收发模块101发送第一写命令,第一收发模块101将该第一写命令发送给第一控制模块102,第一控制模块102控制第一收发模块101返回一个握手信号,此时,当第一控制器收到第一SDIO控制器10回应的第一写命令对应的握手信号后,会将第一数据放在4位的数据线上,在传送第一数据的同时会跟随着循环冗余校验(Cyclic Redundancy Check)CRC校验码。当整个第一数据传送完毕后,第一控制器会再次发送一个命令,通知第一SDIO控制器10数据传输完毕,第一收发模块101将同时会返回一个接收成功响应,接收所述第一控制器发送的所述第一数据,并对第一数据进行校验,将校验完成的第一数据传递给第一控制模块102;第一控制模块102,还用于控制第一收发模块101将校验完成的第一数据写入缓冲单元11。
在本实施例中,第一收发模块101,还用于接收第一控制器发送的第一读取命令,将第一读取命令传递给第一控制模块102;第一控制模块102,还用于当接收到第一读取命令时,改变第一收发模块101的状态,使得第一收发模块101可以接收第一控制器发送的第一数据读取命令;第一收发模块101,还用于接收第一控制器发送的第一数据读取命令,将第一数据读取命令传递给第一控制模块102;第一控制模块102,还用于控制第一收发模块101从缓冲单元11读取第二SDIO控制器12写入的数据,读取的数据与第一数据读取命令对应,并控制第一收发模块101对读取的数据进行校验,将检验完成的数据返回给第一控制器;具体的,对于读命令,首先第一控制器会向第一收发模块101发送第一读取命令,第一收发模块101将该第一读取命令发送给第一控制模块102,第一控制模块102控制第一接收模块返回一个握手信号,此时,当第一控制器收到第一SDIO回应的第一读取命令对应的握手信号后,会将第一数据读取命令放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个第一数据读取命令传送完毕后,第一控制器会再次发送一个命令,通知第一SDIO控制器10操作完毕,第一收发模块101将同时会返回一个接收成功响应,第一收发模块101,还用于接收第一控制器发送的第一数据读取命令,将第一数据读取命令传递给第一控制模块102;第一控制模块102,还用于控制第一收发模块101从缓冲单元11读取第二SDIO控制器12写入的数据,读取的数据与第一数据读取命令对应,并控制第一收发模块101对读取的数据进行校验,将检验完成的数据返回给第一控制器。
在本实施例中,如图3所示,第二SDIO控制器12包括:第二收发模块121,用于接收第二控制器发送的初始化指令,并传递给第二控制模块122;第二控制模块122,用于根据初始化指令对第二SDIO控制器12进行初始化,从而与第二控制器建立连接;具体的,第二SDIO控制器12在接收第二控制器发送的其他命令之前,至少需要先接收一次第二控制器发送的初始化指令,第二SDIO控制器12根据第二控制器发送的初始化指令进行初始化,从而使得第二SDIO控制器12与第二控制器建立连接。
在本实施例中,第二收发模块121,还用于接收第二控制器发送的第二配置命令,并传递给第二控制模块122;第二控制模块122,用于根据第二配置指令对第二SDIO控制器12进行相应配置。具体的,第二控制模块122用于根据第二配置指令对第二SDIO控制器12的第二配置模块123进行相应配置;需要理解的是,第二配置模块123包括但不限于:第二功能配置模块,第二用户定义模块;其中第二功能配置模块用于存储第二SDIO控制器12自身所携带的功能参数。第二用户定义模块用于存储用户定义的功能参数,第二收发模块模块121用于接收第二控制器发送的配置指令,并发送给第二控制模块122,第二控制模块122接收到该配置指令后,根据配置指令对该配置指令对应的第二功能配置模块或第二用户定义模块的功能参数进行配置。
需要理解的是,第二SDIO控制器12的每次操作都是由第二控制器通过第二CMD(command)线上发起一个CMD命令给第二SDIO控制器12,对于CMD命令,第二SDIO控制器12需要返回回应Response。
在本实施例中,第二收发模块121,还用于接收第二控制器发送的第二写命令,并将第二写命令传递给第二控制模块122;第二控制模块122,还用于当接收到第二写命令时,改变第二收发模块121的状态,使得第二收发模块121可以接收第二控制器发送的第二数据;第二收发模块121,还用于接收第二控制器发送的第二数据,并对第二数据进行校验,将校验完成的第二数据传递给第二控制模块122;第二控制模块122,还用于控制第二收发模块121将校验完成的第二数据写入缓冲单元11。具体的,对于写命令,首先第二控制器向第二收发模块121发送第二写命令,第二收发模块121将该第二写命令发送给第二控制模块122,第二控制模块122控制第二收发模块121返回一个握手信号,此时,当第二控制器收到第二SDIO控制器12回应的第二写命令对应的握手信号后,会将第二数据放在4位的数据线上,在传送第二数据的同时会跟随着循环冗余校验(Cyclic Redundancy Check)CRC校验码。当整个第二数据传送完毕后,第二控制器会再次发送一个命令,通知第二SDIO控制器12数据传输完毕,第二收发模块121将同时会返回一个接收成功响应,接收所述第二控制器发送的所述第二数据,并对第二数据进行校验,将校验完成的第二数据传递给第二控制模块122;第二控制模块122,还用于控制第二收发模块121将校验完成的第二数据写入缓冲单元11。
在本实施例中,第二收发模块121,还用于接收第二控制器发送的第二读取命令,将第二读取命令传递给第二控制模块122;第二控制模块122,还用于当接收到第二读取命令时,改变第二收发模块121的状态,使得第二收发模块121可以接收第二控制器发送的第二数据读取命令;第二收发模块121,还用于接收第二控制器发送的第二数据读取命令,将第二数据读取命令传递给第二控制模块122;第二控制模块122,还用于控制第二收发模块121从缓冲单元11读取第二SDIO控制器12写入的数据,读取的数据与第二数据读取命令对应,并控制第二收发模块121对读取的数据进行校验,将检验完成的数据返回给第二控制器;具体的,对于读命令,首先第二控制器会向第二收发模块121发送第二读取命令,第二收发模块121将该第二读取命令发送给第二控制模块122,第二控制模块122控制第二接收模块返回一个握手信号,此时,当第二控制器收到第二SDIO回应的第二读取命令对应的握手信号后,会将第二数据读取命令放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个第二数据读取命令传送完毕后,第二控制器会再次发送一个命令,通知第二SDIO控制器12操作完毕,第二收发模块121将同时会返回一个接收成功响应,第二收发模块121,还用于接收第二控制器发送的第二数据读取命令,将第二数据读取命令传递给第二控制模块122;第二控制模块122,还用于控制第二收发模块121从缓冲单元11读取第二SDIO控制器12写入的数据,读取的数据与第二数据读取命令对应,并控制第二收发模块121对读取的数据进行校验,将检验完成的数据返回给第二控制器。
根据本发明实施例提供的基于FPGA的SDIO接口系统,基于FPGA的SDIO接口系统包括:第一SDIO控制器、第二SDIO控制器、缓冲单元;第一SDIO控制器用于接收第一控制器发送的第一数据,并将第一数据写入缓冲单元,还用于接收第一控制器发送的第一数据读取命令,从缓冲单元读取第二SDIO控制器写入的数据并返回给第一控制器;第二SDIO控制器用于接收第二控制器发送的第二数据,并将第二数据写入缓冲单元,还用于接收第二控制器发送的第二数据读取命令,从缓冲单元读取第一SDIO控制器写入的数据并返回给第二控制器。在某些实施过程中解决了SDIO数据读取的读取速度和可扩展性都较低,同时存在数据丢失无法采到预期中的信号,及亚稳态的产生从而导致某个电路模块或者整颗IC无法工作的问题。
实施例二:
为了更好的理解本发明,在本发明实施提供一个较为具体的例子对基于FPGA的SDIO接口系统进行说明,如图4所示,所述基于FPGA的SDIO接口系统包括与CPUA连接的第一sdio_device_stack,与CPUB连接的第二sdio_device_stack,其中第一sdio_device_stack向第一BufferTop写入数据,第二sdio_device_stack向第二BufferTop写入数据,第一sdio_device_stack从第二BufferTop读取第二dio_device_stack写入的数据,第二sdio_device_stack从第一BufferTop读取第一dio_device_stack写入的数据;
需要理解的是,FPGA中BufferTop模块的设计类似FIFO和双口RAM的结合,其位宽、深度均可参数化配置,每个BufferTop的写入时钟为写端的CPU时钟,读出时钟为读端的CPU时钟。由于设计类似FIFO,数据先进先出;由于设计类似双口RAM,支持异步时钟域读写。
在本实施例中,FPGA芯片采用PGL22G,主要负责SDIO接口协议的处理,包括接收处理CPU命令以及作出应答、SDIO数据读取、数据的CRC校验、数据发送到CPU主机以及对CPU不同时钟域的数据读写处理。两个CPU与FPGA对接,主要负责SDIO接口协议命令的下发,包括上电初始化命令、数据读写命令等。
需要理解的是,如图5所示,各sdio_device_stack中包括但不限于以下模块:1、card_controller模块;2、phy模块;3、cia模块;4、data_bus_interconnect模块;各模块功能如下:
1)card_controller模块
card_controller模块负责协议状态机的处理,包括卡初始化状态、总线复位、待机状态、命令状态、数据传输状态、INACTIVE状态。对接收到的命令,该模块判断是否为合法命令,以及对该命令是否返回应答及应答类型进行判断控制。当CPU下发进入INACTIVE命令时,该模块将使系统进入INACITVE状态。
2)phy模块
phy模块负责对命令接收和命令应答时序的控制,包括空闲状态、接收命令状态、等待应答状态、应答状态、应答拼接CRC状态。接收命令时,该模块对接收时序进行控制,并对接收到的命令进行CRC校验判断是否命令传输过程中出错;对命令应答时,该模块对应答时序进行控制,边发送边计算CRC并将CRC结果拼接到协议规定的应答时序中。
3)cia模块
cia模块,即Common Interface Access模块,内含CCCR模块、FBR模块、CIS模块,可根据实际需要修改参数使能指定的Function。CCCR模块负责SDIO卡控制寄存器,FBR模块负责Function基础寄存器,CIS模块负责提供CPU卡的状态信息。
4)data_bus_interconnect模块
data_bus_interconnect模块主要负责数据线接口的数据访问控制。
需要理解的是,如果两个CPU对接时需要提高数据读取速率,则提高CPU时钟即可提高系统时钟;若要以SDIO协议的应用模块(如WIFI模块、GPS模块)使用该SDIO接口,则时钟需要按协议规定的SDR12、SDR25、SDR50、SDR104、DDR50速率的系统时钟提供。
本实施例提出了一种基于FPGA的SDIO接口系统,采用并行处理、流水线技术,满足了快速数据交互的需求;同时在FPGA资源消耗和数据读取速率之间达到平衡;提出了一种跨时钟域对接CPU的方法,满足客户不同CPU时钟下数据交互的应用需求。
实施例三:
本实施例还提供一种基于FPGA的控制器桥接方法,包括:
S101、第一安全数字输入输出SDIO控制器接收第一控制器发送的第一数据,并将第一数据写入缓冲单元;
S102、第一SDIO控制器接收第一控制器发送的第一数据读取命令,从缓冲单元读取第二SDIO控制器写入的数据并返回给第一控制器;
S103、第二SDIO控制器接收第二控制器发送的第二数据,并将第二数据写入缓冲单元;
S104、第二SDIO控制器接收第二控制器发送的第二数据读取命令,从缓冲单元读取第一SDIO控制器写入的数据并返回给第二控制器。
需要理解的是,在一些实施例中,该基于FPGA的控制器桥接方法的上述步骤S101、S102、S103、S104不分先后顺序;
在一些示例中,上述步骤S101之前还包括:第一SDIO控制器接收第一控制器发送的初始化指令,根据初始化指令对第一SDIO控制器进行初始化,从而与第一控制器建立连接。在一些示例中,上述步骤S101包括:第一SDIO控制器接收第一控制器发送的第一写命令,当第一SDIO控制器接收到第一写命令时,判定第一SDIO控制器可以接收第一控制器发送的第一数据;当第一SDIO控制器接收第一控制器发送的第一数据时,第一SDIO控制器对第一数据进行校验,将校验完成的第一数据写入缓冲单元。
在一些示例中,上述步骤S102包括:第一SDIO控制器接收第一控制器发送的第一读取命令,当第一SDIO控制器接收到第一读取命令时,判定第一SDIO控制器可以接收第一控制器发送的第一数据读取命令;当第一SDIO控制器接收第一控制器发送的第一数据读取命令时,从缓冲单元读取第二SDIO控制器写入的数据,读取的数据与第一数据读取命令对应,第一SDIO控制器对读取的数据进行校验,将检验完成的数据返回给第一控制器。
在一些示例中,上述步骤S103之前还包括:第二SDIO控制器接收第二控制器发送的初始化指令,根据初始化指令对第二SDIO控制器进行初始化,从而与第二控制器建立连接。在一些示例中,上述步骤S103包括:第二SDIO控制器接收第二控制器发送的第二写命令,当第二SDIO控制器接收到第二写命令时,判定第二SDIO控制器可以接收第二控制器发送的第二数据;当第二SDIO控制器接收第二控制器发送的第二数据时,第二SDIO控制器对第二数据进行校验,将校验完成的第二数据写入缓冲单元。
在一些示例中,上述步骤S104包括:第二SDIO控制器接收第二控制器发送的第二读取命令,当接收到第二读取命令时,判定第二SDIO控制器可以接收第二控制器发送的第二数据读取命令;当第二SDIO控制器接收到第二控制器发送的第二数据读取命令时,第二SDIO控制器从缓冲单元读取第一SDIO控制器写入的数据,读取的数据与第二数据读取命令对应,第二SDIO控制器对读取的数据进行校验,将检验完成的数据返回给第二控制器。
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、计算机程序模块或其他数据)的任何方法或技术中实施的易失性或非易失性、可移除或不可移除的介质。计算机可读存储介质包括但不限于RAM(Random Access Memory,随机存取存储器),ROM(Read-Only Memory,只读存储器),EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器)、闪存或其他存储器技术、CD-ROM(Compact Disc Read-Only Memory,光盘只读存储器),数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。
本实施例中的计算机可读存储介质可用于存储一个或者多个计算机程序,其存储的一个或者多个计算机程序可被处理器执行,以实现上述实施例三中的基于FPGA的控制器桥接方法的至少一个步骤。
可见,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的计算机程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。
此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、计算机程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种基于FPGA的安全数字输入输出SDIO接口系统,其特征在于,所述基于FPGA的SDIO接口系统包括:设置于FPGA上的第一SDIO控制器、第二SDIO控制器和缓冲单元;
所述缓冲单元包括第一缓冲buffer和第二缓冲buffer,所述第一缓冲buffer、第二缓冲buffer采用写入端控制器的时钟作为其写入时钟、采用读取端控制器的时钟作为其读取时钟;
所述第一SDIO控制器用于接收第一控制器发送的第一数据,将所述第一数据写入所述第一缓冲buffer,还用于接收所述第一控制器发送的第一数据读取命令,从所述第二缓冲buffer读取所述第二SDIO控制器写入的数据并返回给所述第一控制器;
所述第二SDIO控制器用于接收第二控制器发送的第二数据,并将所述第二数据写入所述第二缓冲buffer,接收所述第二控制器发送的第二数据读取命令,从所述第一缓冲buffer读取所述第一SDIO控制器写入的数据并返回给所述第二控制器。
2.如权利要求1所述的基于FPGA的SDIO接口系统,其特征在于,所述第一SDIO控制器包括:
第一收发模块,用于接收所述第一控制器发送的初始化指令,并传递给第一控制模块;
所述第一控制模块,用于根据所述初始化指令对所述第一SDIO控制器进行初始化,从而与所述第一控制器建立连接。
3.如权利要求2所述的基于FPGA的SDIO接口系统,其特征在于,所述第一收发模块,还用于接收所述第一控制器发送的第一配置命令,并传递给所述第一控制模块;
所述第一控制模块,用于根据所述第一配置指令对所述第一SDIO控制器进行相应配置。
4.如权利要求3所述的基于FPGA的SDIO接口系统,其特征在于,所述第一收发模块,还用于接收所述第一控制器发送的第一写命令,并将所述第一写命令传递给所述第一控制模块;
所述第一控制模块,还用于当接收到所述第一写命令时,改变所述第一收发模块的状态,使得所述第一收发模块可以接收所述第一控制器发送的所述第一数据;
所述第一收发模块,还用于接收所述第一控制器发送的所述第一数据,并对所述第一数据进行校验,将校验通过的所述第一数据传递给所述第一控制模块;
所述第一控制模块,还用于控制所述第一收发模块将校验通过的所述第一数据写入所述第一缓冲buffer。
5.如权利要求3所述的基于FPGA的SDIO接口系统,其特征在于,
所述第一收发模块,还用于接收所述第一控制器发送的第一读取命令,将所述第一读取命令传递给所述第一控制模块;
所述第一控制模块,还用于当接收到所述第一读取命令时,改变所述第一收发模块的状态,使得所述第一收发模块可以接收所述第一控制器发送的所述第一数据读取命令;
所述第一收发模块,还用于接收所述第一控制器发送的所述第一数据读取命令,将所述第一数据读取命令传递给所述第一控制模块;
所述第一控制模块,还用于控制所述第一收发模块从所述第二缓冲buffer读取所述第二SDIO控制器写入的数据,读取的数据与所述第一数据读取命令对应,并控制所述第一收发模块对所述读取的数据进行校验、校验通过后将所述读取的数据返回给所述第一控制器。
6.如权利要求1所述的基于FPGA的SDIO接口系统,其特征在于,所述第二SDIO控制器包括:
第二收发模块,用于接收所述第二控制器发送的初始化指令,并传递给第二控制模块;
所述第二控制模块,用于根据所述初始化指令对所述第二SDIO控制器进行初始化,从而与所述第二控制器建立连接。
7.如权利要求6所述的基于FPGA的SDIO接口系统,其特征在于,所述第二收发模块,还用于接收所述第二控制器发送的第二配置命令,并传递给所述第二控制模块;
所述第二控制模块,用于根据所述第二配置指令对所述第二SDIO控制器进行相应配置。
8.如权利要求7所述的基于FPGA的SDIO接口系统,其特征在于,所述第二收发模块,还用于接收所述第二控制器发送的第二写命令,并将所述第二写命令传递给所述第二控制模块;
所述第二控制模块,还用于当接收到所述第二写命令时,改变所述第二收发模块的状态,使得所述第二收发模块可以接收所述第二控制器发送的所述第二数据;
所述第二收发模块,还用于接收所述第二控制器发送的所述第二数据,并对所述第二数据进行校验,将校验通过的所述第二数据传递给所述第二控制模块;
所述第二控制模块,还用于控制所述第二收发模块将校验完成的所述第二数据写入所述第二缓冲buffer。
9.如权利要求8所述的基于FPGA的SDIO接口系统,其特征在于,所述第二收发模块,还用于接收所述第二控制器发送的第二读取命令,将所述第二读取命令传递给所述第二控制模块;
所述第二控制模块,还用于当接收到所述第二读取命令时,改变所述第二收发模块的状态,使得所述第二收发模块可以接收所述第二控制器发送的所述第二数据读取命令;
所述第二收发模块,还用于接收所述第二控制器发送的所述第二数据读取命令,将所述第二数据读取命令传递给所述第二控制模块;
所述第二控制模块,还用于控制所述第二收发模块从所述第一缓冲buffer读取所述第一SDIO控制器写入的数据,读取的数据与所述第二数据读取命令对应,并控制所述第二收发模块对读取的数据进行校验,在校验通过后将所述读取的数据返回给所述第一控制器。
10.一种基于FPGA的控制器桥接方法,其特征在于,包括:在FPGA上设置第一SDIO控制器、第二SDIO控制器、第一缓冲buffer和第二缓冲buffer;所述第一缓冲buffer、第二缓冲buffer采用写入端控制器的时钟作为其写入时钟、采用读取端控制器的时钟作为其读取时钟;
所述第一SDIO控制器接收第一控制器发送的第一数据,并将所述第一数据写入在FPGA内部的第一缓冲buffer;所述第一SDIO控制器接收第一控制器发送的第一数据读取命令,从第二缓冲buffer读取所述第二SDIO控制器写入的数据并返回给所述第一控制器;
第二SDIO控制器接收第二控制器发送的第二数据,并将所述第二数据写入所述第二缓冲buffer;所述第二SDIO控制器接收第二控制器发送的第二数据读取命令,从所述第一缓冲buffer读取所述第一SDIO控制器写入的数据并返回给所述第二控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911361203.2A CN111198837B (zh) | 2019-12-25 | 2019-12-25 | 基于fpga的sdio接口系统、控制器桥接方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911361203.2A CN111198837B (zh) | 2019-12-25 | 2019-12-25 | 基于fpga的sdio接口系统、控制器桥接方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111198837A CN111198837A (zh) | 2020-05-26 |
CN111198837B true CN111198837B (zh) | 2022-07-26 |
Family
ID=70746629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911361203.2A Active CN111198837B (zh) | 2019-12-25 | 2019-12-25 | 基于fpga的sdio接口系统、控制器桥接方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111198837B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112636931B (zh) * | 2020-12-29 | 2022-07-12 | 广东高云半导体科技股份有限公司 | 一种以太网接口电路 |
CN115941633A (zh) * | 2022-11-30 | 2023-04-07 | 南京科远智慧科技集团股份有限公司 | 一种控制系统的通信方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7970976B2 (en) * | 2009-03-01 | 2011-06-28 | Qualcomm Incorporated | Remote memory access using reversible host/client interface |
CN103761129A (zh) * | 2014-01-13 | 2014-04-30 | 中南大学 | 一种在Bootloader层实现SDIO接口驱动的方法 |
CN104811230A (zh) * | 2015-03-26 | 2015-07-29 | 王灏 | 多射频无线组网设备 |
US10467175B1 (en) * | 2018-11-29 | 2019-11-05 | Qualcomm Incorporated | Secure digital (SD) direct command for improving throughput with a reduced memory footprint |
CN110457744A (zh) * | 2019-06-27 | 2019-11-15 | 山东方寸微电子科技有限公司 | 一种sd/sdio设备仿真模型框架及其设计方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1811395A4 (en) * | 2004-09-28 | 2008-01-02 | Zentek Technology Japan Inc | HOST CONTROLLER |
US9483429B2 (en) * | 2008-07-14 | 2016-11-01 | Texas Instruments Incorporated | Unified input/output controller for integrated wireless devices |
CN102111329A (zh) * | 2010-12-24 | 2011-06-29 | 合肥昊特信息科技有限公司 | 基于嵌入式高速收发器的校准逻辑系统 |
CN104570846B (zh) * | 2014-12-04 | 2017-10-24 | 中国航空工业集团公司第六三一研究所 | Fpga重配置控制方法 |
-
2019
- 2019-12-25 CN CN201911361203.2A patent/CN111198837B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7970976B2 (en) * | 2009-03-01 | 2011-06-28 | Qualcomm Incorporated | Remote memory access using reversible host/client interface |
CN103761129A (zh) * | 2014-01-13 | 2014-04-30 | 中南大学 | 一种在Bootloader层实现SDIO接口驱动的方法 |
CN104811230A (zh) * | 2015-03-26 | 2015-07-29 | 王灏 | 多射频无线组网设备 |
US10467175B1 (en) * | 2018-11-29 | 2019-11-05 | Qualcomm Incorporated | Secure digital (SD) direct command for improving throughput with a reduced memory footprint |
CN110457744A (zh) * | 2019-06-27 | 2019-11-15 | 山东方寸微电子科技有限公司 | 一种sd/sdio设备仿真模型框架及其设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111198837A (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7506087B2 (en) | Method for configuring a Peripheral Component Interconnect Express (PCIE) | |
CN108268414B (zh) | 基于spi模式的sd卡驱动器及其控制方法 | |
CN103180816B (zh) | Usb至sata的高速桥接器 | |
CN106775434A (zh) | 一种NVMe网络化存储的实现方法、终端、服务器及系统 | |
CN111198837B (zh) | 基于fpga的sdio接口系统、控制器桥接方法 | |
WO2022022537A1 (zh) | 处理器、信号调整方法及计算机系统 | |
CN107451025B (zh) | 控制存储芯片的测试方法及系统 | |
WO2022213865A1 (zh) | 计算机设备、虚拟化加速设备、数据传输方法及存储介质 | |
KR100845525B1 (ko) | 메모리 카드 시스템, 그것의 데이터 전송 방법, 그리고반도체 메모리 장치 | |
US20190155765A1 (en) | Operation method of host system including storage device and operation method of storage device controller | |
CN111756858B (zh) | 嵌入式设备的远程开发处理系统、方法及装置 | |
CN109992556A (zh) | 一种i2c驱动方法和装置 | |
KR101029074B1 (ko) | 호스트 컨트롤러에서의 디스크립터 추적 장치 및 그 추적방법 | |
TWM606415U (zh) | 記憶體儲存裝置的讀寫控制系統 | |
TWM592995U (zh) | 記憶卡的讀寫控制系統 | |
CN114513436B (zh) | Sdio设备传输速率的检测方法、系统及存储介质 | |
CN116089124A (zh) | 一种仿真系统通信方法、装置、介质 | |
KR101260313B1 (ko) | 전자장치 및 그 데이터 송수신방법과, 슬레이브 장치 및복수의 장치 간의 통신방법 | |
CN111371799B (zh) | Mctp控制器收发数据的控制方法、装置及设备 | |
CN208077160U (zh) | 基于spi模式的sd卡驱动器 | |
CN111190646A (zh) | 基于FPGA的eMMC初始化、控制方法、装置及终端 | |
CN113626087A (zh) | 一种主机与bmc间的数据通信的方法、系统及装置 | |
CN101354634A (zh) | Ata端口接多路sata端口存储设备系统及控制方法 | |
KR102167621B1 (ko) | 시리얼 인터페이스를 이용한 데이터 전송장치 | |
CN109753461A (zh) | 一种dma设备及数据传输的方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |