电子工程系实验指导书SoPC系统开发.docx

上传人:b****8 文档编号:30542107 上传时间:2023-08-16 格式:DOCX 页数:29 大小:1.94MB
下载 相关 举报
电子工程系实验指导书SoPC系统开发.docx_第1页
第1页 / 共29页
电子工程系实验指导书SoPC系统开发.docx_第2页
第2页 / 共29页
电子工程系实验指导书SoPC系统开发.docx_第3页
第3页 / 共29页
电子工程系实验指导书SoPC系统开发.docx_第4页
第4页 / 共29页
电子工程系实验指导书SoPC系统开发.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

电子工程系实验指导书SoPC系统开发.docx

《电子工程系实验指导书SoPC系统开发.docx》由会员分享,可在线阅读,更多相关《电子工程系实验指导书SoPC系统开发.docx(29页珍藏版)》请在冰豆网上搜索。

电子工程系实验指导书SoPC系统开发.docx

电子工程系实验指导书SoPC系统开发

 

SoPC系统开发

实验指导书

 

引言

《SoPC系统开发》是电子信息工程(嵌入式系统工程方向)必修课,是以《数字电路》,《程序设计基础(C语言)》和《数字系统设计》为先导课程,为后续课程的实施,以及参加工作或者继续深造奠定基础的课程,也是一门实践性很强的课程。

通过这门课程的学习,使学生熟练掌握SoPC系统开发的基本理论和基本方法;掌握SoPC系统开发的实践方法,获得实践技能的基本训练;培养学生分析问题和解决问题的能力,深化和扩展对课程内容的理解。

本门课程理论内容包括:

SoPC设计绪论,SoPC硬件设计流程,SoPC软件设计流程,相关EDA工具,NiosⅡ体系结构,Avalon总线规范等。

实践内容包括:

片上最小系统、片外SDRAM、PIO输出—LED、PIO输入—中断、IntervalTimer和基于SoPC的USB画笔设计与实现等。

本实验指导书旨在对《SoPC系统开发》课程的实验进行规范,内容包括:

实验目的和要求、设备或环境、实验原理、实验内容等。

学生可遵照本实验指导书内容完成相应实验并提交实验报告。

 

 

设备与工具

这章主要介绍本实验指导书中会用到的硬件设备。

DE2-115FPGA开发板

一、概述

DE2系列平台一直位居于国内外FPGA教育开发平台的领先地位。

因其拥有适应各种应用需求的丰富接口及工业等级的设计资源,成为全球1000所名校实验室中的首选。

延续DE2系列开发平台之领先和成功,搭载CycloneIVE芯片之DE2-115开发平台,不仅提供客户一个低功耗,丰富逻辑资源,大容量存储器以及DSP功能的选择,而且搭配了丰富的外围接口,以满足对移动视频、语音、数据接入及高品质图像的开发需求。

二、使用说明

DE2-115开发板包括以下硬件资源:

•AlteraCyclone®IV4CE115FPGA器件

•Altera系列配置–EPCS64

•板上USBBlaster用于编程,同时支持JTAG模式和AS模式

•2MBSRAM

•2片64MBSDRAM

•8MB闪存

•SD卡插槽

•4个按钮开关

•18个滑动开关

•18个红色LEDs

•9个绿色LEDs

•50MHz晶振提供给时钟源

•24-bitCD-品质声道CODEC带有线路输入,线路输出和麦克风输入接口

•VGADAC(8-比特高速三通道DACs)带有VGA输出接口

•TV解码器(NTSC/PAL/SECAM)和TV输入接口

•2千兆以太网PHY带RJ45连接器

•带有A类和B类USB接口的USB主从控制器

•RS-232收发器和9针连接器

•PS/2鼠标/键盘接口

•IR收发器

•2个SMA接头,用于外部时钟输入/输出

•1个40-pin扩展口,带二极管保护

•1个HSMC连接器

•16x2LCD模组

该开发板使用说明请参见《DE2-115UserManual》。

 

实验一:

片上最小系统和片外SDRAM

一、目的和要求

1、完成基于Qsys的片上最小硬件系统设计

2、完成基于SBT的软件开发流程(HelloWorld!

3、在片上最小系统基础上添加SDRAM

二、设备或环境

DE2-115FPGA开发板

三、实验原理

利用Qsys搭建最小硬件系统(NIOSIICPU、JTAGUART、SYSTEMID、On-ChipMemory),应用SBT创建HelloWorld!

模板的软件工程,在DE2-115FPGA开发板上系统软硬件能够正常运行。

四、实验内容

1、最小系统硬件设计

(1)创建Quartus工程,工程存放路径及工程名可自行定义(不要包含中文)。

Device配置如下图所示。

(2)新建顶层原理图文件(文件名与工程名一致),并保存,如下图所示。

(3)单击Tools->Qsys->ComponentLibrary->EmbeddedProcessors->NiosIIProcessor,配置如下图所示。

单击finish。

(4)单击ComponentLibrary->InterfaceProtocols->Serial->JTAGUART,配置如下图所示,单击finish。

(5)单击ComponentLibrary->Peripherals->DebugandPerformance->SystemIDPeripheral,配置如下图所示,单击finish。

(6)单击ComponentLibrary->MemoriesandMemoryControllers->On-Chip->On-ChipMemory(RAMorROM),配置如下图所示,单击finish。

(7)AVALON总线连接关系如下图所示。

(8)双击NiosIICPU,将ResetVector和ExceptionVector修改为片内存储器onchip_memory,如下图所示。

(9)单击System菜单下面的AssignBaseAddress和AssignInterruptnumbers,自动进行地址和中断号分配。

(10)单击Generation选项卡下面的Generate按钮,生成系统。

(11)双击顶层原理图空白处,添加硬件如下图所示,单击OK。

(12)在顶层原理图中,右键单击上述Symbol,在弹出的菜单中,左键单击选择GeneratePinsforSymbolPorts,如下图所示。

(13)单击StartAnalysis&Synthesis,如

所示。

(14)分配管脚如下图所示。

(15)编译并通过JTAG将设计下载到FPGA中。

2、最小系统软件设计(HelloWorld!

(1)双击SBT,选择软件工程路径(不含中文)。

(2)单击NiosIIApplicationandBSPfromTemplate,如下图所示。

(3)新建应用程序工程和BSP工程,单击finish,如下图所示。

(4)新建软件工程(Hello_world模板),如下图所示。

(5)右键单击ProjectExplorer的Hello工程,选择BuildProject。

(6)右键单击ProjectExplorer的Hello工程,选择RunAs->NiosIIHardware。

如果系统硬件及软件正常运行,将在SBT的Console中打印显示“HellofromNiosII!

”。

3.在片上最小系统基础上添加SDRAM

(1)将上次实验得到的QuartusII工程打开,单击Tools->Qsys,将上次实验得到的片上最小系统打开,如下图所示。

右键单击onchip_memory2_0,单击remove,将其移除。

(2)双击ComponentLibrary->MemoriesandMemoryControllers->ExternalMemoryInterfaces->SDRAMInterfaces->SDRAMController,配置信息如下图所示,单击finish。

(3)AVALON总线连接关系如下图所示,双击图中的两个椭圆形区域(将对应IP的引脚输出),单击图中圆形区域(连接中断)。

(4)双击NiosIICPU,将ResetVector和ExceptionVector修改为如下图所示。

(5)单击System菜单下面的AssignBaseAddress和AssignInterruptnumbers,自动进行地址和中断号分配。

(7)单击Generation选项卡下面的Generate按钮,生成系统。

(8)将顶层原理图中设计删除,双击顶层原理图空白处,添加硬件如下图所示,单击OK。

(9)在顶层原理图中,右键单击上述Symbol,在弹出的菜单中,左键单击选择GeneratePinsforSymbolPorts,如下图所示。

(10)双击顶层原理图空白处,添加输出引脚,如下图所示,单击OK。

将此引脚重命名为Sdram_clock,与clk_clk输入引脚相连,如下图所示。

(11)单击StartAnalysis&Synthesis,如

所示。

(12)分配管脚如下图所示。

(12)编译并通过JTAG将设计下载到FPGA中。

五、实验结果及实验报告内容

(1)最小系统硬件设计过程。

(2)最小系统软件设计过程。

(3)在片上最小系统基础上添加SDRAM硬件设计过程。

(4)实验过程中遇到的问题和解决办法。

 

实验二:

PIO输出—LED

一、目的和要求

1、扩展PIO输出

2、利用PIO输出控制LED

二、设备或环境

DE2-115FPGA开发板

三、实验原理

创建硬件系统(NIOSIICPU、JTAGUART、SYSTEMID、SDRAM、EPCS)基础上,添加PIO控制器,实现系统对LED的控制。

四、实验内容

1、系统硬件设计

(1)创建如实验一的QuartusII工程,单击Tools->Qsys。

(2)双击ComponentLibrary->Peripherals->MicrocontrollerPeripherals->PIO,配置信息如下图所示,单击finish。

(3)AVALON总线连接关系如下图所示,双击图中的椭圆形区域(将对应IP的引脚输出)。

(4)单击System菜单下面的AssignBaseAddress和AssignInterruptnumbers,自动进行地址和中断号分配。

(5)单击Generation选项卡下面的Generate按钮,生成系统。

(6)将顶层原理图中设计删除,双击顶层原理图空白处,添加硬件如下图所示,单击OK。

(7)在顶层原理图中,右键单击上述Symbol,在弹出的菜单中,左键单击选择GeneratePinsforSymbolPorts,如下图所示。

记得添加Sdram_clock输出。

(8)单击StartAnalysis&Synthesis,如

所示。

(9)分配管脚如下所示。

set_location_assignmentPIN_E21-topio_0_external_connection_export[0]

set_location_assignmentPIN_E22-topio_0_external_connection_export[1]

set_location_assignmentPIN_E25-topio_0_external_connection_export[2]

set_location_assignmentPIN_E24-topio_0_external_connection_export[3]

(10)编译并通过JTAG将设计下载到FPGA中。

2、系统软件设计

(1)新建软件工程(Hello_world模板),如下图所示。

(2)右键单击工程名,新建Led.h头文件。

(3)Led.h头文件内容如下所示。

 

#include"system.h"

#define_LED

typedefstruct

{

unsignedlongintDATA;

unsignedlongintDIRECTION;

unsignedlongintINTERRUPT_MASK;

unsignedlongintEDGE_CAPTURE;

}PIO_STR;

#ifdef_LED

#defineLED((PIO_STR*)PIO_0_BASE)

#endif

(4)修改主程序文件“hello_world.c”内容如下所示。

#include

#include

#include"led.h"

intmain()

{

LED->DATA=1;

inti=0;

while

(1)

{

LED->DATA=1<

if(i==4)i=0;

elsei=i+1;

usleep(100000);

}

return0;

}

(5)右键单击ProjectExplorer的软件工程,选择BuildProject。

(6)右键单击ProjectExplorer的软件工程,选择RunAs->NiosIIHardware,如果系统硬件及软件正常运行,将观察到开发板上的四个LED轮流被点亮。

五、实验结果及实验报告内容

(1)系统硬件设计过程。

(2)系统软件设计过程。

(3)实验过程中遇到的问题和解决办法。

 

实验三:

PIO输入—中断

一、目的和要求

1、扩展PIO输入

2、利用PIO输入实现外部中断输入

二、设备或环境

DE2-115FPGA开发板

三、实验原理

创建硬件系统(NIOSIICPU、JTAGUART、SYSTEMID、SDRAM、EPCS、PIO输出)基础上,添加PIO输入控制器,通过PIO输入实现系统对外部中断的响应。

四、实验内容

1、系统硬件设计

(1)创建如实验二的QuartusII工程,单击Tools->Qsys。

(2)双击ComponentLibrary->Peripherals->MicrocontrollerPeripherals->PIO,配置信息如下图所示,单击finish。

(3)AVALON总线连接关系如下图所示,双击图中的两个椭圆形区域(将对应IP的引脚输出),单击图中圆形区域(连接中断)。

(4)单击System菜单下面的AssignBaseAddress和AssignInterruptnumbers,自动进行地址和中断号分配。

(5)单击Generation选项卡下面的Generate按钮,生成系统。

(6)参考实验三步骤,更新顶层原理图,并生成管脚,管脚分配如下。

set_location_assignmentPIN_AC28-topio_1_external_connection_export

(7)编译并通过JTAG将设计下载到FPGA中。

2、系统软件设计

(1)新建软件工程(Hello_world模板),如下图所示。

(2)右键单击工程名,新建Led.h头文件。

#include"system.h"

#define_LED

typedefstruct

{

unsignedlongintDATA;

unsignedlongintDIRECTION;

unsignedlongintINTERRUPT_MASK;

unsignedlongintEDGE_CAPTURE;

}PIO_STR;

#ifdef_LED

#defineLED((PIO_STR*)PIO_0_BASE)

#defineKEY((PIO_STR*)PIO_1_BASE)

#endif

(3)修改主程序文件“hello_world.c”内容如下所示。

#include

#include

#include"led.h"

voidKEY_ISR()

{

LED->DATA=15;

KEY->EDGE_CAPTURE=0;

printf("KEY_ISROCCURED:

%d\n",KEY->DATA);

}

voidinit()

{

KEY->INTERRUPT_MASK=1;

alt_ic_isr_register(PIO_1_IRQ_INTERRUPT_CONTROLLER_ID,PIO_1_IRQ,KEY_ISR,NULL,0);

}

intmain()

{

printf("HellofromNiosII!

\n");

init();

LED->DATA=1;

inti=0;

while

(1)

{

LED->DATA=1<

if(i==4)i=0;

elsei=i+1;

usleep(100000);

}

return0;

}

(4)右键单击ProjectExplorer的软件工程,选择BuildProject。

(5)右键单击ProjectExplorer的软件工程,选择RunAs->NiosIIHardware,如果系统硬件及软件正常运行,将观察到开发板上的四个LED轮流被点亮。

当相应按键按下时,触发中断,四个LED灯将被全部点亮。

五、实验结果及实验报告内容

(1)系统硬件设计过程。

(2)系统软件设计过程。

(3)实验过程中遇到的问题和解决办法。

实验四:

IntervalTimer

一、目的和要求

1、IntervalTimer模块的生成和使用

2、在NiosII中实现定时器功能、SystemClock功能和Timestamp功能

二、设备或环境

DE2-115FPGA开发板

三、实验原理

在实验三系统(NIOSIICPU、JTAGUART、SYSTEMID、SDRAM、EPCS、PIO输出、PIO输入)基础上,添加IntervalTimer模块,在NiosII中实现定时器功能、SystemClock功能和Timestamp功能。

四、实验内容

1、系统硬件设计

(1)将上次实验得到的QuartusII工程打开,单击Tools->Qsys。

(2)双击ComponentLibrary->Peripherals->MicrocontrollerPeripherals->

IntervalTimer,配置信息如下图所示,单击finish。

(3)以相同方式再次添加IntervalTimer,其AVALON总线连接如下图所示。

(4)单击System菜单下面的AssignBaseAddress和AssignInterruptnumbers,自动进行地址和中断号分配。

(5)单击Generation选项卡下面的Generate按钮,生成系统。

(6)更新顶层原理图。

(7)编译并通过JTAG将设计下载到FPGA中。

2、系统软件设计

(1)应用SBT,打开实验四所建立的软件工程。

(2)修改helloworld.c文件,添加定时器功能,如下所示。

#include

#include

#include"led.h"

#include"altera_avalon_timer_regs.h"

#include"sys/alt_alarm.h"

#include"alt_types.h"

#include"sys/alt_timestamp.h"

intcounter=0;

voidTIMER_ISR()

{

counter++;

IOWR(TIMER_0_BASE,ALTERA_AVALON_TIMER_STATUS_REG,0);

printf("%d\n",counter);

}

voidinit_timer()

{

alt_ic_isr_register(TIMER_0_IRQ_INTERRUPT_CONTROLLER_ID,TIMER_0_IRQ,TIMER_ISR,NULL,0);

IOWR(TIMER_0_BASE,ALTERA_AVALON_TIMER_STATUS_REG,0);

IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_0_BASE,50000000);

IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_0_BASE,50000000>>16);

IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE,0x07);

}

intmain()

{

init_timer();

while

(1);

return0;

}

(3)右键单击软件工程名,NiosII->BSPEditor,选择Main->Settings->

Common->hal->sys_clk_timer,如下图所示。

(4)在helloworld.c文件中添加,如下代码。

alt_u32my_alarm_callback(void*context)

{

LED->DATA=15;

return0;

}

intmain()

{

alt_alarmalarm;

alt_alarm_start(&alarm,10,my_alarm_callback,NULL);

while

(1);

return0;

}

(5)右键单击软件工程名,NiosII->BSPEditor,选择Main->Settings->

Common->hal->timestamp_timer,如下图所示。

(6)在helloworld.c文件中添加,如下代码。

intmain()

{

unsignedinttime1,time2;

time1=alt_timestamp();

printf("HellofromNiosII!

\n");

time2=alt_timestamp();

printf("time=%d\n",time2-time1);

while

(1);

}

(7)右键单击ProjectExplorer的软件工程,选择BuildProject。

(8)右键单击ProjectExplorer的软件工程,选择RunAs->NiosIIHardware,如果系统硬件及软件正常运行,请将观察到的结果记录在实验报告上。

五、实验结果及实验报告内容

(1)系统硬件设计过程。

(2)系统软件设计过程及执行结果。

(3)实验过程中遇到的问题和解决办法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1