fpga新建nios
2015-05-06 19:38 工匠小建 阅读(750) 评论(0) 编辑 收藏 举报[FPGA]基于Qsys的第一个Nios II系统设计
一、基本说明
1、软件平台:Quartus II 13.0(64-bit)
Nios II 13.0 Software Build Tools for Eclipse
2、硬件平台:Altera Cyclone II EP2C8Q208C8N
二、设计目标
完成FPGA平台上的“Hello Word”实现,实现方式:基于Qsys的Nios II系统设计。
三、具体步骤
1、打开Quartus II 13.0(64-bit),新建一个工程,File -> New Project Wizard…,忽略Introduction,之间单击 Next> 进入下一步。分别设置工程工作目录、工程名称。这里需要注意的是工程工作目录中请使用英文,不要含有空格等,否则在后面使用Nios II IDE的时候会出现问题。设置好后如图1所示。然后进行下一步。
图 1 设置工程工作目录、工程名称
2、添加已经存在的文件,这里我们没有需要添加的文件,直接单击 Next> 进入下一步。进行器件设置。我们使用的 Cyclone II 家族的 EP2C8Q208C8 芯片,选择好后直接进入下一步。进行EDA工具设置,由于我们工程中不进行仿真等,故不进行设置,如果需要进行ModelSim仿真,则在Simulation行中,选择Tool Name 为ModelSim-Altera(这里根据所安装的ModelSim版本进行选择),Format(s)选择为Verilog HDL(这里也是根据所掌握的硬件描述语言进行选择)。点击 Next> ,进入了Summary(摘要)页面,然后单击 Finish 完成即可。
3、新建 Block Diagram/Schematic File (方块图/原理图文件)。单击 File -> New..,选择Design Files中的Block Diagram/Schematic File,单击OK即可。完成后结果如图2所示。
图 2 新建Block Diagram/Schematic File
4、启动Qsys 工具,进行硬件部分设计。单击 Tools -> Qsys ,进入Qsys设置界面,如图3所示。系统已经默认添加了时钟模块,名称为 clk_0 ,这里我们选中 clk_0,右击,选择Rename,将其名称更改为clk。以下再添加任何模块,我们都进行类似的名称更改,更改名称的方法类似,就不在重复叙述了。
5、添加软核处理器的各部分模块。我们总共需要添加Nios II Processor、On_ChipMemory(RAM or ROM)、JTAG UART、System ID Peripheral这4个模块。首先熟悉一下 Qsys 的界面。左面Component Library,是系统提供的元件库,里面有一些构成处理器的常用模块。右面是已经添加到系统的模块,也就是说,Nios II 软核处理器是可以定制的,根据具体需要来。我们在Component Library中搜索Nios II Processor,双击即可进行配置。首先需要选择的是Nios II 核心的类型。Nios II 软核的核心共分成三种,为e型、s型以及f型。
图 3 Qsys设置界面
e型核占用的资源最少,功能也最简单,速度最慢。s型核占用资源其次,功能和速度较前者都有所提升,f型核的功能最多,速度最快,相应的占用资源也最多,选择的时候根据需求和芯片资源来决定,这里我们选择s核。然后单击 Finish,结束当前配置。
下面添加片内存储器,在元件库中搜索 On Chip Memory。双击进行设置。我们主要设置Size中的Data width和Total memoy size。Data width设置的是数据位宽,这里我们设置成16位。Total memoy size设置的是片内资源的大小,需要根据芯片资源进行合理设置,这里我们设置为10240 bytes。单击 Finish,结束当前配置。
下面添加Jtag下载调试接口。在元件库中搜索 jtag uart。双击进行设置。由于我们的系统没有特殊要求,因此这里我们选择默认配置即可。单击 Finish 结束当前配置。
下面添加系统ID模块。系统ID是系统与其他系统区别的唯一标识。在元件库中搜索 system id peripheral,双击进行设置。这里我们随便进行设置,如设置为1234。单击 Finish,结束当前配置。
下面需要进行的连线,即将右面 Connections栏目中的相关线通过设置节点进行连接。首先所有模块的clk和复位reset需要连接起来。然后片内存储器On-Chip Memory的s1和处理器nios2_qsys的data_master和instruction_master相连。JTAG调试模块jtag_uart的avalon_jtag_slave和处理器nios2_qsys的data_master相连。系统ID模块sysid_qsys的control_slave和处理器nios2_qsys的data_master相连。最后,处理器nios2_qsys的中断和jtag_uart的中断相连接。最终的完成效果如图4所示。
图 4 Qsys Connections完成效果
6、进行软核的相关设置。首先双击nios2_qsys,进入处理器设置模块。在Core Nios II栏目下,将Reset vector memory 和 Exception vector memory 设置为onchip_memory.s1。
7、然后,单击 System -> Assign Base Addresses,这时候我们会发现下部Messages窗口中原先的错误全部没有了,变为0 Errors,0 Warnings。如果不是这个结果,返回去按步骤检查。
8、接着,单击 File -> Save,进行保存,这里我们保存文件名为nios_qsys。
9、最后,选择Generation选项卡,设置Create simulation model为None,然后单击下面的Generate,进行生成。时间较长,大家耐心等待。生成完成后单击close即可,然后关闭Qsys回到Quartus II界面。
10、双击Block1.bdf的空白处,打开Symbol对话框。单击右下角的MegaWizard Plug-In Manager…,进入宏模块调用界面,选择Creat a new custom megafunction variation,单击 Next> 进入下一步,在What name do you want for the output file下面的地址后面添加输出文件的名称,如原来内容为
F:/FPGAandCPLD/Demo/NIOS/HelloWord_nios/,
添加后为F:/FPGAandCPLD/Demo/NIOS/HelloWord_nios/pll_nios 。然后在右侧搜索框中搜索ALTPLL,选中即可,这一步主要为系统添加时钟模块,然后单击 Next>进入下一步。
11、弹出ALTPLL设置对话框,这里我们在 General栏目的What is the frequency of the inclk0 input?地方,将时钟更改为50MHz,然后连续单击 Finish完成操作,这时会弹出一个Quartus II IP Files对话框,单击Yes完成即可,不需要进行任何操作。然后单击Symbol对话框中的OK即可,然后将模块放在Block1.bdf中即可。
12、再次双击打开Symbol对话框,方法同第10步。选择左侧的Libraries -> Project –> nios_qsys,然后单击OK即可,将nios_qsys放置在空白处。
13、再次双击打开Symbol对话框,方法同第10步。在Name中输入input,这时右侧会显示输入信号图标,单击OK完成将其放置在空白处即可。重复此步骤,共添加两个输入到空白处,然后按照同样步骤添加两输入与门(and2)到空白处。
14、将两个输入信号图标更名为sys_clk和reset_n,然后按照图5所示连接摆放好。
图 5 连接图示
15、单击File -> Save,进行文件保存,名称默认即可,如helloword.bdf。
16、单击Assignments –> Pin Planner,添加两个Node Name为sys_clk和reset_n,对应的引脚为28和112。然后关闭Pin Planner对话框即可。
17、单击 Project -> Add/Remove Files in Project…,单击File name后面的浏览按钮,选择.qsys文件,单击Add将其添加进来,然后单击OK。
18、现在进行编译即可。单击Processing -> Start Complilation,进行编译。编译时间过长,大家耐心等待,通过后,将其下载到FPGA中,具体的下载过程,这里就不在追溯,大家可以参考其他资料学习。注意一点:下载后,不要断电,否则下载的东西全部丢失,这是由FPGA特点决定的,大家可以自己了解一下。
硬件部分到此结束,下面进行软件部分设计。
19、打开Nios II 13.0 Software Build Tools for Eclipse,首先,需要进行Workspace Launcher(工作空间)路径的设置,接触过Eclipse的朋友都熟悉,自己设定即可,需要注意的是路径中不要含有空格等,然后单击OK即可。
20、新建工程。单击File -> New -> Nios II Application and BSP from Template,弹出Nios II Application and BSP from Template对话框。先选择对应的SOPC系统,单击SOPC Information File name后面的浏览按钮,选择我们之前硬件部分做好的软核文件,后缀名为.sopcinfo,这里一定要注意,选择的文件一定要对应起来,否则会因为软硬不匹配导致系统失败。我这里选择的nios_qsys.sopcinfo,然后系统会自动读取CPU name,我们不用再进行设置,下面填写Project name,这里我们填
写为helloword,工程模板(Project template)使用默认的即可。然后单击Finish完成即可。这时候会在左侧的Project Explorer中生成两个工程文件,如图6所示。
图 6 生成的工程文件
我们双击打开helloword工程下面的hello_word.c文件,就可以看到c语言代码,我们添加一句printf("Hello word! \n"); 然后,右击我们的helloword工程,选择Nios II -> BSP Editor,进入Nios II BSP Editor配置界面。我们主要在main选项卡下hall中进行配置。具体配置内容见图7。然后单击Generate,生成BSP库。生成完成后,单击Exit退出即可。
21、下面我们编译helloword工程。右击选择Build Project。第一次编译的话,时间也会比较常,耐心等待一下。
图 7 Nios II BSP Editor配置
22、编译完成后,右击工程,选择Run As -> Nios II Hardware,弹出Run Configurations对话框,默认Project选项卡中Project name和Project ELF file name应该都是有内容的,没有的选一下。然后进入Target Connection选项卡,Connections中如果没有东西的话,单击右侧的Refresh Connection来查找我们的下载器,查找后我们单击System ID Prroperties…,进行系统ID检测,检查是否是我们之前设置的ID号,无误后点击Apply,然后再点击Run,这是程序会被自动下载,最终在Nios II Console选项卡中会显示下载完成后程序运行的结果,即发回两句话,具体效果如图8所示。
图 8程序运行效果
至此,整个实验结束,恭喜你坚持到最后并成功完成了本次任务,加油,少年!!