SOPC实验报告
- 格式:doc
- 大小:2.27 MB
- 文档页数:19
SOPC设计基础实验报告
学 院: 电子与信息工程学院
学 号:
姓 名:
实验一 开发软件使用练习
一 实验目的
实验目的:掌握基于SOPC硬核处理器的设计流程。
二 实验设备
安装Quartu II的PC、实验箱
三 实验内容和步骤
1) 打开Quarts II 11.1,建立工程
2) 在菜单栏的File中选择New选项
3) 默认是New Quartus II Project,选OK
4) 选择Next,工程目录选择自己新建的文件夹,工程名输入E_Play
5) 源文件添加,点击Next直接跳过
6) 选择编号为EP4CE6E22C8的器件
7) EDA工具选择,直接点击Next跳过
8) 项目信息显示,点击Finish完成空工程的建立
9) 配置无用引脚:
在主页面菜单栏点击Assignments,接着在下拉框中选择Device选项,出现如下窗口:
点击Device and Pins Options按钮,弹出相应页面后点击左侧栏中的unused pins,将他设为As input tri-stated with weak pull-up.点击OK完成。 创建软核处理器系统
1) 点击菜单栏的Tools,在下拉框中选择SOPC Builder选项,将System Name定为E_Play,下方的Target HDL选VHDL,最后点击OK确认。
2) Device Family选择Cylone IV E,Clock Frequency定为50MHz
3) 配置软核处理器系统
点开左侧Processors总选项,双击Nios II Processor,选择Nios II/e
另外在JTAG Debug Module选项中选择第一项,点击Finish完成配置
4) 配置存储器
点开左侧Memories and Memory Controllers总选项,点开第二个On-Chip分选项,双击On-Chip-Memory,在Total memory sizes后输入4096
点击Finish,在Onchip-memory2_0上右击,Rename为onchip-memory
5) 点开左侧Interface Protocols总选项,点开Serial分选项,双击JTAG UART,点击Finish完成
6) 在jtag_uart_0上右击,Rename为jtag_uart 产生软核处理器系统
1) 双击cpu_0,将Reset Vector和Exception Vector的Memory均设置为onchip_memory,点击Finish完成。
2) 选择System菜单栏,在下拉框中点击Assign Base addresses,排列软核处理器系统各部分地址。选择System菜单栏,在下拉框中点击Assign Interrupt Numbers,排列软核处理器系统各部分中断。最后点击Generate,在弹出窗口点击Save。
3) 等待直到System generation was successful出现
4) 点击Exit退出,在Quartus的File菜单下点击New,新建Block Diagram/Schematic File
5) 双击空白处,点开Project,选择自己设计的E_Play,选择模块,布线。 四 实验结果和分析
实验二 NiosII软件系统设计
一、实验目的
实验目的:掌握基于Nios II软核处理器的设计流程。
二 实验设备
安装Quartu II的PC、实验箱
三 实验内容和步骤
创建Nios II 的应用工程
1) 打开Nios II 11.1,利用此环境进行C语言的编译和调试
2) 点击File菜单栏,New新建,点击Nios II Application and BSP from Template,定位到测试程序
3) 点击Finish完成
4) 在左侧栏右击,New,新建C源文件,编写C语言代码,完成后点击菜单栏的Project,在下拉框中选择Build Project进行编译
在实验箱上测试程序
1) 连好实验箱上的线,点击Quartus II菜单栏的Tools,在下拉框中选择Programmer,将软核处理器系统配置到FPGA芯片中,下载线选择USB-Blaster,模式选择JTAG,点击Start下载
2) 回到Eclipse编辑窗口,点击菜单栏的Run,下拉框接着点Run
3) 先点击Apply,再点击Run,将C语言代码下载到实验箱,完成后可以看见实验箱上的灯循环闪烁,实验完成。
四 实验结果和分析
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
int main (void) __attribute__ ((weak, alias ("alt_main")));
int alt_main (void)
{
alt_u8 led = 0x2; //流水灯的状态
alt_u8 dir = 0; //用来转换方向的变量
volatile int i;
while (1)
{
if (led & 0x09)
{
dir = (dir ^ 0x1); //如果到末尾就转换方向
}
if (dir)
{
led = led >> 1; //dir非零led向右移
}
else
{
led = led << 1; // dir为零led向左移
}
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, led);
i = 0;
while (i<200000)
i++;
}
return 0;
} 实验三 SOPC系统的PIO验证
一、实验目的及要求
实验目的:掌握PIO设备的访问方法。
二 实验设备
安装Quartu II的PC、实验箱
三 实验内容和步骤
1) 打开Nios II 11.1,利用此环境进行C语言的编译和调试
2) 点击File菜单栏,New新建,点击Nios II Application and BSP from Template,定位到测试程序,点击Finish完成
3) 在左侧栏右击,New,新建C源文件,编写C语言代码,完成后点击菜单栏的Project,在下拉框中选择Build Project进行编译
4) 连好实验箱上的线,点击Quartus II菜单栏的Tools,在下拉框中选择Programmer,将软核处理器系统配置到FPGA芯片中,下载线选择USB-Blaster,模式选择JTAG,点击Start下载
5) 回到Eclipse编辑窗口,点击菜单栏的Run,下拉框接着点Run
6) 先点击Apply,再点击Run,将C语言代码下载到实验箱,完成后按不同的按键可以看见不同的灯亮起,实验完成。
四 实验结果和分析
#include
#include
#include
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
void button_irq(void *context,alt_u32 interrupt);
int main()
{ printf("BUTTON 中断实验!\n");
/* 开放4BIT BUTTON的中断屏蔽 */
IOWR(BUTTON_PIO_BASE,0x02,0x0f);
/* 清除边沿捕获寄存器 */
IOWR(BUTTON_PIO_BASE,0x03,0x00);
/* 注册中断处理函数 */
if (alt_irq_register( BUTTON_PIO_IRQ, NULL,button_irq))
{
printf("alt_irq_register error\n");
return -1;
}
while(1);
return 0;
}
void button_irq(void *context, alt_u32 interrupt)
{
unsigned int data;
/* 读取边沿捕获寄存器值 */
data=IORD(BUTTON_PIO_BASE,0x03);
/* 点亮相应的LED */
IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, data);
/* 清除边沿捕获寄存器 */
IOWR(BUTTON_PIO_BASE,0x03,0x00);
}