《AXI学习路线从握手协议开始.docx》由会员分享,可在线阅读,更多相关《AXI学习路线从握手协议开始.docx(6页珍藏版)》请在第一文库网上搜索。
1、AX1学习路线,从握手协议开始曾经有人在Reddit上问,应该如何学习AXI协议?ZiPCUP(学习网站链接)上的大佬针对此问题总结了自己的学习路线,尤其针对一些网上的学习资料,针对性的提出了一些批评性的建议,下面开始大佬讲解AX1学习路线(大佬的评判语言比较过激,我已缓和处理)分割线以下总结了我的基本答案。首先,不要从Xi1inx的示例设计开始。虽然历程很不错,对不起,但他们的例子非常糟糕。甚至他们的AX1Streammaster设计极其糟糕。遗憾的是,他们既没有修复这些设计,也没有更新他们的培训材料。Aroadmapfor1earningAXI1. Handshaking2. AXI-Ii
2、tes1aves3. AXI-Iitemasters4. AXI(fu11)addressing5. AXI(fu11)s1aves6. AXI(fu11)masters、6.MedSUringAX1PerfOrmdNGe”电子图1,学习AXI的基本路线图很多人建议最好从学习握手开始,而大多数AXI流协议就是这样:握手。这一点我非常同意。因此,我建议任何人从学习AXI的握手规则开始。正如那篇文章(AXI握手规则:ru1es.htm1)解释的,AXI流协议只不过是简单的握手,可以(大部分)忽略TID.TSTRB、TKEEP和TDEST信号。并且还可以在那篇文章了解Xi1inx是如何弄乱他们的示例
3、:AXIStreammaster,并且将了解修复它是多么容易。一旦了解了AX1握手,我建议学习有关SkidbUffe里的知识(其他文章将会解释)。没有它们,在不违反AXI规范的情况下,你的设计吞吐量永远不会超过50%o我要去的下一个地方是:研究AXI-Iite0它让XiIinX(和其他未命名的公司)头疼不己,并构成了他们示例设计中许多错误的背景。建议查看这篇文章,描述如何修复Xi1inx的(糟糕的)AXI-IiteVHD1示例(对于可能需要完整AXI规范的事情,可以找到可行的示例开源或供应商设计。(如、MM2S、S2MM、虚拟FIFO、视频帧缓存读取、视频帧缓存写入等)(https:如果有兴趣
4、超越AXI-Iite,那么是时候了解AX1寻址,以及各种FIX、WRAP和INCR寻址模式以及AxSIZE字段如何影响它们。这个很重要。Xi1inx甚至没有尝试在他们的示例中做到这一点,而且我看到很多ASIC设计甚至把这个寻址搞砸了。在开始构建第一个完整AXIS1aVe之前,需要了解这一点。事实上,我已经在我自己的许多设计中使用了在那篇文章中构建和介绍的下一个AXI地址模块(一旦了解了寻址,或者至少在将其简化到足以使用之后,下一步就是构建一个功能齐全的AXIs1ave0通过在AXI-1iteS1aVe上编写AXISIaVe,您将获得什么?不多。与通过构建AXI-1iteSIaVe已经获得的性能
5、相比,构建AXI(完整)s1ave并没有太多的性能提升一一至少,对于大多数用途来说没有太大的提升。会看到什么性能差异?好吧,在良好的AXI到AXI-Iite桥接之后,可能会发现自己在每个事务中损失了大约2个时钟的延迟。在AXI到AXI-Iite桥接不良之后?在这种情况下,可能会在每个事务中损失4-8个时钟的吞吐量。当然,你总是可以切换回更好的桥恢复这个损失的吞吐量一一所以从AXI-Iite从机切换到AXI(完整)从机并没有太多好处。然而,对于AXImaster,情况就不同了。不过,我同样建议从AXI-1iteInaSter开始。从技术上讲,这样的master应该能够与AXImaster一样快。
6、实际上,可悲的是,许多设计削弱了他们的AXI-Iite实现。(你好,Xi1inx?)对AXImaster的全面讨论变得困难。我还没有(还)想出如何简化材料来写一篇关于如何构建通用AXIInaSter器的帖子,这已经够难了一一通常来说,寻址就是那么难。在这些AX1master示例中,有两个值得一提,因为我已经写过关于它们的文章。第一个讨论如何使用AXI-1ite协议为ZipCPU构建内存控制器(zipcpu20230417axi1ops.htm1),而第二个讨论将内存控制器升级到AXI(完整)所需的修改(zipcpu20230930axiops.htm1)。第二篇文章介绍了AXI独占访问协议(A
7、X1OCK和EXOKAY),然后介绍了如何构建使用它的master尽管我只真正了解这种协议的CPU用例。它还讨论了AxADDR和AxSIZE之间的一些具有挑战性的交互。如果真的要深入研究AXI协议,那么了解如何测量AX1性能就会变得很重要。以上将为您提供大部分内容。但是,它也会留下关于AxCACHEAxPROT和AxQOS的用途,或者何时应该使用AxID字段的问题。实际上,可能还会对AxSIZE感到疑惑,以及为什么它是协议的重要组成部分。对于这些的讨论,让我指出我自己在一段时间前的一个reddit问题:AXI太复杂了吗(https:正式验证AXI不久前,有人问我是否有可能编写一门关于如何验证A
8、XI组件的课程。当时,我为这样一门课程勾勒出以下大纲个主要与上述大部分进展相匹配的大纲。该课程将从对形式方法的快速回顾开始:什么是断言和假设,以及与归纳相关的一些独特挑战。Acourseinforma11yVerifyAXIcomponents?1. Reviewassertions,assumptions,andtherequirementsofinductio2. Handshakingandskidbuffers3. AXI-Iite4. AXI-Iiteregisterhand1ing5. AXI(fu11)addressing6. Verifyingsing1eAXI(fu11)re
9、adbu7. Mu1tip1ereadbursts8. Synchronizingwritebursts9. Exc1usiveaccess10. TheFIFOcha11enge图2,可能构成正式验证AXI组件课程的课程AXI设计练习在学习任何新主题时,在学习过程中锻炼新知识很重要。因此,这里有一个列表,其中包含一系列难度越来越大的练习,在学习AXI时可能会发现这些练习很有价值。Aprogressionofexercisebui1dingAXIcomponent1. Frequencydownshifter,ornetwopacketprocessor2. AXI-Iites1avehard
10、warecontro11er3. Simp1escriptedAXI-IitebusmastCPUmemorycontro11er4. Pipe1inedAXI-Iitebusmaster,sueaFIFObasedCPUinstructionfete5. AXI(fu11)SRAMcontro11er6. AXI(fu11)1-cachecontro11er7. Basichigh-speedAXIM2MDMA图4,练习练习,用于学习AXI构建并验证AXIStream组件。其他示例包括流处理网络数据包一一例如可以识别、加密或解密UDP数据包的流组件。构建和验证AXI-Iite总线一个更复杂的
11、AXI-Iite总线主控器,当然也是一个更感兴趣的主控器,可能是向CPU指令获取单元添加一个小型FIFOo然而,我对这些练习的最大问题是它们到最后变得相当具有挑战性。我不确定我将如何将DMA的验证融入仅几天的AXI形式验证课程中一一尤其是因为我花了几周时间来验证我自己的DMAo所以我会继续睁大眼睛寻找更好(更简单)的例子来使用和使用。在那之前,这仍然是一个非常好的练习列表,任何学生都可以使用它来学习他或她自己的基本AXI概念。结论我不确定我是否在网上看到过很多好的AXI培训材料。到目前为止,我所看到的大部分都是Xi1inx的材料一一这些材料会让你从一个破损的设计开始并修改它。此外,讨论如何正式
12、验证AXI设计的材料并不多。同时,我提供了上面学习AXI的路线图。并非每个人都需要上述所有课程或练习。但是,上面概述的课程和练习应该足够彻底,任何人都可以完全学习该主题。总结上面文章是摘自ZiPCPU上大佬的博客(b1og202305071earning-axi.htm1)因为整篇文章偏于口语化所以一些翻译不太准确,强烈建议自己去看下原文,下面总结一下主要内容:AX1学习路线,从握手协议开始,然后学习SkidBuffer;学习设计AXI-1ITES1AVE,不要从XiIinX官方历程开始,学会自己设计;学习AXI寻址方式以及XIS1AVE设计;学会验证自己设计的AX1模型;跟着练习题学习AXI,包括F1Fo的使用及验证;最后,这篇文章是总结性文章,所以有些写的很乱,建议阅读原文,里面有大约几十个链接,包括之前大佬写的关于AX1的文章和资源。黄飞