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. div,li,span自适应宽度换行问题

    <ul class="news">    <li><span class="lbl">右对齐,换行显示的解决方法</s ...

  2. 安装部署完office web apps 后,无法浏览Word

    安装部署完office web apps 后,在sharepoint 2010浏览器中浏览Word提示:“由于出现意外错误,Word Web App 无法打开此 文档 进行查看. 要查看此 文档,请在 ...

  3. 剑指Offer:面试题30——最小的k个数(java实现)

    问题描述: 输入n个整数,找出其中最小的k个数 思路1: 先排序,再取前k个 时间复杂度O(nlogn) 下面给出快排序的代码(基于下面Partition函数的方法) public void Quic ...

  4. Windows WMIC命令使用详解

    本文转载出处http://www.jb51.net/article/49987.htm www.makaidong.com/博客园文/32743.shtml wmic alias list brief ...

  5. Ajax跨域请求

    客户端前台: //浏览器支持跨域访问,置于Ajax方法前$.support.cors = true; 服务器后台: //设置服务器端对于CORS的跨域请求支持,置于后台方法第一行 Response.A ...

  6. jsp+tomcat+mysql+sevlet+javabean配置过程

    在配置jsp开发环境的过程中会碰到不少问题,感谢网上的许多前辈的经验总结,作者cl41的JSP连接Mysql数据库攻略和作者Saulzy的MySQL学习笔记等文章对我来说简直是雪中送碳,为了帮助象我一 ...

  7. projecteuler Summation of primes

    The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all the primes below two milli ...

  8. 常用的dos命令

    cd 进入一个目录 cd .. 返回上一个目录 dir 遍历目录 上下键 查找输入过的命令 Tab键 命令自动补齐

  9. HTTP服务&Ajax编程知识点导图

  10. <a>标签中的href="javascript:;"是什么意思?

    例子:<a href="javascript:;">我的大学</a> javascript: 是一个伪协议 javascript:是表示在触发<a&g ...