找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3502|回复: 0
收起左侧

在Quartus中利用SOPC Builder做总线仲裁

[复制链接]
ID:105323 发表于 2016-2-23 03:58 | 显示全部楼层 |阅读模式
在复杂的系统中,总线上一般会连接多个主设备,例如总线上出现多个CPU或多个带有DMA性质的设备。这些设备提出总线请求时,必须有一个机制保证任何时候最多只有一个设备占用总线,而其它设备提出总线请求时,只能等待直至总线恢复空闲。
  在Quartus中自己设计总线的时候,总线仲裁可以借助SOPC Builder。SOPC Builder使用Avalon总线,其信号与通常FPGA设计所用的总线类似。Avalon总线的主、从端分别称为Avalon Master、Avalon Slave。
  打开SOPC Builder后,新建一个System。然后开始设计总线的主和从模块。
  选择File->New Component。先建立一个主设备接口,转到Signals,参考下图配置自己需要的总线信号:
  
  转到Interfaces配置:
  
  最后在Component Wizard中设置好名称等,按Finish...保存:
  
  这里我建立了一个宽度为32位寻址范围256MB(226×32/8)的Avalon总线主设备端(Avalon Master)。
  对于从设备端,则可以根据自己的设计需求,从SOPC Builder直接选取由Altera提供的SDRAM、DDR这些内存控制器或SPI、UART等这些Avalon Slave,也可以自己用刚才的方法创建一个Avalon Slave。这里我创建了一个16位宽的Avalon Tristate Slave从设备端,打算用来连接16位宽的SRAM:
  
  
  然后,在SOPC Builder中,根据需要摆放并连接好总线设备。
  例如:
  1、设计一个有2个总线主设备接口的1MB 16-bit SRAM控制器:
   注意的是Avalon Master和Avalon Tristate Slave不能直接连接,需要经过Tristate Bridge。
  按Generate后,在Quartus中得到一个这样的Symbol:
  
  这个Symbol的右下端直接连接SRAM,而中上端是两个Avalon Master总线接口,连接两个自己的模块,例如CPU核或液晶控制器,只要所设计的模块符合Avalon总线的规范即可(可以参考相关文档)。模块访问总线时不需要知道另一模块的总线占用状态和相互通讯,只需要关心自己的waitreq信号。
  2、设计一个有4个总线主设备接口的32MB 32-bit SDRAM控制器:
  
  直接选用Altera提供的SDRAM控制器作为Avalon Slave就可以了。这次可以接4个总线主设备,随意发挥吧。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表