假如规划中有多个模块,每个模块内部有许多寄存器或许存储块需求装备或许供给读出那么完结方法有多种,首要如下:
完结方法一:可以在模块顶部将一切寄存器引出,供给共同的模块进行装备和读出。这种方法简略是简略,可是顶层衔接工作量较大,而且假如装备个数较多,导致顶层中寄存器的数目也会较多。
完结方法二:经过总线进行衔接,为每个模块分配一个地址规模。这样寄存器等扩展就可以在模块内部进行扩展,而不必再顶层进行过多的顶层互联。如下图所示:

那假如进行总线的挑选,那么有一种极为简略的总线引荐被运用,那便是AVALON-MM的总线
ALTERA提出两种总线类型,别离是AVALON-MM,
AVALON-ST。别离用于衔接memeory 和数据流的传送
MM不是你想的意思,其英文为memory map。完结内存映射是其首要意图。首要信号包含如下表所示:

AVALON因而可以说是最简略有用的总线形状了。关于其操作来说,总线为同步类型的总线,写信号只需求在写使能有用时,一起供给写数据即可,而读数据等候信号无效时,读出数据有用。
相同数据类型读数据(readdata)和写数据(writedata)的宽度可以依据规划的需求灵敏装备为(8,16,32—-256—1024)BIT等值。即可以支撑十分大的位宽,但一般运用,只需求(8,16,32,64)BIT等即可满意运用。
那假定总线宽度32,根本上干流的数据总线的宽度。假如需求更细粒度的区别,确认读写某个字节有用,那么byteenable信号也是有必要的。其需求4bit来标明32bit(4个byte)中那个有用,每一BIT表明一个字节,因而假如要彻底表明一切的字节有用,因而字节有用信号的宽度为(数据总线的宽度/8)。AVALON还可以有burst的操作。主设备可以经过burstcount设备确认brust的长度,为2的n-1次方。
关于一般的运用,经过上述表格中的根本操作即可满意需求,这也正是AVALON-mm总线的优势。此外模块按此规范供给衔接接口,各种模块可以挂在NIOSII的片上体系上。
假如模块之间为点对点的衔接,一起传递大数据量的操作,那么的AVALON-mm总线就不太合适,因而AVALON_streaming总线就合适这种运用场景。
AVALON_streaming总线本质上是一种同步并行总线,即在同步时钟状态下,使能有用代表传递数据有用。其根本信号如下表所示:


从上图中,可以看出各信号在数据传输中的效果,关于从设备获取数据的处理,便是VALID有用时,数据有用的采样操作,十分简略便利,易于处理。假如从设备设定ready永为1,则表明没有反压的机制,则主设备,可依据本身收包状况一向向从设备发送数据包。此外还有其他辅佐信号,可以依据规划需求进行增加。
运用总线使模块规范化,便于代码的移植和规划复用。一起规范总线的设定和共同界说也利于项目团队代码的规范化,便于了解和传达。
下文将介绍两种其他运用较广的总线形状,AHB(AMBA)假如说在PC年代,独占PC江湖的是WINTEL(微柔和英特尔),那么在移动互联网年代,最具有这个潜质的便是谷歌的andriod操作体系和ARM芯片。依据ARM公司授权的各型ARM处理器,根本上在各型嵌入式终端设备占有了独占位置。“背靠大树好乘凉”,因而,用于作为ARM处理做片上体系互联的AMBA总线规范亦成为业界运用最广泛的规范。
AMBA总线事实上为三个总线规范的合集,别离是AHB、ASB、APB。ASB已逐步被AHB所替代,现在运用最广泛的为AHB和APB总线,以及最新的扩展AXI总线。实际上,如今体系规划中,常常会学习AHB或APB总线规范,用于规划各种IP和片内模块之间的互联。首要来说AHB和APB总线,一家公司为什么会退出有两种类型总线,这是因为AHB一般以为其具有更高的功用和总线吞吐能力,而APB为低速总线,用于衔接低速外设。两种总线互补,可以在功用和功耗方面进行互补。

如上图所示
:AHB总线与APB总线在一个嵌入式体系中的运用场景。
别离用于衔接低速设备和高速设备。下表罗列其一些首要的不同。

作为单次传输来说,AHB与APB的首要区别在AHB周期不固定,操作完结标明由从设备回来hready标明,而APB周期固定。作为burst传输来说,AHB支撑增量和回环两种方法的突发。举例说,增量便是挨个地址自加,如总线宽度为32,地址每次自加4(字节)。而回环,比方当时地址为0xA4,而回环突发操作位0xA4, 0xA8, 0xAC, 0xA0。这种突发方法关于一些cache读写内存是十分有用的,这样可以把0xA0-0xA15十六个内存地址一次性读出。假如规划一条这样的cache line,地址0xA0-0xA15其高位地址共同,便于匹配,这样这16个字节可以经过一次突发就能悉数填满。(即回环这种规划与处理器的cache结构是相关的,现在的cache line有逐步扩展的趋势,一般64字节也较为常见)。
因为支撑多个主设备和多个从设备进行交互,那么关于多个主设备之间就存在竞赛。(从设备之间存在竞赛否?从设备之间是经过地址区别的,被迫承受主设备的拜访,不会存储竞赛的问题。)因而怎么处理竞赛,那就需求裁定,即主设备谁需求拜访总线,则建议HBUSREQ,而裁定器收到HBUSREQ,回来给相应主设备HGRANT。此刻该设备才干拜访总线。除此之外AHB还有其他一些信号,用于辅佐整个体系的传输,感兴趣的同志,可以看一下AMBA的总线规范。值得一提的是,作为一个总线规范,其供给了全集的处理计划,而作为完结部分,只需求在满意规范的前提下,完结必要的功用即可,例如AHB总线中规则,其突发最大可1K字节,可是作为一个从设备,不一定需求支撑这么大的操作,即完结功用可在总线结构内进行裁剪,挑选完结支撑的类型即可。
在FPGA内部规划中,常常有多个主设备拜访同一从设备的比如,例如内部多个模块都需求拜访外部存储器,其完结方法有多种,经过AHB的衔接架构,可以完结一个规范、可扩展的接口单元,用于拜访外部存储器。而且可以作为IP运用。AHB从设备只需求依据需求,支撑某些burst传输即可。

跟着SOC(片上体系的开展),关于高带宽、低延时的总线需求愈加火急,ARM公司当令退出AXI(AMBA3.0)作为扩展。


上图别离是AXI接口的读写操作,别离可以看出,关于AXI总线来说,其有5组独立的总线,别离是写地址,写数据,写呼应,读地址,读数据信号。地址和数据信号分隔,每组都有自己的操控信号。
每个通道中心没有时序相关,怎么进行操作的?举例来说明,例如读数据操作,实际上,主设备向从设备中写了一个读的指令,包含读地址,burst巨细,方法等。收到后从设备依照相应的指令读取相应巨细的数据,传回主设备,其操作可以简化的看做两个缓冲区类型的操作,主设备将读指令写入从设备的指令缓冲区,从设备取出后,依据指令将相应的数据回来给主设备的接纳缓冲区中。这种操作的优点清楚明了,可以最大极限的削减总线的开支,因而其读与读操作之间独立,不必等候读回,就可以发送下一次的读信号。写操作的流程亦然。
对FPGA规划来说,例如xilinx的接口IP(DDR例化时的接口),都已支撑AXI的接口。FPGA工程师了解相应的总线接口信号和特色,关于技能计划挑选,IP运用和验证,都是十分重要的。尽量在规划中挑选规范总线接口,关于规划复用,模块同享来说,则是必经之路。而模块(IP)复用的好处跟着规划不断增大将会不断闪现。