1. (简答题)
学习 Quartus 、Platform Designer、Nios-II SBT 的基本操作;初步了解 SOPC 的开发流程,基本掌握 Nios-II 软核的定制方法;掌握 Nios-II 软件的开发流程,软件的基本调试方法。
一、基于Nios II的hello world
1.关于Qsys的简介
Qsys是Quartus中的一个系统集成工具
1.名称
最先版本中名为SOPC Builder,最新版本名为Platform Designer
2.含义
可编程片上系统(采用编程方法将整个系统集成到一个芯片上)
3.作用
①通过集成IP核快速实现SOPC系统
②自动创建IP核之间的互联逻辑
③自定义IP核
2.NiosII实现hello world
2.1硬件设计
1.选择芯片
2.Tools->Qsys
3.设置系统时钟
4.添加Nios II Processor
在搜索框中,输入nio,找到Nios II Processor,点击Add
点击finish,保持默认设置
5.添加On_Chip Memory
在搜索框中,输入on_chip,找到On_Chip Memory,点击Add
然后保存文件,关闭Qsys。
6.创建顶层文件
回到Quarters,选择New->Verilog HDL File
顶层内容如下:
module hello_world(
input clk,
input reset_n
);
//此处的代码可以通过Qsys中的Generate->Generate Example,复制里面的内容,粘贴到此处,进行相应的修改
system_qsys u_qsys (
.clk_clk (clk), // clk.clk
.reset_reset_n (reset_n) // reset.reset_n
);
endmodule
2.2软件设计
1.打开Nios II Software Build Tools for Eclipse
2.创建文件
File->New->Nios II Application and BSP from Template
3.打开hello_world中的.c文件
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
点击保存,选择hello_wold_bsp,右键后,选择Nios II中的Generate BSP
2.3下载硬件和软件
1.硬件的下载
2.软件的下载
选择应用工程,右键后,选择Run As中的Nios II Hardware
2.4结果展示
完成以下实验:
1) 在DE2-115开发板上分别用Verilog和Nios软件编程两种方式完成LED流水灯显示,理解两种方式的差异; 2) 用Nios软件编程通过DE2-115开发板串口输出“Hello Nios-II”字符到笔记本电脑串口助手。
1.PIO的相关介绍
(1)定义
PIO IP核:Avalon-MM从端口和通用I/O端口提供了一个存储器映射(memory-mapped)接口。
(2)用途
用户逻辑或外围器件提供了简单的I/O控制
例如
①控制LED灯
②获取按键的电平变化信息
③控制显示设备
④与片外器件通信(SPI,I2C)
(3)寄存器
2.实现流水灯
1.前面的基础硬件设计跟之前的helloworld差不多
2.添加其他IP核
添加PIO
在搜索框上输入pio,选择PIO(Parallel I/O),点击Add
点击finish,保持默认设置
3.连接时钟和复位
4.设置led的输出
5.创建顶层文件
回到Quarters,选择New->Verilog HDL File
顶层文件内容
module hello_world(
input clk,
input reset_n,
output [3:0] led
);
//此处的代码可以通过Qsys中的Generate->Generate Example,复制里面的内容,粘贴到此处,进行相应的修改
system_qsys u0 (
.clk_clk (clk), // clk.clk
.reset_reset_n (reset_n), // reset.reset_n
.led_export (led) // led.export
);
endmodule
保存文件,并编译
1.部分软件设计与之前的相同
2.修改代码文件
打开hello_world中的.c文件
#include <stdio.h>
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
const alt_u8
led_data[4]={0x01,0x03,0x07,0x0F};
int main (void) {
int count=0;
alt_u8 led;
volatile int i;
while (1)
{
if (count==4)
{
count=0;
}
else
{
count++;
}
led=led_data[count];
IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);
//延时的设置
i = 0;
while (i<5000000)
i++;
}
return 0;
}
3.保存编译
点击保存,选择hello_wold_bsp,右键后,选择Nios II中的Generate BSP,编译应用文件,选择hello_world右键后,点击Build Project
1.硬件下载
2.软件的下载