




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于fpga的音乐流水灯设计 西 安 邮 电 大 学 毕 业 设 计(论 文)题 目: 基于fpga的音乐流水灯设计 毕业设计(论文)诚信声明书本人声明:本人所提交的毕业论文基于fpga的音乐流水灯设计是本人在指导教师指导下独立研究、写作的成果,论文中所引用他人的文献、数据、图件、资料均已明确标注;对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全清楚本声明的法律后果,申请学位论文和资料若有不实之处,本人愿承担相应的法律责任。论文作者签名: 时间: 年 月 日指导教师签名: 时间: 年 月 日西 安 邮 电 大 学毕业设计(论文)任务书学生姓名付道文指导教师阴亚芳职称教授学 院电子工程学院系 部电子与信息工程专 业 电 子信 息工 程题 目基于fpga的音乐流水灯设计任务与要求通过fpga实现音乐流水灯的控制,将不同音阶与特定频率的方波信号对应起来,以方波信号驱动蜂鸣器发出音乐,再根据不同音阶来控制流水灯的闪烁。要求:1. 掌握对应fpga芯片的内部结构及引脚功能;2. 设计音乐流水灯控制系统,包括播放、控制模块;3存储2首乐曲,设计相应程序,通过仿真实现系统功能。专 业: 电子信息工程 题 目:_ 基于fpga的音乐流水灯设计 工作进程起止时间 工 作 内 容2013年3月4日 3月18日 查阅资料,撰写开题报告;2013年3月19日 4月4日 掌握verilog语言以及fpga硬件的相关知识;2013年4月5日 4月30日 基于quartus2软件使用verilog语言进行编程, 注意语言的转换,二进制转换成十六进制(不同 音阶与特定频率的方波信号对应)2013年5月1日 5月14日 设计相应程序,通过quartus2仿真实现系统功 能2013年5月15日 6月6日 撰写论文,准备答辩;2013年6月7日 6月14日 毕业答辩。主要参考书目(资料):1. verilog系统设计教程2. 数字信号处理的fpga实现主要仪器设备及材料:1. 计算机及其耗材2. 仿真软件论文(设计)过程中教师的指导安排:每周五下午汇报本周工作,安排下周任务;随机进入机房检查并指导;每位同学两周讲一次所作内容;毕业设计后期增加指导次数;平时有问题随时打电话或发邮件指导。对计划的说明: 指导教师签字:西安邮电大学毕业设计(论文)开题报告课题名称: 基于fpga的音乐流水灯设计 电子工程 学院 电子信息工程 系(部) 电子信息工程 专业 电子 班学生姓名: 付 学号: 0 指导教师: 报告日期: 1 本课题所涉及的问题及应用现状综述fpga(fieldprogrammable gate array),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。众所周知,现今的娱乐场所都少不了由led、蜂鸣器等小器件组成的电子设备,本课题研究的问题就能够完全实现这些功能。“基于fpga的音乐流水灯设计”也可以应用于玩具、小车等,发出悦耳的音乐和显示炫目的光亮,还可以应用于大型电子系统中的显示部分,实现良好的人机操作界面。当然,用fpga实现音乐流水灯有多种方法,有用hdl语言描述的组合、时序逻辑电路来实现,更高级一点的就是在fpga的nios处理器来完成。基于fpga的大型电子系统都需要通过led或是蜂鸣器来检测系统的正确性,所以本课题所研究的就可以无缝地嵌入到fpga系统中、2本课题需要重点研究的关键问题、解决的思路及实现预期目标的可行性分析关键问题:1:fpga芯片内部硬件工作原理2:音乐播放的基本原理3:verilog语言编程部分解决的思路:首先应该熟悉fpga内部硬件的工作原理和音乐播放的基本原理,如果按下键,再利用外部按键传递信号给fpga,这些信号可以实现音乐的播放和控制,fpga解析按键传递过来的信号,再通过fpga内部的延时,使得蜂鸣器所对应的的fpga芯片端口输出高低电平的持续时间与音乐的音阶相对应,这就达到蜂鸣器发出预定的声音,同理可以点亮相应led。实现预期目标的可行性分析:通过对相关原理的理解,fpga工作原理的理解,通过按下不同的按键,来选定指定要播放的歌曲,同时fpga控制led闪烁。通过硬件和软件的的协调,来完成本课题。3完成本课题的工作方案1. 3月19日 4月4日: 掌握verilog语言以及fpga硬件的相关知识;2. 4月5日 4月30日: 基于quartusii软件使用verilog语言进行编程,注意 语言的转换,二进制转换成十六进制(不同音阶与特定频率的方波信号对应);3. 5月1日 5月14日: 设计相应程序,通过quartus2仿真实现系统功能4. 4月28日-5月30日: 撰写论文,准备答辩;5. 6月1日-6月29日: 毕业答辩。4指导教师审阅意见指导教师(签字): 2013年 3 月 13 日西安邮电大学毕业设计 (论文)成绩评定表学生姓名付道文性别男学号05091038专 业班 级电子0902班课题名称基于fpga的音乐流水灯课题类型毕业设计难度难毕业设计(论文)时间2013.3.42013.6.14 指导教师阴亚芳(职称 教授 )课题任务完成情况论文 (千字); 设计、计算说明书 (千字); 图纸 (张);其它(含附件):指导教师意见分项得分:开题调研论证 分; 课题质量(论文内容) 分; 创新 分;论文撰写(规范) 分; 学习态度 分; 外文翻译 分指导教师审阅成绩:指导教师(签字): 年 月 日评阅教师意见分项得分:选题 分; 开题调研论证 分; 课题质量(论文内容) 分; 创新 分;论文撰写(规范) 分; 外文翻译 分评阅成绩: 评阅教师(签字): 年 月 日验收小组意见分项得分:准备情况 分; 毕业设计(论文)质量 分; (操作)回答问题 分验收成绩: 验收教师(组长)(签字): 年 月 日答辩小组意见分项得分:准备情况 分; 陈述情况 分; 回答问题 分; 仪表 分答辩成绩: 答辩小组组长(签字): 年 月 日成绩计算方法指导教师成绩 20 () 评阅成绩 30 () 验收成绩 20 () 答辩成绩 30 ()学生实得成绩(百分制)指导教师成绩 评阅成绩 验收成绩 答辩成绩 总评 答辩委员会意见毕业论文(设计)总评成绩(等级):学院答辩委员会主任(签字): 学院(签章) 年 月 日备注 目录摘要.iabstracii1引言12可编程逻辑器件及fpga介绍22.1可编程逻辑器件简介.22.2 fpga简介.33 verilog hdl语言介绍44 quartusii开发环境和modelsim10.0仿真软件介绍54.1 quartusii软件介绍.54.2 modelsim10.0软件介绍.65 设计verilog hdl代码和modelsim仿真结果分析65.1 顶层模块.65.2 复位模块.85.3 按键模块105.4 核心模块125.5 流水灯模块225.6 数码管模块255.7 蜂鸣器模块335.8 简单的testbench测试代码355.9 verilog hdl代码综合编译报告37结论39致谢40参考文献41译文42摘要 fpga器件的应用是继单片机之后,当今嵌入式系统开发中最为热门的关键技术之一,在国内也有着很广泛的应用群体,相比于单片机开发而言,基于fpga的开发设计与以往的软件或硬件开发有着很大的不同,verilog hdl或vhdl等硬件描述语言的使用也有着很多的技巧和方法。 verilog hdl语言是一门标准的硬件设计语言,它适合于电子系统设计的所有阶段。由于它容易被机器和人工阅读,因此它支持硬件设计的开发、验证、综合、测试以及硬件设计数据的交流,便于书写、维护、修改和最终硬件电路的获得。verilog hdl语言具有简单、直观和高效的特点。在各种设计工具(如仿真验证、时序分析、测试分析和综合)里面,它采用标准的文本格式,具有多层次的抽象。由于具有以上这些特点,verilog hdl语言已经被绝大多数的ic设计者所采用。 本文着力介绍通过fpga来实现音乐流水灯。在fpga内部存有两首音乐,通过四个外部按键可以控制音乐的播放、暂停、切换和停止,流水灯点亮的个数代表当前播放的音阶,数码管显示音阶的频率,同时蜂鸣器发出悦耳的音乐。关键词:fpga verilog hdl 音乐 流水灯 数码管abstractafter application of fpga device is the single chip microcomputer, and today the most popular one of the key technologies in embedded system development, also has a widespread application in domestic group, compared with the single chip microcomputer development, the development of design based on fpga with past software or hardware development is a big difference, verilog or vhdl hardware description language hdl cholesterol also has a lot of the use of techniques and methods.verilog hdl language is a language of standard hardware design, it is suitable for all stages of electronic system design. since it is easy to machine and artificial reading, so that it supports the development of hardware design, validation, integration, testing, and the hardware design of data communication, easy to write, maintain, modify, and finally the hardware circuit. verilog hdl language has the characteristics of simple, intuitive and efficient. in various design tools (such as simulation, time series analysis, testing analysis and synthesis), it uses a standard text format, with multiple layers of abstraction. because of these characteristics, verilog hdl language has been adopted by the majority of the ic designers.this article emphatically introduced by fpga to realize music flowing water light. inside the fpga has two music songs, through four external keys can control the music play, pause, and stop switch, water lights up the number of scales that represent the current playback, digital tube display frequency of the scale, at the same time buzzer sends out the sweet music.key words: fpga verilog hdl music. water lights digital tube431引言fpga(fieldprogrammable gate array),即现场可编程门阵列,它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。众所周知,现今的娱乐场所都少不了由led、蜂鸣器等小器件组成的电子设备,本课题研究的问题就能够完全实现这些功能。“基于fpga的音乐流水灯设计”也可以应用于玩具、小车等,发出悦耳的音乐和显示炫目的光亮,还可以应用于大型电子系统中的显示部分,实现良好的人机操作界面。当然,用fpga实现音乐流水灯有多种方法,有用hdl语言描述的组合、时序逻辑电路来实现,更高级一点的就是在fpga的nios处理器来完成。基于fpga的大型电子系统都需要通过led或是蜂鸣器来检测系统正确性,所以本课题所研究的就可以无缝地嵌入到fpga系统中。2可编程逻辑器件及fpga介绍2.1可编程逻辑器件简介 多年来,人们设计数字电路系统都是使用标准的数字集成电路芯片,如74/54 系列(ttl)、4000/4500系列(cmos)等,根据设计的功能从这些标准的芯片中进行选择,然后搭建成一个完整的数字电路应用系统。使用这种方法设计出来的系统,不仅芯片数量多、印板面积大,而且可靠性差,毫无设计的灵活性可言。 可编程逻辑器件pld( programmablelogicdevice)出现后,改变了人们的传统设计方法,可以直接使用pld芯片进行数字电路系统的设计。例如,可以直接设计芯片内部的数字逻辑并定义输入/输出引脚等,从原来的印板级设计上升到芯片级设计。由于pld设计时引脚定义非常灵活,不仅降低了电路原理和印板设计的难度,提高了设计效率,而且大大减少了芯片的数量和种类,缩小了印板面积,降低了功耗,并极大地提高了系统工作的可靠性。 可编程逻辑器件是20世纪70年代发展起来的一种新型器件,它给数字系统的设计方式带来了革命性的变化。pld器件最早是20世纪70年代中期出现的可编程逻辑阵列pla(programmablelogicarray),pla 在结构上由可编程的与阵列和可编程的或阵列构成,阵列规模比较小,编程也很烦琐,并没有得到广泛应用。随后出现了可编程阵列逻辑pal(programmablearraylogic),pal由可编程的与阵固定的或阵列组成,采用熔丝编程方式,它的设计比较灵活,器件速度快,因而成为第一个得到普遍应用的pld器件。20世纪80年代初,lattice公司发明了通用阵列逻gal(genericarray logic)。gal器件采用了输出逻辑宏单元(olmc)的结构和eeprom 工艺,具有可编程、可擦除、可长期保持数据的优点,使用灵活,所以gal得到了极为广泛的应用,迄今还在大量使用。80年代中期,altera公司推出了一种新型的可擦除、可编程的逻辑器件epld(erasableprogrammablelogicdevice),epld采用cmos和uveprom 工艺制成,集成度更高,设计也更灵活,但它的内部连线功能并不是很强。epld经lattice公司改进后就成为cpld(complex programmable logic device),即复杂可编程逻辑器件,采用eeprom 工艺制作。与epld 相比,cpld 增强了内部连线,对逻辑宏单元和i/o 单元也有重大的改进,它的性能更好,使用更方便。并且,现在的大部分cpld都具备在系统编程(isp)功能。cpld是当前的主流pld器件之一。1985年,xilinx公司推出了现场可编程门阵列fpga,这是一种采用单元型结构的新型pld器件。它采用cmos的sram 工艺制作,在结构上和阵列型pld不同,它的内部由许多独立的可编程逻辑单元构成,各逻辑单元之间可以灵活地相互连接,具有密度高、速度快、编程灵活、可重新配置等优点,fpga 也是当前主流的pld器件之一。2.2fpga简介2.2.1 fpga介绍 fpga是fild programmable gate array的缩写,即现场可编程逻辑阵列。fpga是在cpld的基础上发展起来的新型高性能可编程逻辑器件,他一般采用sram工艺,也有一些专用器件采用flash工艺或反熔丝(anti-fuse)工艺等,fpga的集成度很高,其器件密度从万系统门到数千万系统门不等,可以完成及其复杂的时序与组合逻辑电路功能,适用于高速,高密度的高端数字逻辑电路设计领域。fpga的基本组成部分有可编程输入/输出单元、基本可编程逻辑单元,嵌入式块ram,丰富的布线资源、底层嵌入功能单元,内嵌专用硬核,fpga的主要器件供应商有xilinx、alera、lattice、actel和atmel等。2.2.2 fpga发展趋势 可编程逻辑器件的发展历史可编程逻辑器件的发展可以划分为4 个阶段,即从20 世纪70 年代初到70 年代中为第1 阶段,20 世纪70 年代中到80 年代中为第2 阶段,20 世纪80 年代到90 年代末为第3 阶段,20 世纪90 年代末到目前为第4 阶段。 第1 阶段的可编程器件只有简单的可编程只读存储器(prom)、紫外线可擦除只读存储器(eprom) 和电可擦只读存储器(eeprom)3 种,由于结构的限制,它们只能完成简单的数字逻辑功能。 第2 阶段出现了结构上稍微复杂的可编程阵列逻辑(pal) 和通用阵列逻辑(gal) 器件,正式被称为pld,能够完成各种逻辑运算功能。典型的pld 由“与”、“非”阵列组成,用“与或”表达式来实现任意组合逻辑,所以pld 能以乘积和形式完成大量的逻辑组合。 第3 阶段赛灵思和altera 分别推出了与标准门阵列类似的fpga 和类似于pal 结构的扩展性cpld,提高了逻辑运算的速度,具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点,兼容了pld 和通用门阵列的优点,能够实现超大规模的电路,编程方式也很灵活,成为产品原型设计和中小规模( 一般小于10000) 产品生产的首选。这一阶段,cpld、fpga 器件在制造工艺和产品性能都获得长足的发展,达到了0.18 工艺和系数门数百万门的规模。 第4 阶段出现了sopc 和soc 技术,是pld 和asic 技术融合的结果,涵盖了实时化数字信号处理技术、高速数据收发器、复杂计算以及嵌入式系统设计技术的全部内容。赛灵思和altera 也推出了相应socfpga 产品,制造工艺达到65nm ,系统门数也超过百万门。并且,这一阶段的逻辑器件内嵌了硬核高速乘法器、gbits 差分串行接口、时钟频率高达500mhz 的powerpc 微处理器、软核microblaze、picoblaze、nios 以及niosii,不仅实现了软件需求和硬件设计的完美结合,还实现了高速与灵活性的完美结合,使其已超越了asic 器件的性能和规模,也超越了传统意义上fpga 的概念,使pld 的应用范围从单片扩展到系统级。未来,赛灵思高层透露,该公司正在研制采用全新工艺的新型fpga,这种fpga 将集成更大的存储单元和其他功能器件,fpga正向超级系统芯片的方向发展! 2 月5 日,赛灵思发布了采用40nm 和45nm 的spartan 6 和virtex 6fpga 系列,并开启了目标设计平台这一新的设计理念,相信fpga 的应用会得到更大的发展!3 verilog hdl语言介绍硬件描述语言(hardware description language)是硬件设计人员和电子设计自动化(eda)工具之间的界面其主要目的是用来编写设计文件建立电子系统行为级的仿真模型即利用计算机的巨大能力对用verilog hdl或vhdl建模的复杂数字逻辑进行仿真然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表(netlist),根据网表和某种工艺的器件自动生成具体电路然后生成该工艺条件下这种具体电路的延时模型仿真验证无误后用于制造asic芯片或写入cpld和fpga器件中,在eda技术领域中把用hdl语言建立的数字模型称为软核soft core把用hdl建模和综合后生成的网表称为固核(hard core)对这些模块的重复利用缩短了开发时间提高了产品开发率提高了设计效率随着pc平台上的eda工具的发展,pc平台上的verilog hdl和vhdl仿真综合性能已相当优越这就为大规模普及这种新技术铺平了道路目前国内只有少数重点设计单位和高校有一些工作站平台上的eda工具而且大多数只是做一些线路图和版图级的仿真与设计只有个别单位展开了利用verilog hdl和vhdl模型包括可综合和不可综合的进行复杂的数字逻辑系统的设计随着电子系统向集成。 verilog hdl是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。verilog hdl 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外, verilog hdl语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。verilog hdl语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用verilog仿真器进行验证。语言从c编程语言中继承了多种操作符和结构。verilog hdl提供了扩展的建模能力,其中许多扩展最初很难理解。但是,verilog hdl语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。verilog hdl语言最初是于1983年由gateway design automation 公司为其模拟器产品开发的硬件建模语言。那时它只是一种专用语言。由于他们的模拟、仿真器产品的广泛使用,verilog hdl 作为一种便于使用且实用的语言逐渐为众多设计者所接受。在一次努力增加语言普及性的活动中, verilog hdl语言于19 90年被推向公众领域。open verilog international(ovi)是促进verilog发展的国际性组织。1992年, ovi决定致力于推广verilog ovi标准成为ieee标准。这一努力最后获得成功, verilog 语言于1995年成为ieee标准,称为ieee std13641995。完整的标准在verilog硬件描述语言参考手册中有详细描述。4quartusii开发环境和modelsim10.0仿真软件介绍4.1 quartusii软件介绍quartus ii 操作简单方便,接口人性化,设计者很容易上手,且在短时间内就可完成设计,所以很受工程师的认可。受到了业界的好评,成为市场广为接纳的通用接口。quartus ii具有工作群组的设计环境eda整合、先进的编译特性和突破临街的验证环境,是设计能更有效、更完善地规划百万门以上的逻辑门设计,并加以验证。quartusii的功能主要有以下几个方面: 第一款从fpga至掩膜器件的完整设计工具。quartus ii软件可在cpld/fpga开发中提供hard copy掩膜器件的设计性能参数。设计者在实现最终掩膜器件之前,获得hard copy器件的性能、功耗、逻辑单元布局以及i/o分配。hard copy规则检查器将对原始设计进行检查和校验,确保设计符合工业标准设计规则,避免转换出错。hard copy文件向导将自动收集相关文件信息。交付altera hard cory设计中心。使用quartusii,能够预测和验证器件的性能,其性能比同样的fpga平均快一半。 前期i/o分配和验证。quartusii设计可以在设计文件完成之前进行i/o分配和验证。设计者不需要重新编译设计来检查i/o分配的有效性。quartusii还采用新的分配特性,如何多选信号和一次改变一组信号的属性,设计者更容易建立和管理引脚的分配。 quartusii芯片编辑器允许设计者在完成布局布线之后查看altera器件的内部详细结构,增量编辑逻辑单元le和i/o单元的配置和锁相环参数。几分钟内就可以在器件中实现这些改变,并保持设计其他部分的时间特性,而不必重新编译整个设计。 少量修改vhdl或verilog hdl源文件,用quartusii或第三方综合软件进行逻辑综合之后,新的增量布线特性可以在布局布线过程中把逻辑布局限制在新的或改变的逻辑中。这个功能把编译效率实际平均提高40,同时不影响以前设计优化区域的布局和时序。 quartusii设计软件默认安装sopc builder,自动添加、参数化和链接ip核,包括嵌入式处理器、协处理器、外设和用户定义逻辑。 quartusii软件是全新的体系,设计流程的主要阶段都可独立执行,这些可执行阶段接受简单的命令行参数,易于编写脚本或从makefile运行,自动启动专门的设计流程。 quartusii支持的第三方工具中,综合工具包括很多,仿真工具也有很多。4.2. modelsim10.0软件介绍 modelsim仿真工具是model公司开发的。它支持verilog、vhdl以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。 modelsim分几种不同的版本:se、pe和oem,其中集成在 actel、atmel、altera、xilinx以及lattice等fpga厂商设计工具中的均是其oem版本。比如为altera提供的oem版本是modelsim-altera,为xilinx提供的版本为modelsim xe. se版本为最高级版本,在功能和性能方面比oem版本强很多,比如仿真速度方面,还支持pc 、 unix 、 liunx混合平台。5 设计verilog hdl代码和modelsim仿真结果分析 本课题一共分为6个模块,分别是:顶层模块、复位模块、按键模块、核心模块、流水灯模块和数码管模块,下面一一进行解析说明。5.1顶层模块5.1.1分析顶层模块代码module top(clk,rst,key,beep,dat,sec,led);input clk,rst;input 2:0 key;output beep;output 7:0 dat,sec,led;wire 2:0 keyout;wire stop;wire 16:0 cnt;wire rst0;reset i1(.clk(clk),.rst(rst),.rst0(rst0);key i2(.clk(clk),.rst(rst0),.key(key),.keyout(keyout);play i3(.clk(clk),.rst(rst0),.key(keyout),.cnt(cnt),.stop(stop);beep i4(.clk(clk),.rst(rst0),.stop(stop),.count(cnt),.bee(beep);segment i5(.clk(clk),.rst(rst0),.count(cnt),.dat1(dat),.sec1(sec);led i6(.clk(clk),.rst(rst0),.count(cnt),.led(led);endmodule5.1.2rtl视图从rtl视图中,可以清晰地看到6个模块。5.1.3总结顶层模块输入信号有系统时钟、复位信号、按键键值;输出信号有数码管的位选、数码管的段选和led端口。复位信号经过复位模块处理,然后分别传递给其他的模块;按键通过按键模块进行处理,然后把键值传递给核心模块;核心模块根据键值把计数值和停止信号传递给数码管、流水灯和蜂鸣器模块,这三个模块分别作出相应的操作。5.2复位模块在数字电路系统里面,无论是大系统还是小一点的系统,复位模块都是必不可少的,以防止fpga运行到不是预期的状态,按下复位键,便可以回归到初试状态,极大地保证了系统的稳定性。5.2.1分析复位模块代码module reset(clk,rst,rst0);input clk,rst;/输入时钟信号和复位按键信号output rst0;/输出处理后的复位信号reg c1,c2,c3;/分别定义三个寄存器always(posedge clk)c1=rst;/在时钟的上升沿锁存键值always(posedge clk or negedge c1)/异步复位,同步释放beginif(!c1)beginc2=0;c3=0;endelsebeginc2=1b1;c3=c2;endendassign rst0=c3;endmodule5.2.2 modelsim仿真结果5.2.3总结复位模块刚进入复位模块时,就采用d触发器对复位信号进行处理,以防止出现下图所示的复位信号抖动,引发整个电路无故地复位,增强稳定性。异步复位与同步复位各有优劣,fpga的寄存器有支持异步复位专用的端口,采用异步复位无需增加器件的额外资源,但是异步复位也存在隐患。异步时钟域的亚稳态问题同样存在于异步复位信号和系统时钟信号之间。同步复位在时钟信号clk的上升沿触发是进行系统是否复位的判断,这降低了亚稳态出现的概率,然而它的缺点就在于需要消耗更多的器件资源,无法充分利用专用的复位端口clr。由于异步复位与同步复位都存在弊端,所以就采用“异步复位、同步释放”的方法。5.3按键模块在按键按下的10ms中之内,按键信号会发生抖动,如下图所示:也就是在按下的10ms内,按键信号类似于多次被按下,这是我们不想得到的结果,为了避免按键抖动,就需要每20ms检测一次按键值。本课题采用的时钟频率是50mhz,代码设计按键消抖模块是采用每4096(20hf_ffff),约80ms检测一次按键,这样就会消除抖动。5.3.1分析按键模块代码module key(clk,rst,key,keyout);input clk,rst;/时钟信号和异步复位信号输入input 2:0 key;/输入3个按键output 2:0 keyout;/处理后的按键信号reg 2:0 key1,key2;reg 19:0 cnt;always(posedge clk or negedge rst)beginif(!rst)begincnt=0;key1=3b111;endelsebegincnt=cnt+1;if(cnt=20hf_ffff)key1=key;endendalways(posedge clk or negedge rst)beginif(!rst)key2=3b111;elsekey2=key1;endassign keyout0=(key10)&key20;assign keyout1=(key11)&key21;assign keyout2=(key12)&key22;endmodule5.3.2 按键模块仿真结果5.3.2总结按键模块消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。一般来说,软件消抖的方法是不断检测按键值,直到按键值稳定。实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时20ms,再次检测,如果按键还为0,那么就认为有按键输入。延时的20ms恰好避开了抖动期。5.4核心模块音高与频率的对应关系| | 1 | 2 | 3 | 4|5 | 6 | 7 |低音 |261.6hz |293.7hz |329.6hz |349.2hz | 392hz | 440hz |493.9hz | |中音 |523.3hz |587.3hz |659.3hz |698.5hz | 784hz | 880hz |987.8hz |高音 |1045.5hz|1174.7hz|1318.5hz|1396.9hz| 1568hz | 1760hz |1975.5hz|乐谱参数:d=f/2k (d:参数,f:时钟频率,k:音高频率,f=50mhz)5.4.1分析核心模块代码module play(clk,rst,key,cnt,stop);input clk,rst;/时钟信号和复位信号输入input2:0key;/三个控制按键输入output 16:0cnt;/输出蜂鸣器方波信号output stop;/控制声音输出reg 16:0count_end;reg stop;reg 7:0 state1;reg 7:0 state2;reg 1:0 state;reg 23:0 count;parameter l_2 = 17d85121,/低音2l_3 = 17d75850,/低音3l_5 = 17d61224, /低音5l_6 = 17d54545,/低音6l_7 = 17d50618, /低音7m_1 = 17d45863,/中音1m_2 = 17d40865,/中音2m_3 = 17d36402,/中音3m_5 = 17d30612,/中音5m_6 = 17d27273,/中音6h_1 = 17d22956;/高音1parametertime = 12000000;/一个节拍约持续250msalways(posedge clk or negedge rst)beginif(!rst)state=2b11;else if(key2)state=2b00;else if(key1)state=2b01;else if(key0)state=2b10;endalways(posedge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025浙江嘉兴博思睿招聘1人(派遣至海宁市人民医院)笔试模拟试题及答案解析
- 2025年四川遂宁市射洪市医疗卫生辅助岗位招募36人考试模拟试题及答案解析
- 2025浙江金华市永康市杨溪水库管理中心编制外人员招聘1人笔试备考题库及答案解析
- 2025年甘肃省兰州新区兰新能源科技集团有限公司夏季第二批招聘36人考试模拟试题及答案解析
- 2025广东茂名市化州市国有企业高管社会化招聘3人考试模拟试题及答案解析
- 2025云南玉溪职业技术学院职教集团江川分校(江川职中)招聘编外人员笔试备考题库及答案解析
- 2025福建泉州晋江市磁灶镇人民政府招聘编外人员4人笔试模拟试题及答案解析
- 2025贵州黔西市第四批招募青年就业见习人员87人笔试参考题库附答案解析
- 2025四川省绵阳第一中学第三次考核招聘教师9人笔试备考题库及答案解析
- 毕业论文非要写本专业吗
- 2024年陕西省专业技术人员继续教育学习平台党史党纪专题学习考试答案
- 13电磁铁的应用(讲义)
- DBJ41T 256-2021 河南省海绵城市设计标准 河南省工程建设标准(住建厅版)
- 独家授权合同模板
- 南京外国语2024-2025九年级上学期第一次月考物理试卷及答案
- 2024年北京广播电视台招聘140人历年高频500题难、易错点模拟试题附带答案详解
- 湖南省名校联盟2024-2025学年高二上学期入学考试物理试题
- 《希腊神话》导读课
- 2024年幕墙工程专业分包合同协议书范本
- 生产与运作管理第5版配套教材电子课件(完整版)
- 广西现代物流集团有限公司招聘笔试题库2024
评论
0/150
提交评论