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. Burp SuiteBurp Suite使用详解

    http://www.2cto.com/Article/201209/153312.html Burp Suite是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务.请求的拦截和修改 ...

  2. winform窗体之间通过 windows API SendMessage函数传值

    -----------------------------------------------------------‘接收窗体’代码.cs------------------------------ ...

  3. 总结一下 input propertychange

    最近做的一些项目,经常遇到输入框检查的需求,最常见的是即时搜索,今天好好小结一下. ========================================================== ...

  4. c#与js中10进制16进制的转化,记录防忘

    js: var param="11"; param=parseInt(param,16);  //17 param=parseInt(param,10);  //11 //后面的参 ...

  5. jquery用append添加按钮之后,按钮监听无法使用的解决方法

    <!DOCTYPE html><html><head><meta charset="utf-8"> <title>< ...

  6. 【SSM 4】Mybatis逆向生成工具

    在上一篇博客中说到,Mybatis是灵活的SQL语句应用,不想Hibernate一样有其封装好的方法,那么,当我们用Mybatis的时候(Hibernate),我们都需要编写其实体类,和配置文件.本篇 ...

  7. 仿google art图片预览算法及demo(web版本)

    演示地址: http://codeman35.itongyin.com:19001/v3/preview.html 功能支持:拖动 滚轴放大缩小 按钮放大缩小 鹰眼预览 鹰眼拖动等功能

  8. 5、SQL Server数据库、T-SQL

    SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...

  9. 用HttpWebRequest提交带验证码的网站

    using System; using System.Drawing; using System.IO; using System.Net; using System.Text; using Syst ...

  10. RPC hessian简单案例

    RPC(Remote procedure call) 远程服务调用. dubbox就是RPC框架,hessian是简单的RPC实现. 首先需要有接口及其实现类: 接口. public interfac ...