热度 19
2014-7-26 20:09
1989 次阅读|
4 个评论
我的疑问也可能是你的疑问 之你真的看懂 AMBA 总线协议了吗 一) 问题的来源 离开了学校这座象牙塔,步入了社会这个大熔炉,第一站就是公司,都不曾给你喘气的机会。在公司的头三个月基本上是培训,涉及到公司的文化,公司的日常制度,由于是软件和硬件结合的公司( IC 设计,硬件设计芯片,嵌入式负责开发应用平台、驱动),所以对保密制度更加关切。这些方面培训结束后基本上都是在培训设计技术方面的内容。 我的第一个培训课题是 uart ,主要是看 uart 手册、然后汇报,最后测试公司现有的 IP ,修改 IP 实现附加功能,别小看了这个过程,看起来不难,然而真正去做的时候发现很多方面并不是很懂,懂得也不是很深,譬如软硬件中断,软硬件流控制, FIFO 深度如何设定,寄存器读写, ARM 公司的 APB 中线;这些东西融合到一块,就不在是小问题,而是五味俱全的设计。 我的第二个培训课题是总线,包括公司自定义总线和 ARM 公司的 AMBA 总线,还有开源总线 OCP ,关于公司的总线涉及到保密制度,在此不多述,而 ARM 公司的 AMBA 总线包括 AHB 、 ASB 、 APB (现在出的 3.0 版还有 AXI ),我侧重的是 AHB 总线,其他方便的内容如果你感兴趣可以自行补脑。第一阶段是看总线协议然后汇报;看着总线手册感觉不是很难,但是让你几套总线对比看,对比优缺点的时候,难度就上来了,为什么这样设计而不是那样设计,里面可有学问了。看完和汇报完之后是做设计,将公司的总线协议转换为 AHB 协议,曾经的以为看懂,在设计的时候又都变成了问题,难怪有人说,考验你懂不懂,就考你能不能说出来给别人听,写出来给别人看,做出来给别人演示。在做协议转换的时候遇到了很多的问题,虽然我有疑问,但是我仍然带着疑问做起了设计,给我培训的导师说没关系,你现在是培训,问题越多越好,你想的就会深,学到的自然会多,下面举几个例子。 二)我的疑问,也可能是你的疑问 看上图的协议,我的问题是在发 cmdA (包括地址, trans , burst 等相关的 cmd )时, HREADY 此时是不是 1 ,或者问题提炼为,在 master 发送第一个 cmd 的时候需要 slave 的 Hready 为 1 才能发送吗,或者换种说法, slave 需要在默认的情况下将 Hready 拉高吗。关于这个问题,我在本论坛里看过别人的会答,也在其他论坛看过相应的解答,大家意见不同,有的说 AMBA 并没有规定是不是 1 ,各持己见! 我的问题二是,上图的 nonseq 和 seq 意义何在,如果 master 将 nonseq 发成了 seq 会不会错,因为每次发送 cmd 的时候也伴有地址,所以个人觉得 nonseq 发成了 seq 不会造成 slave 的接收错误,那么 nonseq 意义是不是仅仅表示一个新的 cmd 开始了?还是另有深意! 上面大概是我的两个主要疑问,还请论坛里的嵌入式牛人,或者 IC 设计牛人,或者对 ARM 公司的 AMBA 总线理解深刻的人看到后不吝解答! 三)带着疑问的设计 虽然我有疑问,但是带着疑问我做起了设计,下面是大概的设计架构,和其中的一个状态机,另一个状态机类似。现在的架构和状态机都不够成熟,就在我现在写的时候就感觉到了。后续我会提供更为成熟的架构和思想,我觉得交流自己的心得,才能有新得! 四、总结 就是这样,协议这东西,每个人理解力不同,理解的结果就不同,设计出来的就不同,如果你的设计和其他人的设计都依赖于某个协议,你的设计要依靠其他人的设计才能存活的话,那么你和其他人必须讨论一下你们对协议理解的是不是相同,否则做出来的产品就糟糕了,我们公司的老大就举过这样的例子。 好了就写这么多了,还望有会的小伙伴回答我一下上面的问题!