文章目录
一.实验原理
控制 LED 灯闪烁的用户程序代码很小,可将其固化在片内 ROM 来执行。变量、堆栈等空间使用片内 RAM,不使用任何片外存储器。整个系统的框图如下图所示。
从图 1.1 控制 LED 闪烁的系统框图可知,其它逻辑与 Nios II 系统一样可存在于 FPGA中。Nios II 系统可与其它片内逻辑相互作用,取决于整个系统的需要。为了简单起见,本实验在 FPGA 内不包括其它逻辑。
二.实验步骤
1.新建并选择芯片
芯片可以根据自己的芯片进行选择。
2.Qsys设计
在tools里面找到Platform Desiger,并双击打开。
找到File并保存,命名为kernel。
设置时钟主频为50MHZ.
添加NIOS-II Processer 并设置
先在左侧找到搜索框,搜索nios
双击进行添加,然后重命名为cpu
进行时钟和复位线连接
添加JTAG并设置
先在左侧找到搜索框,搜索jtag
重命名为jtag_uart,并按图进行时钟线,复位线,数据线的连接:
还要连接irq
添加RAM并设置
先在左侧找到搜索框,搜索ram
重命名为onchip_ram
连接时钟,复位,数据线,
然后双击onchip_ram,设置Size为40960
添加PIO并设置
先在左侧找到搜索框,搜索pio
重命名为pio_led,并将external_connection的export命名为out_led
然后连接时钟,复位线和s1(s1需要连接cpu的data_master和instrucation_master两条线),
添加System ID Peripheral并设置
先在左侧找到搜索框,搜索sys
先重命名为sysid,
然后连接时钟,复位线和control_slave
基地址分配和其他设置
线的连接配置完毕,完整连接如下
在左上角的system处,点击add base address
分配出来的基地址不会重复
双击cpu,找到vector,将其设置为,
点击System -> Create Global Reset NetWork
生成HDL
3.Quartus设计
返回Quartus界面,新建原理图文件
双击空白处,加入生成的bsf文件:
右键生成IO端口
将时钟,复位,out_led重命名
添加qip文件
点击 Assignments-Settings,添加 kernel.qip 文件,如下图所示
引脚配置
先Assignments -> Device ->Device and Pin Options
进行编译后,点击pin planer,进行引脚配置
再进行一次全编译。
Nios-II Eclipse设计
先进入Nios-II Eclipse,点击Tools -> Nios II SoftWare Build Tools for Eclipse
将工作空间设置为quartus项目目录:
然后新建一个项目
写项目名称,选择helloworld模板。
图中勾选的文件是与qsys文件同级的sopcinfo文件:
创建好以后,编写下面的代码,(串口通信则不需要修改)
#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;
}
编译和运行
右键单击项目名称,在弹出的菜单中选择 Build Project,如下图所示
如果编译无误,连接开发板,并启动 Quartus Prime Programmer
添加下载文件。然后点击 Start 开始下载,下载成过后关闭,回到 Eclipse 主界面(如果无法进行start,可能是未安装驱动或驱动未更新),然后在菜单栏中选择 Run →Run Configurations
再配置 Run Configurations,转到”Target Connection”标签栏,点击右侧的 Refresh Connections 将 USB-Blaster 加入
运行即可
三、结果
流水灯:
VID_20240507_172414
串口通信:(新建项目时不进行修改即可)