实验09_SOPC_定时器内核及应用S
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
补充:与Interval Timer内核相关的文件信息
注释1:system.h文件中, 与本例中用到的定时器相 关的信息。
注释2:定时器寄存器访 问宏定义相关信息。
(3)编写代码,编译,改错,调试(一般定时器的使用)
注释1:注意各种头文件 的添加及其作用。本例中, 使用JTAG UART为标准 输入输出设备,直接使用 API函数控制,不采用寄 存器控制,故可不用添加 JTAG UART的头文件。
项目,在Quartus II中
下载硬件设计,在EDS中, 注释1.观察实验现象。当关闭
RUN Configration下载
EDS软件或停止JTAG UART口
软件设计。
(右端红色方块符号),开发
板板上的LED灯是否闪烁。2分
钟之后灯还会闪Baidu Nhomakorabea么,为什么?
2.在内核元件库,查找栏 中输入【uart】,在筛 选结果中选择【JTAG UART】双击添加。
3.默认设置即可,单击 【Finish】添加。修改内 核模块名称为 【jtag_uart】。
(2)添加Interval Timer内核进行设置
4.在内核元件库,查找 栏中输入【timer】, 在筛选结果中选择 【Interval Timer】双 击添加。
注释2:定时器的初始化 含对寄存器的设置和中断 注册两部分。本例Qsys 设置中,固定了定时器周 期,也可不固定其周期, 通过对周期计数器的设置, 改变定时值。
(4)实验现象及注意事项
4.按设计要求,输入代码, 查错,调试。出现问题, 按提示改正。软件编译正 确后,CTRL+B编译工程
5.在信息显示栏的窗口,可见 JTAG UART口输出的,与程序运 行同步输出的打印值。
二.实验操作
本实验,除掌握前述实验内容相关的操作意外,还 需要注意以下几个问题。
(1)在实验过程中,要逐步了解IP内核的特点,熟悉寄存器和 对其进行设置、操作的文件位置和使用方法。 (2)本例中用到标准输入输出设备,以此了解设计程序运行情 况,注意相关设置和初始化注意JTAG-UART与UART之间的区别。 (3)注意定时器中断的优先级及嵌套功能。 (4)本次实验,用JTAG UART回显程序运行参数。JTAG UART采 用FIFO来缓存数据,若关闭JTAG UART窗口,则数据会在FIFO累 计,最终不断触发中断,系统运行“死机”,注意观察此现象。
(4)Whatchdog(看门狗)功能(下一实验介绍,本节略)。
本实验开发任务:
本例首先在前一实验NIOS II系统基础上,添加Interval Timer内核和 JTAG UART内核并设置,更新NIOS II系统和顶层硬件设计,生成硬件设计 (定时器为内部IP,一般无外部输出引脚)。
接着在EDS中更新或创建软件工程,根据Interval Timer各种功能特点, 编写代码实现对应的功能,并下载到开发板加以验证。
2.启动Qsys,在原NIOS II处理器系统中添加Interval Timer内核、 JTAG UART内核并设置。 (1)打开 Qsys软件添加JTAG UART内核并设置。 (2)添加Interval Timer内核(3个)进行设置。 (3)完成其他操作及生成NIOS II系统。
3.在QUARTUS II工程,更新NIOS II系统,编译、设置引脚,全程 编译,下载硬件设计.sof文件。
(2)System Clock(系统时钟),其功能与定时器类似,也是 每隔计时周期触发一次中断来实现某些功能,不过每个Nios II 只能有一个System Clock,可以指定所有 Interval Timer中的 一个为 System Clock。
(3)Timestamp(时间戳),可理解为一个在后台运行的时钟, 每调用一次就得到当前的时间(就好像在这个时间上盖了一个 戳),每个Nios II也只能有一个Timestamp。
8
定时器可进行的基本操作如下所述:
①Avalon主控制器通过对控制寄存器执行不同的写操作来控制
启动和停止定时器;使能/禁能IRQ;指定单次减1计数或连续减1计数模式
②处理器读状态寄存器获取当前定时器的运行信息。 ③处理器可通过写数据到periodl和periodh寄存器来设定定时器 周期。内部计数器计数减到0,立即从周期寄存器开始重新装载。 ④处理器可以通过写snapl或snaph获取计数器的当前值。 ⑤当计数器计数到达0时:
7.继续添加第二个定时 8.添加Watchdog用定时
器,作为Timestamp定 器。选中右侧的
时器。除周期设置为
【Watchdog】,选择定
1ms外,其他同第一个 时器为Watchdog功能定
定时器。【Finish】创 时器。在推荐的设置下,
建,修改名称为
按图示选择参数,如定
【 high_res_timer 】。 时周期、单位、定时器
实验要完成如下任务:
(1)在NIOS II系统中添加Timer内核、JTAG UART内核并设置(建议一次 添加多个,避免重复生成硬件,耗费时间),生成新的硬件系统;
(2)在EDS中创建或更新功能工程,实现20ms定时一次并触发中断,触发 N次后,翻转LED状态;
(3)在EDS中创建功能工程,利用系统时钟服务产生1S的周期性事件,控 制LED闪烁,用JTAG UART回送运行次数;
(4)使用时间标记服务来测两个函数的运行时间,用JTAG UART来显示相 关信息。
1.1 系统框架
Altera FPGA
JTAG 接口 时钟 振荡器
EPCS
芯片
JTAG 控制器
NIOS II 指令
处理器 数据
ALTPLL 内核
SYSTE M ID
Avalon
总线
EPCS内 核
定时器 内核
系统时 钟内核
10.设置新增模块的中断号。中断 号如图所示,也可以根据实际情 况手工调整或由软件自动分配。
3.在QUARTUS II工程,更新NIOS II系统,编译、设置引脚,全 程编译,下载硬件设计.sof文件
1.在.bdf文件中,选中NIOS II系统符号, 右键,【Update Symbol or Block】,则 更新符号(此操作也可忽略,因本例中添 加的内核模块均无对外引脚,故可略过此 步骤)。
实验09:定时器内核及其应用
实验任务: 使用定时器(Interval Timer)内核实现一般定
时器、System Clock 和Timestamp功能。
知识点:
1.掌握定时器(Interval Timer)内核添加设置方法。 2.掌握定时器JTAG UART内核添加设置方法。 3.掌握一般定时器功能实现方法。 4.掌握系统时钟定时器功能实现方法。 5.掌握定时器Timestamp功能实现方法。
为方便程序设计和调试,有时需显示一些信息,当选择JTAG UART内核为标准输入输出IO时,可以显示调试相关信息。
(1)定时器是利用Interval Timer的计时功能,设置计时周期, 每隔计时周期触发一次中断来实现某些功能,每个Nios II工程 可以有多个定时器,它们可以配合实现较复杂的功能。
位宽及寄存器初始设置,
注意输出信号的勾选。
(3)完成其他操作及生成NIOS II系统。
11.自动或手动分配新增模块的基地址。 查看错误或警告信息,根据提示,改 正错误设置,可选择性忽略一些警告。 保存,重新生成NIOS II系统(生成过 程略)。
9.按要求连接时钟、复位信号和数据、指 令总线。本例中,Watchdog有一个复位信 号输出到其他所有模块,注意连接。
时间戳 内核
PIO
片内 RAM
SDRA M内核
UART
JTAGUART内核 看门狗 内核
SDRAM
芯片
CH340
D+ D-
USB
1.2 Interval Timer内核
定时器内核综述
定时器是挂载在Avanlon总线上的32位定时器,特性如下: ① 两种计数模式:单次减1和连续减1计数模式(软件设置) ② 定时器到达0时产生中断请求(IRQ); ③ 可选择设定为看门狗定时器,计算到达0时复位系统; ④ 可选择输出周期性脉冲,在定时器计算到达0时输出脉冲; ⑤ 可由软件启动、停止或复位定时器; ⑥ 可由软件使能或屏蔽定时器中断。
①如果IRQ被使能,则产生一个IRQ ②(可选的)脉冲发生器输出有效持续一个时钟周期 ③(可选的)看门狗输出复位系统
1.3 具体操作步骤
1.启动QUARTUS II,创建或移动系统设计工程。 (1)在计算机最后一个盘,新建Experiment_SOPC文件夹,新 建本实验工程文件夹,命名为:Experiment_**_09(**为两位学 号,09为第一个实验)。 (2)建议按照实验3的方法,将前一工程移动复制到新工程目 录下并设置。
4.使用NIOS II Software Build Tools For Eclipse
开发用户程序并调试。 (1)更新原工程。 (2)修改、查看软件工程属性。 (3)编写代码,编译,改错,调试,实现一般定时器 功能并验证。 (4)实验现象及注意事项。 (5)实现系统时钟回调功能并验证。 (6)实现Timestamp功能并验证。
5.选中右侧的【Fullfeatured】,选择定时 器为全功能定时器。在 推荐的设置下,按图示 选择参数,如定时周期、 单位、定时器位宽及寄 存器初始设置。
6.修改内核模块名称为【sys_clock_timer】。 请自行翻译一些英文单词,了解设置的含义。
注释1.本例中,用 同一个定时器,分 别通过不同设置及 软件编程,实现一 般定时器和系统时 钟的功能。如需要, 可自行添加多个定 时器。
注释1.补充知识点:学会用文本文件 (verilog)的方式,管理顶层设计文件 (特别是大的、复杂的设计)。本操作完 成.bdf文件到.v文件的转换(选做)。
4.使用NIOS II Software Build Tools For Eclipse
开发用户程序并调试。
(1)新建软件工程或更新原工程(建议删除原工程文
系统需求:
1.实验之前,请以课件为基础,预习实验内容。 2.在指定的文件夹存储、命名各工程项目和文件。 3.规范实验报告的书写内容和格式。
一.实验原理
1.0 系统需求分析
Interval Timer模块(间隔计时器),它是Nios II中用来实 现计时功能的IP核模块,可以在Nios II中实现精确计时。定时 器、System Clock 、Timestamp和Watchdog都是基于Interval Timer来实现的。
2.分析与综合,分配引脚,全程编译。 (1)相关问题:编译过程较长,此时间 段可以做其他工作。 (2)添加或保留时序约束文件,可提高 系统性能,但同时也会增加全程编译的负 担,自行决定该文件的取舍。 (3)本设计中,虽然添加了Watchdog (看门狗),但是其是否使能,取决于在 软件设计中,是否开启了对应功能,本次 实验,不打算开启该功能(一旦开启,则 不能关闭)。
2.Sys_clk_timer和 timestamp_timer暂时 不选(本步骤仅验证一 般定时器的使用方法, 故可不选,后续实验步 骤,需针对性的选择设 置)。
3.Generate BSP。 (注意:有时,软件工程出现 莫名其妙的错误或故障,建议 检查软件工程目录和qsysinfo 文件选择情况,实在无法检查, 建议彻底删除原软件工程和相 关文件,重新创建软件工程)
1.启动QUARTUS II,创建或移动系统设计工程(略)
2.启动Qsys,在原NIOS II处理器系统中添加Interval Timer内核、JTAG-UART内核并设置
(1)打开 Qsys软件添加JTAG-UART内核并设置。
1.选择菜单栏,启动Qsys软件。 或直接在文件导航栏上双击 【.qsys】文件,打开Qsys软件, 并自动打开NIOS II系统设置文 件对话框。
件夹,新建工程)。 (2)修改、查看软件工程属性。
注释1:a.注意工程目录的 选择。b.注意clean project和Refresh工程及 其他设置。
1.更新或新建软件工程 后,在软件工程文件夹 中,设置代码优化和 BSP库关联设置。在BSP 库文件夹的BSP Editor 中,设置【jtag uart】 为标准输入输出设备。