Altera官方推出NIOS已经很久了,个人感觉C+V代码配合会是后面FPGA使用的一个主流,由C来完成一些对时序要求不高,对功能要求偏高的部分,比如运动控制等;由V来配合时序完成高时序要求的需求以及一些底层的驱动供C来调用,这样的设计结构感觉更加合理有效,也更加适合于一些大型工程。但是有一点不好的就是程序可移植性可能有点差,毕竟使用Eclipse编辑环境(我也不确定,反正个人感觉移植起来有些麻烦)。

好了,本文就开始我们的第一个例程,HelloNIOS。软件语言中经典的HelloWorld在这里变成了HelloNIOS,看起来也很不错。

简介

其实,网络上有关于NIOS的教程已经很多了,本文在此只作为我自己的一个学习使用记录。首先,要用NIOS,你肯定得有相匹配的硬件吧,在这里先来介绍下我自己的硬件环境。

  • 硬件:开发板黑金AX301
  • 软件:QuartusII 13.0sp1,NIOS13.0sp1

最关键的因素就是这些了,开发板很普通,买了后觉得资源有些少了,不过一些简单的开发以及使用NIOS那还是足够了,物尽其用,搞起来。

先说下所参考的一些资料,《NIOS的奇幻漂流》和《NIOS那些事儿》,感觉都是很经典的资料,完全可以用作入门。

Quartus工程建立

这里和普通的硬件Quartus工程建立没有什么区别,在这里就不多说,简要提过。

  1. 建立Quartus工程,分配好各部分所在文件夹(这是个人习惯,现在我一般的框架如下图)

    其中ipcore用来存放自创建的官方IP核,tcl用于存放tcl引脚文件,verilog用于存放个人编写的V代码。

  2. 创建对应的PLL,这里是否创建PLL自行决定,因为我们要用到板上资源SDRAM,其需要100MHz的时钟,而我们的输入是50MHz,所以此处需要一个PLL。

  3. 建立完PLL后,我们建立Qsys。Qsys就是之前版本中的SOPC Builder,其主要就是创建一个虚拟SOPC出来。Tools->Qsys可以打开,打开后我们可以看到如下界面。

  4. 依次添加NIOS、SYSID、SDRAM、EPCS、JTAG、添加后进行改名连线。改名方法为选中NAME后按“2”或者“R”即可,我一般会将这几部分的名字全部改为大写。其中可能会有部分Warning或者Error出现,下面对一些需要注意的点进行了说明。

    • 下图为添加所有部件后的示意图
    • 按照一定的规则连线后,可以参考下图形式连线,下方仍然发现了部分如下Error的存在。

    • 这里就需要对NIOS核进行一定的设置,双击打来NIOS核,进行如下的设置。设置完成后就可以看到Error消失了。
    • 当然这时下方还会出现一些有关于地址线错误的Warning或者Error,这是由于很多部件的地址占用空间相同了,这在右侧可以看出,类似于如下截图。
    • 这时可以点击System->Assign Base Address进行地址线的自动分配,这里我有一个习惯就是会把EPCS模块的地址线固定为0x0,从上面连线图也可以看出。
    • 以上完成后要注意我们最后一列的中断IRQ,也要记得将他们连起来。
    • 之后点击上边标签栏中的Generation进行生成,该页面记得将以下部分勾选。
    • 至此,Qsys中的配置部分结束。
  5. 在Quartus顶层中添加PLL和Qsys,参考资料上多用原理图的形式进行连接,我一般是使用代码的方式进行连接,这部分就看个人喜好了。使用代码连接可移植性好些但是没有原理图形式直观。

  6. 然后编译,将SOF下载到FPGA开发板中。至此,Quartus中的所有工作完毕。

NIOS工程建立

这部分按照参考资料说明书来即可,十分简单,简写如下。

    1. 选择一个空间用于存放工程,我一般放于Qsys的目录下
    2. File->New->NIOS II Application and BSP Template
    3. 选中Quartus下的sopcinfo文件,然后命名工程,一路Next就行
    4. 工程生成后,选中左边的文件夹,右键NIOS II->Generate BSP
    5. 生成后,Ctrl+B进行编译
    6. 编译完成后,打开Run-Configuation,进行下载配置,Apply,Run
    7. 最后就可以等待调试框中的结果了
    8. 最后放上成功的结果

[原创]迈出NIOS的第一步,HelloNIOS的更多相关文章

  1. 迈出物联网的第一步,玩儿一下Arduino

    大家知道,现在物联网Internet of Things(IoT) 方兴未艾,各种智能设备层出不穷,手表.手环.甚至运动鞋等可穿戴设备,还有智能家居产品,无时无刻不冲击着我们的思想和眼球.Autode ...

  2. Openstack(企业私有云)万里长征第一步——安装

    一.前言 单位新进了十几台服务器,建了一个高标准的一体化机房,状似刘姥姥进大观园的我,从机房规划到企业私有云搭建一一重头学来,除了机房泥墙其他基本都涉猎到了. 从企业私有云这个名字就能看出这是多么复杂 ...

  3. 创业小记:ALL IN才是迈出创业第一步的关键

    对于创业而言,能卖出这创业第一步的,大多都经过了长期反复的心理拷问与折磨. 因为当你迈出创业的那一步,你可能需要面对的是毫无收入保障的生活,以及后果自负的结局. ALL IN才是迈出创业第一步的关键( ...

  4. C#开发学习人工智能的第一步

    前言 作为一个软件开发者,我们除了要学会复制,黏贴,还要学会调用API和优秀的开源类库. 也许,有人说C#做不了人工智能,如果你相信了,那只能说明你的思想还是狭隘的. 做不了人工智能的不是C#这种语言 ...

  5. 高德携手阿里云发布“LBS云”,账户打通只是第一步

    位置.游戏.视频,是公认的基于云计算的三大移动端应用方向.而今,LBS云有了更多进展,在高价值应用与云平台之间实现了资源打通和融合,高德迈出了实质性的一步. 高德地图副总裁郄建军(左)与阿里云业务总经 ...

  6. Django第一步

    对于一个web框架,掌握了三部分的内容,就可以说是迈出了第一步. 1. 准备开发环境 2. 创建一个工程,并运行 3. 开发hello world应用 1. 准备环境 首先应该是安装python和dj ...

  7. java学习第一步,使用IntelliJ IDEA编写自己的第一个java程序

    首先下载java的jdk,然后说一下IDEA的配置 IntelliJ IDEA目前公认的最好的java开发工具,不过一般的学校的教学还是使用eclipse来进行java的开发.所以老师一般只会教你如何 ...

  8. 开发thinkphp的第一步就是给Application目录(不包括其下的文件)777权限, 关闭selinux

    开发thinkphp的时候, 总是会出现各种个样 的奇怪的毛病, 比如: 说什么Application目录不可写, 比如: 说什么 _STORAGE_WRITE_ERROR, 不能生成 Runtime ...

  9. ElasticSearch第一步-环境配置

    ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSearch第四步-查询详解 Elasti ...

随机推荐

  1. Model View Controller

    On the iPhone or iPod touch, a modal view controller takes over the entire screen. This is the defau ...

  2. IntelliJ IDEA 使用说明(For Eclipse user)

    IDEA和Eclipse主要在用户界面,编译方法和快捷键上有所差别. 1. 用户界面 1.1 No workspace IDEA 的Project相当于Eclipse的workspace,具体概念对比 ...

  3. Delegate, Method as Parameter.

    代理, 将方法作为另一方法的参数. 类似C里面的函数指针. using System; using System.Windows.Forms; using System.Threading; name ...

  4. IntelliJ IDEA 中文乱码问题解决办法

    自己最近在使用IntelliJ IDEA,发现总是出现中文乱码的问题,在网上找了很多教程,发现真是“天下文章一大抄”.还不如自己动手试着解决一下. 1.编辑器以及调试信息中文乱码问题 解决方案: 选择 ...

  5. sencha touch+phonegap+node.js打包

    这讲我们来讲解下如何使用phonegapa创建项目环境并通过她们将sencha touch打包成app,这里我们只讲解打包android的apk,打包ios的过程有点类似,但是需要在mac环境下,最后 ...

  6. syntax error near unexpected token `then'问题的解决

    #!/bin/bash #if program test echo 'a:' read a if  [  "$a"  =  "English"  ];then ...

  7. SQL存储过程解密

    首先要建立一张表和一个存储过程: SQL_DECODE表: CREATE TABLE [dbo].[SQL_DECODE]( ,) NOT NULL, [SQLTEXT] [nvarchar](max ...

  8. 针对APP的测试过程和重点关注内容,做以下梳理和总结

    转载自金阳光测试:http://blog.sina.com.cn/s/blog_12df1b9e60102vy57.html   1. 首先是测试资源确认及准备 (1)产品需求文档.产品原型图.接口说 ...

  9. python模块之configparser

    configparser用于处理特定格式的文件,其本质上是利用open来操作文件. # 注释1 ; 注释2 [section1] # 节点 k1 = v1 # 值 k2:v2 # 值 [section ...

  10. gdb汇编调试

    GDB调试汇编堆栈分析 代码: sudo apt-get install libc6-dev-i386命令安装所需库 进入之后先在main函数处设置一个断点,再run一下,使用disassemble指 ...