摘要
随着SoC芯片复杂度的提高,IP核复用(Intellectual Property Core Reuse)技术开始成为当今SoC设计中的一个热点,它可以使设计者专注于 整个系统的设计,充分利用已有资源,提高设计速度,降低芯片开发成本。
为了满足SoC芯片对SD卡(Secure Digital Card)高速存取数据的要求,设计了基于高 速AHB(Advanced High Performance Bus)总线并支持DMA(Direct Memory Access)传输的SD控制器,借助于AHB的标准接口和丰富灵活的配置可以方便地将该IP集成于SoC芯片中。
SD Host 控制器设计
架构设计
SD Host 控制器功能特性
此控制器完成符合SD接口协议的命令和数据操作。其功能和特性如下所示:
- 控制器AHB总线接口数据处理符合AMBA 2.0 协议
- SD 2.0 协议
- 具备多个控制配置寄存器,可以实现对命令和数据的控制
- Built-in DMA,支持AHB总线字(word)single&inc模式传输;
- 支持对卡的单块、多块读写;
- 内含相应寄存器和分频电路,实现SD总线的时钟控制;
- 允许读操作时,硬件停时钟功能.
软硬件协同工作的实现
软件:
- 底层驱动:主要对控制器的配置,实现时序的配置,命令和数据的输入,从实现上述所要实现的功能。
硬件:
- AHB总线接口;
- SD总线接口;
- 命令和数据处理模块;
软件访问SD card时会选择相应的驱动程序进行具体的操作,底层驱动初始化SD卡,根据功能需要配置控制寄存器实现对SD卡的读写访问;
硬件给出不同操作模式下的状态信号和中断信号,供CPU查询。软件根据查询到的有效状态位,进行不同的工作(重新配置命令,数据搬移等)。硬件工作的启动需要软件配置寄存器的使能,工作过程需要和软件交互,同时软件可以强制结束硬件的工作。
系统框图和模块简述
设计包括以下模块:
• sd_if 模块:ahb_slave接口模块,内含控制寄存器,供CPU访问,决定HOST的工作模式;
• sd_clk模块:hclk分频电路,作为HOST模块时钟输入;
• sd_cmd_fsm模块:命令操作控制模块,控制 sd_cmd_send_shift_register(SD卡命令发送)和
sd_cmd_receice_shift_register(SD卡命令接收)模块;
• sd_data_fsm模块:数据操作控制模块,控制 sd_data_send_shift_register(SD卡数据发送)和sd_data_receice_shift_register(SD卡数据接收)模块;
• FIFO模块:数据缓存模块;
• DMA模块:数据搬移模块。
各模块详细描述和实现
• sd_if 模块: https://blog.csdn.net/zgezi/article/details/107024063.
• sd_clk 模块: https://blog.csdn.net/zgezi/article/details/107010823.
• sd_cmd 控制模块:https://blog.csdn.net/zgezi/article/details/107015443.
• sd_data 控制模块: https://blog.csdn.net/zgezi/article/details/107017640.
• FIFO模块: https://blog.csdn.net/zgezi/article/details/107296862.
• DMA模块: https://blog.csdn.net/zgezi/article/details/107022620.