惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
InfoQ
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
罗磊的独立博客
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
L
LINUX DO - 最新话题
T
Threatpost
Cisco Talos Blog
Cisco Talos Blog
The GitHub Blog
The GitHub Blog
V
V2EX
SecWiki News
SecWiki News
P
Privacy & Cybersecurity Law Blog
Forbes - Security
Forbes - Security
T
Troy Hunt's Blog
S
Security @ Cisco Blogs
Martin Fowler
Martin Fowler
Attack and Defense Labs
Attack and Defense Labs
A
Arctic Wolf
C
CXSECURITY Database RSS Feed - CXSecurity.com
The Register - Security
The Register - Security
Blog — PlanetScale
Blog — PlanetScale
The Last Watchdog
The Last Watchdog
T
Tor Project blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
P
Proofpoint News Feed
O
OpenAI News
Hacker News - Newest:
Hacker News - Newest: "LLM"
小众软件
小众软件
雷峰网
雷峰网
H
Heimdal Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
C
Cyber Attacks, Cyber Crime and Cyber Security
Webroot Blog
Webroot Blog
C
Check Point Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
T
Threat Research - Cisco Blogs
人人都是产品经理
人人都是产品经理
Hacker News: Ask HN
Hacker News: Ask HN
The Hacker News
The Hacker News
V
Vulnerabilities – Threatpost
Microsoft Security Blog
Microsoft Security Blog

StrongWong

什么是超低功耗基准测试——ULPMark Benchmark 浅谈 RISC-V 软件开发生态之 IDE 简单了解一下小米 vela wujian100 的 PWM 周期问题 用 Kindle 做树莓派的显示屏 关于 RISC-V 架构下 RTOS 的一些知识 使用 vivado 综合 wujian100 生成 bitstream 文件 Windows 下学习阿里平头哥 RISC-V 芯片开发平台 wujian100 FPGA 数字图像处理联合仿真平台的搭建及使用举例 拆解一个很有意思的开关 拆解某宝上热销的一款蓝牙耳机 Archives Windows10 环境下搭建 RISC-V 调试环境 Contact 使用汇编实现 pc 和 sp 的保存及恢复操作 数字 IC 设计流程 SDRAM 两次踏进同一条河 初窥 SDRAM 从计数器开始,看数字 IC 设计 使用 Docker + GitLab 构建自用的代码管理服务 提升数字 IC 设计效率从 Vim 开始 Tools 使用树莓派 3b 和 RTL_SDR 搭建小功率无线电监测点 关于 ARM Cortex-M3 的启动文件分析及分散加载 make 命令及 makefile 文件编写 ROS 基础知识 在 Jetson TX2 上安装 ROS 机器人操作系统 Jetson TX2 重新编译内核添加usb等驱动 Nvidia Jetson TX2 刷机并安装JetPack3.1 我的毕业设计--基于ROS的移动机器人 使用 Hexo+Github Pages 搭建个人博客 About
总线- SoC 内部的主干道
BH6BAO · 2018-11-12 · via StrongWong

总线—— SoC 内部的主干道

开坑!从今天开始来聊一点数字 IC 的一些知识!首先来看一看总线 平日里我们都在讲总线总线,连接各模块的公共线,那它在 ARM 芯片中起到了啥木作用,来胡乱绉一通。

总线的功能

总线通俗得理解可以完成以下功能:

  • 提供时钟
  • 分配(管理)地址
  • 响应中断
  • 传输数据
  • 传送控制信号

USB 总线

以平日里最常见的 USB 为例,USB 其实也是一种总线如下图所示,通常我们计算机连接到 USB 后,USB 提供的总线可以拓展连接到我们的外设,例如 U 盘、键盘、鼠标等……但是设备本身不会与 CPU 进行通信,它们只与 USB HOST 进行通信,USB HOST 会给它们分配相应的中断。一旦 USB 设备插入 USB 接口引起物理上的电平变化便会有中断,此刻的中断并非 CPU 的中断,此时的中断是 USB HOST 的中断,此中断经一定的处理后发送至 CPU 后,CPU监测到是 USB HOST 中断,便将中断交付 USB HOST 进行处理。再来看地址的问题,CPU 是无法直接访问到你的设备的,红色方框内可以看做是一个“家族”,CPU 只能访问到其“家长” USB HOST,USB HOST 访问具体设备才用到地址访问。例如此时 U 盘的地址是 0x0007H,若此地址直接由 CPU 访问的话 CPU 最终只会访问到内存的 0x0007H,而非我们的 U 盘,因此将此地址交付 USB HOST 进行访问才能实现。这里就能看出不仅仅内存有地址,引入总线后,各个外设也有了对应的地址。

usb

AMBA 总线

回到 ARM 上来,ARM 的总线遵循 AMBA(ARM 爸——安谋爸爸)的总线规范,ARM 为了让大家能尽可能地接外设变作了个 AMBA 总线规范,通常 AMBA 规范下常见的总线分别是 AHB(高速总线),APB(外设总线),ASB(AHB 备胎)如图所示。

amba

我们可以把 APB 总线当做乡村公路,AHB 总线当做一条省道,把这两条路连接起来的“十字路”可以叫做“Bus bridges”。AHB 上的设备通常速度较快例如:内存控制器,NAND Flash …… APB 就较慢,例如 UART,GPIO ……最直观的 UART 通常我们最快设置的波特率大概就 115200,还不到 M 级,因此就放在乡村公路跑就可以了。那么不同的路就要跑不同的频率,那么通常设计的外设的 controller 时,其控制时钟就由总线提供,以保证操作的同步性,那么在 IP 中我们就可以看到有叫做 HCLK(AHB)的信号和 PCLK(APB)的信号。我们还可以看到在 M3 和总线之间还有一个模块叫做 BusMatrix,其主要负责多主设备和多从设备的交互和仲裁,目的是为了提高不同主机访问不同外设情况下的带宽,另外一个就是简化 Bus Master 的协议设计(今后有机会进去分析)。

FCLK、HCLK、PCLK

我们都知道的是芯片内部的“心跳”是由外部晶振给的,外部晶振通常就十几二十兆,但芯片内部动辄七八十兆甚至上 G,那这里就离不开一个叫 CLKCNTL 的东西,它负责提各个部分的“心跳”。刚才我们也说到 APB 和 AHB 是不同速度的公路,因此它们的工作频率是不同的(实际上可以相同的,但其分类的意义就不大了),而 CPU 本身的工作频率也是不同的。如图所示,给 ARM 用的是 FCLK(全局时钟), 你可以将 PLL 出来的 70MHz 频率分频多少给 FCLK,将 70MHz 频率分频多少给 HCLK,PCLK 这就是 CLKCNTL 做的事,CLKCNTL 分配出来的 FCLK,HCLK,PCLK 三者成一定的倍数关系。

具体到 AHB,APB 总线协议和使用应用,今后我们将会逐一胡扯乱绉。技术不到家全靠虾扯蛋,错误应该是满天飞,望各位大神指正。先挖个坑,下次更 AHB 总线下 SRAM 的控制器设计。

By Ricky