数字频率计课程设计实习报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 19 数字频率计 设计报告书 一、设计要求 设计一个4位十进制数字式频率计,最大测量范围为10MHz。量程分10kHz、100kHz、1MHz和10MHz四档(最大读数分别为9.999kHz、99.99kHz、999.9kHz、9999.kHz). 量程自动转换规则如下: 当读数大于9999时,频率计处于超量程状态,此时显示器发出溢出指示,下一次测量时,量程自动增大一档,小数点位置随量程变更自动移位。 可用手动方式使量程在每次测量开始时处于最低档。 显示方式如下: 采用记忆显示方式,即计数过程中不显示数据,待计数过程结束以后,显示计数结果,将此显示结果保持到下一次计数结束。显示时间应不小于1s。 送入信号应是符合CMOS电路要求的脉冲波,对于小信号模拟信号应有放大整形电路。 二、方案设计 1整体思路 所谓频率就是周期性信号在单位时间 (1s)内变化的次数。若在一定时间间隔 T内测得周期性信号的重复变化次数为 N ,则频率可表示为 f =N /T (Hz)。被测信号fx经放大整形电路变成计数电路所要求的脉冲信号,其频率与被测信号fx的频率相同。基准电路提供标准时间基准信号clk,其高电平持续时间 t 1 = 1 s,当 1 s信号来到时 ,闸门电路开通 ,被测脉冲信号通过闸门电路,成为计数电路的计数脉冲 CP,计数电路开始计数,直到 ls信号结束时闸门电路关闭 ,停止计数。若在闸门时间 1 s内计数电路计得的脉冲个数为 N ,则被测信号频率 f =NHz。控制电路的作用有两个:一是产生锁存脉冲 CLK,使显示电路上的数字稳定;二是产生清“0”脉冲,使计数电路每次测量从零开始计数。 2时钟信号的选择 设计电路中时钟信号采用12M有源晶振产生,下面是12M有源晶振引脚图: 3整形电路的选择 整形电路中可以用运算放大器LM311组成电压选择器实现,以下是关于此芯片的资料: 引脚功能: GROUND/GND 接地 INPUT +??? 正向输入端 INPUT -??? 反向输入端 OUTPUT???? 输出端 BALANCE??? 平衡 BALANCE/STROBE 平衡/选通 V+?? 电源正 V-?? 电源负 NC?? 空脚 LM311引脚图 由于LM311过于复杂且此次设计要求精度不高,整形电路可以改为如下电路: 输 出待测信号 输 出 待测信号 这样产生稳定3.3V为幅值的信号送入EPM570中,对芯片起到保护作用。 3设计所用核心芯片资料及其原理 所用核心芯片为CPLD器件EPM570T100C5。基本设计方法是借助集成开发软件平台quartus II 6.0,用原理图、硬件描述语言(Verilog HDL)等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。 EPM570引脚图: 在Quartus II 6.0中设定的引脚分布如下: 4计数译码原理图: 千位计数器 千位计数器 百位计数器 十位计数器 个位计数器 进位 进位 进位 锁存器 千位译码器 百位译码器 十位译码器 个位译码器 四位共阴极数码管 小数点位置 5分频选择器原理图: 6MHz转1Hz分频计 6MHz转1Hz分频计 时钟信号 待测信号 10/100/1000分频选择器 小数点移位 小数点位置 多 位 计 数 器 6数码管引脚图: 通过Verilog HDL语言设计程序,实现上述原理图功能,最终所测信号频率以四位共阴极数码管显示,单位为KHz。 三、调试 按照分频计、计数器、锁存器、选择器、译码器模块分别进行编程调试、仿真; 建立工程,把五个模块连接,调试。针对错误模块进行修改,重新建立工程、连接模块; 将程序下载到EMP570中,利用数电实验板以及数码管进行调试; 将各种器件焊接到万用板上,连接电源进行实际调试。 程序代码 1.module ssss(b,base); input b; output reg base; reg [23:0]q; always@(posedge b) if(q5999999) q=q+1; else begin base=!base;q=0; end Endmodule 2 module Fen6M(b,base); input b; output reg base; reg [23:0]q; always@(posedge b) if(q5999999) q=q+1; else begin base=!base;q=0; end Endmodule 3. module ctrl(clk,Counter_EN,

文档评论(0)

好老师 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档