实验目的及设备需求
实验目的
(1)学习Quartus、Platform Designer、Nios II SBT的基本操作
(2)初步了解SOPC的开放流程,基本掌握Nios II软核的定制方法
(3)掌握Nios II软件的开发流程,软件的基本调试方法
实验设备
硬件:PC机、DE2-115FPGA实验开发平台
软件:Quartus 13.1、Nios II SBT
实验步骤
1)建立新项目
选择“file”–>“new project wizard…”

之后的对话框中点击“next”进入以下界面,选择文件保存地址以及项目名称,点击“next”

该页面为添加已有工程设计文件,我们这里不需要进行添加,直接点击“next”

之后选择芯片的型号,目标芯片:cycloneIVE系列的EP4CE115F29C7

完成后界面会显示项目名和顶层文件名

2)进行Qsys系统设计
点击“tool”下拉菜单的“Qsys”工具,出现以下对话框

保存为“kernel.qsys”

双击“clk_0”,对clock进行时钟设置,设为50m

添加CPU与外围器件,从PD的元件池中选择以下元件加入当前的系统
添加Nios II 32-bit CPU
直接在左上角搜索框内输入“nios”即可看到需要添加的内容,之后点击“add”即可

之后的窗口保持默认设置,点击“Finnish”
之后更改添加的Nios II 32-bit CPU名称为“CPU”

将 cpu 的 clk 和 reset_n 分别与系统时钟 clk_0 的 clk 和 clk_reset 相连
添加 jtag uart 接口

之后的窗口依旧保持默认配置,直接点击“finish”进行下一步,将其重命名为“jtag_uart”,clk、reset、avalon_jtag_slave 的连线,以及中断 irq 连线,中断号设为 0

继续搜索框内搜索,找到On-Chip Memory(RAM or ROM)进行添加

配置中设定内存为40960,其他的设置保持默认,之后点击“finish”

重命名为“onchip_ram”并完成clk1、s1、reset1的连接

添加 PIO 接口,在搜索框内搜索添加

之后的配置框内选择宽度为8,以及“output”,其他设置不变

重命名为“pio_led”,引出管脚:双击 Export 列的 external_connection ,命名为 out_led

连接clk、reset、s1

添加片 System ID Peripheral 核

之后保持默认设置,并重命名为“sysid”,连接clk、reset、control_slave

完成所有设定之后点击“system”中“assign base addresses”为分配基地址

指定Nios II 的复位和异常地址。

配置 Reset Vector 和 Exception Vector 为“onchip_ram.s1”

点击“generate”中的“generate…”

保存后点击“close”

之后回到Quartus II
选择“file”中的“new”,选择“Block Diagram/Schematic File”,点击“ok”

将之前创建的“kernel”放入框内

点击“assignments”中的“settings”,之后选择kernel.qip

点击“add”进行添加,点击“ok”完成

右击 kernel 模块,点击Generate Pin for Symbol Ports生成管脚

双击管脚名,重命名为 clk、reset_n、pio_led[7…0]
之后点击“Assignments”中的“Device”

操作如下

将未使用的引脚设置为“As input tri-stated”

设置特殊引脚为常规引脚“Use as regular I/O”

之后保存原理图文件
编译工程
完成上面的设定之后点击三角形进行编译

有警告没有报错即可
之后分配物理针脚,点击“pin planner”,分配针脚如下所示

然后启动nios II SBT
点击“tool”,选择选项中的“Nios II Software Build Tools for Eclipse”
工作空间为之前创建项目的位置
之后创建工程

选择 kernel.sopcinfo 文件,再输入工程名,选择 Hello World ,最后点击Finish

打开 hello_world.c 文件,修改为如下代码

代码为
#include <stdio.h>
#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 (void) {
int count=0;
alt_u8 led;
volatile int i;
//串口打印
printf("Hello world!\n");
//流水灯循环
while (1)
{
if (count==7)
{
count=0;
}
else
{
count++;
}
led=led_data[count];
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);
//延时的设置
i = 0;
while (i<5000000)
i++;
}
return 0;
}
右键工程名,点击Build Project编译


之后运行项目,首先进行FPGA的配置
启动Quartus Prime Programmer

添加下载文件,然后点击【Start】开始下载,下载成功后关闭,回到 Eclipse 主界面

点击“Run”中的“Run Configurations…”

转到Target Connection标签栏,点击右侧的Refresh Connections将 USB-Blaster 加入,如下图所示:

点击【Apply】后点击【Run】。
下载完成后,可以看到 Console 里打印信息:Hello World,且开发板上流水灯显示。



3814

被折叠的 条评论
为什么被折叠?



