基于VerilogHDL的数字频率计设计及仿真实现.doc

基于VerilogHDL的数字频率计设计及仿真实现.doc

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于 摘 要:关键词:1 引 言 1. 测量被测信号在单位时间内的脉冲个数,其数字表达式 f = N / t 其中: F为被测信号的频率 N为脉冲的个数 T为被测信号产生N个脉冲所需的时间 频率测量方法 直接测量法:直接测量被测信号的频率,通过计数法来对被测信号在一定时间内的脉冲个数进行计数。直接厕灵法的结构框图如图1.2.1所示。 图1.2.1 直接测量法的结构框图 误差来源 ① 技术过程中最大存在着±1个字的量化误差 ② 对时间t的准确把握,主要包括准时钟的时间准确性、整形电路、分频电路以及技术时间控制闸门的开关速度等因素。 直接法测量的最大相对误差可以表达为 ( df/f )max=±( |1/N| + |G| )=±( |1/ft| + |G| ) 其中: N为脉冲的个数,G为标准时钟的频率稳定性,f为被测信号频率,t为被测信号产生N个脉冲所需的时间。 功能及技术指标 ● 频率测量范围: 10Hz ~ 100MHz ● 测量分辨率: 1Hz ● 测量通道灵敏度: 50mVpp ● 通道输入阻抗:不小于100k? ● 测量误差:±1 ● 测量结果显示:6位数码管显示 该数字频率计的操作面板如图1.2.4所示 图1.2.4 简易数字频率计的操作面板 其中,被测信号可以有三种,分别是方波、三角波和正弦波;测量结果显示采用六个数码管来显示;量程分为三个,分别为:0~999999Hz、0~9999.99kHz、0~99.9999MHz 2 Verilog HDL简介 2.1的简介 3 数字频率计系统框图 3.1数字频率计系统框图 设计如图3.1.1所示的数字频率计系统电路框图 图3.1.1 所示的数字频率计系统电路框图 3.2数字频率计系统部件简介 1. 放大整形 数字频率计允许测量信号的类型有三种:方波、三角波和正弦波,并且信号的测量通道灵敏度为 50mVpp,为此,需要将被测信号放大整形成标准的TTL电平的方波型号,便于CPLD/FPGA对信号脉冲的计数。 2. SW1、SW2、SW3按键 SW1、SW2、SW3这三个按键用来在测量的时候,用户根据被测信号的大致频率范围选择不同的适合被测信号的量程。在按键的设计中,需要考虑实际按键的消抖问题 3. 标准时钟 标准时钟为频率计测量提供精度相对比较高的时基信号,其时间的稳定性与精度将会直接影响到频率计测量的准确性。 4. LED显示模块 频率计将测量的结果通过6位数码管(LED)来显示。 4 基于Verilog HDL数字频率计程序设计 4.1数字频率计系统模块划分结构 数字频率计中的CPLD/FPGA是频率计的核心,主要实现在一定时间内,对被测信号的脉冲个数进行计算,并且转化为相应的频率值显示在六个数码管上。首先将系统分成七个模块来分别设计仿真。分别有以下七个模块: 经过上述模块化划分后的结构框如图4.1所示 图4.1 模块化划分后的结构 ● 计数模块counter:对包含被测信号频率信息的脉冲进行计数 ● 门控模块gate_control:根据量程,控制技术模块计数。 ● 分频模块fdiv:将标准时钟分频,得到计数以及动态显示所需的时钟。 ● 寄存器模块flip_latch:对计数模块的计数值进行寄存。 ● 多路选择模块data_mux:根据动态选择信号,选择相应的需要显示的计数值 ● 动态为选择模块dispselevt:输出动态显示中的位选信号 ● BCD译码模块dispdenoder:将BCD码译成数码管的显示数据 4.2计数模块counter 该模块主要完成对被测信号经过放大整形后输入到可编程逻辑器件的F_IN信号是现在一定的时间下的计数,采用六个异步BCD码十进制计数器来实现 0~999999范围的计数。 计数模块的结构框图如图4.2.1所示。 图4.2.1 计数模块的结构框图 根据模块实现的功能设计Verilog HDL源代码如下: module counter(EN,CLR,F_IN,F_OUT,Q0,Q1,Q2,Q3,Q4,Q5); output [3:0] Q5,Q4,Q3,Q2,Q1,Q0; output F_OUT; input EN; input CLR; input F_IN; reg [3:0] Q5,Q4,Q3,Q2,Q1,Q0; reg F_OUT; reg F_out0,F_out1,F_out2,F_out3,F_out4; always @(posedge F_IN) begin if((EN == 1'b1)&&(CLR == 1'b0)&&(Q0 != 4'b1001)) begin Q0 <= Q0

文档评论(0)

企管文库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档