计数器与分频器的VHDL设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
工作任务: 1. 基础知识学习 2. 通用计数器设计 3. 十进制减法计数器设计 4. 十二进制加法计数器设计 1. 基础知识学习 计数器功能:对输入脉冲计数 计数器应用:计数、定时、控制、分频等 计数器分类: 按同步方式分:同步计数器、异步计数器 同步:受同一个时钟控制 异步:不受同一个时钟控制 按计数方向分:加法计数器、减法计数器 按模数分:二进制、五进制、十进制等 1. 基础知识学习 PLD原理 PLD分类 CPLD:PAL扩展型 FPGA:逻辑单元型 1. 基础知识学习 PLD优点: 密度大 功耗低 速度快 结构灵活 开发工具先进 2. 通用计数器设计 设计一个通用计数器,要求: 复位信号为高电平时计数器清零或赋初值; 使能信号为高电平时计数器正常工作,低电平时计数值不变; 计数方向控制信号为高电平时,按加法规则计数,即来一个时钟计数器加1,计数器达到最大值时再来一个时钟自动清零;否则,按减法规则计数,减到0时再来一个时钟计数器为最大值; 计数器的模可调; 计数器触发边沿可调。 VHDL源程序 4. 做中学——设计一个十二进制加法计数器 课后作业: 按照“构思、设计、实现、运行”的步骤,完成初值为5的六进制减法计数器设计。 课堂练习: 按照“构思、设计、实现、运行”的步骤,设计一个初值为2的五进制双向计数器。 工作任务: 1. 分频器概念 2. 通用分频器设计 3. 占空比50%的奇数分频器设计 1. 分频器概念 分频器功能: 把频率较高的信号变成频率较低的信号。 分频器参数: 分频系数: rate=fin / fout 占空比:输出脉冲持续高电平的时间:周期。 分频器种类: 偶数分频器、奇数分频器、占空比可调的分频器。 2. 设计举例——通用分频器 设计要求:分频系数可调,占空比为可调(占空比为50%时分频系数不能是奇数 )。 构思: 假设,分频系数为n,占空比为m:n(m,n为正整数,且mn;m:n=50%时n不能为奇数 )。 方案一、用硬件搭接,缺点是电路复杂,焊点多,可靠性、灵活性差; 方案二、用单片机实现,虽然灵活性较好,但速度慢; 方案三、用硬件描述语言(HDL)编程,用可编程逻辑器件(PLD)实现,好处是可靠性高、灵活性好。 2. 设计举例——通用分频器 设计:采用方案三 例如,设计占空比为30%的10分频器,其输入输出波形如下图所示。可以看出,输出1个周期=输入信号的10个周期,前3个输入周期,输出高电平;后7个输入周期,输出低电平。 方法:设计一个摸数为分频系数n的计数器,对输入时钟脉冲计数,当计数值为0~m-1时,输出高电平;计数值为m~n-1时,输出低电平。 源程序:见下页 通用分频器的VHDL源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity fdivn is generic( n: integer:=10; m: integer:=3 ); -- n为分频系数,占空比m:n;占空比=50%时n不能为奇数 port( clkin : IN std_logic; clkout : OUT std_logic ); end fdivn; architecture a of fdivn is signal cnt: integer range 0 to n-1;--定义中间信号(这里为么不用变量?信号与变量有何不同?) begin process(clkin) begin if(clkinevent and clkin=1) then if(cntn-1) then cnt = cnt+1; else cnt = 0; end if; end if; end process; clkout = 1 when cntm else 0

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档