基于Nios-II实现流水灯

目录

  • 实验步骤
      • 1、新建Quartus项目,选择使用的芯片
      • 2、Qsys设计
        • 2.1 进入Tools -> Platform Designer
        • 2.2 设置时钟主频
        • 2.3 添加Nios-II Processor并设置
        • 2.4 添加JTAG并配置
        • 2.5 添加RAM
        • 2.6 添加PIO
        • 2.7 添加System ID Peripheral
        • 2.8 其他设置
      • 3、Quartus设计
        • 3.1 添加原理图文件
        • 3.2 添加qip文件
        • 3.3 设备引脚设置
      • 4、 Nios-II Eclipse设计
        • 4.1 进入Nios-II Eclipse
        • 4.2 新建项目
        • 4.3 编译与运行
      • 5、遇到过的错误
        • 5.1 Eclipse无法生成模板项目
        • 5.2 Exclipse Run As Hardware无法下载程序
        • 5.3 创建好Eclipse项目后,修改软核导致项目无法编译
    • 实验现象
    • 心得体会

实验步骤

1、新建Quartus项目,选择使用的芯片

基于Nios-II实现流水灯_第1张图片

这里我选择的芯片类型为EP4CE115F29C7,你也可以根据自己需要,选择其他芯片。

注意,部分芯片(例如MAX10-02SCM)经过笔者测试,似乎使用不了Nios-II,因为会提示无法使用mif文件。

2、Qsys设计

2.1 进入Tools -> Platform Designer

基于Nios-II实现流水灯_第2张图片

进入后,首先点击File -> Save ,保存为Kernel.qsys。

2.2 设置时钟主频

这里设置为50MHz,与所选芯片的时钟保持一致。

基于Nios-II实现流水灯_第3张图片

2.3 添加Nios-II Processor并设置

左边的IP Catalog中,选择Nios-II Processor,并点击Add添加。

基于Nios-II实现流水灯_第4张图片

暂时不修改它的其他配置信息。

右键重命名为"cpu",并按图操作进行时钟线连接。

基于Nios-II实现流水灯_第5张图片

连接之后变成这样:

基于Nios-II实现流水灯_第6张图片

2.4 添加JTAG并配置

左边选择JTAG_UART_Intel_FPGA_IP,点击Add。

基于Nios-II实现流水灯_第7张图片

右键重命名为uart,并按图进行时钟线,复位线,数据线的连接:

基于Nios-II实现流水灯_第8张图片

同时还要连接中断:

基于Nios-II实现流水灯_第9张图片

2.5 添加RAM

选择On-Chip Memory (RAM or ROM) Intel FPGA,点击Add加入。

基于Nios-II实现流水灯_第10张图片

连接时钟线,数据线与复位线。

基于Nios-II实现流水灯_第11张图片

右键将其改名为onchip_ram,双击它,按图配置其大小:

基于Nios-II实现流水灯_第12张图片

2.6 添加PIO

左边选择PIO,将其加入进来。

基于Nios-II实现流水灯_第13张图片

连接clk,reset,s1并导出输出端口:

基于Nios-II实现流水灯_第14张图片

这里将输出命名为out_led

2.7 添加System ID Peripheral

按图操作:

基于Nios-II实现流水灯_第15张图片

基于Nios-II实现流水灯_第16张图片

2.8 其他设置

双击cpu,进入Vector,按图操作:

基于Nios-II实现流水灯_第17张图片

点击System -> Assign Base Address

基于Nios-II实现流水灯_第18张图片

点击System -> Create Global Reset NetWork

基于Nios-II实现流水灯_第19张图片

生成HDL

基于Nios-II实现流水灯_第20张图片

基于Nios-II实现流水灯_第21张图片

3、Quartus设计

3.1 添加原理图文件

返回到Quartus页面,新建原理图文件:

基于Nios-II实现流水灯_第22张图片

双击空白处,加入生成的bsf文件:

基于Nios-II实现流水灯_第23张图片

右键生成IO端口,并修改led端口为out_led:

基于Nios-II实现流水灯_第24张图片

基于Nios-II实现流水灯_第25张图片

3.2 添加qip文件

基于Nios-II实现流水灯_第26张图片

3.3 设备引脚设置

Assignments -> Device ->Device and Pin Options

基于Nios-II实现流水灯_第27张图片

基于Nios-II实现流水灯_第28张图片

进行编译后,配置物理引脚。

基于Nios-II实现流水灯_第29张图片

进行全编译。

现在,Quartus设计完成,连接板子,将sof文件烧录到板子里面。此时不会有任何现象。

4、 Nios-II Eclipse设计

4.1 进入Nios-II Eclipse

点击Tools -> Nios II SoftWare Build Tools for Eclipse

基于Nios-II实现流水灯_第30张图片

将工作空间设置为quartus项目目录:

基于Nios-II实现流水灯_第31张图片

4.2 新建项目

按图点击:

基于Nios-II实现流水灯_第32张图片

写项目名称,选择helloworld模板。

图中勾选的文件是与qsys文件同级的sopcinfo文件:

基于Nios-II实现流水灯_第33张图片

创建好后,替换成以下代码:

#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "stdio.h"
const alt_u8
led_data[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int main (void)
{
 int count=0;
 alt_u8 led;
 volatile int i;
 while (1)
 { if (count==7)
 {count=0;}
 else
 {count++;}
 led=led_data[count];
 IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);
 i = 0;
 printf("Hello Nios-II\n");
 while (i<500000)
 i++;
 }
 return 0;
}

4.3 编译与运行

右键项目文件夹,点击Build Project

基于Nios-II实现流水灯_第34张图片

编译完成后,连接好板子,点击Run As Nios II Hardware,即可看到流水灯现象。

5、遇到过的错误

5.1 Eclipse无法生成模板项目

基于Nios-II实现流水灯_第35张图片

这里我的解决方案是回到Platform Designer,将on-chip ram的指令线也连上(cpu.instruction master)

5.2 Exclipse Run As Hardware无法下载程序

我没弄懂为什么有这个bug,我是重新写了个Nios-II Eclipse项目就好了。

5.3 创建好Eclipse项目后,修改软核导致项目无法编译

右键项目->Nios II->BSP Editor->Generate

实验现象

基于Nios-II实现流水灯_第36张图片

心得体会

本次实验实现了NIOS-II制作流水灯。虽然过程一波三折,但是最终还是实现了预期效果。

你可能感兴趣的:(fpga开发)