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);

}