基于nios实现流水灯和串口通信

基于nios实现流水灯和串口通信

一.实验原理

控制 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
在这里插入图片描述

在这里插入图片描述

2.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 加入,
在这里插入图片描述
在这里插入图片描述

运行即可

结果

流水灯:
在这里插入图片描述

串口通信:(新建项目时不进行修改即可)
在这里插入图片描述

总结

懂得了怎么配置一个nios软核以及调试方法。

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值