第7章 SOPC基础实验 FPGA应用技术基础教程 [电子教案].ppt

第7章 SOPC基础实验 FPGA应用技术基础教程 [电子教案].ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 SOPC基础实验 FPGA应用技术基础教程 [电子教案]

1)将光盘下03.Examples of Program\02.EDK9.1实验程序目录下的Sources的文件夹复制到E:\labs目录下。 2)选择“File”→“ Import”打开导入向导,如图7.96所示。 图7.96 (3)添加源文件 3)双击“File System”,浏览E:\labs\sources的目录,选择system_timer.c源文件,单击下面的“Browse”浏览,选择Into folder文件夹中的“SDK_lab”,单击“Finish”按钮,将文件添加到工程中,如图7.97所示。 图7.97 4)单击SDK软件左侧的“Navigator”选项,双击system_timer.c文件,在编辑器中打开该文件。当文件打开时自动进行编译,在底部报告的“Problems”和“Console”选项中都出现几个编译错误。每次在工程中编辑和保存文件后将自动执行编译,在工程项目的右侧的“Outline”选项也随着更新源文件中用的库和例程;在“Problems”选项卡中,双击第二个红色的“x”错误标记。将跳转到第33行,在打印声明中加上缺少的分号,保存文件,此错误信息将消失。 5)在右侧的“Outline”选项双击timer_int_handler函数,将跳转到源文件中该函数处。现在该函数未完成,你将在下一步中完成该函数。 1)在中断处理代码的全局变量声明处添加如下一个新的全局变量,保存后源文件会被编译,注意未声明变量的错误解决了,如图7.98所示。 unsigned int j=0; 图7.98 (4)写中断处理程序并编译代码 2)这个中断处理程序函数名称为timer_int_handler。这个名称必须与OPB定时器外设选项中的名称对应,如果名称不对应,中断处理程序不能连接到中断,编译时要出错,如图7.99所示。为timer_int_handler函数添加如下局部变量: unsigned int csr; 图7.99 3)在XPS System Assembly View窗口双击名称为delay的opb_timer实例,选择“View PDF Datasheet”并阅读data sheet。在data sheet中找到寄存器描述部分(Register Description),针对TCSR0寄存器有下述描述,如图7.100所示。 图7.100 4) OPB定时器的level0驱动提供两种功能,即读和写状态控制寄存器。在System Assembly View中右键单击“delay”,选择“Driver:tmrctr_v1_00_b”下的“View API Documentation”,浏览API文件,如图7.101所示。 图7.101 5) 在API文件中,单击文件上面的“File List”链接,然后在文件列表中单击“xtmrctr_l.h”链接。拖动文件中的滚动条,单击XTmrCtr_mGetControlStatusReg( )函数的链接来阅读更多关于这个函数的信息,用这个函数来决定是否发生中断,如图7.102所示。下面是OPB计时器文件中的相关信息: XTmrCtr_mGetControlStatusReg ( BaseAddress, TmrCtrNumber ) 图7.102 6)在SDK软件中将XTmrCtr_mGetControlStatusReg函数添加到代码中进行调用。参考xparameters.h头文件,用delay外设的基地(XPAR_DELAY_BASEADDR)来替代baseaddr。将32位的返回值存储到csr变数中,如图7.103所示。 csr = XTmrCtr_mGetControlStatusReg(baseaddr, 0); 图7.103 7)由XTC_CSR_INT_OCCURED_MASK参数和csr相与来检验第23位是否设置。如果发生中断,计数器的数值将增加。 if (csr XTC_CSR_INT_OCCURED_MASK) j = (j+1)%16; 8)计数器数值可以通过my_led外设来显示,使用前面实验中用过的MY_LED_mWriteReg()函数,计数器数值也可以通过printf函数打印出来。 MY_LED_mWriteReg(XPAR_MY_LED_0_BASEADDR, 0, j); xil_printf(Count value is: %x\n\r); 9)通过下面的函数调用清空中断: XTmrCtr_mSetControlStatusReg(baseaddr, 0, csr); 10)将printf改为xil_printf,xil_printf提供除了浮点处理功能外

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档