NIOS II 例程之Hello CS

1 新建工程

在quartus ii 中新建一个工程(hello.Prj)

2 Qsys硬件系统搭建

在quartus ii中开启Qsys:

打开Qsys界面发现System Contents下已经有了一个clk_0,如下图所示。为搭建一个最小系统还必须添加一些必要组件,比如NIOS II 处理器、JTAG、onchip_ram、systemID等。

添加JTAG:

添加NIOS II 处理器

添加onchip_ram

添加pio

添加system ID

在system contents 的connections进行连接,时钟clk和reset与所有组件的clk和reset连接,nios2_qsys的data_master和instruction_master 均与
代表onchip_memory2_0 的从机总线s1 连接上。而其他作为总线slave 的外设均连接到nios2_qsys_0的data_master上

将需要与外部连接的接口属性设置为export,这里将pio设置为输出如图所示:

这里NIOS II 处理器还要设置一下,将其Reset Vector和Exception Vector均设为onchip_mem:

让后进行create globle reset,自动分配地址和中断操作:

很多外设都有中断信号,在我们的Qsys中也需要将对应的IRQ一列中的外设和NIOS II处理器连接上。在没有连接是,对应外设上有一个空心的小点,如果点上去,则不是实心的
小圆,而是可以填写数字的一个空心大圆,对应可以写上它的中断优先级。

最后在generation中进行相关设置,13.0 simulation和testbench处都设置为none ,否则容易报错。

点击generation 进行系统生成。

3 例化Qsys

回到Quartus II,我们新建一个名为hello.v的verilog源代码文件。然后输入以下代码;

module hello(clk,rst_n,led);
input   clk;
input   rst_n;
output  led;
     myqsys u0 (
        .clk_clk                        (clk),                        //  clk.clk
        .reset_reset_n                  (rst_n),                  //  reset.reset_n
        .pio_external_connection_export (led)  // pio_external_connection.export
    );
endmodule

然后将myqsys.Qsys和ex2.v文件添加到工程中

对工程进行综合编译。

进行引脚分配,然后再最终综合,布局布线。。。。。

4 EDS中建立软件工程

打开EDS软件。首先弹出如下的workspace路径设置对话框,采用默认设置并点击OK进入软件。

进入EDS软件界面

菜单栏点击File?New?Nios II Application and BSP from Template新建一个模板工程。

如图加载系统硬件,即sopcinfo文件,

选择好SOPC文件后,默认选中CPU为nios2_qsys,给软件工程命名为ex3swprj,最后
再选择空白工程模板,然后点击Finish完成工程的创建。

在ex2工程中新建一个main.c文件

打开main.c文件进行软件编程

/*
 * main.c
 *
 *  Created on: 2015-3-30
 *      Author: Administrator
 */
#include "alt_types.h"
#include "altera_avalon_pio_regs.h"
#include "sys/alt_irq.h"
#include "system.h"
#include <stdio.h>
#include <unistd.h>

void delay(void);
int main(void)
{
alt_u8 timer = 0;
while(1)
{
printf("Hello CS!I am NIOS II! %d\n",timer);
delay();
timer++;
}
return 0;
}
//延时函
void delay(void)
{
alt_u32 i=0;
while(i < 4000000)
{
i++;
}
}

先不要对工程进行编译,首先对BSP Editor进行一定的设置。

进入BSP Editor,需要按照后面一个表格做设置,完成后点击Generate按钮完成后Exit即可。

前面的BSP Editor中按照如下要求做设置。另外提醒大家注意的是,每次硬件工程(在Quartus II中)的任何更改,建议在编译软件工程前逗号重新在BSP Editor中Generate一次,
这是为了保证软硬件的一致性,否则编译将出错。

接着回到EDS中,分别选中ex2swprj_bsp和ex2swprj,然后右键点击选中Build Project。这就完成了软件平台的搭建

5 板级调试

首先下载sof文件到FPGA中

在EDS里,选中应用工程,右键点击并选择Rus as?Niso II Hardware。第一次操作通常会弹出Run Configuration界面,首先在Project一栏中选择好当前工程和当前的软件下载文
件(在应用工程目录下的elf文件 )。

在Target Connection页面,需要检测下载硬件信息。可以多次点击右侧的Refresh Connections按钮,直到左侧的Connections下出现我们的下载线信息,此外,我们还需要让左下角的Run按钮有效(即变亮可以点击)。点击Run开始软件的在线运行。

观察Nios II Console窗口:

至此已完成了一个hello cs的NIOS II 例程。

2015 3月30日

CSLegened

时间: 2024-12-29 07:13:38

NIOS II 例程之Hello CS的相关文章

nios ii boot过程

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

关于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

使用华邦的SPI FLASH作为EPCS时固化NIOS II软件报错及解决方案

Altera器件有EPCS系列配置器件,其实,这些配置器件就是我们平时通用的SPIFlash,据AlteraFAE描述:"EPCS器件也是选用某家公司的SPIFlash,只是中间经过Altera公司的严格测试,所以稳定性及耐用性都超过通用的SPIFlash".就本人看来,半导体的稳定性问题绝大部分都是由本身设计缺陷造成的,而成熟的制造工艺不会造成产品的不稳定:并且,现在Altera的器件在读入配置数据发生错误时,可以重新读取SPIFlash里面的数据,所以在工艺的稳定性以及设计的可靠性

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.如果用锁相

uCOS 在 NIOS II 上的移植

工具:Quartus II 器件:EP4CE15F17C8 1.File->New Project Wizard: 2.点击两个Next,进入Family&Device Settings,选择器件 3.Finish,建立工程完毕,点击Tools->SOPC Builder,输入名字后,OK 4.修改clk_0为100MHz 5.component library中搜索nios,双击Nios II Processer 6.Finish 7.搜索epcs,双击epcs Serial...F

在做nios ii uart232 实验时出现undefined reference to `fclose&#39;等错误。

程序如下 #include<stdio.h> #include<string.h> #include "system.h" int main () { char* msg = "Detected the character 't'.\n"; FILE* fp; char prompt = 0; printf("Please Enter some characters: \n"); fp = fopen ("/de

Nios II 系统从EPCS器件中启动的设置过程

先Reset Vector EPCS Exception Vector Ram工程Program memory ,Read-only data memory...均为RAM.Hardware Image选择 EPCS编译.编译:先把POF文件下载到EPCS中.放到最底层后通过FLASH PROGRAMER 将工程和.SOF文件下载到EPCS中复位启动即可. Nios II 系统从EPCS器件中启动的设置过程,布布扣,bubuko.com

NIOS II常用函数整理-感谢slam原创

IO操作函数函数原型:IORD(BASE, REGNUM) 输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量函数说明:从基地址为BASE的设备中读取寄存器中偏移量为REGNUM的单元里面的值.寄存器的值在地址总线的范围之内.返回值: - 函数原型:IOWR(BASE, REGNUM, DATA)输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量,DATA为要写入的数据函数说明:往偏移量为REGNUM寄存器中写入数据.寄存器的值在地址总线的范围之内.返回值: - 函数