SD Host控制器的系统集成

发布时间 2023-11-26 22:01:16作者: Icer_Newer

控制器集成需求

  • SD Host可以从外部读取数据存储到SRAM和eFlash或者可以从内部读取数据输出到外部存储

AHB Bus


  • slave接口用于配置
  • master接口作为主设备,DMA可以控制总线,传输数据

SD Bus

  • CMD和data都是inout类型的,可以出入和输出
  • cmd_oe - (output enable)
  • cmd_oe = 1,输入的信号就是rsp_in,命令反馈输入接口
  • cmd_oe = 0,输入的就是cmd_out,cmd_out = 1 输出数据,cmd_out = 0,输出z
  • 将一个cmd分为三部分,再将这三部分驱动到pad上,芯片内部不实现三态逻辑
  • data总线也是同样的道理,分成data_oe,data_out,data_in

DFT & Interrupt

  • 在进行设计模块的时候,可以预估面积,可以考虑将面积比较大的模块和其他比较类似的模块进行复用

控制器集成需求

SD Host集成需求文档


SD Host微架构设计文档

SD_if模块

ahb总线接口模块,用于软件的访问控制
接口在微架构设计文档阶段确定的
1、先定义明确的接口
2、按照需求方的角度收集信息


  • reponse0-response3 -- 是读取回来的数据,ahb总线是32bit,就按照ahb总线的宽度来

  • reponse中的start bit,index,crc是不需要回传的,只要将content回传就可以

  • sd_clk输入,ahb_slave_if(sd_if)模块,既需要和ahb bus通信又需要和sd bus进行交互,所以需要进行数据的同步处理(通过打拍的方式),所以需要输入sd_clk

  • sd_fifo_full 和 sd_fifo_empty - fifo的空满状体需要上传给cpu,fifo为空的时候才能发起读命令,fifo满之后需要cpu驱动dma将fifo中的数据搬移,fifo的空满状态需要以中断的形式上报,所以需要输入fifo的空满状态

  • 了解cpu需要获取那些状态信号

  • sd_fifo_re - fifo读请求

  • in_end_command - host发送完成,信号来自于sd时钟域,如果要使用这个信号需要对其进行打拍处理

  • in_end_cmd_and_resp - 表示当前命令和相应都结束了,resp结束之后,cpu会读取resp的寄存器,查看其中的内容

  • in_transfer_complete - 表示数据传输操作完成

  • sd_clk_enable - 软件时钟门控

  • hw_stop_clk - 硬件停止sd_clk模块时钟输出

  • dma_en - 软件的置位,是dma启动

  • clr_dma_en - 硬件的清0信号

sd_clk模块


sd_cmd_fsm





sd_cmd_send_shift_register模块


sd_cmd_receive_shift_register模块


sd_data_fsm

sd_data_send_shift_register模块

sd_data_receive_shift_register模块