假如规划中有多个模块,每个模块内部有许多寄存器或许存储块需求装备或许供给读出那么完成方法有多种,首要如下:
完成方法一:能够在模块顶部将一切寄存器引出,供给一致的模块进行装备和读出。这种方法简略是简略,可是顶层衔接工作量较大,而且假如装备个数较多,导致顶层中寄存器的数目也会较多。
完成方法二:经过总线进行衔接,为每个模块分配一个地址规模。这样寄存器等扩展就能够在模块内部进行扩展,而不必再顶层进行过多的顶层互联。如下图所示:
那假如进行总线的挑选,那么有一种极为简略的总线引荐被运用,那便是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,则表明没有反压的机制,则主设备,可依据本身收包状况一向向从设备发送数据包。此外还有其他辅助信号,能够依据规划需求进行增加。
运用总线使模块规范化,便于代码的移植和规划复用。一起规范总线的设定和一致界说也利于项目团队代码的规范化,便于了解和传达。