SD Host控制器微架构设计
微架构设计思路

- ahb_slave_if中的寄存器可以在datasheet中进行描述
- sd_clk - 时钟产生模块的接口描述
- sd_data_fsm和sd_cmd_fsm - 状态机描述
- 发送时序需要遵守,并且在发送的时候需要产生CRC
- 接受时序需要遵守,并且要接收CRC,进行比较
- FiFo中有存储体存储数据,FiFo_ctrl模块进行fifo的控制
- DMA - AHB_master的设计
sd_clk设计
设计需求
- 具有分频电路,根据ahb_slave_if中寄存器的配置对hclk进行分频
- 硬件停止时钟
- 软件开关时钟
- 需要考虑在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 - 回复长命令信号,R2类型的resp
- in_cmmmand_ready - 软件置位,硬件清0,启动状态机
- has_send_bit - 表示当前发送了多少位(48bit,6bit)
- in_sd_dat - 这里给了3bit,实际上只要0bit就可以了
- 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

SD Host控制器微架构设计的更多相关文章
- 手机服务器微架构设计与实现 之 http server
手机服务器微架构设计与实现 之 http server ·应用 ·传输协议和应用层协议概念 TCP UDP TCP和UDP选择 三次握手(客户端与服务器端建立连接)/四次挥手(断开连接)过程图 · ...
- 【CPU微架构设计】分布式多端口(4写2读)寄存器堆设计
寄存器堆(Register File)是微处理的关键部件之一.寄存器堆往往具有多个读写端口,其中写端口往往与多个处理单元相对应.传统的方法是使用集中式寄存器堆,即一个集中式寄存器堆匹配N个处理单元.随 ...
- 【CPU微架构设计】利用Verilog设计基于饱和计数器和BTB的分支预测器
在基于流水线(pipeline)的微处理器中,分支预测单元(Branch Predictor Unit)是一个重要的功能部件,它负责收集和分析分支/跳转指令的执行结果,当处理后续分支/跳转指令时,BP ...
- Atitit.架构设计趋势 设计模式 ---微服务架构 soa
Atitit.架构设计趋势 设计模式 ---微服务架构 soa 什么是微服务架构?1 .微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现1 微服务与康威定律2 微服务的一些 ...
- 互联网保险O2O平台微服务架构设计(转)
非常感谢http://www.cnblogs.com/skyblog/p/5044486.html 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里.这也是微服务能够流行的原因 ...
- (转)互联网保险O2O平台微服务架构设计
关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里.这也是微服务能够流行的原因,看看市场上曾经出现的服务架构:EJB.SCA.Dubbo等等,都比微服务先进,都比微服务功 ...
- 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)
版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...
- (转)微服务架构 互联网保险O2O平台微服务架构设计
http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...
- Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战
Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战 说明: Java生鲜系统中微服务的拆分应该如何架构设计与分析呢?以下是我的实战中的设计与经验分析. 目录 1. 微服务简介2. 当前现状3. ...
- Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战
Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台- 什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...
随机推荐
- 华企盾DSC邮件白名单问题常见处理方法
1.先检查邮件白名单服务器配置测试连接的通(不通可能是协议未开或者账号密码错误) 2.检查邮件发送端口是否配置(常见的有25和s465.s587) 3.邮件是否到发件箱或者收件箱的垃圾邮件里面了 4. ...
- selenium之下拉菜单列表定位
下拉菜单列表定位>>使用Select类定位 from selenium.webdriver.support.ui import Select #导入Select类 select=Selec ...
- Windows Server 2012 R2在桌面上显示我的电脑等图标
从Windows 2012 开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令.方法如下: 按下「Win鍵」+「R」,在运行里输入: rundll32.exe shell3 ...
- STM32CubeMX教程7 TIM 通用定时器 - 输入捕获
1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) X ...
- 【scikit-learn基础】--『监督学习』之 贝叶斯分类
贝叶斯分类是一种统计学分类方法,基于贝叶斯定理,对给定的数据集进行分类.它的历史可以追溯到18世纪,当时英国统计学家托马斯·贝叶斯发展了贝叶斯定理,这个定理为统计决策提供了理论基础. 不过,贝叶斯分类 ...
- JavaFx之使用高版本JDK(二十八)
JavaFx之使用高版本JDK(二十八) 如何使用高版本的jfx? 根据官网的需要手动引入jfx模块(运行参数:–module-path) 要知道高版本jfx已经集成了丰富的主流功能,例如视频编码,大 ...
- 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 03.EQS初体验:从智障到智慧
斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本文章对应课程第十一章 43节.这篇文章会简单介绍EQS和实际上手使用,为AI添加更丰富的行为逻辑. 目录 初识 ...
- 从部署和运维说说DLI(1)
DLI是支持多模引擎的Serverless大数据计算服务,其很好的实现了Serverless的特性: 1. 弱化了存储和计算之间的联系: 2. 代码的执行不再需要手动分配资源: 3. 按使用量计费 ...
- 云小课|RDS for MySQL参数模板一键导入导出,参数配置轻松搞定
摘要:云数据库RDS for MySQL支持参数模板的导入和导出功能. 本文分享自华为云社区<[云小课][第56课]RDS for MySQL参数模板一键导入导出,参数配置轻松搞定>,作者 ...
- vue2升级vue3:getCurrentInstance—Composition api/hooks中如何获取$el
在vue2中,我们进程看到 this.$el 操作.但是在vue3 如何获取组件的当前 dom 元素呢? 可以利用 getCurrentInstance getCurrentInstance Vue ...