【精品博文】失控----FPGA去中心化设计 <三>

看了莫老师的回复,有必要写一篇来介绍NoC的network实现的方式,也就是第一篇中的箭头连线代表的是什么,虽然很复杂,很难讲清楚。

现在先抛开SOC EOC  NOC,这些词,可能我对这些专业词汇的理解和其他人的不一样,这都是表象,并不是那么重要,只是名字而已。

先来一个最简单的Net图

S2M,M2S 为总线Bus的interconnect,这个只是2个master和2个slaver的互联,第一篇中的箭头,就是对应上图的红色箭头。

Network设计其中一个关键问题是:复杂度的增加,并不是master slaver 简单的copy.请看下图

BUS NET并不是扁平化的,它是可以延伸到底层模块的,如果只是扁平化完全可以用一个interconnect实现,像SOC的方式。这个还只是简单的,这里模块内不是全功能的子网络,再看下图

上图可以算个工程BUS NET 的样子了,这也是我没有在前两篇文章中把完整的BUS NET 画出来的原因,BUS NET 本身要比Modules 图复杂得多,

但是,但是,但是(重要的事情说三遍),上面说的还只是NET BUS 内容的一半。BUS NET中还需要其他东西!!!

1、 数据位宽转换,比如spi的只是8bit,VDMA的是32bit,就需要位宽转换(还要处理非整数倍情况 24-> 32,)。

2 、跨时钟域,这个反而是在BUS里面最简单的

3 、stream bus 的截断 补齐,比如 ethernet有最长 最短包限制。有时DDR的一次burst也是大于128bits的数据

4 、协议转换,AXIS转AXI4 ,AXI转avalone 等等

-----------------------------------------------------------------------------------------------------------

本里接下来应该是讲Net细节的实现的(S2M,M2S等怎么设计),这个真不好讲,我设计这套东西就花了小半年,以前有人问我VDMA怎么做,我说,这个很难讲清楚,因为这个不是一个模块,而已一个系统。NOC EOC的 Net也是,他不是一个模块,而是一个系统,还是一个大的系统!

只能稍微的摘最简单的说说:

1 、BUS 最简单的形式是:valid,ready,data这三个信号。复杂的bus ,比如 AMBA,AXI,AVALONE,这些都是建立在这最基础的三个信号上。

2 、超短FIFO(depth小于4 ,别以为超短fifo没有,bus 里面短fifo很常见),且必须是跨时钟的,和“first word fall through”(参考xilinx fifo参数设计,当然也可以直接用ip,但是没写过这个fifo,就不能对bus有深入的了解)。别以为看了网上的那篇异步FIFO设计,就能写出“first word fall through”的fifo,FIFO不是只有格雷码。

3 、data pipe,模块要求很简单,valid ,ready,data,进模块然后出去,(1)不能直连(2)每个输出的信号必须经reg,不能组合逻辑输出。这个模块是S2M,M2S的基本。

这个是我早期实现的PIPE链接

也有几点需要注意的:

1 、模块并不需要全部reg时序输出,有些可以组合逻辑输出(data pipe 除外),如果这条规则不打破,基本写不出 S2M,M2S。不要担心时序问题,一般2-3个输入的组合逻辑根本不会产出问题。

2 、只能用systemverilog设计,这个倒不是verilog vhdl做不出,如果我的工程是用verilog来做,那么代码里面80%以上都是关于BUS的信号定义,和port例化,会相当难看,sv支持数组port 和interface,可以省很多很多代码。

最后说一下我为什么不用xilinx 官方的interconnect S2M M2S IP

1 、AXI4的 有些信号我根本用不到,比如优先级,我只需要轻量的bus,有些BUS 我会加入自己定义的信号,比如axi lite 我会加入 awlock arlock。

2 、资源占用太多,axi stream 8_to_1 (M2S) 的interconnect 需要450个LUT,我的只需要小于50LUT。

3 、XilinX的是黑核,另一侧面说明interconnect还是很有技术含量的

4 、因为sv,xilinx的ip使用的是verilog或vhdl会占用代码行。

(0)

相关推荐

  • 以太网IP核代码(verilog)

    基本介绍:  千兆位和10G数据包处理(8位和64位数据路径)的以太网相关组件的集合.包括用于处理以太网帧以及IP,UDP和ARP的模块,以及用于构建完整UDP/IP堆栈的组件.包括用于千兆位和10G ...

  • 【科普】Xilinx 3D IC技术简介

    Xilinx 3D IC技术简介 跨Die约束?SLR?SSI?这些是使用UltraScale+/V7常见的概念,但是这些概念到底什么意思?有什么联系?下面我们从根本上去解释这些概念. 目录 目录 S ...

  • 优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信

    今天开始会陆续介绍一些优秀的开源项目,项目基本都是和FPGA或HDL相关的.对于一些找工作或者急需项目经验的人来说,这些项目都有一定的参考价值. 这里再介绍一下开源协议的区别,方便大家在阅读使用这些开 ...

  • 【长文】从三十年前说起,最全FPGA架构演进史介绍!

    摘要:自三十多年前问世以来,现场可编程门阵列(FPGAs)已被广泛用于实现来自不同领域的无数应用.由于其底层的硬件可重新配置性,与定制设计的芯片相比,FPGAs具有更快的设计周期和更低的开发成本.FP ...

  • 【精品博文】失控----FPGA去中心化设计 <二>

    资源是有限的,怎样才能做到资源利用率最大化? FPGA里面有个RAM,一般的RAM最大只有两个读取口,但是现在我希望有RAM能支持上千的读取口. 可能会问会有这种需求吗?服务器的数据库就是需要这种短时 ...

  • 【博文连载】失控----FPGA去中心化设计 <二>

    接上文,这篇博客非独立文章,可能您需先读上一篇. SOC图     EOC NOC 图对比 资源是有限的,怎样才能做到资源利用率最大化? FPGA里面有个RAM,一般的RAM最大只有两个读取口,但是现 ...

  • 【精品博文】失控----FPGA去中心化设计

    最近在看KK的<失控>,KK的观点刚好切合FPGA目前的发展------去中心化设计.这篇文章就来讲讲去中心化设计. 假设一个项目: 一.拥有的外设:4路SPI分别接外MCU,4路I2C分 ...

  • 【精品博文】FPGA的计算器设计——逐位输入与输出控制模块

    之前写了两篇关于计算器的模块,一个是键盘扫描,一个是数码管消零,今天我总结一下第三个模块,也就是标题写的逐位输入与输出控制模块.我们平时使用过计算器都应该了解,我们每按一个键,显示屏上就多一个数,并且 ...

  • “去客厅化”设计越来越普遍,只有入住后,才知道有多好用

    "去客厅化"设计,相信很多人都听过,并且在当下新房设计中,也越来越普遍.而所谓的"去客厅化"设计,也并不是不要客厅,而是弱化客厅固有的功能性,并延伸出更多的功能 ...

  • 区块链去中心化多币种钱包APP搭建(现有案例)

    我们知道在区块链中,"钱包"是用于存储和使用数字货币的工具,并且一种货币对应于钱包.它用于存储货币或"交易"货币.简单地说,"冷钱包"是一个 ...

  • 云集六年:去中心化的胜利

    电商历史上,2015年是一个特殊的年份.这一年,移动购物在整体电商占比中超过50%,整个电商生态完成从PC到移动端的转移:这一年,B2C占网络购物的比例首次过半,增速高于C2C,中小商家的时代似乎即将 ...

  • 去中心化计算的未来:通过 RPC 从微服务过渡到 WASM

    在另外一篇文章<区块链.硬件与面向服务的架构,WASM 即将迎来大爆发?>,里面有绝佳的浏览器内的 WASM 应用程序示例,并辅以了对WebAssembly(Wasm)的详细解释. 但正如 ...

  • 重新认识去中心化交易所

    今天的文章分为三个部分: 1.对 DEX的再认识(去中心化交易所) 2.夸克区块链上的DEX 不同于传统金融世界,区块链世界的金融系统是由多个机构共同控制的,金融机构之间的交流效率极低,比如,你的存款 ...