SOPC实验指导书
- 格式:doc
- 大小:227.50 KB
- 文档页数:19
SOPC实验指导书电信学院实验中心目录第一章EL-SOPC4000实验系统的资源介绍 (1)一、系统功能概述 (1)二、系统硬件资源 (2)三、特别说明 (11)第二章数字可编程设计实验 (12)实验一组合逻辑3-8译码器的设计 (12)第三章基于NIOS的软核设计实验 (23)实验一 Nios软核的设计 (23)实验二外设模块的设计 (27)实验三 SOPC应用系统的生成 (40)实验四 Nios II软核验证以及Nios II IDE软件的介绍 (46)实验五 SOPC系统的PIO验证 (52)实验六基于NIOS的交通灯实验 (55)实验七 7段数码管显示实验 (59)实验八按键及拨码开关实验 (61)实验九 16×16 LED点阵实验 (62)实验十 UART与PC机通信实验 (64)第一章EL-SOPC4000实验系统的资源介绍一、系统功能概述EL-SOPC4000实验箱是集EDA 和SOPC 开发为一体的综合性实验箱,它不仅可以独立完成各种EDA 设计,也可以完成多种SOPC开发。
主CPU适配器E-PLAY-SOPC配合EL-SOPC4000底板,可完成各种基本的EDA实验。
在实验板上有丰富的外围扩展资源,有常用的按键,拨码开关,LED灯,蜂鸣器,交通灯,16x16点阵,数码管,4x4矩阵键盘,AD/DA,CAN功能单元,RS232,RS485,可调时钟输出。
实验板上还集成了一个8寸的VGA接口的液晶屏,可完成视频图像的显示。
由于CPU 适配器E-PLAY-SOPC本身具有E_PLAY接口,只需提供电源即可独立完成功能测试,也可控制用户开发的E_PLAY接口模块。
由于EL-SOPC4000底板加入了两路E_LAB外扩接口,可以配合公司现有的多种E_LAB模块,来完成大学生毕业设计、电子设计竞赛、及创新设计,同时该系统也是从事教学及科研的广大教师和工程师们的理想开发工具,具有极高的灵活性,开放性和可开发性。
1.实验目的 (1)2.实验内容 (1)3.预备知识 (1)4.实验设备 (1)5.基础知识 (1)(1)SOPC的基本概念 (1)(2)NIOS II简介 (1)(3)Avalon总线简介 (1)(4)开发工具简介 (2)6.实验过程 (3)(1)Quartus II的应用—跑马灯工程开发流程 (3)设计输入_控制模块 (4)编译工程 (15)工程仿真 (17)设计输入_分频模块 (20)锁定引脚 (22)下载配置文件 (24)(2)创建基于NIOS II的SOPC硬件系统 (26)创建系统模块 (26)编译工程 (34)锁定引脚 (34)(3)开发基于NIOS II的软件工程 (34)创建工程 (34)编译工程 (39)工程仿真 (39)SOPC实验指导1.实验目的(1)了解SOPC设计技术(2)了解基于软核的嵌入式系统设计的原理和技术(3)学习并掌握一种系统定制的方法2.实验内容(1) 创建并完成一个基本的跑马灯工程,熟悉Altera综合开发平台Quartus II 的应用(2) 利用SOPC Builder创建基于NIOS II的SOPC硬件系统(3) 利用NIOS II IDE开发应用程序,利用软件实现控制一个LED灯闪烁3.预备知识(1)C语言基础、VHDL或Verilog语言基础(2)程序调试的基础和方法4.实验设备(1)硬件:NIOS II Evaluation Kit(基于Cyclone EP1C12)、PC机;(2)软件:操作系统(Windows98/2000/XP)、Quartus II、NIOS II IDE。
5.基础知识(1)SOPC的基本概念z SOPC即片上可编程系统,这种技术基于FPGA芯片,将处理器、存储器、I/O口等系统设计需要的模块集成到一起,完成整个系统的主要逻辑功能,具有设计灵活,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。
(2)NIOS II简介z在很多对速度的要求不是很高的低端应用,Altera将一个软核放入PLD,这 个软核就是NIOS,它只占芯片内部很少的一部分逻辑单元,成本很低。
目录目录 (1)第一章系统的硬件单元及使用说明 (2)一、本实验箱的结构特点: (2)二、各模块电路说明: (3)1、数码管显示模块 (3)2、AD 转换模块 (3)3、DA 转换模块 (4)4、以太网模块 (4)6、VGA接口模块 (5)7、PS/2接口模块 (6)8、串行接口模块 (6)9、开关量输入输出模块 (7)10、按键模块 (7)11、LED 灯指示模块 (8)12、音频接口模块 (8)13、TFT液晶接口模块 (9)14、USB接口电路 (9)第二章QUARTUS II和NIOS II 软件的使用方法 (10)一、Q UARTUS II软件的使用方法 (10)二、SOPC B UILDER /N IOS II IDE软件使用方法 (19)第三章VHDL基本程序设计实验 (27)实验一组合逻辑半加器的设计 (27)实验二使用VHDL设计组合逻辑全加器 (34)实验三带进位输入的8位加法器 (40)实验四全减器 (43)实验五四位向量加法/减法器 (46)实验六组合逻辑3-8译码器的设计 (48)实验七数据比较器 (51)实验八多路数据选择器 (53)实验九编码器 (56)实验十计数器 (59)实验十一7段数码管控制接口 (62)实验十二16*16点阵设计 (64)实验十三MOORE机 (68)实验十四MEALY机 (71)实验十五D/A接口 (74)实验十六A/D接口 (76)第一章系统的硬件单元及使用说明一、本实验箱的结构特点:1、系统构成SOPC综合实验系统开发实验平台采用ALTERA Cyclone II EP2C20处理器,集众多功能于一体,采用全新的"主控制板+……+核心板+平台主板"自由组合式结构。
根据实验研发需求,可实现基于ALTERA、XILINX、ACTEL、Lattice等厂家的软核/硬核处理器相结合的嵌入式系统设计。
本实验系统实验平台功能强大,硬件接口丰富,平台嵌入式软件除支持C、C++语言开发之外,还支持uC/OS II、uClinux嵌入式操作系统。
第一章EDA技术综合应用设计基础1.1 EDA技术综合应用的形式随着EDA技术的深入发展和EDA技术软硬件性能价格比的不断提高,EDA技术的应用将向广度和深度两个方面发展。
根据利用EDA技术所开发的产品的最终主要硬件构成来分,作者认为,EDA技术的应用发展将表现为如下几种形式:(1) CPLD/FPGA系统:使用EDA技术开发CPLD/FPGA,使自行开发的CPLD/FPGA作为电子系统、控制系统、信息处理系统的主体。
(2) ―CPLD/FPGA+MCU‖系统:综合应用EDA技术与单片机技术,将自行开发的―CPLD/FPGA+MCU‖作为电子系统、控制系统、信息处理系统的主体。
(3) ―CPLD/FPGA+专用DSP处理器‖系统:将EDA技术与DSP专用处理器配合使用,用―CPLD/FPGA+专用DSP处理器‖构成一个数字信号处理系统的整体。
(4) 基于FPGA实现的现代DSP系统:基于SOPC(a System on a Programmable Chip)技术、EDA技术与FPGA技术实现方式的现代DSP系统。
(5) 基于FPGA实现的SOC片上系统:使用超大规模的FPGA实现的,内含1个或数个嵌入式CPU或DSP,能够实现复杂系统功能的单一芯片系统。
(6) 基于FPGA实现的嵌入式系统:使用CPLD/FPGA实现的,内含嵌入式处理器,能满足对象系统要求的特定功能的,能够嵌入到宿主系统的专用计算机应用系统。
1.2 EDA技术综合应用的设计方法与建模1.2.1 分析方法传统的电路设计方法都是自底向上进行设计的,也就是首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成各模块后进行连接,最后形成系统。
在基于EDA技术的系统设计的最重要环节——在系统的基本功能或行为级上对设计的产品进行描述和定义时,我们采用自顶向下分析,自底向上设计的方法。
所谓―自顶向下分析‖,就是指将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模块,层层分解,直至整个系统中各子系统关系合理,并便于逻辑电路级的设计和实现为止。
东华理工大学自编教材2011年6月《SOPC设计与应用技术》研究性实践教学指导书编写黄乡生东华理工大学机械与电子工程学院二○一一年六月随着电子技术的发展,特别是集成电路技术的发展,使电子电路逐步告别分立元件时代,向小型化、集成化方向发展,要开发拥有自主知识产权的硬件电路,就必须进行ASIC(Application Special Integrated Circuit 专用集成电路)、SOPC(System on Programmable Chip单片可编程系统)的设计,就必须使用和掌握现代EDA(Electronic Design Automation 电子设计自动化)技术,这是科学技术的发展对教学内容提出的新要求。
目前,“数字电子技术基础”知识仍然是数字电路和数字系统的基本设计方法。
为了适应新世纪人才培养的需要,紧跟新技术的发展,要求学生掌握数字系统设计的新方法,用现代EDA 技术解决传统的数字系统设计问题。
EDA技术对于高等学校工科电子类学生能力培养的重要性已经非常明确,但是如何合理安排教学内容,如何实施实践教学,使学生在有限的时间内尽快掌握EDA的基本方法,对于《EDA技术与应用》这门实践性非常强的课程来说是应该首先加以研究的重要问题。
基于上述考虑,我们提出“研究性实践”教学方法的理念,作为实践教学改革的一种尝试,这正是编写这本教材的出发点。
本教材完全摒弃了一般EDA教材先给出实验原理、方法、步骤,学生照搬教材内容、按部就班就可完成实验的编写套路。
《EDA技术与应用研究性实践教学指导书》分为基本研究方法实验、实验的综合设计与研究、课题研究与设计实现等三个部分。
三个部分既互相关联又相对独立是一个内容由浅入深、由易到难、逐层递进的有机整体。
前两个部分实验都有原理介绍或实例,然后给出实验或综合设计题目、要求但是不给出程序,最后均有思考题。
每个实践内容都要求学生预习,填写预习报告,由指导老师评分。
CON目录第一章实验箱简介 (2)第二章EDA实验单元 (5)实验一七人表决器 (5)实验二格雷码变换 (13)实验三BCD码加法器 (15)实验四四位全加器 (17)实验五四人抢答器 (19)实验六四位并行乘法器 (20)实验七设计基本触发器 (21)实验八设计74LS169计数器功能模块 (25)实验九步长可变的加减计数器 (27)实验十可控脉冲发生器 (28)实验十一正负脉宽数控调制信号发生器 (30)实验十二序列检测器 (32)实验十三四位并行流水乘法器 (34)实验十四出租车计费器 (37)实验十五多功能数字钟 (39)实验十六数字秒表 (41)实验十七频率计 (43)实验十八交通灯控制器 (45)实验十九数码锁 (47)实验二十VGA彩条发生器 (49)附录 (51)第一章实验箱简介EDA/SOPC实验箱是集EDA和SOPC开发为一体的综合性实验箱,它不仅可以独立完成几乎所有的EDA设计,也可以完成大多数的SOPC开发。
采用Altera公司的Cyclone系列的12万门FPGA为核心,整个系统采用模块化设计,各个模块之间可以自由组合,使得该实验箱的灵活性大大提高。
同时实验箱还提供了丰富的接口模块,供人机交互,从而大大增加了实验开发者开发的乐趣,满足了普通高等院校、科研人员等的需求。
开发工程师可以使用VHDL语言、Verilog HDL语言、原理图输入等多种方式,利用Altera公司提供的Quartus II及Nios软件进行编译,下载,并通过EDA/SOPC实验箱进行结果验证。
实验箱提供多种人机交互方式,如键盘阵列、按键、拨挡开关输入;七段码管、大屏幕图形点阵LCD显示;串口通信;VGA接口、PS2接口、USB接口、Ethernet接口等,利用Altera 公司提供的一些IP资源和Nios 32位处理器,用户可以在该实验箱上完成不同的SOPC设计。
EDA/SOPC实验箱提供的资源有:●Altera公司的EP1C6Q240C8,12万门级FPGA,另外可选配更高资源的FPGA●FPGA配置芯片采用可在线变成的EPC2,通过JTAG口和简单的跳线即可完成设计的固化●1个数字时钟源,提供48MHz、12MHz、1MHz、100KHz、10KHz、1KHz、100Hz、10Hz、2Hz和1Hz等多个时钟●1个模拟信号源,提供频率和幅度可调的正弦波、三角波和方波●两个串行接口,一个用于SOPC开发时的调试,另一个可以完成其它的通信●1个VGA接口●1个PS2接口,可以接键盘或鼠标●1个USB接口,利用PDIUSBD12芯片实现USB协议转换●1个Ethernet接口,利用RTL8019芯片实现TCP/IP协议转换●基于SPI接口的音频CODEC模块●1个输入、输出探测模块,供数字信号的观察●16个LED显示●8个拨挡开关输入●8个按键输入●1个4X4键盘阵列●8个七段码管显示●1个扬声器模块●1个交通灯模块●1个直流电机模块●1个高速AD和1个高速DA●240×128大屏幕图形点阵LCD显示●存储器模块提供256K×32Bit的SRAM和2M×8Bit的FLASHROM实验箱基本布局如下图1-1所示:图1-1 EDA/SOPC 试验箱系统布局下面就部分模块做简要介绍。
篇一:sopc实验指导书sopc实验3.1使用niosⅱ ide建立用户程序1.创建一个新的c/c++应用工程执行下面的步骤来创建一个新的c/c++应用工程:1. 启动niosⅱ ide。
选择【开始】??【程序】??【altera】??【quartusⅱ 5.0】??【nios ⅱ development kits 5.0】??【niosⅱ ide】启动niosⅱ ide。
也可以通过图1.1直接点击ⅱ ide。
按钮来启动nios图1 启动niosⅱ ide2.如果出现workspace launcher对话框,单击设置工作空间为quartusⅱ工程的文件夹,如图2所示,这样便于管理。
如果是第一次进入工作区,niosⅱ ide会先弹出一个欢迎界面,此时点击右上角的workbench图标,就可以进入niosⅱ ide编辑界面。
图2设置ide工作空间3.如图3所示,选择【file】??【new】??【c/c++ application】来打开新建c/c++工程向导,如图4所示。
图3打开新建c/c++工程向导1图4新建c/c++工程向导4.单击select target hardware右侧的按钮打开select target hardware窗口,选择led_nios2_system.ptf文件,即指向当前硬件设计系统,如图5所示。
图5选择硬件目标文件5.选择select project template列表中的hello_led。
name栏中自动更新为hello_led_0,确认选中use default location栏,如图6所示,单击完成工程创建。
2图6完成设置后的工程向导向导中的select project templates一栏中是已经设计好的软件工程,用户可以选择其中的一个,把它当作模板来创建自己的工程。
当然也可以选择blank project(空白工程),完全由用户写所有的代码。
本实验选取了hello_led工程,然后在此基础上进行适当的修改,一般情况下这比空白工程更加容易,也更方便。
SOPC实验指导书钮文良韩玺编著北京联合大学信息学院2007年12月6日目录第1章SOPC实验系统介绍 (3)1.1 系统硬件平台设计 (3)1.2 系统软件实验开发 (7)1.3 SOPC系统实验介绍 (8)第2章SOPC基本概念与基本原理 (10)2.1 SOPC技术 (10)2.2 基于FPGA嵌入IP软核的SOPC系统 (11)2.3 SOPC设计 (13)第3章SOPC设计开发案例 (14)3.1 Nios控制LED实验 (14)3.2 构建比较复杂的Nios II系统实验 .................................. 错误!未定义书签。
3.3 SOPC下μC/OS II操作系统移植实验............................ 错误!未定义书签。
3.4 Nios II控制下的UART串行接口通信实验 .................. 错误!未定义书签。
3.5 底板8×8点阵LED图形实验 ......................................... 错误!未定义书签。
3.6 VGA&SVGA接口显示器彩条信号发生器实验............ 错误!未定义书签。
3.7 按键控制数码管计数器实验 ........................................... 错误!未定义书签。
3.8 信号发生器设计实验 ....................................................... 错误!未定义书签。
3.9 底板键盘控制SOPC实验板数码管实验 ....................... 错误!未定义书签。
3.10 4位按键控制下的LED、数码管SOPC计数实验...... 错误!未定义书签。
3.11 基于SOPC的128*64 LCD显示实验 .......................... 错误!未定义书签。
3.9 底板键盘控制SOPC实验板数码管实验实验目的:1. 了解键盘的工作原理,以及学习基于Nios II的SOPC系统上,如何运用寄存器访问外围设备的方式;2. 熟悉数码管显示的基本原理和实现方法。
实验内容:进一步熟悉SOPC builder来建立系统,了解寄存器如何访问外围设备的方式,在实验板上实现键盘控制数码管的显示。
实验设备:SOPC核心板、USB-Blaster下载线、开发实验底板、电源、PC。
实验步骤:1:打开工程在3.5实验的基础上进行修改,打开工程,运行SOPC Builder。
在SOPC Builder中修改原本的输出shuju_pio口为输入shuju_pio口,修改方法为双击shuju_pio,做如图3-9-1修改,其他采用默认:图3-9-1 shuju_pio设定为输入口然后点击Finish如图3-9-2:图3-9-2 系统电路组成元件设置完成后,重新生成系统,在quartus II中,右击鼠标,会调出如图3-9-3,点击Update Symbol or Block…选项:图3-9-3 更新电路出现如图3-9-4所示框图,然后选中第三项,点击OK:图3-9-4 更新所有的模块会发现原本的输出shuju_pio口成为输入shuju_pio口,连接电路,如图3-9-5:图3-9-5 系统电路图2:管脚分配可以用Assigments pins来分配管脚,在3.5实验基础上,管脚不变。
3:设定不用的管脚:选定Assignments—〉Settings…对不用的管脚进行分配,如图3-9-6修改:在Device & Pin Options…中进行修改,如图3-9-7:图3-9-7 器件与管脚选项在未使用的管脚(Unused Pins)—>Reserve all unused pins中设定:As input tri-stated withweak pull-up,做如图3-9-8所示修改:图3-9-8 未用管脚设置4:编译工程编译整个工程,进行管脚分配,成功则完成硬件设计,否则返回检查;7:硬件下载将生成的.sof文件下载到目标板上,然后进入;8:软件调试运行打开Nios II IDE,选择File->NEW->C/C++ Application,在Select Project Template中选择hello_led,点击Next,选中Create a new system library named,单击Finish完成;9:编译并运行Nios II软件工程在Nios II软件开发中,运行底板键盘控制SOPCD实验板数码管显示程序,中间有一个译码的过程,该程序的流程图如图3-9-9所示:图3-9-9 软件程序流程图以hello_led为模板编译软件工程。
SOPC实验3.1使用NiosⅡ IDE建立用户程序1.创建一个新的C/C++应用工程执行下面的步骤来创建一个新的C/C++应用工程:1. 启动NiosⅡ IDE。
选择【开始】››【程序】››【Altera】››【QuartusⅡ 5.0】››【NiosⅡ Development Kits 5.0】››【NiosⅡ IDE】启动NiosⅡ IDE。
也可以通过图1.1直接点击按钮来启动Nios Ⅱ IDE。
图1 启动NiosⅡ IDE2.如果出现Workspace Launcher对话框,单击设置工作空间为QuartusⅡ工程的文件夹,如图2所示,这样便于管理。
如果是第一次进入工作区,NiosⅡ IDE会先弹出一个欢迎界面,此时点击右上角的Workbench图标,就可以进入NiosⅡ IDE编辑界面。
图2设置IDE工作空间3.如图3所示,选择【File】››【New】››【C/C++ Application】来打开新建C/C++工程向导,如图4所示。
图3打开新建C/C++工程向导图4新建C/C++工程向导4.单击Select Target Hardware右侧的按钮打开Select Target Hardware窗口,选择led_nios2_system.ptf文件,即指向当前硬件设计系统,如图5所示。
图5选择硬件目标文件5.选择Select Project Template列表中的hello_led。
Name栏中自动更新为hello_led_0,确认选中Use Default Location栏,如图6所示,单击完成工程创建。
图6完成设置后的工程向导向导中的Select Project Templates一栏中是已经设计好的软件工程,用户可以选择其中的一个,把它当作模板来创建自己的工程。
当然也可以选择Blank Project(空白工程),完全由用户写所有的代码。
本实验选取了hello_led工程,然后在此基础上进行适当的修改,一般情况下这比空白工程更加容易,也更方便。
创建工程后,在NiosⅡ IDE工作台左侧的C/C++ Projects视图中显示两个新的工程:hello_led_0和hello_led_0_syslib。
hello_led_0是C/C++应用工程,而hello_led_0_syslib是描述hello_nios2_system系统硬件细节的系统库。
IDE工作台的左侧有两个标签:C/C++ Projects视图和Navigator视图。
单击C/C++ Project选项卡来显示C/C++ Project视图。
该视图适合于大多数的C/C++开发活动。
打开hello_led.c,将其中的int alt_main函数用程序清单2.1所示的清单替换,然后保存。
int alt_main (void){alt_u8 led = 1;alt_u32 i;while (1){led=1;IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);i = 0;while (i<500000){i++;}led=0;IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led);i=0;while (i<500000){i++;}}return 0;}3.2 PIO输出控制实验1——流水灯控制1.实验目的熟悉NiosⅡ PIO设备的访问方法2.实验设备硬件:PC机EDA/SOPC/DSP实验箱软件:QuartusⅡ 5.0、NiosⅡ IDE 5.03.实验内容使用PIO口控制8个LED进行流水灯显示。
4.实验步骤(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为LEDCon_C。
(2)在LEDCon_C工程文件夹中新建应用程序文件main.c。
(3)在System Library设置页中,把程序和数据区都指定为flash。
(4)编译整个工程,查找语法错误。
(5)Debug整个程序,看输出是否正确。
(6)把程序下载到Flash中去全速运行程序。
5.实验参考程序PIO输出控制实验1的例程见程序清单3.1程序清单3.1 流水灯控制#include "system.h"#include "altera_avalon_pio_regs.h"#include "alt_types.h"int main (void){alt_u8 led = 0x2;alt_u8 dir = 0;volatile int i;while (1){if (led & 0x81){dir = (dir ^ 0x1);}if (dir){led = led >> 1;}else{led = led << 1;}IOWR_ALTERA_A V ALON_PIO_DATA(LED_BASE, led);i = 0;while (i<500000)i++;}return 0;}3.3 键盘中断实验1.实验目的(1)熟悉中断服务程序的编写和注册方法。
(2)熟悉中断服务程序的调试方法。
(3)熟悉NiosⅡ处理外部中断的方式。
2.实验设备硬件:PC机EDA/SOPC/DSP实验箱软件:QuartusⅡ 5.0、NiosⅡ IDE 5.03.实验内容外部中断信号由键盘值提供,然后将中断事件反映到LED上,每按一次键LED亮一次。
4.实验前准备键盘模块的设计包括键盘扫描、键盘译码和键盘消抖。
本系统采用VHDL语言对以上三个功能模块进行描述。
其VHDL源程序见附录1。
5.实验步骤(1)启动NiosⅡIDE并建一个空白C\C++工程,然后命名为KeyBoard_C。
(2)在KeyBoard_C工程文件夹中新建应用程序文件main.c。
(3)在System Library设置页中,把程序和数据区都指定为flash。
(4)编译整个工程,查找语法错误。
(5)中断服务程序处设下断点,全速运行程序,然后按下键盘中一个键,单步调试中断服务程序,并观察中断处理过程。
(6)全速运行程序,按下键,控制LED。
6.实验参考程序键盘中断参考程序见程序清单3.2。
#include "system.h"#include "altera_avalon_pio_regs.h"#include "alt_types.h"#include "sys/alt_irq.h"volatile int edge_capture;alt_u32 done=0;static void handle_keyboard_interrupts(void* context, alt_u32 id){//int i;/* cast the context pointer to an integer pointer. */volatile int* edge_capture_ptr = (volatile int*) context;unsigned int temp;IOWR_ALTERA_A V ALON_PIO_IRQ_MASK(KEYBOARD_IN_BASE, 0x00); IOWR_ALTERA_A V ALON_PIO_DA TA(KEYBOARD_CONTROL_BASE, 0x1);/* Read the data register on the keyboard PIO */temp = IORD_ALTERA_A V ALON_PIO_DATA(KEYBOARD_IN_BASE); IOWR_ALTERA_A V ALON_PIO_DA TA(LED_BASE, 0x01);/* Read the edge capture register on the keyboard PIO. Store value. */*edge_capture_ptrIORD_ALTERA_A V ALON_PIO_EDGE_CAP(KEYBOARD_IN_BASE);/* Write to the edge capture register to reset it. */IOWR_ALTERA_A V ALON_PIO_EDGE_CAP(KEYBOARD_IN_BASE, 0x0); /* reset interrupt capability for the keyboard PIO. */IOWR_ALTERA_A V ALON_PIO_IRQ_MASK(KEYBOARD_IN_BASE, 0x0f); IOWR_ALTERA_A V ALON_PIO_DA TA(KEYBOARD_CONTROL_BASE, 0x0); }/* Initialize the keyboard_pio. */static void init_keyboard_pio(void){/* Recast the edge_capture pointer to match the alt_irq_register() function* prototype. */void* edge_capture_ptr = (void*) &edge_capture;/* Enable all keys interrupts. */IOWR_ALTERA_A V ALON_PIO_IRQ_MASK(KEYBOARD_IN_BASE, 0x0f); /* Reset the edge capture register. */IOWR_ALTERA_A V ALON_PIO_EDGE_CAP(KEYBOARD_IN_BASE, 0x0); IOWR_ALTERA_A V ALON_PIO_DA TA(KEYBOARD_CONTROL_BASE, 0x0); /* Register the interrupt handler. */alt_irq_register(KEYBOARD_IN_IRQ,edge_capture_ptr,handle_keyboard_interrupts );}int main (void){int i;init_keyboard_pio();while(1){IOWR_ALTERA_A V ALON_PIO_DATA(LED_BASE,0x00);for(i=0;i<200000;i++);}return 0;}3.4定时器实验1——使用系统时钟服务NiosⅡ定时器可用作系统时钟,时间标记,看门狗和脉冲发生器,由于standard系统在生成时,并未启动“Timeout pulse”功能,所以下面的实验将依次介绍定时器的系统时钟,时间标记和看门狗应用。