华科并行接口设计走马灯实验报告.docx

上传人:b****5 文档编号:14610183 上传时间:2023-06-25 格式:DOCX 页数:14 大小:379.99KB
下载 相关 举报
华科并行接口设计走马灯实验报告.docx_第1页
第1页 / 共14页
华科并行接口设计走马灯实验报告.docx_第2页
第2页 / 共14页
华科并行接口设计走马灯实验报告.docx_第3页
第3页 / 共14页
华科并行接口设计走马灯实验报告.docx_第4页
第4页 / 共14页
华科并行接口设计走马灯实验报告.docx_第5页
第5页 / 共14页
华科并行接口设计走马灯实验报告.docx_第6页
第6页 / 共14页
华科并行接口设计走马灯实验报告.docx_第7页
第7页 / 共14页
华科并行接口设计走马灯实验报告.docx_第8页
第8页 / 共14页
华科并行接口设计走马灯实验报告.docx_第9页
第9页 / 共14页
华科并行接口设计走马灯实验报告.docx_第10页
第10页 / 共14页
华科并行接口设计走马灯实验报告.docx_第11页
第11页 / 共14页
华科并行接口设计走马灯实验报告.docx_第12页
第12页 / 共14页
华科并行接口设计走马灯实验报告.docx_第13页
第13页 / 共14页
华科并行接口设计走马灯实验报告.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

华科并行接口设计走马灯实验报告.docx

《华科并行接口设计走马灯实验报告.docx》由会员分享,可在线阅读,更多相关《华科并行接口设计走马灯实验报告.docx(14页珍藏版)》请在冰点文库上搜索。

华科并行接口设计走马灯实验报告.docx

华科并行接口设计走马灯实验报告

专业:

电子信息工程

姓名:

朱东福

班级:

201401班

学号:

日期:

年月日

微机原理●实验●测试

并行IO接口实验—走马灯

专业电子信息与通信学院班级电信班日期2016/12/05第3次试验

姓名组别15指导老师成绩

实验课题并行IO接口实验——走马灯

一、实验目的

1.掌握GPIOIP核的工作原理和使用方法

2.掌握中断控制方式的IO接口设计原理

3.掌握中断程序设计方法

4.掌握IO接口程序控制方法

-------查询方式

-------延时方式

二、实验任务

•Led走马灯输出

用延时、中断两种方式实现

三、实验原理

硬件实现框图如图所示:

四、硬件实现步骤

1.使用XPS创建一个基于AXI总线的最小计算机系统。

File–>NewBSBProject,如图:

2.修改时钟设置:

将时钟产生器的时钟输入信号进行修改,修改为单一时钟源。

修改后的结果如图:

3.添加GPIOIP核,设置LEDs_8Bits配置:

a.在IPCatalog标签中,双击下面图标创建GPIOIP核:

b.添加GPIOIP核后,将名字改为LED_8Bits,如图:

c.更改LED_8Bits配置窗口的属性,如图:

4.添加AXIInterruptControllerIP核:

a.在IPCatalog标签中,双击下面图标创建INTCIP核:

b.添加axi_intc_0的中断源,如图:

c.将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT,如图:

 

5.产生外部GPIO连接:

a.选中LEDs_8Bits中的GPIO_IO_O,选择makeexternal,生成外部连接端口;选中GPIO_IO,设置为“Noconnection”,取消其外部连接端口。

结果如图:

b.在ports标签下,展开ExternalPorts项,可看到LEDs_8Bits生成的LEDs_8Bits_GPIO_IO_PIN端口,如图:

 

6.添加timerIP核:

a.选择如图的IP核并双击,添加到工程:

b.中断信号的连接结果如图所示:

7.配置UCF文件:

在UCF文件中修改如图所示配置,配置LED连接电路约束:

8.创建工程过程完成后,

a.在主界面下选择Hardware->GenerateNetlist;

b.在主界面下选择Hardware->GenerateBitstream;

c.单击GraphicalDesignView,可以看到系统的连接图,如下:

五、应用软件设计

1、延时方式实现走马灯

(1)SDK提供的外设驱动以及应用程序

1点击project->ExpertHardwareDesigntoSDK…,点击Export&LaunchSDK:

 

2在SDK中,点击file->new->boardsupportpackage,如图:

 

3点击file->new->applicationproject,创建一个EmptyApplicant工程,如图所示:

2、设计用户应用程序

(1)延时方式的程序,没有中断和计时器部分,通过for循环来达到延时的目的

#include"xparameters.h"

#include"xil_io.h"

intmain()

{

charLed_8Bits=0x01;

inti,j;

Xil_Out32(XPAR_LEDS_8BITS_BASEADDR+0x4,0x0);

while

(1)

{

for(i=0;i<8;i++)

{

Xil_Out32(XPAR_LEDS_8BITS_BASEADDR,Led_8Bits);

for(j=0;j<0xa5e100;j++);

Led_8Bits=Led_8Bits<<1;

}

Led_8Bits=0x01;

}

return0;

}

 

(2)中断方式实现走马灯

用户应用程序的设计包括定时器配置、启动中断系统、设计中断服务程序。

中断服务程序:

要求每产生一次中断led灯亮的位置向高位移动1位。

完整的程序代码如下,其中:

main为主程序,timerCounterHandler为中断服务程序。

该程序设置定时器初始值为0x5f5e100,表示计数100M个时钟脉冲,由于时钟为100MHz,因此1秒钟产生一次中断。

设置定时器的工作方式为允许中断、自动装载、减计数模式。

源代码:

代码如下:

#include"xparameters.h"

#include"xtmrctr.h"

#include"xintc.h"

#include"xil_exception.h"

#defineTMRCTR_DEVICE_IDXPAR_TMRCTR_0_DEVICE_ID

#defineINTC_DEVICE_IDXPAR_INTC_0_DEVICE_ID

#defineTMRCTR_INTERRUPT_IDXPAR_INTC_0_TMRCTR_0_VEC_ID

#defineTIMER_CNTR_00

#defineRESET_VALUE0x5F5E100

voidTimerCounterHandler(void*CallBackRef,u8TmrCtrNumber);

XIntcInterruptController;

XTmrCtrTimerCounterInst;

u32LedBits;

intmain(void)

{

intStatus;

LedBits=0;

Xil_Out32(XPAR_LEDS_8BITS_BASEADDR+0x4,0x0);

Status=XTmrCtr_Initialize(&TimerCounterInst,XPAR_TMRCTR_0_DEVICE_ID);

if(Status!

=XST_SUCCESS){

returnXST_FAILURE;

}

Status=XIntc_Initialize(&InterruptController,INTC_DEVICE_ID);

if(Status!

=XST_SUCCESS){

returnXST_FAILURE;

}

Status=XIntc_Connect(&InterruptController,TMRCTR_INTERRUPT_ID,(XInterruptHandler)XTmrCtr_InterruptHandler,(void*)&TimerCounterInst);

if(Status!

=XST_SUCCESS){

returnXST_FAILURE;

}

Status=XIntc_Start(&InterruptController,XIN_REAL_MODE);

if(Status!

=XST_SUCCESS){

returnXST_FAILURE;

}

XIntc_Enable(&InterruptController,TMRCTR_INTERRUPT_ID);

microblaze_register_handler((XInterruptHandler)XIntc_InterruptHandler,&InterruptController);

microblaze_enable_interrupts();

XTmrCtr_SetHandler(&TimerCounterInst,TimerCounterHandler,&TimerCounterInst);

XTmrCtr_SetOptions(&TimerCounterInst,TIMER_CNTR_0,XTC_INT_MODE_OPTION|XTC_AUTO_RELOAD_OPTION|XTC_DOWN_COUNT_OPTION);

XTmrCtr_SetResetValue(&TimerCounterInst,TIMER_CNTR_0,RESET_VALUE);

XTmrCtr_Start(&TimerCounterInst,TIMER_CNTR_0);

while

(1);

returnXST_SUCCESS;

}

voidTimerCounterHandler(void*CallBackRef,u8TmrCtrNumber)

{

Xil_Out32(XPAR_LEDS_8BITS_BASEADDR,1<

LedBits++;

if(LedBits==8)

LedBits=0;

}

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2