基干FPGA数字频率计设计与实现.doc
文本预览下载声明
基于FPGA的数字频率计的设计与实现 摘 要 介绍基于FPGA的数字频率计的开发过程、总体设计方案和各模块的设计实现。借助于EDA平台设计的数字频率计,具有高速、精确、可靠、抗干扰性强和现场可编程等优点
关键词 EDA技术;可编程逻辑器件;数字频率计
中图分类号:G642.0 文献标识码:B
文章编号:1671-489X(2016)16-0031-02
数字频率计是计算机、通信设备、音频视频等科研生产领域不可缺少的测量仪器,以EDA工具作为开发手段。基于FPGA所设计的数字频率计,具有高速、精确、可靠、抗干扰性强和现场可编程等优点。在设计中,所有频段均采用直接测频法对信号频率进行测量,克服了逼近式换档速度慢的缺点;在换档设计方面,突破了以往改变闸门时间的方法,采用门控信号和被测信号对计数器的使能端进行双重控制,使自动换档的实现更加简单可靠,提高了测量的精确度;在运算单元采用高速串行BCD码除法,不仅提高了运算速度,而且减小了资源消耗
1 设计要求
设计一种基于FPGA的数字频率计,要求:数字频率计分为0~9.999 Hz、10.00~99.99 Hz、100.0~999.9 kHz
和1000~9999 kHz四档,且能够实现自动换档的功能
2 总体设计方案
数字频率计总体框图如图1所示。数字频率计由分频器、计数器、锁存器和译码器等模块构成,系统有3个输入信号,即两个时钟信号CLK、SIG和一个清除信号CLR。系统有5个输出信号,即报警信号ALM、显示信号Q、数码管片选信号L、位控位A和位控位B
分频器模块通过对时钟信号CLK进行分频,为计数器模块提供1 s的闸门时间test-en。当test-en为高电平时,闸门被打开,被测信号的脉冲通过闸门进入计数器进行计数;当test-en下降沿到来时,产生一个锁存信号,将计数值保存起来,由八段译码器译码并在数码管显示计数结果。锁存数据后,在下次test-en上升沿到来之前产生清零信号,将计数器清零,为下次计数做准备
3 设计实现
采用模块化的设计思想,依据系统设计要求自上至下地细化设计。顶层设计完成后,采用硬件描述语言对各模块进行编程,在MAX+PLUSⅡ环境下进行编译、功能仿真,创建各模块的器件符号,待建立整体系统顶层文件时调用
分频器模块 分频器模块(FEN)通过对4 MHz时钟信号进行分频得到0.5 Hz时钟,为计数器模块(CORNA)提供1 s的闸门时间。根据给定的分频值,分频器模块对4 MHz频率进行1/2n的分频,每来一个时钟,中间值cnt状态改变一次;经过n个cnt触发处理后,就可以得到1/2n的分频信号
数码管片选信号产生模块 数码管片选信号产生模块(SEL)把时钟信号转换成片选信号提供给输出模块。片选信号低电平时,表示其对应的数码管可以进行显示操作,数据信号输出数码管显示所需的数据,即“000”“001”“010”“011”“100”“101”“110”和“111”
计数器模块 计数器模块(CORNA)通过对待测信号在基准时间内进行计数测量待测信号的频率,完成对输入时钟信号的计数。由分频器提供的使能信号DOOR为高电平时,允许计数;DOOR为低电平时,停止计数,并保持所计的数。当中间值c6不为零时,选择4档;当中间值c5不为零时,选择3档;当中间值c4不为零时,选择2档;否则选择1档,计数选档结束后,将5个输出信号传给锁存器
锁存器模块 锁存器模块(LOCK)在分频器模块输出信号DOOR的下降沿到来时,将计数器的数值Q3、Q2、Q1、Q0、DANG锁存
数据输出模块 数据输出模块(CH)对应于数码管片选信号,将相应的数据送出,其中档位也通过数码管显示。数据输出模块根据锁存器和数码管片选信号的输出信号,实现数码管的实时显示
八段译码驱动模块 八段译码驱动模块(DISP)将输入的BCD码转换为LED数码管需要的数据,八段译码驱动模块的仿真波形如图2所示
D是八段译码驱动模块的输入信号,由数据输出模块输出信号d赋予;Q是八段译码驱动模块的输出信号,对应于数码管的8个显示段。当d为“0000”时,q为3F;当d为
“0001”时,q为06;当d为“0010”时,q为5B;当d为
“0011”时,q为4F;当d为“0100”时,q为66;当d为
“0101”时,q为6D;当d为“0110”时,q为7D;当d为
“0111”时,q为27;当d为“1000”时,q为7F;当d为
“1001”时,q为6F
各模块连接 各模块总体连接图如图3所示。CLK输入至分频器,SIG、CLR输入至计数器,输出报警信号ALM来自计数器,Q是八段译码器连接显示器的输出,L是
显示全部