第7章 数字系统设计实例.ppt_第1页
第7章 数字系统设计实例.ppt_第2页
第7章 数字系统设计实例.ppt_第3页
第7章 数字系统设计实例.ppt_第4页
第7章 数字系统设计实例.ppt_第5页
免费预览已结束,剩余165页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章数字系统的设计实例,7.1半整数分频器的设计7.2音乐发生器7.32FSK/2PSK信号发生器7.4实用的多功能电子钟表7.5交通灯控制器7.6数字频率计算问题,7.1半整数分频器的设计,数字系统设计中分频器为基本电路。 分频器的实现非常简单,可以使用标准计数器,也可以使用可编程逻辑设备来实现整数分频器。 分频器通常用于对给定频率进行分频以获得所需的频率。 在一些情况下,用户需要的频率与频率时钟源不是整数倍的关系,其中可使用分频器进行分频。 另外,7.1.1小数分频的基本原理有5MHz的时钟源,但电路需要2MHz的时钟信号,由于分频比为2.5,所以无法接受整数分频器。 为了使用可编程逻辑装置实现分频因子为2.5的分频器,设计模式3中的计数器,设计提取脉冲电路,将其加到模式3中的计数器输出上,然后每两个脉冲减去一个脉冲(实际上可以使提取出的脉冲具有较窄的脉冲,并在异或门中实现) 以类似方式,可以设计分频因子为任何半整数的分频器。 小数分频的基本原理是脉冲吞吐量计数法:设计两个不同分频比的整数分频器,通过控制单位时间内出现两个分频比的不同次数,得到所需的小数分频值。 例如,可以设计分频系数为10.1的分频器,将分频器设计为9次10分频、1次11分频。 这种总的分频值为(910 111)/(9 1)=10.1,从该实现方法的特征可知,由于分频器的分频值不断变化,因此分频后得到的信号抖动大。 分频系数为N-0.5(N为整数)时,可控制减去脉冲的时间,使输出为稳定的脉冲频率,而不是n分频、N-1分频。 7.1.2电路结构需要如图7-1所示设计由模拟n计数器、2分频器和异或门构成的分频系数N-0.5的分频器。 在实现时,模拟n计数器可被设计为具有预设计数器,且可实现任何分频系数N-0.5的分频器。图7-1通用半整数分频器、7.1.3VHDL程序库ieee; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; entitydeccountisport (inclk : instd _ logic; -时钟源preset : instd _ logic _ vector (3down to0)-预设分频值n,outclk1:OUTSTD_LOGIC; outclk2:BUFFERSTD_LOGIC-输出时钟结束计数; architecturedeccount _ archofdeccountissgnalclk,divide2:STD_LOGIC; signal count : STD _ logic _ vector (3down to0),BEGINclk=inclkXORdivide2; -inclk和divide2异或后的模拟n计数器即时钟outclk1=inclk; process (clk ) begin if (clkeventntandclk=1) thenif (count= 0000 ) then,count=preset-1; -整数分频值Noutclk2=1; ELSEcount=count-1; -模拟n计数器减法计数outclk2=0; ENDIF; ENDIF; 结束流程; 过程(out clk2)、begin if (out clk 2事件2=1) then divide2=not divide 2; -输出时钟二分频ENDIF; 结束流程; ENDdeccount_arch; 然后,通过图7-2的半整数分频器外部接口的以上过程实现对时钟源inclk的分频系数N-0.5的分频,从而获得输出频率outclk2。 preset输入端口是预设分频值n,在该例子中,preset是4比特宽度的比特向量,即分频系数为16以内的半整数值。 如果分频系数大于16,则需要同时增大预设和计数的比特宽度,要求两者的比特宽度始终一致。 如图7-2所示,本设计的外部接口在程序中设置outclk1是为了与输出信号outclk2进行比较以便更容易看到输入信号的波形。 7.1.4仿真结果上述半整数分频器的仿真波形如图7-3所示。、图7-3半整数分频器仿真波形图,在下载7.1.5验证锁定引脚时,将inclk综合适用于CLK1,将preset综合适用于K0K3,将outclk1综合适用于TESTOUT1(测试1脚),将outclk2综合适用于TESTOUT2(测试2脚)后, 将配置数据下载到EDA实验平台(技术资料详细参照附录)的FPGA中(关于CLK1等引脚的FPGA芯片的引脚编号参照附录的图1 ),通过改变K0K3的状态,观察测试1脚和测试2脚的波形,测试结果为模拟结果7.2音乐产生器,其结构如图7-4所示,利用可编程逻辑器件用小扬声器设计音乐产生器。 这个例子产生的音乐是从“梁祝”剪辑中选出的。 图7-4音乐发生器的原理框图,7.2.1音名与频率的关系音乐的12平均率规定了2个八度音(例如简单谱中的中音1与高音1 )之间的频率不同2倍。 两个八度音之间,又分成12半音,每两半音的频率比。 另外,音名a (简谱中的低音6 )的频率为440Hz,音名b到c之间,e到f之间为半音,其馀音为全音。 因此,简谱中从低音1到高音1的每个音名的频度如表71所示。 表7-1简谱中的音名和频率的关系,音阶的频率多为非整数,因为分频系数不是小数,所以必须对计算出的分频进行四舍五入。 基准频率过低时,由于分频系数过小,舍入后的误差大。 如果参考频率过高,则误码差变小,但分频结构变大。 实际设计应综合地考虑两个因素,通过尽可能小的频率误差来采集适当的参考频率。 在本例中,选择4MHz的基准频率。 如果没有4MHz的时钟频率,则可以分频为4MHz或切换为新的参考频率。 实际上,只要各个音名之间的相对频率关系不变,c作1和d作1演奏的音乐就不会“音程不准”。 在本例中演奏的是“梁祝”的片段,该片段内的各音阶的频率和与其对应的分频率如表7-2所示。 为了减少输出的偶次谐波分量,最后输出到扬声器的波形必须是对称方形波,并且存在达到扬声器之前的双分频器。 表72的分频比是根据将4MHz的频率进行2分频后的2MHz的频率来计算的。 与表7-2的各音阶的频率对应的分频值,由于最大的分频系数为6067,因此可以用13比特的二进制计数器满足分频请求。 在表72中,除了给出了分频比以外,根据各音阶的频率给出了计数器不同的初始值。 对于不同的分频系数,可加载不同的初始值。 加载初始值而非对分频器输出进行解码和反馈,能够有效地减少本设计占用可编程逻辑装置的资源,这也是同步计数器的一般设计技术。 关于乐曲中的停顿,分频系数为0,即初始值为213-1=8191即可,此时扬声器不发音。 7.2.2音长本例控制演奏的“梁祝”,最小节奏为1/4拍。 将1拍的时间设定为1秒,再提供4Hz的时钟频率,就会产生1/4拍的时间。 演奏的时间控制通过记谱进行,对于占有时间长的节奏(必须是1/4拍的整数倍),如2/4拍那样,连续2次记录其音名即可。 在本例中,由于在演奏时要求能够进行循环,因此需要另外设置时间计数器,保证在乐曲的演奏结束时能够自动地从开头开始演奏。 7.2.3如果需要演奏时音名的动态显示,则可以用数字管道或LED显示与乐曲演奏时对应的音符。 使用3个数字管,若将本例的高音、中音、低音名分别进行显示,则能够进行演奏的动态显示,非常直观。 在本设计中,演奏时的音名用3个数字管动态显示,其中HIGH表示高音域音阶(仅高音1 ),MED2.0表示中音域音阶(中音6,5,3,2,1 ),LOW2.0表示低音域音阶(低音7,6,5,3 )。 这里不特别讨论数字编码管所示的7级解码电路。另外,在7级解码电路的输入为4位,使用HIGH、MED、LOW作为输入的情况下,小于4位的高位全部为LOW电平“0”。 如图7-5所示,图7-5音乐产生器的外部接口和用于7.2.4VHDL程序基本设计的外部接口在程序中定义了5比特宽的zero4.0。 这是因为在实验平台上与数字管连接的引脚不代入值而是高电平,所以显示音名错误。 设定zero4.0,是为了使未使用的针脚(高音的高度3位、中音的高度1位、低音的高度1位)为低电平,避免显示错误。 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYsongISPORT(clk_4MHz,clk_4Hz:INSTD_LOGIC; -预设计数器与乐谱生成器的时钟,digit : buffer STD _ logic _ vector (6down to0)-高、中、低频码管理指示zero : out STD _ logic _ vector (4down to0)-数字码管的高位置ARCHITECTUREsong_archOFsongIS,SIGNALdivider,origin : STD _ logic _ vector (12下载到0 )- 13位计数值和预设值signal counter : integer -7位计数器signal count : STD _ logic _ vector (1down to0)-记录1/4快照SIGNALcarrier:STD_LOGIC的BEGINzero=00000 ; PROCESS(clk_4MHz )、begin if (clk _4mhzeventandclk _4MHz=1) thenif (divider= 1111111111 ) then carrier=1; divider=origin; ELSEdivider=divider 1; 运营商=0; ENDIF; ENDIF; 结束流程; process (carrier ) begin if (carriereventandcarrier=1) then count=count 1; -输出时钟四分频IFcount=00THENspeaker=1; ELSEspeaker=0; ENDIF; ENDIF; 结束流程; 进程(clk _4Hz ) begin if (clk _4hzeventandclk _4Hz=1) thenif (计数器=140 )计数器=0; elsecounterdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigit数字数字数字数字数字数字数字数字数字数字数字数字igititdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigi igitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitditdigitdigitditdigitdit gitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigi iteditiquiteditiquiteditiquiteditiiite ditiquiteditiquitionionionionionionionion- 8191,结束时间; 结束流程; ENDsong_arch; 7.2.5仿真结果音乐发生器的仿真波形如图7-6所示。 下载图7-6音乐发生器仿真波形图、7.2.6验证锁定引脚时,clk_4MHz和clk_4Hz分别与CLK1和CLK2连接,speaker与扬声器连接,zero4.2、digit6与数字代码管理器连接digit5.3与数码管连接,zero0、digit2.0与别的数码管连接。 综合匹配后,将配置数据下载到EDA实验平台(技术资料详细参照附录)的FPGA中(关于CLK1等引脚的FPGA芯片引脚的编号参照附录的图1 ),可以通过扬声器的短接线(连接到扬声器)来听MIDI音乐。 在7.32FSK/2PSK信号发生器和7.3.12FSK的基本原理通信领域中,为了传送信息,一般将原始信号经过某种转换,以使其具有适于通信传输的信号格式。 在数字通信系统中,通常原始信号(图像、语音等)被量化编码成二进制码流,并被称为基带信号。 然而,数字基带信号通常不适合直接传输。 例如,当通过公用电话网传送数字信号时,由于电话网的带宽为4kHz以下,所以不能直接传送数字信号。 此时,可以调制数字信号,并且图7-7示出由FSK调制的波形,其中,FSK是常用的数字调制方案。 此外,FSK也称为频移键控,并且它利用载波频率的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论