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

推荐订阅源

GbyAI
GbyAI
博客园 - 三生石上(FineUI控件)
S
Securelist
U
Unit 42
The Cloudflare Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Simon Willison's Weblog
Simon Willison's Weblog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
B
Blog
T
Tenable Blog
The Hacker News
The Hacker News
The Register - Security
The Register - Security
IT之家
IT之家
博客园 - 【当耐特】
Spread Privacy
Spread Privacy
P
Privacy & Cybersecurity Law Blog
博客园_首页
T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
A
Arctic Wolf
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
V2EX
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
V
Visual Studio Blog
月光博客
月光博客
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
G
GRAHAM CLULEY
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Heimdal Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - Radiumlrb

接地不是“都连在一起”那么简单:从基础接地到相位噪声时钟与 DAC 的 AGND 设计 系统工程入门指南 7 Series FPGAs Memory Resources User Guide (UG473) ug471 7 Series FPGAs SelectIO Resources User Guide ds180 7 Series FPGAs Data Sheet: Overview Xilinx文档编号及其内容索引 提前还商业贷款计算python程序 示波器波形重建与正弦内插 DDR、PCIe、GTX等常见IP的配置解析 FPGA DFT/FFT 信号加扰与FPGA实现 GT高速收发器 杂谈 FPGA时序约束步骤(vivado) 常用时序收敛方法 FPGA原语及IDDR仿真 Vivado Design Suite 7 Series FPGA and Zynq 7000 SoC Libraries Guide (UG953) keep_hierarchy约束在三模冗余中的应用 Microsemi Libero SoC使用教程(胎教级 免费)(创建工程、引脚分配、仿真、逻辑分析仪ILA) Libero SoC 如何导入模块Module FPGA直方图均衡化 链接.so动态库
AXI总线掩码(WSTRB)操作
Radiumlrb · 2024-07-23 · via 博客园 - Radiumlrb

掩码这个概念在以太网中也有运用,掩码通常用于子网和IP地址的管理。子网掩码是32位的二进制数,连续的1表示网络部分,连续的0表示主机部分。根据IP地址和子网掩码,可以计算网络地址和广播地址。如,对于IP地址192.168.1.1和子网掩码255.255.255.0,网络地址是192.168.1.0,广播地址是192.168.1.255。

可以见得,掩码是用于区分两类数据的一种操作符

在AMBA中,AXI总线的掩码(WSTRB)主要用于选择性地屏蔽或允许某些数据位的写入。比如有一个寄存器多种功能,每一位都代表了不同数据量的使能开关,如果想只修改某一位而不修改其他变量,就可以使用掩码。通过掩码,可以指定哪些字节可以被写入,而哪些字节保持不变。在处理特定数据时非常有用。

在AXI4中,掩码通常是一个字节掩码,表示每个字节的写入权限。例如,对于32位数据总线,WSTRB信号有4位,每一位对应一个字节。如果某一位为1,则表示相应的字节是有效的;如果为0,则表示该字节无效。

4'b1111:允许写入所有字节
4'b1010:允许写入32-24位,15-8位

 具体可以阅读文档

cnblogs_documents/IHI0022E_amba_axi_and_ace_protocol_spec.pdf at master · Radiumlrb/cnblogs_documents (github.com)

 以下给出一个具体例子,假设我们有一个32位的数据寄存器,地址为0x1000,我们希望通过AXI总线将数据0xABCD1234写入该寄存器,但只想更新高16位,保持低16位不变。

axi_data = 32'hABCD1234;
axi_wstrb = 4'b1100; // 只允许高16位写入

写入前,地址0x1000的值将为0x11223344。

写入后,地址0x1000的值将变为0xABCD3344。

此外,PCIe也有类似的掩码操作,TLP封包使用3DW时,由于对齐需要,每次发送64bit数据,此时需要屏蔽第三个数据,也是使用掩码,将TKEEP置零来达成这个操作(TKEEP和WSTRB都是DATA的辅助信号位)

既然有了TKEEP,为什么还有TSTRB?TSTRB 这也是一个多比特信号。。也是说明总线上的数据是不是有效的。TSTRB是配合TKEEP使用的,更进一步提供辅助信息,在TKEEP为1的前提下,TSTRB为1,表示对应的数据有效,是个好数据。TSTRB为0时,表示这个是个占位数据,position data。在有的应用中,position data可能被作为sideband data来使用。