首页 > 其他分享 >SD Host控制器微架构设计

SD Host控制器微架构设计

时间:2023-11-26 18:44:55浏览次数:36  
标签:架构设计 clk cmd fifo Host SD 时钟 data sd

微架构设计思路

  • ahb_slave_if中的寄存器可以在datasheet中进行描述
  • sd_clk - 时钟产生模块的接口描述
  • sd_data_fsm和sd_cmd_fsm - 状态机描述
  • 发送时序需要遵守,并且在发送的时候需要产生CRC
  • 接受时序需要遵守,并且要接收CRC,进行比较
  • FiFo中有存储体存储数据,FiFo_ctrl模块进行fifo的控制
  • DMA - AHB_master的设计

sd_clk设计

  1. 具有分频电路,根据ahb_slave_if中寄存器的配置对hclk进行分频
  2. 硬件停止时钟
  3. 软件开关时钟
  4. 需要考虑在DFT模式下,时钟如何?
  • 时钟分频,使用计数器进行时钟周期,实现分频;如果分频配置为0,表示使用原始时钟hclk进行输入
  • 软硬件开关时钟,就是在使能信号的条件下,选择时钟的输入
  • test mode下同样是在test_en的条件下,选择hclk,保证扫描链的时钟频率是一样的

sd_if模块功能

  • ahb总线信号处理,进行地址和数据对齐
  • 其中有一些寄存器,对寄存器及其中的地址域段进行读写操作
  • 有两个时钟域,ahb时钟域和sd时钟域,进行时钟域的同步

sd_clk模块

  • 允许软硬件干预时钟
  • in_clk_divider - 分频大小
  • in_sd_clk_enable - 软件使能clk
  • hw_stop_clk - 硬件使能(硬件在读的时候,进行数据搬移的时候,可以关闭时钟)
  • out_sd_clk_dft - 输出clk

sd_clk模块:时钟输出描述

  • 分频大小通过寄存器配置,如果分频寄存器为0,就输出原时钟
  • sd_io - 是更通用的协议,可以连接Wifi设备或者GPS设备

sd_cmd_fsm

  • 硬件检测sd card是否是busy
  • 将一条命令(比如48bit)作为一个状态
  • idle状态通过cpu trigger信号进入到wait send状态,此时通过硬件检查sd card是否处于busy状态,就是data总线的data[0]是否为1,转到wait resp状态,当cmd=0的时候,转到receive resp状态

sd_cmd_fsm模块:状态机控制图

  • in_command_ready = 1表示cpu让硬件去发送cmd
  • in_sd_dat[0] - 拉高之后,进位send状态
  • wait response时间超过预设的值Ncr,给出timeout信号,进入state stop状态
  • in_soft_reset - 软件复位,高电平有效
  • in_response - 表示当前命令有没有resp
  • in_longresponse - 回复长命令信号
  • in_cmmmand_ready - 软件置位,硬件清0
  • has_send_bit - 表示当前发送了多少位(48bit,6bit)
  • has_receive_bit - 表示当前已经接收的多少位(136bit,8bit)
  • end_command - 命令结束信号
  • end_command_and_response - 命令结束并且完成回复接收
  • response_timeout - 响应超时信号

sd_cmd_send_shift_register模块

  • in_current_state - 处于特特定的状态才能发送数据
  • has_send_bit - 用于判断当前的命令发送的是crc还是argument
  • out_cmd_dir - 控制输出的方向,输入还是输出
  • out_sd_cmd - 并行数据转换为串行数据,利用移位寄存器,每次输出最高位然后左移一位,
  • 0-25MHz - 数据是在下降沿进行驱动的
  • 50Hz - 数据驱动沿是上升沿

sd_cmd_recieve_shift_register模块

  • in_serial_cmd - 接收sd card发送的cmd
  • in_longrespone - 接收136bit resp

sd_data_fsm 模块

读操作

  • data传输包含读写
  • 经过一个Nac之后,进行读数据,start bit为0表示数据开始
  • 设置一些状态判断当前正在接收什么数据
  • content和crc可以合并在一起不太好?receive data的时间于block length和data总线的位宽相关,所以和crc合在一起不好计算时间

写操作

  • 写操作,先发送数据,再接受sd card的resp信息
  • 中间会产生总线的移交



  • 硬件停止时钟?假设fifo只能存储一个block数据,读取完之后,将数据存储到fifo中,fifo满了之后,需要DMA将fifo中的数据搬移掉之后,才能进行下一次的读操作;在DMA搬移fifo中数据的过程中,停止sd card的时钟

  • 读数据的返回都是需要时钟进行驱动的

  • 读操作过程:首先CPU配置寄存器,然后host发送读操作命令,然后启动multi block read的状态机

  • 首先等待fifo empty,然后使能sd_clk,读取数据,当fifo满了之后,产生中断,CPU收到中断之后,通过DMA,将fifo中的数据搬移

  • one_bk_re_end的作用:进行低功耗设计,防止出现前一个block中的数据还没读取完的时候,写入下一个block的数据,防止数据丢失

sd_data_fsm模块:控制状态机

  • in_data_ready - 软件置位,硬件清0


sd_data_send_shift_register模块信号

  • 发送数据的时候,需要接受sd card返回的crc的值,crc只会在data[0]中进行返回,data[0:3]只有在写的时候才会使用

sd_data_receive_shift_register

标签:架构设计,clk,cmd,fifo,Host,SD,时钟,data,sd
From: https://www.cnblogs.com/Icer-newer/p/17847929.html

相关文章

  • DSDN笔记
    title:Dual-StreamDiffusionNetforText-to-VideoGeneration笔记banner_img:https://cdn.studyinglover.com/pic/2023/08/b6f940f512488c10b7a1bf40eb242cae.pngindex_img:https://cdn.studyinglover.com/pic/2023/08/3021b6624ee4f2093c6166b6a80cd643.pngdate:2023......
  • Windows App SDK? C++/WinRT? 狗都不学!
    空荡荡的官网开发文档,打开直接心凉一截!只写个HelloWorld教程就敢宣布自己为“跨时代”新产品?什么“C++桌面开发者的狂欢”?什么ProjectReunion?笑死!直接让所有C++WinAPI爱好者变成真正的......
  • C/C++ 通过SQLiteSDK增删改查
    SQLite,作为一款嵌入式关系型数据库管理系统,一直以其轻量级、零配置以及跨平台等特性而备受青睐。不同于传统的数据库系统,SQLite是一个库,直接与应用程序一同编译和链接,无需单独的数据库服务器进程,实现了数据库的零配置管理。这种设计理念使得SQLite成为许多嵌入式系统、移动应用和......
  • 龙芯发布 .NET 8 SDK 8.0.100-ea1(试用版)
    随着.NET8的发布,国内的社区朋友们也很关心龙芯.NET团队对于Loongarch.NET8的发布时间,目前从龙芯.NET编译器团队已经在龙芯.NET官网上发布龙芯.NET8SDK-8.0.100-ea1版本发布(试用版),从龙芯2019年启动.NET的研发工作,2022年完成了LoongArch64架构代码合并到.NET社区主干分......
  • (Python)基于对称点模式(Symmetrized Dot Pattern,SDP)的多元、多通道、多传感器信号融合
    对称点模式(SymmetrizedDotPattern,SDP)算法可将复杂时间序列以散点的形式清晰映射在极坐标图中,可以使原始时域信号通过图形化的方式提高可视化能力。因为极坐标图像的特殊性,多元、多通道、多传感器信号信息可通过SDP方法融合在有限区域中。适用于多元、多通道、多传感器信号的融合......
  • Proxmox VE 8.1 发布,带来 SDN 和 Secure Boot - 开源虚拟化管理平台
    ProxmoxVE8.1发布,带来SDN和SecureBoot-开源虚拟化管理平台请访问原文链接:https://sysin.org/blog/proxmox-ve-8/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org奥地利维也纳–2023年11月23日–企业软件开发商ProxmoxServerSolutionsGmbH(以下......
  • Tomcat报错Pailed to start component [StandardEngine[CatalinalStandardHost[localh
    话不多说直接上图就完了就下边这个错困扰了我一两个小时,到现在说实话我也没找到到底是什么原因,就是之前的一个版本war包还可以在tomcat上边运行但是最近更新的war包就不行就会报一个这个错,我看到网上有人说是tomcat的问题,我看其他war包都能正常使用我就没想到会是这个问题但最终的......
  • csdn 快速制作动态gif 插图
    文章目录1、简介2、下载工具LICEcap3、步骤1)安装下载软件2)双击打开3)点击record按钮录制4)结束录制1、简介制作csdn动态插图2、下载工具LICEcap官方下载网址:https://pc.qq.com/detail/0/detail_22760.html3、步骤1)安装下载软件2)双击打开出现如图所示透明窗口,可以拖动改变大小......
  • 如何做好架构设计,架构设计有章可循吗?
     设计一个系统的过程,就是建造一座大厦的过程,架构设计的质量直接决定了大厦的质量。在我们进行系统的架构设计时,总是会遇到一系列的问题,比如一个大型系统的架构应该如何起步,从哪里开始设计?系统是否应该划分成多个模块,应该怎么划分模块才更加的合理?亦或是觉得产品提出的需求非......
  • linphone Sdk 无法听到声音
    2023-10-2500:02:42,155.App.OnLog(belle-sip)udp_listening_point:recvfrom()failedon[sip:0.0.0.0:63579;transport=UDP],:[操作成功完成。]reopeningserversocket2023-10-2500:02:42,218.App.OnLog(belle-sip)udp_listening_point:recvfrom()failedon[sip:0......