ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:230.65KB ,
资源ID:14887957      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14887957.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于CPLD的数控分频器及其应用.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于CPLD的数控分频器及其应用.docx

1、基于CPLD的数控分频器及其应用1 引 言计算机组成原理与设计是计算机通信与技术专业本科生的必修课程。在完成理论学习和必要的实验后,本科学生掌握了它的基本原理和各种基本功能的应用,但对硬件实际应用设计和其完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。计算机组成原理与设计的课程设计既要让学生巩固课本学到的理论,还要让学生学习硬件电路设计和用户程序设计,同时学习查阅资料、参考资料的方法。计算机原理与设计的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创新能力。1.1 设计的

2、目的本次设计的目的就是了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创新能力。通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标。1.2 需求分析这次课程设计的题目是实现基于CPLD的数控分频器及其应用。设计乐曲程序能实现演奏电路,并用原理图方法设计数字时钟,使电路具有校时校分的功能与传统的纯硬件方法相比简单有效。此设计可以适应多家可编程逻辑器件,便于组织大规模的系统设

3、计;便于设计的复用继承和升级更新,具有广阔的应用前景。1.3 设计的基本内容传统数字电路设计是利用标准集成电路、电路板来实现电路功能。可编程逻辑器件和EDA技术使设计方法发生了质的变化。把以前 “电路设计+硬件搭试+调试焊接”转化为 “功能设计+软件模拟+仿真下载”。利用EDA开发平台,采用可编程逻辑器件CPLD/FPGA使硬件的功能可通过编程来实现,这种新的基于芯片的设计方法能够使设计者有更多机会充分发挥创造性思维,实现多种复杂数字逻辑系统的功能,将原来由电路板设计完成的工作放到芯片的设计中进行,减少了连线和体积,提高了集成度,降低了干扰,大大减轻了电路设计和PCB设计的工作量和难度,增强了

4、设计的灵活性,有效地提高了工作效率, MUSICFLOW增加了系统的可靠性和稳定性,提高了技术指标。本文设计利用VHDL语言设计数控分频器电路,利用数控分频的原理,设计了乐曲演奏电路。采用原理图方法设计数字时钟电路,该电路具有校时、校分功能,由60进制的秒分模块、24进制的小时模块、动态扫描显示模块组成,把数倾家荡产分频电路应用于数字名整点报时的乐曲演奏中,演奏时间为15s. 2 VHDL简介VHDL的简介:VHDL是Very High speed Integrated Circuit Hardware Description Language (非常高速集成电路硬件描述语言)的英文缩写。它是

5、由美国国防部支持的一项研究计划,于1983年创建,目的是以文字化方法描述电子电路与系统。至今VHDL约有40年的发展历史,1987年,VHDL成为IEEE标准,即IEEE1076标准,1993年修改为IEEE1164标准,1996年,IEEE又将电路合成的标准程序与规格加入到VHDL语言中,称为1076.3标准。之后,又有1076.4标准和1076.6标准。3 设计过程31 数控分频器系统各部分电路设计 系统方框图如图1所示 :图1 系统结构方框图3.2 数控分频器音乐演奏电路设计 产生音乐的两个因素是音乐频率和音响的持续时间,首先需要准确地产生音乐中各音符所对应的频率信号,并根据音符的长短控

6、制节拍输出时间。其数控分频音乐演奏电路顶层,设计原理图如图2所:图2 数控分频音乐演奏电路顶层设计图3.2.1 音乐拍发生器(MUSICFlow) 此模块存有一首 茉莉花乐曲简谱真值表。由一个计数器来控制此真值表按顺序输出简谱,简谱的编码为低音1-7,中音8-14,高音1521。计数器的时钟为4Hz,即每一计数值的停留时间为0.25s,当全音符为Is时,四四拍的四分音符的持续时间。因此真值表表示持续时间的表示方法为全音符重复4,2/4音符重复2,1/4音符重复1。计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。

7、 3.2.2音拊查表器(MAHTaba) 音符查表电路即音调发生器实际上是一个查表电路,放置21个音乐简谱对应的频率表,主要作用是由简谱查找到对应的频率,而此频率值作为初值,送到数控分频计数器。3.2.3数控分频器电路 (M_GENERAT) 数控分频电路是由一个初值可变的加法计数器构成。原理如下:该计数器的模为2047,当计数器记满时,计数器产生一个溢出信号overspks,此溢出信号就是用作发音的频率信号。在计数器的输入端给定不同的初值,而此预置初数就是前一级音符查表电路(MACHTaba)模块来的简谱的频率,它计满所需要的分频比(补数)可由下式来表示:Tone+分频比二2047+溢出信号

8、低音时Tone值小,分频比大,溢出信号周期长,扬声器发出的声音低,Tone随音乐的乐谱而变化,自动控制分频比,实现了数控分频,发声信号的频率与音调Tone成正比。这就是利用数控分频器自动演奏音乐的原理。由于数控分频器输出信号是脉宽很窄的信号,为了有利于驱动扬声器,需要加一个D触发器以均衡占空比,但这时的频率是原来的二分之一。ClklMHz数控分频计数器的时钟频率为1MHz,大小选择应该使发声频率在人们的正常听觉范围内。3.3 数字钟小时电路运用VHDL语言计时电路为24进制,低位为10进制,用2进制计数器74161,当计到1010时,通过与非门,反馈到低位的CLRN清零端,反馈清零法构成10进

9、制,同时该信号作为进位信号,接到高位计数器74161的CLK时钟,当高位计到010,同时低位计到0100时,把hour5和低位的hour2及hour0的反相信号经过与非门,作为清除信号分别连到各自CLRN清零端,低位的clm前还要接一2输入与门,以便区分低位自身的10进制清零,这样两级反馈清零法构成两位的24进制。校时电路,采用R-S触发器消除开关抖动的二选一的校时方法,校时时钟为1Hz信号。当settime为低电平时,为正常工作状态;需要校时的时候,置, settime=l,则小时计时器每秒增加1次,从而完成校时。小时电路原理图如图3所示。图3 小时计时及校准电路图3.3.2 分、秒模块分、

10、秒电路为60进制,低位计数器用10进制计数器74162,RCO进位信号反相后作为高位的CLK时钟,高位用74161计数器,当计到0110时,通过与 非门,反馈到CLRN清零端,反馈清零法构成6进制,两位级连实现60进制。3.3.3 译码显示模块采用动态扫描方式,把秒分时的低位高位分别送入BCD一段译码电路,位选信号经138译码依次选通LED公共端,显示出时间。3.4 整点报时音乐电路整点报时音乐电路如图4所示。图4 数字钟及整点报时控制电路仿真图时序仿真分析:把系统时钟产生的4Hz信号分别送入音调发生器和本分频器输入端,将它4分频,得到1Hz信号作为数字钟的时钟源 。当整点时,输出高电平控制信

11、号en_spks,此使能信号把输出音乐信号的闸门开启,音乐就演奏出来。在音乐演奏一开始便开始计时,当计数器计数到第15个脉冲时输出低电平,关闭输出音乐信号的闸门,从而实现音乐整点自动演奏15s报时。报时15s控制信号仿真波形如图4所示。4 系统综合调试程序调试在MAX-PLUS11软件系统中进行,先将VHDL设计程序或原理图输入的文件分别编译、综合、仿真,完成各功能模块的调试,生成各子电路符号,然后在顶层设计中把各功能模块调入,把各模块接口连接起来,根据CPLD的引脚资源指定引脚,重新编译,最后把sof或pof文件下载CPLD/FPGA中验证。 本电路经下载到EDA实验箱,结果正确。 该电路系

12、统采用自顶向下方式将系统按功能逐层分割的层次化设计方法,达到了设计目的。整个系统集成在EPF10K10LC84-4可编程逻辑器件上,大大简化了外部电路,既减少了大量硬件连线,又降低了干扰,系统实现方便、性能稳定。采用VHDL这种与硬件工艺无关的描述语言,可以适应多家可编程逻辑器件,便于组织大规模的系统设计;便于设计的复用继承和升级更新,具有广阔的应用前景。5 结束语上机实践中,我发现一不小心就会调用错误,说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个

13、模块进行调就可以了,充分体现了结构化编程的优势。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。 通过的紧张工作,完成了我的设计任务数控分频器及其应用。通过本次课程设计的学习,我深深的体会到设计课的重要性和目的

14、性所在。对软件工程的一些错误理解有了重新的认识。在设计过程中,遇到了很多问题,在解决这些问题的过程中,对它们有了重新的正确认识。更重要的是在设计过程中培养锻炼了我科学严谨的学习、工作作风和认真的态度。本次设计课不仅仅培养了我们的实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。此次系统设计给我提供了一个既动手又动脑、自学、独立实践的机会,使我养成了勤翻阅各种相关资料的习惯,将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。6 致谢 特别感谢在这次课程设计中肖晓丽老师对我的指导,

15、正是由于她的耐心指导,我才可以顺利完成这次的设计。锻炼了动手能力,给以后的学习指出了一个方向。参 考 文 献1 潘松,王国栋.VHDL实用教程.成都:电子科技大学出版社,20012 廖裕评,陆瑞强.CPLD数字电路设计.北京:清华大学出版社,2001 3 高书莉,罗朝霞.可编程逻辑设计技术及应用.北京:人民邮电出版社,2001 4 罗炎林等.数字电路.北京:机械工业出版社,1997 附 录数控分频器VHDL程序如下(略去声明部分): genspks:process(clk,tone) -“spk_clk=1MHZ”; variable digcount:integer range0to16#7

16、ff#;-“2047” begin if clkevent and clk=1then if dig_count=16#7ff#then -b111,1111,1111; dig_count:=tone; -若记满,将预置数重新置入 overspks=1; -产生overspks溢出信号 else dig_count:=digcount+1; -否则继续加计数 overspks=0; end if; endprocess; delay:process(overspks) -将输出再进行二分频,展宽脉冲使扬声器有足够的功率发音 if overspksevent and overspks=1the

17、ncount2:=notcount2; if count2=1then spks-1; else spks二,0; end if; end if; 整点报时15s,VHDL程序如下: architecture behav of alertlis signal irrclk:std_logic; signal cou :std-logic-vector(Idownto0); -将信号四分频 begin process begin wait until clk4hz=1; cou=cou+1; end process; clk=cou(1); irrclk=cou(1); -分频结果赋给CLK e

18、ndprocess; genspks:process(irrclk) -定时控制15秒 variable countl5:integer range0to15; variablestate:integer range0to3; -分四个状态 begin if irrclkevent and irrclk=1 then if(min=0000000)then if countl5=15then count15:=0; en_spks=0; if state=3 then state:=0; else state:=state+1; end if; else countl5:=countl5+1; ifstate=0then ennspks=1; endif; .

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2