华科并行接口设计—走马灯实验报告.docx
文本预览下载声明
专业电子信息与通信学院 班级 电信班 日期2016/12/05 第3次试验姓名 组别 15指导老师 成绩实验课题并行IO接口实验——走马灯实验目的掌握GPIO IP核的工作原理和使用方法掌握中断控制方式的IO接口设计原理掌握中断程序设计方法掌握IO接口程序控制方法-------查询方式-------延时方式实验任务Led走马灯输出用延时、中断两种方式实现实验原理硬件实现框图如图所示:硬件实现步骤使用XPS创建一个基于AXI总线的最小计算机系统。File – New BSB Project,如图:修改时钟设置:将时钟产生器的时钟输入信号进行修改,修改为单一时钟源。修改后的结果如图:添加GPIO IP核,设置LEDs_8Bits配置:在IP Catalog标签中,双击下面图标创建GPIO IP核:添加GPIO IP核后,将名字改为LED_8Bits,如图:更改LED_8Bits配置窗口的属性,如图:添加AXI Interrupt Controller IP核:在IP Catalog标签中,双击下面图标创建INTC IP核:添加axi_intc_0的中断源,如图:将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT,如图:产生外部GPIO连接:选中LEDs_8Bits中的GPIO_IO_O,选择make external,生成外部连接端口;选中GPIO_IO,设置为“No connection”,取消其外部连接端口。结果如图:在ports标签下,展开External Ports项,可看到LEDs_8Bits生成的LEDs_8Bits_GPIO_IO_PIN端口,如图:添加timer IP核:选择如图的IP核并双击,添加到工程:中断信号的连接结果如图所示:配置UCF文件:在UCF文件中修改如图所示配置,配置LED连接电路约束:创建工程过程完成后,在主界面下选择Hardware-Generate Netlist;在主界面下选择Hardware-Generate Bitstream;单击Graphical Design View,可以看到系统的连接图,如下:应用软件设计延时方式实现走马灯SDK提供的外设驱动以及应用程序点击project-Expert Hardware Design to SDK…,点击ExportLaunch SDK:在SDK中,点击file-new-board support package,如图:点击file-new-application project,创建一个Empty Applicant工程,如图所示:设计用户应用程序(1)延时方式的程序,没有中断和计时器部分,通过for循环来达到延时的目的#include xparameters.h#include xil_io.hint main(){char Led_8Bits = 0x01;int i,j;Xil_Out32(XPAR_LEDS_8BITS_BASEADDR+0x4,0x0);while(1){for(i=0;i8;i++){Xil_Out32(XPAR_LEDS_8BITS_BASEADDR,Led_8Bits);for(j=0;j0xa5e100;j++);Led_8Bits=Led_8Bits1;}Led_8Bits=0x01;}return 0;}中断方式实现走马灯用户应用程序的设计包括定时器配置、启动中断系统、设计中断服务程序。中断服务程序:要求每产生一次中断led灯亮的位置向高位移动1位。完整的程序代码如下,其中:main为主程序,timerCounterHandler为中断服务程序。该程序设置定时器初始值为0x5f5e100,表示计数100M个时钟脉冲,由于时钟为100MHz,因此1秒钟产生一次中断。设置定时器的工作方式为允许中断、自动装载、减计数模式。源代码:代码如下:#include xparameters.h#include xtmrctr.h#include xintc.h#include xil_exception.h#define TMRCTR_DEVICE_IDXPAR_TMRCTR_0_DEVICE_ID#define INTC_DEVICE_IDXPAR_INTC_0_DEVICE_ID#define TMRCTR_INTERRUPT_IDXPAR_INTC_0_TMRCTR_0_VEC_ID#define TIMER_CNTR_00#define RESET_VALUE0x5F5E100void TimerCounterHandler(void *CallBackRef,u8 TmrCtrNumber);XIntc InterruptCo
显示全部