NIOS II开发备忘录

大概有一年没做NIOS II的开发了,回想上一次做NIOS II还是去年做毕业设计的时候。那时候做的是基于SOPC的频率特性测试仪,我大约花了2个月的时间,从无到有的学习了NIOS II开发。学习过NIOS II的都知道,如果没有人带着学,那么最开始的那一段时间一定是最痛苦的,因为几乎每走一步,总会遇到一堆错误。我当时上手的时候,SOPC Builder已经退出了历史舞台,取而代之的是全新的Qsys环境。虽然说是全新,也不过就是在原来的SOPC Builder上升级了一下,但是,升级后,所有的总线都得自己手动来连接了。这让人非常郁闷,因为网上能够找到的教程,大部分都还是讲的SOPC Builder的,SOPC Builder中,这些线是不需要我们自己去连接的,都是默认连接好了的。因此只能硬着头皮,一点一点的去摸索,大约花了一个半月的时间吧,每天都是在痛苦纠结中度过,每天都会遇到各种问题,然后百度上,QQ群里面找答案。经过了这么长时间的一段努力之后,终于,NIOS II开发环节中会遇到的各种问题我都遇到了,也都找到了科学的或者旁门左道的解决方法。

如今,因为项目需要,再次上马NIOS II。不过现在的开发相对以前来说,就要轻松多了,首先是经过一年的深入学习,对于Altera的各种开发环境和工具都已经掌握的很熟练了。其次,我认为也是最重要的,我学会了科学的查找资料,解决问题的方法。以前遇到问题都是各种百度,对官方手册有着绝对的畏惧心理,没有信心去看。在经过了一段时间的项目强化训练之后,回头再来看看,原来看英文手册也就那么回事。现在的我,遇到问题,首先想到的就是去英文数据手册中找答案了。

废话了这么多,现在来总结一下,一年后再次上手NIOS II开发遇到的各种问题与解决方法。当然,我的方法不一定就是最科学的,如果大家有更加科学的解决方法,欢迎探讨。

?

结合上一篇介绍在DE1-SOC上运行NIOS II + UC/OS的内容,本篇就不再详细介绍整个流程,只把过程中容易出错的地方列举出来,以在以后自己忘记了之后能有个查阅的地方。

?

  1. 在需要最终将程序固化到EPCS的系统中,需要添加EPCS/EPCQx1 Serial Flash Control。该控制器的reset信号一定要与jtag debug module reset信号(cpu模块中)相连,另外,最好其他所有模块的reset信号都与jtag debug module reset信号连接上,否则,在最终通过Flash Programmer固化程序时,会出错。如下图所示:

  2. epcs的Avalon Memory Mapped端口需要与CPU的data_master和instruction_master均进行连接。如下图所示:

  3. EPCS的external信号需要导出到顶层(针对Cyclone III和Cyclone IV器件),以便进行引脚分配,如下图所示:

    这里,导出到顶层后具体怎么分配引脚,在Altera的《Embedded Peripheral IP User Guide》中有相关介绍,

4、CPU的复位向量设置为EPCS,CPU的异常向量设置为内存(on_chip_memory或SDRAM),如下图所示:

时间: 2024-11-13 06:51:02

NIOS II开发备忘录的相关文章

给NIOS II CPU增加看门狗定时器并使用

给NIOS II CPU增加看门狗定时器并使用 ? 配置看门狗定时器: 设置计时溢出时间为1秒 计数器位宽为32位 勾选No Start/Stop control bits 勾选Fixed period 不勾选Readable snapshot 勾选System reset on timeout.(Watchdog) 不勾选Timeout Pulse (1 clock wide) 这部分配置可以参见"Embedded Peripheral IP User Guide.pdf"中Inte

NIOS II ecliplse中出现Symbol 'XX_BASE' COULD NOT BE RESOLVED解决

NIOS II ecliplse中出现Symbol 'XX_BASE' COULD NOT BE RESOLVED解决 在nios II中,明明system.h中定义了#define xxx_base 0x00000010,可是在编写程序时,调用IORD(xxx_base)或IOWR(xxx_base)时,总是提示Type 'xxxx_base' could not be resolved错误,重新编译不行,重新生成BSP也不行. 在nios II开发中,加入了一个PIO以后,也重新genera

Nios II(一)

Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Pausing target processor: not responding.Resetting and trying again: FAILEDLeaving target processor paused 网上总结三点原因致使这个问题的发生: 1.复位键的管脚没有对应好,导致报错: 2.给sdram的clk,与cpu的clk没有滞后-75的相位: 3.如果用锁相

nios ii boot过程

目录 1       概述....................................................................... 1 2       几种常见的boot方式......................................................... 1 2.1.................................................................................

第一个NIOS II工程using Qsys-------Let Qsys Say Hello

1.新建工程 2.添加原理图文件 注:似乎Nios II工程都需要涉及到原理图编程. 3.进入Qsys进行内核设计 注:启动Qsys后,系统已经为内核默认添加了一个组件clk_0. 4.设置时钟名字和频率 注:开发板上的时钟输入为50MHz. 5.添加Nios II核   注:选择Nios II Core 为:Nios II/f,其他选项卡均保持默认设置. 6.进行时钟连接操作   7.添加On-Chip-Memory(RAM)核   注:同时,需要设定片上内存大小,在此,我们设定为40960,

关于NIOS ii烧写的几种方式(转)

源:http://www.cnblogs.com/bingoo/p/3450850.html 1. 方法一:.sof和.elf全部保存在FPGA内,程序加载和运行也是在FPGA内部. 把FPGA的配置文件.sof通过JTAG方式下载(其实是在线运行)进入FPGA本身,此时在NIOS II的界面中,点击“RUN”—“Run As Hardware”可实现在线运行.此时在SOPC配置时,需要有片内mem_rom和mem_ram,程序的复位向量为mem_rom,偏移0x00:异常向量为mem_ram,

给NIOS II CPU添加一颗澎湃的心——sysclk的使用

给NIOS II CPU添加一颗澎湃的心--系统时钟的使用 ? 本实验介绍如何在Qsys中添加一个定时器作为NIOS II的心跳定时器,并在NIOS II中软件编程使用该定时器. 将上一个实验watchdog工程复制.粘贴并重命名为08_sysclk_timer.在Quartus II中打开该工程,然后点击Qsys快捷图标打开Qsys组件,如下图所示: 在Qsys中,打开工程目录(08_sysclk_timer)下的mysystem.qsys工程. 打开后,在左侧的IP列表中输入"timer&q

【小梅哥SOPC学习笔记】切换NIOS II CPU的主内存后软件中需要注意的几点设置

切换NIOS II CPU的主内存后软件中需要注意的几点设置 有时候,我们可能面对这样一种情况: 1. 我们创建一个SOPC系统,并在QSYS中设置NIOS II的复位地址和异常地址都指向SRAM: 2. 我们创建了正确的NIOS II软件工程并能够正常运行 3. 由于某种需求(如SRAM内存不够用了,需要换成内存更大的SDRAM),我们在面在QSYS中将NIOS II CPU的复位地址和异常地址修改为SDRAM 4. 我们需要继续使用之前创建的NIOS II软件工程. 这里,如果我们更改后直接

NIOS II介绍

NIOS II是一个用户可配置的通用32位RISC嵌入式处理器.处理器以软核形式实现. NIOS的开发包括硬件和软件开发两部分.硬件是在Quartus II中实现的,而软件开发是在NIOS IDE中实现的. 所谓硬件开发,就是用Quartus II和SOPC builder来建立自己需要的软核.