微架构设计思路

  • 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 - 回复长命令信号,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控制器微架构设计的更多相关文章

  1. 手机服务器微架构设计与实现 之 http server

    手机服务器微架构设计与实现 之 http server ·应用 ·传输协议和应用层协议概念 TCP  UDP  TCP和UDP选择 三次握手(客户端与服务器端建立连接)/四次挥手(断开连接)过程图 · ...

  2. 【CPU微架构设计】分布式多端口(4写2读)寄存器堆设计

    寄存器堆(Register File)是微处理的关键部件之一.寄存器堆往往具有多个读写端口,其中写端口往往与多个处理单元相对应.传统的方法是使用集中式寄存器堆,即一个集中式寄存器堆匹配N个处理单元.随 ...

  3. 【CPU微架构设计】利用Verilog设计基于饱和计数器和BTB的分支预测器

    在基于流水线(pipeline)的微处理器中,分支预测单元(Branch Predictor Unit)是一个重要的功能部件,它负责收集和分析分支/跳转指令的执行结果,当处理后续分支/跳转指令时,BP ...

  4. Atitit.架构设计趋势 设计模式 ---微服务架构  soa

    Atitit.架构设计趋势 设计模式 ---微服务架构  soa 什么是微服务架构?1 .微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现1 微服务与康威定律2 微服务的一些 ...

  5. 互联网保险O2O平台微服务架构设计(转)

    非常感谢http://www.cnblogs.com/skyblog/p/5044486.html 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里.这也是微服务能够流行的原因 ...

  6. (转)互联网保险O2O平台微服务架构设计

        关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里.这也是微服务能够流行的原因,看看市场上曾经出现的服务架构:EJB.SCA.Dubbo等等,都比微服务先进,都比微服务功 ...

  7. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  8. (转)微服务架构 互联网保险O2O平台微服务架构设计

    http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...

  9. Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战

    Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战 说明: Java生鲜系统中微服务的拆分应该如何架构设计与分析呢?以下是我的实战中的设计与经验分析. 目录 1. 微服务简介2. 当前现状3. ...

  10. Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

    Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台-  什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定 ...

随机推荐

  1. 在arm架构的银河麒麟系统部署Nginx

    以下是在arm架构的银河麒麟系统上部署Nginx的详细步骤: 1. 创建文件夹 首先,在合适的位置创建必要的文件夹.在本例中,我们将创建/opt/nginx和/usr/src/nginx两个文件夹. ...

  2. CAP 8.0 版本发布通告 - CAP 7岁生日快乐!

    前言 今天,我们很高兴宣布 CAP 发布 8.0 版本正式版,从 2016 年 12 月 14 日CAP立项到 2023 年 12 月14 日发布 8.0 版本刚好满 7 年,祝 CAP 7 岁生日快 ...

  3. Spring Boot 2.x 到 3.2 的全面升级指南

    Spring Framework 是一种流行的开源企业级框架,用于创建在 Java Virtual Machine (JVM) 上运行的独立.生产级应用程序.而Spring Boot 是一个工具,可以 ...

  4. OpenFeign:Spring Cloud声明式服务调用组件

    OpenFeign:Spring Cloud声明式服务调用组件 问题总结 OpenFeign? Feign VS OpenFeign? OpenFeign实现远程服务调用? OpenFeign超时控制 ...

  5. 案例分享-Exception.getMessage突然为null

    背景 之前做的小工具一个jsqlparse+git做的小工具帮我节省时间摸鱼昨天突然停止工作,看了下jvm并没有退出,但是看日志确实有不少Error输出,虽说是一个普通的NPE,但是分析了一下却疑点重 ...

  6. 如何保证XML正确性

    如何保证XML正确性 XML是个盒子,什么都能装,但是装进去的东西正确与否恐怕无法得知.往往我们都人工审核.双人复核保证,但是次数多了难免会出错.那么我们如何保证和避免这种问题出现呢? 那就是XSD, ...

  7. 【云享·人物】华为云AI高级专家白小龙:AI如何释放应用生产力,向AI工程化前行?

    摘要:AI技术发展,正由应用落地阶段向效率化生产阶段演进,AI工程化能力将会不断深入业务,释放企业生产力. 本文分享自华为云社区<[云享·人物]华为云AI高级专家白小龙:AI如何释放应用生产力, ...

  8. VEGA:诺亚AutoML高性能开源算法集简介

    摘要:VEGA是华为诺亚方舟实验室自研的全流程AutoML算法集合,提供架构搜索.超参优化.数据增强.模型压缩等全流程机器学习自动化基础能力. 本文分享自华为云社区<VEGA:诺亚AutoML高 ...

  9. 论文解读:ACL2021 NER | 基于模板的BART命名实体识别

    摘要:本文是对ACL2021 NER 基于模板的BART命名实体识别这一论文工作进行初步解读. 本文分享自华为云社区<ACL2021 NER | 基于模板的BART命名实体识别>,作者: ...

  10. 开启一个 A/B 实验到底有多简单?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 火山引擎 A/B 测试平台 DataTester 孵化于字节跳动业务内部,在字节跳动,"万事皆 A/B, ...