2021-04-28

一、实验原理
控制LED灯闪烁的用户程序代码很小,可将其固化在片内ROM来执行。变量、堆栈等空间使用片内RAM,不使用任何片外存储器。整个系统框图如图所示。
在这里插入图片描述

从控制LED闪烁的系统框图可知,其它逻辑与Nios-II系统一样可存在于FPGA中。Nios-II系统可与其它片内逻辑相互作用,取决于整个系统的需要。

二、实验环境
硬件:PC机、DE2-115 FPGA实验开发平台
软件:Quartus II 13.1、Qsys、Nios II SBT

三、实验过程
(一)硬件部分设计
创建新项目
在这里插入图片描述

选择芯片
在这里插入图片描述

进行Qsys系统设计

选择Tools->Qsys
启动Qsys后,点击save as,命名为kernel,然后OK
双击clk_0,对Clock进行时钟设置,设置为50M
在这里插入图片描述

添加Nios II 32-bit CPU
在component library标签栏找到Nios II Processor,然后点击add;
在这里插入图片描述

在Nios Core栏中选择Nios II/f选项,其他保持默认选项,然后点击finish;
在这里插入图片描述

右键选择重命名,重命名为cpu;
将cpu的clk和reste_n分别与系统时钟clk_0的clk和reste_n相连
在这里插入图片描述

添加jtag uart接口
在左侧栏出入jtag找到JTAG UART,然后点击add;
在这里插入图片描述

保持默认选项,点击finish;在这里插入图片描述

重命名为onchip_ram;
进行时钟、数据端口、指令端口的连接;
在这里插入图片描述

添加PIO接口
在左侧栏选择PIO,点击add;

Width为8bits,Direction选择output,其余选项保持默认,点击finish;

重命名为pio_led,并在export栏处双击,将输出口引出来,并命名为out_led;
进行时钟、数据端口、指令端口的连接;

添加片System ID Peripheral核
在左侧栏输入sys找到System ID Peripheral后点击add;

保持默认选项,点击finish;
重命名为sysid;
进行时钟、数据端口的连接;

完成Qsys设计的后续工作
基地址分配:点击system下的Assign Base Address

完成后Base栏出现不重复的具体的地址;

分配中断号:在IRQ标签栏下选择Avalon_itag_slave和IRQ的连接点就会jtag_uart核添加一个值为0的中断号;

点击Qsys主界面菜单栏中的system下的Create Global Reset Network,完成后会自动连接所有复位端口

最终完成的连接图
在这里插入图片描述

指定Nios II的复位和异常地址:从system Contents标签栏双击建立好的cpu,进入Nios II Processor的配置界面,配置Reset Vector和Exception Vector为onchip_ram.sl,点击finish

生成Qsys系统,点选Generate下的Generate

选择保存

点击close后关闭窗口,再关闭Qsys界面
添加Verilog文件,命名为led
代码如下:
module led(
input clk,
input reset_n,
output [7:0] led
);

kernel u0 (
.clk_clk (clk), // clk.clk
.reset_reset_n (reset_n), // reset.reset_n
.out_led_export (led), // out_led.export
);

endmodule
为了编译成功,将对应的.qip文件加入项目中
点击Assignments-Settings,添加kernel.qip文件,点击add,选择OK;

生成逻辑连接和生成管脚
逻辑连接。开发板晶振为50M,与系统默认一致,不需要修改。
芯片引脚设置
选择Assignments-device,然后点击device pin options;
进行unused pin设置,可能会收到外部信号的干扰,将未用引脚设置为As input tri-stated;

特殊引脚设置,设置为常规引脚

编译工程

分配物理引脚
点击快捷键,进入pin planner界面

按照开发板提供的管脚名称分配引脚,如图所示

完成后关闭pin planner,再次编译项目。
(二)软件部分设计
下面使用Nios II Software Build Tools for Eclipse来完成项目的软件开发。

启动Nios II SBT
选择Tools-Nios II Software Build Tools for Eclipse,打开Nios II SBT for Eclipse

启动Workplace选择当前的项目目录,点击OK

出现Nios II SBT Eclipse 主界面

创建工程
选择File-New-Nios II Application and BSP from Template
在SOPC Information File name窗口中选择kernel.sopcinfo文件,CPU栏中选择cpu,在Project name输入hello,Project template选择Hello_World,点击finish

系统会自动生成一个打印hello_world的软件工程,在hello_world.c中修改代码
#include “system.h”
#include “altera_avalon_pio_regs.h”
#include “alt_types.h”
const alt_u8
led_data[8]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
int main()
{
int count=0;
alt_u8 led;
volatile int i;
while(1)
{
if (count==8)
{
count=0;
}else{
count++;
}
led=led_data[count];
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);
i=0;
while(i<500000)
i++;
}

return 0;
}
编译程序
右键项目名称,选择Build Project,编译完成后如图所示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值