基于FPGA的片上可编程系统(SOPC)设计之:基于NIOS II的开发设计流程
8.3基于NIOSII的开发设计流程
NIOSII使用NIOSIIIDE集成开发环境来完成整个软件工程的编辑、编译、调试和下载。在采用NIOS处理器设计嵌入式系统时,通常会按照以下步骤。
(1)分析系统需求说明,包括功能需求和性能约束等。
(2)根据分析结果,选择片外外设或片内IP(知识产权核)。除此以外,还要对选择的IP和外设进行初步性能评估,以保证能够满足系统需求。
(3)设定IP和系统参数。
(4)确定系统互联逻辑,分配FPGA的引脚等。
(5)结合NIOS提供的软件开发包进行软件开发。
8.3.1硬件开发流程
首先来看一下NIOS的硬件系统组成。
1.NIOS硬件组成
如图8.2所示为典型NIOSII系统的硬件组成。
图8.2NIOSII系统的硬件组成
如图8.3所示为典型NIOSCPU的系统框图。
图8.3NIOSCPU系统框图
我们可以将图8.3的系统结构划分如下。
其中,片内逻辑是指实现在FPGA内部的电路设计,系统模块指的是由SOPCBuilder自动生成的设计。
SOPCBuilder会根据用户选择的IP生成相应的HDL描述文件(系统模块文件),这些文件与用户逻辑区域内的设计描述文件一起由Quartus软件综合,然后下载到FPGA内,这样就构成了系统的硬件基础。
系统模块包含至少一个Avalon主外设和整个Avalon总线模块。系统模块通常还包含一些Avalon从外设,例如UART、PIO和定时器等。SOPCBuilder可以帮助设计者从IP库寻找合适的IP并很快地集成一个系统,它采用图形用户界面(GUI)显示和组织IP模块,能够自动生成IP模块互连逻辑以及生成用于综合和模拟的文件,使得设计者可以轻松完成系统设计。
当用户使用SOPCBuilder创建一个新的系统时,SOPCBuilder会为该系统自动生成一个PTF文件,所有的设计信息都存储在该PTF文件里。当使用SOPCBuilder重新打开一个已有的系统时,SOPCBuilder会从并且只从PTF文件中读取系统具体设计信息。
用户逻辑区内可以包含用户自定义的Avalon外设,以及同系统模块无关的其他的用户自定义逻辑。硬件系统建立起来以后,用户可以利用Altera公司提供的NIOSIIIDE工具结合SOPCBuilder生成的与硬件系统对应的软件开发包来开发用户软件。
下面介绍使用这些设计工具进行NIOSII开发的流程。
2.NIOSII硬件开发流程
下面是NIOSII硬件开发流程的主要步骤。
·用SOPCBuilder来选择合适的CPU、存储器及外围器件,比如片内存储器、PIO、UART和片外存储器接口。
·使用QuartusII软件选取具体的器件,并对SOPCBuilder生成HDL设计文件进行布局布线;再根据开发板分配I/O管脚;编译完后生成适合目标器件的网表。
·使用下载电缆将配置文件下载到开发板上。当校验硬件或时钟完毕后,就可以开始软件开发工作了。
下面这个例子将要添加一个NIOSII系统得所有硬件部分,主要包括以下内容。
(1)选择CPU。
选择NIOSII/e经济型处理器,其特点是占用逻辑资源少,编译速度快,不包括缓存,如图8.4所示。
图8.4选择NIOSII处理器
(2)选择JTAG调试模块。
选择第一层JTAG硬件调试模块,如图8.5所示。
图8.5选择JTAG调试模块
(3)设置JTAGUART接口。
它是NIOSII系统嵌入式处理器新添加的接口元件,通过内嵌在AlteraFPGA内部的联合测试行动组(JTAG)电路,在PC主机和FPGA之间进行串行字符流通信。特点是在运行时在调试区输入信息可以与FPGA进行交互。
如图8.6所示,使用默认选项即可。
(4)设置定时器。
如图8.7所示,定时器对于HAL系统库中的器件驱动非常有用,比如JTAGUART驱动使用定时器来实现10s的暂停。选择Intervaltimer在设置向导中周期选择1msec,预设置(PresetConfigurations)中选择Full-featured。
图8.6JTAGUART接口 图8.7Avalon总线定时器
(5)添加外部Flash。
设置Flash地址宽度为20bits,带宽为16bits,如图8.8所示。
图8.8添加外部Flash
图8.8添加外部Flash(续)
如果用户程序和数据比较大,超出了EPCS1的容量,则程序和数据可以保存在普通Flash中。Flash的烧写可以采用NIOSIIIDE的“FlashProgrammer”来烧写,具体操作过程请参考/altera/kits/NIOS2/documents目录下“ug_NIOS2_flash_programmer.pdf”。
(6)添加外部SDRAM。
通常的系统都需要用户指定一个内存空间,这个内存是指RAM,可以是片上的,也可以是片外的SDRAM或SRAM等。如果用户程序较大,超出了EP1C20所能定制的最大片上RAM容量,则也可以将程序放在SDRAM中运行。
将SDRAM进行如图8.9所示的设置。
图8.9添加外部SDRAM
(7)设置Avalon外部总线。
软件使用Avalon接口来连接片上元件和Avalon主从端口的。在NIOS开发板上,要实现NIOS系统与FPGA片外
片上可编程系统 SOPC FPGA NiosII 相关文章:
- 基于FPGA的片上可编程系统(SOPC)设计之:Altera公司的NIOS II解决方案(06-05)
- 基于FPGA的片上可编程系统(SOPC)设计之:基于FPGA的SOPC系统组成原理和典型方案(06-05)
- 单片DSP处理器功能系统的SOPC技术设计(01-12)
- 基于DSP和SOPC数字信号发生器的设计(01-05)
- 基于Linux的SoPC应用系统设计(04-23)
- 基于DSP的实时数据处理系统浅析(02-28)