基于FPGA的SOPC技术
- 格式:doc
- 大小:1.60 MB
- 文档页数:12
sopc实验心得
在进行SOPC(系统级可编程器件)实验的过程中,我深刻体会到了它的强大和灵活性。
SOPC是一种基于现场可编程门阵列(FPGA)技术的系统设计方法,它将硬件与软件相结合,可以实现高度集成和可重构的设计。
在实验中,我首先学习了SOPC的基本概念和原理,了解了它的组成部分以及各个组件之间的连接方式。
然后,我利用Quartus II软件进行了仿真和综合,将设计的硬件描述语言(HDL)代码转化为FPGA可以理解的形式。
通过仿真,我可以预先验证设计的正确性,并对其进行修改和优化。
接着,我进行了FPGA的编程和配置,将设计好的逻辑电路加载到FPGA芯片中。
通过这一步骤,我可以将自己的设计直接在硬件上实现,并进行实时的测试和调试。
这种即时性和灵活性是SOPC的一个重要优点,它使得我们能够更加高效地进行系统级设计和验证。
在SOPC实验中,我还学习了使用Nios II软核处理器进行嵌入式系统设计。
Nios II是一款可编程的32位RISC处理器,可以根据需求进行定制和配置。
通过Nios II,我可以在FPGA上实现复杂的嵌入式系统,并编写C语言程序进行控制和操作。
总的来说,SOPC实验让我深入了解了系统级可编程器件的原理和应用。
通过实践,我学会了使用Quartus II软件进行FPGA设计和配置,掌握了硬件描述语言
和嵌入式系统的开发方法。
这些知识和技能对我未来的学习和工作都具有重要的意义,我相信在不久的将来,SOPC技术将会在各个领域得到广泛应用。
基于FPGA的SOPC系统DAB发射端硬件实现1.引言DAB 发射机是数字音频广播(DigitalAudio Broadcast,DAB)重要组成部分. DAB 技术是欧洲尤里卡项目之一,目前已经非常成熟.DAB 采用先进的数字技术,正交分频复用技术(OFDM),能以极低的数据传输率及失真下传送CD质量之立体声节目,可解决传统模拟广播接收不良及干扰问题.DAB 发射系统包括信源编码.信道编码.时间交织.频率交织.OFDM 调制和射频部分.射频部分包括上变频和增益放大,用来把基带信号搬移到发射频率上并将其放大.FPGA 技术不断进步,成本和功耗不断下降的同时性能和容量在大幅上升,FPGA 也代替MCU 越来越多的嵌入到系统中去.为了便于系统集成,本文设计FPGA 系统嵌入到DAB 发射系统中,使得开发变得方便灵活,同时也降低了成本.2.FPGA 的SOPC 系统构成本文设计了用于DAB 发射端的SOPC 系统,该系统硬件框图如图1 所示.系统中FPGA 采用ALTERA 公司的CycloneIII 系列芯片EP3C16Q240C8N.FPGA 中的NiosII 软核处理器完成数据的控制和指令传送,还可以在FPGA 上实现OFDM 调制.配置芯片选用EPCS16,片外扩展存储器为IS42S16100-7T.框图中,功能电路是用来实现DAB 发射功能的,它包括数字上变频(其中已经包括A/D和D/A 转换).信号放大.USB 传输等.根据DAB 发射系统设计可以得出系统中各个单元所需的资源:逻辑单元.寄存器.引脚.内存.乘法器单元.锁相环分别为8839.4719.104.202752bits.6 和1.这款芯片为QPFP 封装,芯片资源见表1.tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
基于FPGA的音频开发平台的设计及其SOPC实现的开题报告一、选题背景及研究意义随着数字音频技术的发展,FPGA作为一种高度可编程的器件,越来越被广泛应用于音频处理领域中。
FPGA的高度可编程性和灵活性,使其可以在硬件电路设计中灵活应用,实现高性能的音频处理系统。
本课题旨在研究基于FPGA的音频开发平台的设计及其SOPC实现。
该音频开发平台旨在提供一种灵活、可扩展、高性能的音频处理平台,以使得开发人员能够更快、更准确地开发音频处理应用。
通过本课题的研究,可以实现以下目标:1.设计一种基于FPGA的音频开发平台,提供一种灵活可扩展的音频处理方案,从而为音频处理应用开发人员提供便利。
2.实现音频信号的采集、处理和输出,在提高音频处理性能的同时,具备高度的可编程性和灵活性。
3.进行模块化设计,实现模块间的高度集成和组合,减少开发人员的负担,提高音频处理应用的可维护性。
二、研究内容及研究方法该课题的研究内容包括以下几个方面:1.音频采集模块的设计:采用FPGA实现音频信号的采集,并对采集的音频信号进行初步处理,如滤波、失真矫正等。
2.音频处理模块的设计:设计一种高度可编程和灵活的音频处理模块,实现各种音频处理算法,如均衡器、环境声音适应、语音识别等。
3.音频输出模块的设计:将处理后的音频信号输出,实现多种音频输出接口,如DAC、PWM等。
4.系统集成和软件开发:进行模块化设计,实现模块间的高度集成和组合,并开发配套的软件,实现系统的控制与管理。
该课题的研究方法主要包括以下几个方面:1.文献调研:调研现有音频处理技术和FPGA应用技术,了解FPGA在音频处理中的应用现状和发展趋势,为后续设计提供参考。
2.系统划分和模块设计:对整个系统进行划分,并设计各个模块之间的接口和通信方式,实现高度集成和组合。
3.硬件设计和编程:根据设计要求和硬件资源,使用HDL语言进行硬件设计和编程,并进行仿真和验证。
4.软件开发和系统集成:使用C语言等高级语言进行软件开发,并进行系统集成,实现软件和硬件的协同工作。
20科技资讯 SCIENCE & TECHNOLOGY INFORMATION信 息 技 术DOI:10.16661/ki.1672-3791.2018.21.020基于FPGA/SOPC的温度控制系统设计①王佳宁 于存江 程子轩(长春大学电子信息工程学院 吉林长春 130000)摘 要:本文介绍了一种基于FPGA/SOPC和温度传感器DS18B20的硬件电路温度控制方法。
利用DS18B20采集数字信号,采用FPGA芯片进行数据处理,并通过处理后的数据对继电器进行控制,从而实现对温度的实时调控。
本设计利用Verilog HDL在开发环境下进行硬件电路的设计。
最后利用MODELSIM软件进行模拟仿真试验,在0℃~55℃范围内,测量误差为±1℃,从而实现硬件电路的温度控制。
关键词:FPGA SOPC DS18B20 温度控制中图分类号:TN47 文献标识码:A 文章编号:1672-3791(2018)07(c)-0020-02现今,电子元器件在工业领域当中得到了非常广泛的应用,但是其应用效果和作用在不同的温度环境下的表现也有较大差距。
那么,如何更好地发挥元件的功能,就需要提高整个元件的稳定性,也要保持元件的最佳工作温度。
在这里,温度控制链路就起着非常重要的作用。
然而,普通的温控系统对温度采集和数据处理间存在很多不平衡的缺点,如何解决温度采集和处理数据的实时性和精确性,就需要合理的设计方案。
综合考虑,本设计是一种在FPGA 上实现SOPC温度采集和监测控制系统。
SOPC (System On a Programmable Chip )即可编程片上系统,它将CPU、ROM、RAM、I/O端口和DSP集成到一个FPGA芯片中。
SOPC的设计灵活开放,可以软硬件剪裁、扩展、升级、并具有可编程功能。
1 系统总体方案设计温度控制系统的设计包括以下几个部分:F P GA、DS18B20、MAX232、报警模块、继电器模块和1602LCD 等。
2010年8月襄樊学院学报Aug., 2010 第31卷第8期Journal of Xiangfan University V ol.31 No8基于FPGA的SOPC设计王培元(襄樊学院物理与电子工程学院,湖北襄樊 441053)摘要:本SOPC系统在Altera 公司Cyclone 系列芯片EP1C6Q240中移植Nios II嵌入式处理器,作为核心控制电路;利用FPGA丰富的可编程逻辑资源和IP软核构成嵌入式处理器的接口模块,实现对SDRAM存储器、FLASH存储器、LCD液晶显示器、独立键盘、LED等硬件的控制;软件设计采用开源的uC/OS-II嵌入式实时操作系统,完成一个嵌入式系统硬件设计. 经调试运行,在该系统上成功进行了推箱子游戏,验证了基于FPGA硬件设计的可行性,实现嵌入式实时多任务软件的开发.关键字:FPGA;SOPC;Nios II;uC/OS-II中图分类号:TN47 文献标志码:A 文章编号:1009-2854(2010)08-0042-03SOPC(System-on-a-Programmable-Chip),全称是可编程片上系统. 首先它是片上系统(SOC),即由单个芯片完成整个系统的主要逻辑功能;其次,它是可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能[1]. 随着FPGA芯片的发展,SOPC技术的得到了飞速发展,利用FPGA设计SOPC,为现在越来越复杂的产品所带来的竞争压力提供了高效的解决方案,在高速等高端产品中应用越来越广泛.SOPC设计是nios系统+硬实时部分+逻辑电路的一个组合体. 其中硬实时部分和逻辑电路在FPGA芯片内可以完美的得到实现. 本设计采用ALTERA公司的Nios II软核和FPGA芯片EP1C6Q240实现了一个SOPC的设计.1 系统总体设计本SOPC系统主要实现推箱子游戏,系统由一个32bit NiosII软核处理器、液晶显示器、SDRAM、FLASH、键盘等组成。
中文图书分类号:TN919.81密级:公开UDC:004学校代码:10005硕士学位论文MASTERAL DISSERTATION论文题目:基于FPGA的H.264视频压缩编码SOPC设计论文作者:李幸原学科:计算机科学与技术指导教师:侯义斌教授王素玉副教授论文提交日期: 2013年6月UDC:004学校代码:10005中文图书分类号:TN919.81 学号:S201025008密级:公开北京工业大学工学硕士学位论文题目:基于FPGA的H.264视频压缩编码SOPC设计英文题目:H.264 VIDEO CODING SOPC DESIGN BASED ON FPGA论文作者:李幸原学科专业:计算机科学与技术研究方向:嵌入式软件与系统申请学位:工学硕士指导教师:侯义斌教授王素玉副教授所在单位:软件学院答辩日期:2013年5月授予学位单位:北京工业大学独创性声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
李幸原签名:日期:2013 年 6 月29 日关于论文使用授权的说明本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。
(保密的论文在解密后应遵守此规定)签名:李幸原日期: 2013 年6 月29 日导师签名:侯义斌日期: 2013 年6 月29 日摘要近几年来,智能移动终端和新一代移动网络的普及给视频应用提供了广阔的空间。
但是,相对于日渐庞大的视频业务需求,网络资源是极其有限的。
为此,学术界和产业界投入了大量的精力进行视频压缩编码技术的研究,H.264视频编码标准便是其成果之一。
基于FPGA的数字时钟设计摘要:EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL和C 语言在FPGA实验板上设计一个电子数字钟,它的计时周期为24小时,显示满刻度为23时59分59秒、。
总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数模块、处理器及外设模块,并且使用QuartusII运用VHDL语言对分频和计数两个模块进行硬件电路设计和电路波形仿真,运用sopc技术嵌入内核并创建了系统所需的外部设备FLASH和SRAM 软件通过使用NiosII运用C语言进行编程然后下载到硬件电路中,并在FPGA实验板上进行调试和验证。
该设计采用自顶向下、混合输入方式(原理图输入—顶层文件连接和VHDL语言输入—各模块程序设计)实现数字钟的设计、下载和调试。
关键词:数字钟;FPGA;VHDL语言;C语言;SOPC技术;1、选题背景和研究内容近年来,随着数字集成电路技术的发展,用以前传统的方法进行芯片或系统设计已不能满足要求, 迫切需要提高设计效率。
能大大降低设计难度的VHDL设计方法正在被越来越广泛的采用。
VHDL 即超高速集成电路硬件描述语言,诞生于1982 年。
1987年底, VHDL被IEEE和美国国防部确认为标准硬件描述语言。
此后VHDL 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年IEEE对VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL 的内容,公布了新版本的VHDL,即IEEE标准的1076--1993 版本。
现在, VHDL作为IEEE的工业标准硬件描述语言,已成为通用硬件描述语言。
现在电子钟产品可谓百家争鸣,市场上到处可见一些功能齐全的设备,可能基于单片机的比较多,用FPGA设计电子钟可能比较少。
因为两个都可以实现同样的功能,而FPGA芯片的价格远比单片机高。
出于利润,当然会选择开发成本少的产品。
本次设计的目的是为了检验所学的知识(VHDL语言与SOPC技术)同时结合实践巩固知识,由于初涉该领域,相关的知识可能不够全面,实践的经验不够,所以本设计旨在能够实现数字钟的功能,对于各模块设计的优化和性能等方面没有多加考虑。
2、SOPC技术概述SOPC(System On Programmable Chip)即可编程的片上系统,或者说是基于大规模FPGA的单片系统。
SOPC的设计技术是现代计算机辅助设计技术、EDA技术和大规模集成电路技术高度发展的产物。
SOPC技术的目标就是试图将尽可能大而完整的电子系统,包括嵌入式处理器系统、接口系统、硬件协处理器或加速系统、DSP系统、数字通信系统、存储电路以及普通数字系统等,在单一FPGA 中实现,使得所设计的电路系统在其规模、可靠性、体积、功耗、功能、性能指标、上市周期、开发成本、产品维护及其硬件升级等多方面实现最优化。
SOPC技术是一门全新的综合性电子设计技术,涉及面广,SOPC在电子设计技术上给出了一种以人的基本能力为依据的软硬件综合解决优化方案。
3、数字钟系统总体设计方案3.1 数字钟的构成该数字钟系统构成主要包括分频程序模块、时分秒计数模块、处理器及外设模块三个模块,其总体结构框图如图1所示图1总体结构框图3.2 数字钟的工作原理数字钟电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。
秒计数器的计数时钟CLK为1Hz的标准信号,可以由晶振产生的50MHz信号通过分频得到。
当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号,每一秒钟发出一个中断给CPU,CPU采用NIOS,它响应中断,并读出小时、分、秒等信息。
CPU对读出的数据译码,使之动态显示在数码管上。
4、单元模块电路设计4.1分频模块电路设计与实现分频器是数字系统设计中的基本电路,根据不同设计的需要,我们会遇到偶数分频、奇数分频、半整数分频等。
通常由计数器或计数器的级联构成各种形式的偶数分频及非等占空比的奇数分频,实现较为简单。
本文设计的分频器是利用VHDL硬件描述语言,通过QuartusⅡ开发平台,使用Altera公司的FPGA,设计了用50MHZ的时钟信号输入进行50000000分频得到1HZ的时钟信号,作为秒计数器的个位提供时钟信号。
其原理图如图2所示。
图2 分频模块原理图4.2计数模块设计与实现秒计数器的计数时钟CLK为1Hz的标准信号,可以由晶振产生的50MHz信号通过分频得到。
当数字钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。
其原理图如图3所示。
图3 计数模块原理图4.3处理器及外设模块设计和实现该模块CPU采用NIOSII处理器,程序存储采用4M的Flash,数据存储采用外部的512k的SRAM,使用Flash来保存NIOSII中运行的程序代码和FPGA的配置数据,处理器在复位后从Flash开始执行程序,使用IDE Flash Programmer 进行编程,将程序下载到Flash中,一个1位的I/O口接受中断信号,六个4位I/O口作为数据输入端口,六个8位I/O口作为数据输出端口,外接六个8位led数码管,通过分频后的时钟信号每一秒钟给CPU一个中断信号,CPU响应中断,并通过4位I/O口读出小时、分、秒等信息,对读出的数据进行译码,并通过8位I/O口使之动态显示在数码管上。
原理图如图4所示。
图4 处理器及外设模块原理图系统总的原理图如图5所示图5 系统总原理图5、系统软件设计中断译码程序流程图如图6所示图6 中断译码程序流程图6、系统调试和测试分频模块的调试与测试,分频模块采用的VHDL 语言编写,对该模块进行功能和时序仿真,由于进行50000000分频的仿真比较困难,所以在此对2分频进行仿真.,图7为仿真输入波形图,采用输入时钟CLK 周期为10ns ,图8为仿真输出波形图,输出FN 时钟周期为20ns 。
图7 分频模块仿真输入波形图开始 初始化I/O 口 开中断 清中断寄存器中断注册调中断子程序主程序开始 关中断 清中断寄存器 调译码子程序 开中断中断子程序 开始读I/O 口数据写I/O 口数据译 码译码子程序图8仿真输出波形图计数模块的调试与测试,计数模块采用的VHDL语言编写,对该模块进行功能和时序仿真,仿真输入的时钟信号周期为10ns,输出应为六位的时钟信号,仿真的波形图如图9所示。
图9 计数模块仿真输出波形图处理器与外设模块的调试与测试,该模块采用SOPC技术生成,运用C语言编程在该模块中实现数据的传输译码,经过反复的在线调试,最终将时钟显示在FPGA实验板上。
7、结论本文设计了一个数字钟,输入时钟为50MHz,输出的小时、分、秒显示在数码管上,1秒钟改变一下显示。
数字钟的计数用VHDL语言设计实现,每一秒钟发出一个中断给CPU,CPU采用NIOS,它响应中断,并读出小时、分、秒等信息。
CPU对读出的数据译码,使之能在数码管上显示。
通过本次的数字钟系统设计,系统的复习整个基于FPGA的SOPC技术的知识,并且了解了CPLD可编程芯片的结构和引脚,能够熟练的运用Quartus II这个软件,能够采用VHDL语言实现基本的分频,计数器等硬件电路的设计和波形仿真,能够熟练的运用NIOSII结合C语言进行软件编程,并将软件下载到硬件电路进行调试。
数字钟的实物图如图10所示。
图10 数字钟实物图8、附录分频的VHDL程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FP ISPORT(CLK,RST:IN STD_LOGIC;FN:OUT STD_LOGIC);END FP;ARCHITECTURE NEO OF FP ISSIGNAL TEMP:STD_LOGIC;BEGINPROCESS (CLK,RST)VARIABLE COUNT:INTEGER RANGE 1 TO 25000000;BEGINIF RST='0' THEN TEMP<='0';ELSIF CLK'EVENT AND CLK='0' THENIF COUNT=25000000 THEN COUNT:=1;TEMP<=NOT TEMP;ELSE COUNT:=COUNT+1;END IF;END IF;FN<=TEMP;END PROCESS;END NEO;计数模块的VHDL程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SSZ ISPORT( RST:IN STD_LOGIC;CLK:IN STD_LOGIC;MIAO1:OUT INTEGER RANGE 9 DOWNTO 0;MIAO2:OUT INTEGER RANGE 9 DOWNTO 0;FEN1:OUT INTEGER RANGE 9 DOWNTO 0;FEN2:OUT INTEGER RANGE 9 DOWNTO 0;SHI1:OUT INTEGER RANGE 9 DOWNTO 0;SHI2:OUT INTEGER RANGE 9 DOWNTO 0);END SSZ;ARCHITECTURE ONE OF SSZ ISBEGINPROCESS(RST,CLK)VARIABLE M1:INTEGER RANGE 9 DOWNTO 0;VARIABLE M2:INTEGER RANGE 9 DOWNTO 0;VARIABLE F1:INTEGER RANGE 9 DOWNTO 0;VARIABLE F2:INTEGER RANGE 9 DOWNTO 0;VARIABLE S1:INTEGER RANGE 9 DOWNTO 0;VARIABLE S2:INTEGER RANGE 9 DOWNTO 0;BEGINIF RST='0' THEN M1:=0; M2:=0; F1:=0; F2:=0;S1:=0; S2:=0;ELSIF CLK'EVENT AND CLK='1' THENIF M1<9 THEN M1:=M1+1;ELSIF M1=9 THEN M1:=0;IF M2<5 THEN M2:=M2+1;ELSIF M2=5 THEN M2:=0;IF F1<9 THEN F1:=F1+1;ELSIF F1=9 THEN F1:=0;IF F2<5 THEN F2:=F2+1;ELSIF F2=5 THEN F2:=0;IF S1<4 THEN S1:=S1+1;ELSIF S1=4 THEN S1:=0;IF S2<2 THEN S2:=S2+1;ELSIF S2=2 THEN S2:=0;END IF;END IF;END IF;END IF;END IF;END IF;END IF;MIAO1<=M1;MIAO2<=M2;FEN1<=F1;FEN2<=F2;SHI1<=S1;SHI2<=S2;END PROCESS;END ONE;译码C语言程序代码:#INCLUDE<STDIO.H>#INCLUDE"SYSTEM.H"#INCLUDE"ALTERA_AVALON_PIO_REGS.H"#INCLUDE"ALT_TYPES.H"#INCLUDE"SYS/ALT_IRQ.H"#INCLUDE"PRIV/ALT_BUSY_SLEEP.H"UNSIGNED INT IN_1,IN_2,IN_3,IN_4,IN_5,IN_6; UNSIGNED CHAR OUT_1,OUT_2,OUT_3,OUT_4,OUT_5,OUT_6; UNSIGNED CHAR DISPLAY(UNSIGNED INT X){SWITCH(X){CASE 0:X=0XC0;BREAK;CASE 1:X=0XF9;BREAK;CASE 2:X=0XA4;BREAK;CASE 3:X=0XB0;BREAK;CASE 4:X=0X99;BREAK;CASE 5:X=0X92;BREAK;CASE 6:X=0X82;BREAK;CASE 7:X=0XF8;BREAK;CASE 8:X=0X80;BREAK;CASE 9:X=0X90;BREAK;DEFAULT:X=0XC0;BREAK;}RETURN X;}VOID YIMA(VOID){IN_1=IORD_ALTERA_AVALON_PIO_DATA(PIO_IN1_BASE)&0XFF;OUT_1=DISPLAY(IN_1);IOWR_ALTERA_AVALON_PIO_DATA(PIO_OUT1_BASE,OUT_1);IN_2=IORD_ALTERA_AVALON_PIO_DATA(PIO_IN2_BASE)&0XFF;OUT_2=DISPLAY(IN_2);IOWR_ALTERA_AVALON_PIO_DATA(PIO_OUT2_BASE,OUT_2);IN_3=IORD_ALTERA_AVALON_PIO_DATA(PIO_IN3_BASE)&0XFF;OUT_3=DISPLAY(IN_3);IOWR_ALTERA_AVALON_PIO_DATA(PIO_OUT3_BASE,OUT_3);IN_4=IORD_ALTERA_AVALON_PIO_DATA(PIO_IN4_BASE)&0XFF;OUT_4=DISPLAY(IN_4);IOWR_ALTERA_AVALON_PIO_DATA(PIO_OUT4_BASE,OUT_4);IN_5=IORD_ALTERA_AVALON_PIO_DATA(PIO_IN5_BASE)&0XFF;OUT_5=DISPLAY(IN_5);IOWR_ALTERA_AVALON_PIO_DATA(PIO_OUT5_BASE,OUT_5);IN_6=IORD_ALTERA_AVALON_PIO_DATA(PIO_IN6_BASE)&0XFF;OUT_6=DISPLAY(IN_6);IOWR_ALTERA_AVALON_PIO_DATA(PIO_OUT6_BASE,OUT_6);}STATIC VOID INTER_INTERRUPT(VOID *CONTEXT,ALT_U32 ID){ /* 关中断 */IOWR_ALTERA_AVALON_PIO_IRQ_MASK(INTURRPT_BASE,0X00);/* 清边沿捕获寄存器 */IOWR_ALTERA_AVALON_PIO_EDGE_CAP(INTURRPT_BASE,0X00);/*调用译码子程序*/YIMA();/* 开中断 */IOWR_ALTERA_AVALON_PIO_IRQ_MASK(INTURRPT_BASE,0XFF); }VOID INIT_PIO(VOID){/* 初始化PIO_OUT为输出 */IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_OUT1_BASE, 0XFF);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_OUT2_BASE, 0XFF);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_OUT3_BASE, 0XFF);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_OUT4_BASE, 0XFF);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_OUT5_BASE, 0XFF);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_OUT6_BASE, 0XFF);/* 初始化PIO_IN为输入 */IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_IN1_BASE, 0X00);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_IN2_BASE, 0X00);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_IN3_BASE, 0X00);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_IN4_BASE, 0X00);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_IN5_BASE, 0X00);IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_IN6_BASE, 0X00);/* 开中断 */IOWR_ALTERA_AVALON_PIO_IRQ_MASK(INTURRPT_BASE, 0XFF);/* 清边沿捕获寄存器 */IOWR_ALTERA_AVALON_PIO_EDGE_CAP(INTURRPT_BASE, 0X00);/*注册中断服务子程序*/ALT_IRQ_REGISTER(INTURRPT_IRQ,NULL,INTER_INTERRUPT);}INT MAIN(VOID){ INIT_PIO();WHILE (1){;}RETURN 0;}参考文献:[1] 周立功,SOPC嵌入式系统基础教程,北京航空航天大学出版社,2008.4[2] 周立功,SOPC嵌入式系统实验教程,北京航空航天大学出版社,2006.7[3] 张志刚,FPGA与SOPC设计教程—DE实践,西安电子科技大学出版社,2007[4] 潘松黄继业,EDA技术实用教程,科学出版社,2006.8[5] 华清远见嵌入式培训中心,FPGA应用开发入门与典型实例,人民邮电出版社,2008.6。