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

上传人:b****5 文档编号:14887957 上传时间:2023-06-28 格式:DOCX 页数:10 大小:230.65KB
下载 相关 举报
基于CPLD的数控分频器及其应用.docx_第1页
第1页 / 共10页
基于CPLD的数控分频器及其应用.docx_第2页
第2页 / 共10页
基于CPLD的数控分频器及其应用.docx_第3页
第3页 / 共10页
基于CPLD的数控分频器及其应用.docx_第4页
第4页 / 共10页
基于CPLD的数控分频器及其应用.docx_第5页
第5页 / 共10页
基于CPLD的数控分频器及其应用.docx_第6页
第6页 / 共10页
基于CPLD的数控分频器及其应用.docx_第7页
第7页 / 共10页
基于CPLD的数控分频器及其应用.docx_第8页
第8页 / 共10页
基于CPLD的数控分频器及其应用.docx_第9页
第9页 / 共10页
基于CPLD的数控分频器及其应用.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《基于CPLD的数控分频器及其应用.docx》由会员分享,可在线阅读,更多相关《基于CPLD的数控分频器及其应用.docx(10页珍藏版)》请在冰点文库上搜索。

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

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

1引言

计算机组成原理与设计是计算机通信与技术专业本科生的必修课程。

在完成理论学习和必要的实验后,本科学生掌握了它的基本原理和各种基本功能的应用,但对硬件实际应用设计和其完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。

计算机组成原理与设计的课程设计既要让学生巩固课本学到的理论,还要让学生学习硬件电路设计和用户程序设计,同时学习查阅资料、参考资料的方法。

计算机原理与设计的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创新能力。

1.1设计的目的

本次设计的目的就是了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。

通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创新能力。

通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标。

1.2需求分析

这次课程设计的题目是实现基于CPLD的数控分频器及其应用。

设计乐曲程序能实现演奏电路,并用原理图方法设计数字时钟,使电路具有校时校分的功能与传统的纯硬件方法相比简单有效。

此设计可以适应多家可编程逻辑器件,便于组织大规模的系统设计;便于设计的复用继承和升级更新,具有广阔的应用前景。

1.3设计的基本内容

传统数字电路设计是利用标准集成电路、电路板来实现电路功能。

可编程逻辑器件和EDA技术使设计方法发生了质的变化。

把以前“电路设计+硬件搭试+调试焊接”转化为“功能设计+软件模拟+仿真下载”。

利用EDA开发平台,采用可编程逻辑器件CPLD/FPGA使硬件的功能可通过编程来实现,这种新的基于芯片的设计方法能够使设计者有更多机会充分发挥创造性思维,实现多种复杂数字逻辑系统的功能,将原来由电路板设计完成的工作放到芯片的设计中进行,减少了连线和体积,提高了集成度,降低了干扰,大大减轻了电路设计和PCB设计的工作量和难度,增强了设计的灵活性,有效地提高了工作效率,MUSICFLOW增加了系统的可靠性和稳定性,提高了技术指标。

本文设计利用VHDL语言设计数控分频器电路,利用数控分频的原理,设计了乐曲演奏电路。

采用原理图方法设计数字时钟电路,该电路具有校时、校分功能,由60进制的秒分模块、24进制的小时模块、动态扫描显示模块组成,把数倾家荡产分频电路应用于数字名整点报时的乐曲演奏中,演奏时间为15s.

 

2VHDL简介

VHDL的简介:

VHDL是VeryHighspeedIntegratedCircuitHardwareDescriptionLanguage(非常高速集成电路硬件描述语言)的英文缩写。

它是由美国国防部支持的一项研究计划,于1983年创建,目的是以文字化方法描述电子电路与系统。

至今VHDL约有40年的发展历史,1987年,VHDL成为IEEE标准,即IEEE1076标准,1993年修改为IEEE1164标准,1996年,IEEE又将电路合成的标准程序与规格加入到VHDL语言中,称为1076.3标准。

之后,又有1076.4标准和1076.6标准。

 

3设计过程

3.1数控分频器系统各部分电路设计

系统方框图如图1所示:

图1系统结构方框图

 

3.2数控分频器音乐演奏电路设计

产生音乐的两个因素是音乐频率和音响的持续时间,首先需要准确地产生音乐中各音符所对应的频率信号,并根据音符的长短控制节拍输出时间。

其数控分频音乐演奏电路顶层,设计原理图如图2所:

 

图2数控分频音乐演奏电路顶层设计图

3.2.1音乐拍发生器(MUSICFlow)

此模块存有一首《茉莉花》乐曲简谱真值表。

由一个计数器来控制此真值表按顺序输出简谱,简谱的编码为低音1-7,中音8-14,高音1521。

计数器的时钟为4Hz,即每一计数值的停留时间为0.25s,当全音符为Is时,四四拍的四分音符的持续时间。

因此真值表表示持续时间的表示方法为全音符重复4,2/4音符重复2,1/4音符重复1。

计数时钟信号作为输出音符快慢的控制信号,时钟快时输出节拍速度就快,演奏的速度也就快,时钟慢时输出节拍的速度就慢,演奏的速度自然降低。

3.2.2音拊查表器(MAHTaba)

音符查表电路即音调发生器实际上是一个查表电路,放置21个音乐简谱对应的频率表,主要作用是由简谱查找到对应的频率,而此频率值作为初值,送到数控分频计数器。

3.2.3数控分频器电路(M_GENERAT)

数控分频电路是由一个初值可变的加法计数器构成。

原理如下:

该计数器的模为2047,当计数器记满时,计数器产生一个溢出信号overspks,此溢出信号就是用作发音的频率信号。

在计数器的输入端给定不同的初值,而此预置初数就是前一级音符查表电路(MACHTaba)模块来的简谱的频率,它计满所需要的分频比(补数)可由下式来表示:

Tone+分频比二2047+溢出信号

低音时Tone值小,分频比大,溢出信号周期长,扬声器发出的声音低,Tone随音乐的乐谱而变化,自动控制分频比,实现了数控分频,发声信号的频率与音调Tone成正比。

这就是利用数控分频器自动演奏音乐的原理。

由于数控分频器输出信号是脉宽很窄的信号,为了有利于驱动扬声器,需要加一个D触发器以均衡占空比,但这时的频率是原来的二分之一。

ClklMHz数控分频计数器的时钟频率为1MHz,大小选择应该使发声频率在人们的正常听觉范围内。

 

3.3数字钟小时电路

运用VHDL语言计时电路为24进制,低位为10进制,用2进制计数器74161,当计到1010时,通过与非门,反馈到低位的CLRN清零端,反馈清零法构成10进制,同时该信号作为进位信号,接到高位计数器74161的CLK时钟,当高位计到010,同时低位计到0100时,把hour5和低位的hour2及hour0的反相信号经过与非门,作为清除信号分别连到各自CLRN清零端,低位的clm前还要接一2输入与门,以便区分低位自身的10进制清零,这样两级反馈清零法构成两位的24进制。

校时电路,采用R-S触发器消除开关抖动的二选一的校时方法,校时时钟为1Hz信号。

当settime为低电平时,为正常工作状态;需要校时的时候,置,settime=l,则小时计时器每秒增加1次,从而完成校时。

小时电路原理图如图3所示。

图3小时计时及校准电路图

 

3.3.2分、秒模块

分、秒电路为60进制,低位计数器用10进制计数器74162,RCO进位信号反相后作为高位的CLK时钟,高位用74161计数器,当计到0110时,通过与非门,反馈到CLRN清零端,反馈清零法构成6进制,两位级连实现60进制。

3.3.3译码显示模块

采用动态扫描方式,把秒分时的低位高位分别送入BCD一段译码电路,位选信号经138译码依次选通LED公共端,显示出时间。

 

3.4整点报时音乐电路

整点报时音乐电路如图4所示。

图4数字钟及整点报时控制电路仿真图

时序仿真分析:

把系统时钟产生的4Hz信号分别送入音调发生器和本分频器输入端,将它4分频,得到1Hz信号作为数字钟的时钟源。

当整点时,输出高电平控制信号en_spks,此使能信号把输出音乐信号的闸门开启,音乐就演奏出来。

在音乐演奏一开始便开始计时,当计数器计数到第15个脉冲时输出低电平,关闭输出音乐信号的闸门,从而实现音乐整点自动演奏15s报时。

报时15s控制信号仿真波形如图4所示。

 

4系统综合调试

程序调试在MAX-PLUS11软件系统中进行,先将VHDL设计程序或原理图输入的文件分别编译、综合、仿真,完成各功能模块的调试,生成各子电路符号,然后在顶层设计中把各功能模块调入,把各模块接口连接起来,根据CPLD的引脚资源指定引脚,重新编译,最后把sof或pof文件下载CPLD/FPGA中验证。

本电路经下载到EDA实验箱,结果正确。

该电路系统采用自顶向下方式将系统按功能逐层分割的层次化设计方法,达到了设计目的。

整个系统集成在EPF10K10LC84-4可编程逻辑器件上,大大简化了外部电路,既减少了大量硬件连线,又降低了干扰,系统实现方便、性能稳定。

采用VHDL这种与硬件工艺无关的描述语言,可以适应多家可编程逻辑器件,便于组织大规模的系统设计;便于设计的复用继承和升级更新,具有广阔的应用前景。

 

5结束语

上机实践中,我发现一不小心就会调用错误,说明了作为软件编程人员是不能粗心大意的,一个程序的质量的高低与你细心与否有着一定的联系。

在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块进行调就可以了,充分体现了结构化编程的优势。

在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。

在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。

用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。

通过的紧张工作,完成了我的设计任务——数控分频器及其应用。

通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。

对软件工程的一些错误理解有了重新的认识。

在设计过程中,遇到了很多问题,在解决这些问题的过程中,对它们有了重新的正确认识。

更重要的是在设计过程中培养锻炼了我科学严谨的学习、工作作风和认真的态度。

本次设计课不仅仅培养了我们的实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。

此次系统设计给我提供了一个既动手又动脑、自学、独立实践的机会,使我养成了勤翻阅各种相关资料的习惯,将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。

6致谢

特别感谢在这次课程设计中肖晓丽老师对我的指导,正是由于她的耐心指导,我才可以顺利完成这次的设计。

锻炼了动手能力,给以后的学习指出了一个方向。

参考文献

1潘松,王国栋.VHDL实用教程.成都:

电子科技大学出版社,2001

2廖裕评,陆瑞强.CPLD数字电路设计.北京:

清华大学出版社,2001

3高书莉,罗朝霞.可编程逻辑设计技术及应用.北京:

人民邮电出版社,2001

4罗炎林等.数字电路.北京:

机械工业出版社,1997

 

附录

数控分频器VHDL程序如下(略去声明部分):

genspks:

process(clk,tone)--“spk_clk=1MHZ”;

variabledigcount:

integerrange0to16#7ff#;--“2047”

begin

ifclk'eventandclk='1'then

ifdig_count=16#7ff#then--b"111,1111,1111";

dig_count:

=tone;--若记满,将预置数重新置入

overspks<='1';--产生overspks溢出信号

elsedig_count:

=digcount+1;--否则继续加计数

overspks<='0;

endif;

endprocess;

delay:

process(overspks)--将输出再进行二分频,展宽脉冲使扬声器有足够的功率发音

ifoverspks'eventandoverspks='1'then

count2:

=notcount2;

ifcount2='1'thenspks<--'1;

elsespks<二,'0;

endif;

endif;

 

整点报时15s,VHDL程序如下:

architecturebehavofalertlis

signalirrclk:

std_logic;

signalcou:

std-logic-vector(Idownto0);--将信号四分频begin

process

begin

waituntilclk4hz='1';

cou<=cou+1;

endprocess;

clk<=cou

(1);

irrclk<=cou

(1);--分频结果赋给CLK

endprocess;

genspks:

process(irrclk)--定时控制15秒

variablecountl5:

integerrange0to15;

variablestate:

integerrange0to3;--分四个状态

begin

ifirrclk'eventandirrclk='1'then

if(min="0000000")then

ifcountl5=15then

count15:

=0;

en_spks<='0';

ifstate=3thenstate:

=0;

elsestate:

=state+1;

endif;

elsecountl5:

=countl5+1;

ifstate=0thenennspks<='1';

endif;

.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

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

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