写在最前面,由于我没有参加活动,我用的是自己的板子EP2C8F256C8N,所以工程大家是用不上的,就不传了,全当分享一下思路吧~~~sorry!
前言
NIOS II是altera出的一款可以自己定义的32位软核,可以嵌入到大部分的altera的FPGA中,详细的介绍网上大把,我就不详说了。其实,网上关于NIOS的教程也是大把,可能是我人品比较差,反正不是所有的都能成功,经过一晚的摸索,也搞定了NIOS的最简单的工程建立方法。
下面进入正题:
先建立一个Quartus II的工程 (PS之前一直用的8.1。一直没成功。我认为是软件问题,果断卸了装9.1SP1,居然成功了。后来发现时我之前操作方法不对。当然这是后话了)。
建工程不用说了吧(提示一下 目录不允许有空格 不允许有中文名)
建好以后菜单栏tools->sopc builder出现sopc builder界面,会有个弹窗让你取个名字,这随便了爱叫啥叫啥,仍旧是不允许有空格 不允许有中文名。
1、设置一下clk,我设置为50MHz;
2、在左边的栏目里选memorios and memory controllers ->SDRAM->SDRAM controller双击,根据你的板子情况设置一下,我板上的芯片是三星的K4S561632H-UC75,所以修改位宽为16位,地址宽度为13,其他默认直接finish,选到那个文件,F2修改名字为SDRAM;
3、在左边的栏目里选 memorios and memory controllers ->FLASH->EPCS开头的那个(太长懒得打了)默认参数直接finish,同上修改名字为epcs;
4、同上 在interface下找到JTAG UART,默认参数直接finish,同上修改名字把_0去掉;
5、在左边的栏目里选processors->nios ii processor 双击,设置你的CPU选项,我为了节省资源,方便编译,选取NIOS II/s,同上去掉了硬件乘法器,RESET为epcs,except那个选SDRAM。Next,把缓冲改为2k,直接finish,改名字为cpu;
6、找到system id这个双击默认参数finish,这个一定要改名,而且必须为sysid。
7、然后再找到parallel IO,默认参数finish,改名;
8、找到Interval Timer,更改预置(Presets)选项为 Full-featured ,默认设置Finish。(这个也可以不要)
然后.....然后就建完了,自动分配下,点击菜单栏的SystemàAuto-Assign Base Addresses和SystemàAuto-Assign IRQs,然后Generate。
一般都是successful的,然后关掉回到qII,新建一个原理图模式输入的窗口,双击把nios的那个放在窗口中,右击自动生成管脚,为了适配之前给的tcl管脚文件,修改一下管脚名字以适应,当然第一次的话,可以不这么做。在空白处双击,建立一个ALTPLL,clk为有源晶振的输入,输出为两个一个是50MHz,另一个是偏移-75度的50MHz时钟。连接内部以及外部管脚。编译,确保无error。再view->第一个->tcl console把tcl的内同copy过去,回车。看看pin planner有没有都填上,如果没有tcl文件那就一个一个在pin planner上输入吧!
在编译一次,我的结果是这样的:
Fitter Status : Successful - Sun Sep 30 21:13:13 2012
Quartus II Version : 9.1 Build 304 01/25/2010 SP 1 SJ Full Version
Revision Name : test
Top-level Entity Name : test
Family : Cyclone II
Device : EP2C8F256C8
Timing Models : Final
Total logic elements : 2,885 / 8,256 ( 35 % )
Total combinational functions : 2,653 / 8,256 ( 32 % )
Dedicated logic registers : 1,634 / 8,256 ( 20 % )
Total registers : 1703
Total pins : 45 / 182 ( 25 % )
Total virtual pins : 0
Total memory bits : 33,216 / 165,888 ( 20 % )
Embedded Multiplier 9-bit elements : 0 / 36 ( 0 % )
Total PLLs : 1 / 2 ( 50 % )
完了之后打开NIOS II IDE(不知道为什么,反正我用EDS最后不能run,但是整体编译速度比IDE快很多)如果是第一次打开软件,会有个窗口,打上√,确认就行。
然后file->new->project->nios II C/C++ application 填上名字 选择工程中的ptf文件 会自动读取的,左下角那个地方选count binary然后finish。右击工程build project。等待。。。。
完了之后会在console里提示的。有错误请自行查找下。然后连上jtag,板子上电。选择tool里的quartus II programmer 找到之前的sof文件下载到fpga中。然后右击project,run as->nios hardware这里面要设置一下硬件连接,添加两个文件,一个是elf另一个是之前那个sof。完了之后下载,如果是正确的 在一堆提示之后应该能看到类似以下内容:
这样的数据,对应的led应该从00~ff一个循环,之后就没有了。
如果是这样,那么恭喜你,你的NIOS设备基本测试完成了!!!!