1、走马灯实验报告并行IO接口实验实验报告 专业:电子信息工程班级:卓越1201班学号: U0姓名: 钟 远 维 一、 实验目的1. 掌握GPIO IP核的工作原理和使用方法2. 掌握中断控制方式的IO接口设计原理3. 掌握中断程序设计方法4. 掌握IO接口程序控制方法 -查询方式 -延时方式二、 实验任务 写一个Led走马灯输出的程序,并下载到FPGA板子上。用延时、中断两种方式实现。三、 实验原理 硬件实现框图 如图所示:四、 硬件实现步骤1. 使用XPS创建一个基于AXI总线的最小计算机系统。File New BSB Project,如图:2. 修改时钟设置:将时钟产生器的时钟输入信号进行修
2、改,修改为单一时钟源。修改后的结果如图:3. 添加GPIO IP核,设置LEDs_8Bits配置:a. 在IP Catalog标签中,双击下面图标创建GPIO IP核:b. 添加GPIO IP核后,将名字改为LED_8Bits,如图:c. 更改LED_8Bits配置窗口的属性,如图:4. 添加AXI Interrupt Controller IP核:a. 在IP Catalog标签中,双击下面图标创建INTC IP核:b. 添加axi_intc_0的中断源,如图:c. 将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT,如图:5. 产生外部GPI
3、O连接:a. 选中LEDs_8Bits中的GPIO_IO_O,选择make external,生成外部连接端口;选中GPIO_IO,设置为“No connection”,取消其外部连接端口。结果如图:b. 在ports标签下,展开External Ports项,可看到LEDs_8Bits生成的LEDs_8Bits_GPIO_IO_PIN端口,如图:6. 添加timer IP核:a. 选择如图的IP核并双击,添加到工程:b. 中断信号的连接结果如图所示:7. 配置UCF文件:在UCF文件中修改如图所示配置,配置LED连接电路约束:8. 创建工程过程完成后,a. 在主界面下选择Hardware-G
4、enerate Netlist;b. 在主界面下选择Hardware-Generate Bitstream;c. 单击Graphical Design View,可以看到系统的连接图,如下:五、 应用软件设置1) 中断方式实现走马灯a. SDK提供的外设驱动以及应用程序1. 点击project-Expert Hardware Design to SDK,点击Export&Launch SDK:2. 在SDK中,点击file-new-board support package,如图:3. 点击file-new-application project,创建一个Empty Applicant工程,如
5、图所示:b. 设计用户应用程序 用户应用程序的设计包括定时器配置、启动中断系统、设计中断服务程序。 中断服务程序:要求每产生一次中断led灯亮的位置向高位移动1位。 完整的程序代码如下,其中:main为主程序,timerCounterHandler为中断服务程序。该程序设置定时器初始值为0x5f5e100,表示计数100M个时钟脉冲,由于时钟为100MHz,因此1秒钟产生一次中断。设置定时器的工作方式为允许中断、自动装载、减计数模式。源代码:2) 延时方式实现走马灯 延时方式的程序,没有中断和计时器部分,通过for循环来达到延时的目的。 代码如下:六、 心得体会 通过用两种方式实现走马灯的实验
6、,我掌握了GPIO IP核的工作原理和使用方法,同时也明白了中断控制方式的IO接口设计原理,在这基础上,又进一步学习到了中断程序设计方法以及IO接口程序控制方法(包括查询方式和延时方式)。 在实验的过程中,我遇到了一些挫折,但是通过跟同学交流和看书上的原理就成功解决了。譬如,在实验过程中,出现了在添加中断的时候,不知道选择哪一个中断、还有,写UCF文件的时候,引脚的名称不知道怎么找、代码理解不了等等问题,但最后还是一一解决了。 这个实验,比起上一次实验来说,比较困难。最困难的是写程序代码的部分,由于一开始对中断程序的控制部分代码不是太懂,所以入手比较难,花费的时间比较的多。但是,通过实验,把中断的部分理解了以后,整个实验的目的和步骤都能成功的理解了。 希望下一次实验,也能顺利完成,并能通过实验学到更多的知识。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1