发明内容
本发明的目的是克服现有技术中的不足,提供一种SD卡从控制器及控制方法。
本发明的目的是通过以下技术方案实现的:这种SD卡从控制器,包括ahb总线接口、同步模块、命令物理层、数据物理层、buffer接口、sd桥接功能模块、引脚选择模块、外接的sd卡和sd主设备;其中
ahb总线接口用于与cpu连接,控制整个流程的执行;
同步模块,用于同步cpu和控制器之间的信号;
命令物理层是处理命令接收和响应发送的物理层;命令接收时对sd总线上的命令进行解码,得到命令序号,和参数,并进行crc校验;响应发送时,硬件根据当前接收的命令和卡状态自动填充命令缓冲和发送;
数据物理层是处理数据接收和发送的物理层;写数据时,本模块从sd数据总线上接收数据,进行crc校验,并通过buffer接口模块写到数据缓冲区内;读数据时,cpu把数据写到数据缓冲,本模块控制buffer接口模块读取数据缓冲区内数据,并把它发送到sd数据总线上去;
buffer接口是缓冲器接口,控制buffer的读写操作;
sd桥接功能模块,在外部挂卡模式下工作,在涉及卡操作时,就控制引脚选择模块打开到卡那边的通道;
引脚选择模块,由cpu和控制器共同控制数据和命令的输出沿,是上沿输出还是下沿输出;cpu控制芯片与卡,芯片与sd主设备之间的通路的开关。
本发明所述的控制方法,该方法的步骤如下:cpu先使能控制器开始工作,通过配置ahb总线接口设置好参数,通过同步模块同步之后,cpu的控制信号传递给命令物理层,当命令初始化完成后,控制器置于卡为传输状态,如果下一个接收的命令是读命令,这时候数据物理层准备进行数据读操作,通过buffer接口对buffer的读;如果下一个是写命令,cpu会准备数据到buffer中,buffer接口负责对buffer写操作;桥接模式分为卡模式和控制模式;在卡模式下,读操作时,数据完全通过控制器,控制器的数据状态机不跳转,sd桥接功能模块控制引脚选择模块打开sd主设备到sd卡的通道;写操作时,crc校验,控制器参与计算,这时关闭连sd卡的通道;在控制模式下,当读写地址在设置的下限地址和上限地址之间,数据和命令交互只限于控制器和sd主设备之间。
本发明的有益效果是:用于SOC芯片里控制器和sd主设备,sd主设备通过此控制器和外部挂接的卡之间的交互;既可以做卡,又可以做卡套连接sd主设备和sd卡。
具体实施方式
下面结合附图和实施例对本发明做进一步描述。虽然本发明将结合较佳实施例进行描述,但应知道,并不表示本发明限制在所述实施例中。相反,本发明将涵盖可包含在有附后权利要求书限定的本发明的范围内的替换物、改进型和等同物。
系统结构如图1所示,本发明所述系统由ahb总线接口1、同步模块2、命令物理层3、数据物理层4、buffer接口5、sd桥接功能模块6、引脚选择模块7、外接的sd卡8和sd主设备9组成;控制器有两种模式,外部挂卡模式和控制器模式,既可以使SOC作为sd卡和sd host交互命令和数据,也可以作为一个桥,外部挂接SD卡,使其与sd host交互命令和数据。非桥接模式下,读写数据时的信号交互和本专利描述的一致。桥接模式下,用地址区分两种情况(卡模式和控制模式)。其中:
1.ahb总线接口1为该系统的控制中心,控制整个流程的执行。cpu先使能控制器开始工作,通过配置ahb总线接口1设置好参数,通过同步模块(syn mod模块)2同步之后,cpu的控制信号传递给命令物理层(cmd phy)3,当命令初始化完成后,控制器置于卡为传输状态,如果下一个接收的命令是读命令,这时候data phy准备进行数据读操作,通过buffer接口(Buff_interface)5对buffer的读。如果下一个是写命令,cpu会准备数据到buffer中,buffer接口(Buff_interface)5负责对buffer写操作。
2.同步模块(Syn_mod)2是一个跨时钟域的同步模块,同步CPU和控制器之间的信号;
3.命令物理层(cmd phy)3是处理命令接收和响应发送的物理层;命令接收时对sd总线上的命令进行解码,得到命令序号,和参数,并进行crc校验;响应发送时,硬件根据当前接收的命令和卡状态自动填充命令缓冲和发送。
4.数据物理层(data phy)4是处理数据接收和发送的物理层;写数据时,本模块从sd数据总线上接收数据,进行crc校验,并通过buffer接口(Buff_interface)5模块写到数据缓冲区内;读数据时,cpu把数据写到数据缓冲,本模块控制buffer接口(Buff_interface)5模块读取数据缓冲区内数据,并把它发送到sd数据总线上去;
5.buffer接口(Buff_interface)5缓冲器接口,控制buffer的读写操作;
6.sd桥接功能模块(Sd_host_fun)6,sd桥接功能模块,主要在外部挂卡模式下工作,在涉及卡操作时,就控制引脚选择模块(pad mux)7打开到卡那边的通道;
7.引脚选择模块(pad mux)7引脚选择模块;由cpu和控制器共同控制数据和命令的输出沿,是上沿输出还是下沿输出;cpu还可控制芯片与卡,芯片与sd主设备之间的通路的开关;
8.sd卡8,外部挂接的sd卡;
9.sd主设备9;
本控制器初始化时,需要事先设置CSR,CID,OCR,VOLT_ACCP,CSD,RCA寄存器,地址上下限寄存器,初始完成后,卡初始化状态,响应都是硬件自动回,不用软件干预。
下面以两种模式下的读写为例介绍控制器的工作过程。
非桥接模式下:
非桥接模式下,卡初始化完成后,控制器进入传输模式。控制器根据接收到的命令进入读或写模式。下面分别介绍读写操作。
读操作流程如图2所示,当读命令过来时,命令物理层(cmd phy)3对其进行解码,得到命令序号并存入CMD_NUM寄存器,和命令参数存入CMD_ARG寄存器,并根据当前接收的命令和卡状态自动填充命令缓冲器,反馈响应,控制器发出读中断ReadOpInt给cpu,cpu响应读中断,先读CMD_NUM知道是读命令,再读CMD_ARG寄存器得到读操作的地址,同时cpu会把数据写到数据buffer中,然后置DataOpEn,经同步模块(syn_mod)2同步后使能数据物理层(data phy)4,数据物理层(data phy)4控制buffer接口(Buff_interface)5读取数据buffer中的数据并发送给sd主设备,发送完成后产生DataRdOver中断,cpu响应中断,读操作完成。
写操作流程如图3所示,当写命令发送过来时,命令物理层(cmd phy)3对其进行解码,得到命令序号并存入CMD_NUM寄存器,和命令参数存入CMD_ARG寄存器,并根据当前接收的命令和卡状态自动填充命令缓冲器,反馈响应;数据物理层(data phy)4控制buffer接口(Buff_interface)5把接收来的数据写到数据buffer中去,写完后产生DataWrOver写完成中断,再通过同步模块(syn_mod)2同步后,经过ahb interface1传递给cpu响应此中断,读CMD_ARG寄存器得到写操作的地址,cpu从数据buffer中读出数据,并查询crc check的结果,判断数据的有效性,写操作完成后置busyClr位,清除busy位。
桥接模式下:
Sd命令总线经过芯片选择,主机命令,卡的响应全部转发。数据总线根据读写地址所在区间分别做处理。桥接模式下,分为两种情况:被称为卡模式和控制模式;
1、当读写地址在下限地址寄存器设置的地址之下(卡模式)
读操作时,数据完全通过控制器,控制器的数据状态机不跳转,sd桥接功能模块(Sd_host_fun)6控制引脚选择模块(pad mux)7打开sd主设备到sd卡的通道;写操作时,crc校验,控制器参与计算,crc token由控制器反馈,这时关闭连sd卡的通道。
2、当读写地址在设置的下限地址和上限地址之间(控制模式)
此种情况下和非桥接模式一样,数据和命令交互只限于控制器和sd主设备之间。
术语解释:
SD卡:(Secure Digital Memory Card)安全数字存取卡;
SDSI:SD卡从控制器;
AHB(ahb):Advanced High-performance Bus;ARM核使用的一种高速总线接口。