riple

Stay Hungry, Stay Foolish.

把SOPC Builder用于非Nios系统开发

0
阅读(1776)

很久以来就一直想把SOPC Builder用于通用的系统开发,由于知识、时间、精力的原因一直没能成功。
上研究生时曾经设计过一个指令集可配置的8051内核,如果搭配上SOPC Builder,再利用上ALtera提供的众多SOPC外设,就会成为一个非常灵活的SOPC系统。后来虽经几次努力,把这个内核作为主设备成功地添加到了SOPC Buider之中,但是我对于SOPC Builder的众多功能还是一知半解。
最近一个项目的结构非常适合采用总线结构搭建,经过比较权衡,可以有两种解决方案:一是采用自定义总线,用语言搭建专有总线;二是按照标准的总线结构开发接口,并最终采用标准总线连接各个设备。前一种方式比较简单,实现起来容易,但是可扩展性差,不利于进一步开发;后一种方式需要学习现成的总线结构和开发方法,初期费些力,以后修改和扩展起来会非常方便。如果采用第二种方式的话,我会选择Avalon总线和SOPC Builder开发工具。
我的计划是先采用第一种方式开发,同时利用业余时间系统地学习Avalon总线和SOPC Builder的使用方法。在当前这一期开发完成后,再逐步把设备的接口向Avalon总线形式修改,争取在项目的下一期采用上Avalon总线。


其实,“Avalon总线”这个说法不是很准确,英文原文是Avalon system interconnect fabric。在SOPC Builder中看来,Avalon是一个总线,主从设备都连接到总线上,从设备拥有独立的地址;但是由于Avalon提供一对主从设备的独享连接,不受其他设备访问总线的影响,Avalon本质上是一个交换结构(Switcher)。
从SOPC系统开发者的角度看来,SOPC Builder生成的互连结构可以被看作是总线,但是这个总线提供了性能高于传统总线的交换结构。从这一点看来,“Avalon总线”优于传统总线。但由于交换结构的特殊性,不采用SOPC Builder这样的自动生成工具,手工搭建交换结构有一定的工作量。
所以,如果把Avalon看作是一系列的主从设备接口标准,把SOPC Builder看作是生成连接Avalon主从设备专用连接的互连结构生成工具,会更符合SOPC Builder设计者的本意。
Avalon接口可以支持总线和交换结构,SOPC Builder可以把符合Avalon接口标准的主从设备按照系统开发者的配置,采用总线结合交换的结构,以最优的方式连接起来。


在Altera的Quartus II Version 7.1 Handbook Volume 4: SOPC Builder中有这样一段话:
Many designers already know SOPC Builder as the tool for creating systems based on the Nios II processor. However, SOPC Builder is more than a Nios II system builder; it is a general-purpose tool for creating arbitrary SOPC designs that may or may not contain a processor.
这段话澄清了对于SOPC Builder的误解:SOPC Builder可用于通用系统的开发,而不仅仅局限于基于Nios II处理器系统的开发;在SOPC系统中,甚至可以不包含任何处理器。
通过下面一系列的短文,我希望能给大家提供和解释上面这样一个系统开发和构建的新思路。

Baidu
map