勇敢的芯伴你玩转Nios II(电子设计与嵌入式开发实践丛书)
上QQ阅读APP看书,第一时间看更新

3.2 Qsys总线互连

和大多数的嵌入式系统一样,Nios Ⅱ处理器系统也需要有一条和各个外设模块进行数据传输的总线。这个总线叫做Avalon总线,Avalon总线主要有6类接口。

●Avalon存储映射接口(Avalon-MM)——基于地址读写的主机和从机接口。

●Avalon流接口(Avalon-ST)——支持双向数据流的接口,包括多路复合的流传输、包传输或DSP数据流。

●Avalon存储映射三态接口——同样是基于地址读写的接口,主要用于FPGA片外的外设接口连接。和片内的Avalon-MM总线一样,该总线接口也可以同时连接多个片外外设。

●Avalon时钟——该接口可驱动或接收时钟和复位信号,用于系统同步和复位连接。

●Avalon中断——用于一个组件向另一个组件发起事件请求。

●Avalon管道(Avalon Conduit)——用于将Qsys系统内部的信号引出到Qsys系统外,与FPGA其他的逻辑模块甚至FPGA器件外部的引脚进行连接。

上述这6类接口,除了基于数据流传输的Avalon-ST总线和Avalon存储映射三态接口是本书用不上的,其他接口都需要涉及。具体如何连接,下面逐一来看看。

Avalon时钟产生两个主要的系统信号,即50MHz的时钟信号和复位信号。如图3.2所示,Clock组件(Avalon时钟)的时钟由Qsys外部的FPGA逻辑部分接口引入,通过它产生的50MHz的时钟信号供给整个Qsys系统上的所有组件。

图3.2 Clock组件产生的50MHz时钟信号连接

如图3.3所示,Clock组件产生的复位信号由Qsys外部的FPGA逻辑部分接口引入,通过它产生的复位信号同样供给整个Qsys系统上的所有组件。

图3.3 Clock组件产生的复位信号连接

如图3.4所示,Avalon-MM总线在系统中实际上有2条,即Nios Ⅱ处理器的指令总线和数据总线。从图中不难看出,这两条总线实际上是分开的,即通常所说的哈佛结构。指令总线连接着Nios Ⅱ处理器、JTAG UART和片上RAM。指令存储在片上RAM中,通过Avalon-MM总线读取,而JTAG UART组件集成在Nios Ⅱ处理器中,可以确保在线调试仿真时,控制片上RAM的指令运行。数据总线将Nios Ⅱ处理器连接到所有的可用外设上,Nios Ⅱ处理器可实现对各个外设寄存器的读写访问。

图3.4 Avalon-MM总线连接

对于一个处理器系统,中断信号必不可少,因此如图3.5所示,UART外设组件、JTAG UART组件、Timer组件、PIO拨码开关组件和矩阵按键控制器组件都有中断信号需要连接到Nios Ⅱ处理器上,它们可以分配到不同的中断优先级,在发出中断请求后得到Nios Ⅱ处理器的处理响应。

图3.5 Avalon中断信号连接

如图3.6所示,Avalon管道接口实际上就是Qsys上各个外设组件需要连接到FPGA逻辑或FPGA器件外部的引脚。

图3.6 Qsys系统各个组件引出接口