数字系统EDA技术 实验4. 数字频率计的设计与实现
实验报告模板:实验四 数字频率计设计

实验四数字频率计设计【实验目的】1.掌握数字频率计的Verilog描述方法;2.学习设计仿真工具的使用方法;3.学习层次化设计方法;【实验内容】1.用4位十进制计数器对用户输入时钟进行计数,计数间隔为1秒,计数满1秒后将计数值(即频率值)锁存到4位寄存器中显示,并将计数器清0,再进行下一次计数。
2.为上述设计建立元件符号【实验原理】根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽位1 秒的输入信号脉冲计数允许信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一次测频计数周期做准备的计数器清零信号。
这3个信号由测频控制信号发生器TESTCTL产生,它的设计要求是,TESTCTL的计数使能信号输出CNT_EN 能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当CNT_EN高电平时,允许计数;当CNT_EN低电平时停止计数,并保持所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各个锁存器REG4B中,并由外部的七段译码器译出,显示计数值。
设置锁存器的好处是,显示数据稳定,不会由于周期性的清零信号而不断闪烁。
信号锁存之后,还必须用清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作做准备。
【程序源代码】(加注释)module CNT10(CLK,RST,EN,COUT,DOUT); //4位计数器input CLK,RST,EN; //时钟,复位,时钟使能output COUT; //计数进位输出output[3:0] DOUT; //计数数据输出[3:0] Q; reg COUT;always @ (posedge CLK or posedge RST)begin //时序部分if(RST) Q=0; //RST=1时,对内部寄存器单元异步清零else if(EN) begin //同步使能EN=1,则允许计数if(Q<9) Q=Q+1; //当Q小于9时,累加计数else Q=0;end //否则一个时钟后清0返回初值endalways @ (Q) //组合电路过程if(Q==4'b1001) COUT=1; //当Q==4'b1001时,输出进位COUT=1else COUT=0; //否则,输出进位为0assign DOUT=Q; //把Q赋值给DOUTendmodulemodule RGB4(DIN,LOAD,DOUT); //4为数据寄存器input LOAD; //加载信号input[3:0] DIN; //外加输入信号output[3:0] DOUT;reg[3:0] DOUT;always @ (posedge LOAD)DOUT=DIN; // LOAD有效则将外加输入信号加载endmodulemodule CNTL(CLK,CNL_EN,RST_CNL,LOAD);//控制部分input CLK; //由CLK信号产生CNL_EN,RST_CNL,LOAD信号output CNL_EN,RST_CNL,LOAD; 时钟使能,时钟复位,数据加载控制信号reg CLKDIV,CNL_EN,LOAD,RST_CNL;always @ (posedge CLK)CLKDIV=~CLKDIV; //在时钟信号在上升沿时,将CLKDIV取反always @ (posedge CLK) beginCNL_EN=CLKDIV; //在时钟信号在上升沿时, 把CLKDIV赋给使能信号CNL_EN LOAD=~CLKDIV;end //在时钟信号在上升沿时, 将CLKDIV取反并赋值给加载信号always @ (CLK) beginif(CLK==1'b0&&CNL_EN==1'b0)RST_CNL=1; //当使能信号与时钟信号均为低电平时,RST_CNL=1 elseRST_CNL=0; end //否则RST_CNL=0endmodulemodule FREG (clk1HZ,uclk,led0,led1,led2,led3,rst,en,load);input clk1HZ, uclk; //时钟信号和待测信号output [3:0]led0,led1,led2,led3; //4个八段数码管output load,rst,en; //复位和加载信号wire in_load,in_rst,in_en,c0,c1,c2;wire [3:0]dout0,dout1,dout2,dout3;assign load=in_load;assign rst=in_rst;assign en=in_en;CNTL u1(.CLK(clk1HZ),.CNL_EN(in_en),.RST_CNL(in_rst),.LOAD(in_load));CNT10 u2 (.CLK(uclk),.EN(in_en),.RST(in_rst),.COUT(c0),.DOUT(dout0));CNT10 u3 (.CLK(c0),.EN(in_en),.RST(in_rst),.COUT(c1),.DOUT(dout1));CNT10 u4 (.CLK(c1),.EN(in_en),.RST(in_rst),.COUT(c2),.DOUT(dout2));CNT10 u5 (.CLK(c2),.EN(in_en),.RST(in_rst),.DOUT(dout3));RGB4 u6 (.DIN(dout0),.LOAD(in_load),.DOUT(led0));RGB4 u7 (.DIN(dout1),.LOAD(in_load),.DOUT(led1));RGB4 u8 (.DIN(dout2),.LOAD(in_load),.DOUT(led2));RGB4 u9 (.DIN(dout3),.LOAD(in_load),.DOUT(led3));LED7 u10 (.IN(led0));LED7 u11 (.IN(led1));LED7 u12 (.IN(led2));LED7 u13 (.IN(led3));endmodule【元件符号与总框图】【仿真和测试结果】功能分析:在波形中,CLK1HZ的频率为1HZ,以CLK1HZ为输入,产生CNL_EN(en),RST_CNL(rst),LOAD(load)的输出波形。
电子科技大学EDA指导书附完整答案讲解

数字系统EDA技术实验指导书学院:学号:姓名:实验一八位全加器的设计一、预习内容1.结合教材中的介绍熟悉QuartusⅡ软件的使用及设计流程;2.八位全加器设计原理。
二、实验目的1.掌握图形设计方法;2.熟悉QuartusⅡ软件的使用及设计流程;3.掌握全加器原理,能进行多位加法器的设计。
三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、用VHDL设计一个四位并行全加器;2、用图形方式构成一个八位全加器的顶层文件;3、完成八位全加器的时序仿真。
五、实验原理与内容1、原理:加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。
因此本实验中的8 位加法器采用两个4位二进制并行加法器级联而成。
2、实现框图:1)四位加法器四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示,其中CSA为一位全加器。
显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。
通过对串行进位加法器研究可得:运算的延迟是由于进位的延迟。
因此,减小进位的延迟对提高运算速度非常有效。
下图是减少了进位延迟的一种实现方法。
可见,将迭代关系去掉,则各位彼此独立,进位传播不复存在。
EDA实训频率计

桂林理工大学高等职业技术学院数字电路EDA设计实训指导课程名称:数字电路EDA设计题目:频率计及PCB学生姓名:陈日荣专业:09通信1学号:5091968104指导老师:韦燕日期:2011-7-5第一部分设计任务书一、题目:应用VHDL设计的频率计以及硬件电路PCB二、内容:设计一个4位十进制频率计,学习复杂数字系统的设计方法。
三、设计要求:测量并显示1HZ-999MHZ的频率。
四、在明确设计任务和要求的前提理解设计指导书的前提下,自己查阅相关资料,进行设计和论证。
第二部分实施计划一、总课时:30节二、时间安排:1、时间:第19、20周(6月27号—7月8号)2、班级:08通信技术班(共36人)应用VHDL设计的频率计以及硬件电路PCB09通信1 陈日荣04号摘要本论文通过对基于EDA技术PCB印制电路板的制作工序,熟悉EDA的制作过程,在电子设计领域,随着计算机技术、大规模集成电路技术、EDA(Electronics Design Automation)技术的发展和可编程逻辑器件的广泛应用,传统的自下而上的数字电路设计方法、工具、器件已远远落后于当今技术的发展。
基于EDA技术和硬件描述语言的自上而下的设计技术正在承担起越来越多的数字系统设计任务。
本文首先综述了EDA技术的发展概况,FPGA开发的流程、优点,VHDL语言的历史、开发步骤及其优点;然后介绍了频率测量的一般原理;接着使用EDA技术,用VHDL语言完成了数字频率计系统的设计工作;最后介绍了EDA技术的前沿发展趋势及系统开发的几点体会。
本课题的数字频率计设计,完全使用一块复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)芯片EP1C3T1148C实现整个电路的测试信号控制、各种时序逻辑控制、计数功能、数码管的显示输出。
在MAX+PLUSII、QUARTUS软件平台上,用VHDL语言编程完成的软件设计、编译、调试、仿真和下载。
数字频率计的设计与实现课程设计

课程设计任务书学生:专业班级:通信指导教师:工作单位:信息工程学院题目: 数字频率计的设计与实现初始条件:本设计既可以使用集成脉冲发生器、计数器、译码器、单稳态触发器、锁存器、放大器、整形电路和必要的门电路等,也可以使用单片机系统构建简易频率计。
用数码管显示频率计数值。
要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)1、课程设计工作量:1周。
2、技术要求:1)设计一个频率计。
要求用4位7段数码管显示待测频率,格式为0000Hz。
2)测量频率围:10~9999Hz。
3)测量信号类型:正弦波、方波和三角波。
4)测量信号幅值:0.5~5V。
5)设计的脉冲信号发生器,以此产生闸门信号,闸门信号宽度为1s。
6)确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。
3、查阅至少5篇参考文献。
按《理工大学课程设计工作规》要求撰写设计报告书。
全文用A4纸打印,图纸应符合绘图规。
时间安排:1、2013年5 月17日,布置课设具体实施计划与课程设计报告格式的要求说明。
2、2013 年 6 月18 日至2013 年6 月22 日,方案选择和电路设计。
3、2013 年6 月22 日至2013 年7 月1 日,电路调试和设计说明书撰写。
4、2013年7月5日,上交课程设计成果及报告,同时进行答辩。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (3)1电路的设计思路与原理 (4)1.1电路设计方案的选择 (4)1.1.1方案一:利用单片机制作频率计 (4)1.1.2方案二:利用锁存器与计数器制作频率计 (5)1.1.3方案三:利用定时电路与计数器制作频率计 (6)1.1.4方案确定 (7)1.2 原理及技术指标 (8)1.3 单元电路设计及参数计算 (9)1.3.1时基电路 (9)1.3.2放大整形电路 (10)1.3.3逻辑控制电路 (11)1.3.4计数器 (13)1.3.5锁存器 (15)1.3.6译码电路 (16)2仿真结果及分析 (16)2.1仿真总图 (16)2.2单个元电路仿真图 (17)2.3测试结果 (20)3测试的数据和理论计算的比较分析 (20)4制作与调试中出现的故障、原因及排除方法 (20)4.1故障a (20)4.2故障b (21)4.3故障c (21)4.4故障d (21)4.5故障e (22)5 心得体会 (22)6参考文献 (23)数字频率计设计摘要数字频率计是一种用十进制数字,显示被测信号频率的数字测量仪器。
EDA课程设计报告,数字频率计

. I目录前言01. 总体设计方案11.1总体设计方案12. 单元模块设计12.1十进制计数器设计12.1.1 十进制计数器原件t10设计12.1.2 位十进制计数器的顶层设计22.2闸门控制模块EDA设计32.2.1 定时信号模块Timer32.2.2 控制信号发生器模块T_con42.3译码显示模块42.3.1 显示存放器设计42.3.2 译码扫描显示电路52.3.3 译码显示模块的顶层电路设计73. 软件测试83.1测试的环境83.2调试和器件编程84. 设计总结85. 参考文献9前言在电子技术高度开展的今天,各种电子产品层出不穷,而频率作为设计的最根本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程的自动化等优点。
数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器,它的根本功能是测量正弦信号、方波信号、尖脉冲信号以及其它各种单位时间变化的物理量。
当今国外厂家生产的数字频率计在功能和性能方面都比拟优良,而且还在不断开展中,但其构造比拟复杂,价位也比拟高,在测量精准度要求比拟低的测量场合,使用这些数字频率计就不够经济合算。
我所设计的这款数字频率计能够可靠实现频率显示功能,原理及构造也比拟简单本次所做的课程设计就是一个数字频率计,能测量1HZ~9999HZ的矩形波信号,并正确地显示所测信号的频率值。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比拟复杂,而且会产生比拟大的延时,造成测量误差、可靠性差。
随着现场可编程门阵列FPGA 的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。
采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在Quartus‖仿真平台上编译、仿真、调试,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量各种常用的波形信号的频率,而且还能对其他多种物理量进展测量。
eda课程设计数字频率计

eda课程设计 数字频率计一、课程目标知识目标:1. 学生能够理解并掌握数字频率计的基本原理,包括频率的概念、测量方法及其在电子工程中的应用。
2. 学生能够运用所学知识,分析并识别EDA(电子设计自动化)软件中与数字频率计相关的元件和模块。
3. 学生能够运用电子元件搭建简单的数字频率计电路,并描述其工作过程。
技能目标:1. 学生能够运用EDA软件进行数字频率计电路的设计、仿真和调试,具备实际操作能力。
2. 学生能够通过小组合作,解决在数字频率计设计过程中遇到的技术问题,提高团队协作和问题解决能力。
情感态度价值观目标:1. 学生能够认识到数字频率计在电子工程领域的重要性和实际应用价值,激发对电子工程的兴趣和热情。
2. 学生在课程学习中,培养严谨的科学态度,注重实验数据的真实性和准确性。
3. 学生通过小组合作,学会尊重他人意见,培养良好的沟通能力和团队精神。
本课程针对高中年级学生,结合电子工程学科特点,强调理论与实践相结合,注重培养学生的动手操作能力和实际应用能力。
课程目标具体、可衡量,旨在帮助学生和教师在课程结束后,能够清晰地了解学生在知识、技能和情感态度价值观方面的预期成果。
同时,将课程目标分解为具体的学习成果,便于后续的教学设计和评估。
二、教学内容本章节教学内容依据课程目标,紧密围绕数字频率计的设计与实现,确保内容的科学性和系统性。
具体教学内容如下:1. 理论知识学习:- 频率概念及其测量方法- 数字频率计的原理与分类- EDA软件的基本操作与使用方法2. 实践操作环节:- 数字频率计电路设计原理- EDA软件中数字频率计电路搭建与仿真- 实际电路搭建与调试3. 教学大纲安排:- 第一课时:介绍频率概念、测量方法及数字频率计的原理与分类,让学生了解课程背景和目标。
- 第二课时:讲解EDA软件的基本操作与使用方法,引导学生学习并掌握软件应用。
- 第三课时:分析数字频率计电路设计原理,指导学生进行电路设计和仿真。
EDA数字频率计实验报告

实验四:数字频率计的设计1.实验目的(1)熟悉Quartus Ⅱ/ISE Suite/ispLEVER软件的基本使用方法。
(2)熟悉GW48-CK或其他EDA实验开发系统的基本使用方法。
(3)学习VHDL基本逻辑电路的综合设计应用。
2.实验内容设计并调试好8位十进制数字频率计,并用GW48-CK或其他EDA实验开发系统(事先应选定拟采用的实验芯片的型号)进行硬件验证。
3.实验要求(1)画出系统的原理图,说明系统中各主要组成部分的功能。
(2)编写各个VHDL源程序。
(3)根据系统的功能,选好测试用例,画出测试输入信号波形或编号测试程序。
(4)根据选用的EDA实验开发装置编好用于硬件验证的管脚锁定表格或文件。
(5)记录系统仿真、逻辑综合及硬件验证结果。
(6)记录实验过程中出现的问题及解决办法。
4.实验条件(1)开发条件:Quartus Ⅱ 8.0。
(2)实验设备:GW48-CK实验开发系统。
(3)拟用芯片:EP3C5F484C8N。
5.实验设计1)系统原理图本设计8位数字频率计,它由1个CLKGEN分频模块,1个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、1个32位锁存器REG32B,动态信号产生模块CTRLS、数据动态显示模块DISPLAY组成。
6个模块按照图4.1所示的原理图构成顶层电路dtFREQ。
图4.1分频、测频、锁存模块图 4.2 dtFREQ电路原理图2)VHDL程序数字频率计FREQ的底层和顶层电路均采用VHDL文本输入,有关VHDL程CNT10的VHDL源程序:--CNT10.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(CLK: IN STD_LOGIC;CLR: IN STD_LOGIC;ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO: OUT STD_LOGIC );END ENTITY CNT10;ARCHITECTURE ART OF CNT10 ISSIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK, CLR, ENA) ISBEGINIF CLR='1' THEN CQI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF ENA='1' THENIF CQI="1001" THENCQI<="0000";ELSECQI<=CQI+'1';END IF;END IF;END IF;END PROCESS;PROCESS(CLK, CQI) ISBEGINIF CLK'EVENT AND CLK='1' THENIF CQI<"1001" THENCO<='0';ELSECO<='1';END IF;END PROCESS;CQ<=CQI;END ARCHITECTURE ART;REG32B的VHDL源程序:--REG32B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B ISPORT(LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END ENTITY REG32B;ARCHITECTURE ART OF REG32B ISBEGINPROCESS(LOAD,DIN) ISBEGINIF(LOAD'EVENT AND LOAD='1')THENDOUT<=DIN;END IF;END PROCESS;END ARCHITECTURE ART;TESTCTL的VHDL源程序:--TESTCTL.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT(CLK: IN STD_LOGIC;TSTEN: OUT STD_LOGIC;CLR_CNT: OUT STD_LOGIC;LOAD: OUT STD_LOGIC);END ENTITY TESTCTL;ARCHITECTURE ART OF TESTCTL ISSIGNAL DIV2CLK: STD_LOGIC;BEGINPROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THENDIV2CLK<=NOT DIV2CLK;END IF;END PROCESS;PROCESS(CLK, DIV2CLK) ISBEGINIF CLK='0' AND DIV2CLK='0' THENCLR_CNT<='1';ELSE CLR_CNT<='0';END IF;END PROCESS;LOAD<=NOT DIV2CLK;TSTEN<=DIV2CLK;END ARCHITECTURE ART;CLKGEN的VHDL源程序:--CLKGEN.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CLKGEN ISPORT(CLK_IN: IN STD_LOGIC;RESET: IN STD_LOGIC;CLK_OUT: OUT STD_LOGIC );END ENTITY CLKGEN;ARCHITECTURE ART OF CLKGEN ISCONSTANT DIVIDE_PERIOD:INTEGER:=50000000; --50MHZ TO 1HZ BEGINPROCESS(CLK_IN,RESET) ISVARIABLE CNT:INTEGER RANGE 0 TO 49999999;BEGINIF(RESET='1')THENCNT :=0;CLK_OUT<='0';ELSIF RISING_EDGE(CLK_IN) THENIF(CNT<(DIVIDE_PERIOD/2)) THENCLK_OUT<='1';CNT:=CNT+1;ELSIF(CNT<(DIVIDE_PERIOD-1)) THENCLK_OUT<='0';CNT:=CNT+1;ELSECNT:=0;END IF;END IF;END PROCESS DIVIDE_CLK;END ARCHITECTURE ART;CTRLS的VHDL源程序--CTRLS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CTRLS ISPORT(CLK: IN STD_LOGIC;SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END ENTITY CTRLS;ARCHITECTURE ART OF CTRLS ISSIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINPROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THENIF CNT="111" THENCNT<="000";ELSECNT<=CNT+'1';END IF;END IF;END PROCESS;SEL<=CNT;END ARCHITECTURE ART;DISPLAY的VHDL源程序--DISPLAY.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY ISPORT( SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0); DATAIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0); COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY DISPLAY;ARCHITECTURE ART OF DISPLAY ISSIGNAL DATA: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINP1:PROCESS(SEL) ISBEGINCASE SEL ISWHEN"000"=>COM<="11111110";WHEN"001"=>COM<="11111101";WHEN"010"=>COM<="11111011";WHEN"011"=>COM<="11110111";WHEN"100"=>COM<="11101111";WHEN"101"=>COM<="11011111";WHEN"110"=>COM<="10111111";WHEN"111"=>COM<="01111111";WHEN OTHERS=>COM<="11111111";END CASE;END PROCESS P1;P2:PROCESS(SEL)BEGINCASE SEL ISWHEN"000"=>DATA<=DATAIN(3 DOWNTO 0); WHEN"001"=>DATA<=DATAIN(7 DOWNTO 4); WHEN"010"=>DATA<=DATAIN(11 DOWNTO 8); WHEN"011"=>DATA<=DATAIN(15 DOWNTO 12); WHEN"100"=>DATA<=DATAIN(19 DOWNTO 16);WHEN"101"=>DATA<=DATAIN(23 DOWNTO 20); WHEN"110"=>DATA<=DATAIN(27 DOWNTO 24); WHEN"111"=>DATA<=DATAIN(31 DOWNTO 28); WHEN OTHERS=>DATA<="0000";END CASE;CASE DATA ISWHEN"0000"=>SEG<="00111111";WHEN"0001"=>SEG<="00000110";WHEN"0010"=>SEG<="01011011";WHEN"0011"=>SEG<="01001111";WHEN"0100"=>SEG<="01100110";WHEN"0101"=>SEG<="01101101";WHEN"0110"=>SEG<="01111101";WHEN"0111"=>SEG<="00000111";WHEN"1000"=>SEG<="01111111";WHEN"1001"=>SEG<="01101111";WHEN OTHERS=>SEG<="00000000";END CASE;END PROCESS P2;END ARCHITECTURE ART;dtFREQ的VHDL源程序:--dtFREQ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dtFREQ ISPORT(FSIN: IN STD_LOGIC;CLK: IN STD_LOGIC;CLK2:IN STD_LOGIC;RESET: IN STD_LOGIC;SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY dtFREQ;ARCHITECTURE ART OF dtFREQ IS--CNT10COMPONENT CNT10 ISPORT(CLK, CLR, ENA: IN STD_LOGIC;CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO: OUT STD_LOGIC);END COMPONENT CNT10;--REG32BCOMPONENT REG32B ISPORT(LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT REG32B;--TESTCTLCOMPONENT TESTCTL ISPORT(CLK: IN STD_LOGIC;TSTEN: OUT STD_LOGIC;CLR_CNT: OUT STD_LOGIC;LOAD: OUT STD_LOGIC);END COMPONENT TESTCTL;--CLKGENCOMPONENT CLKGEN ISPORT(CLK_IN: IN STD_LOGIC;RESET: IN STD_LOGIC;CLK_OUT: OUT STD_LOGIC );END COMPONENT CLKGEN;--CTRLSCOMPONENT CTRLS ISPORT(CLK: IN STD_LOGIC;SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT CTRLS;--DISPLAYCOMPONENT DISPLAY ISPORT(SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0);DATAIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0); COM:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT DISPLAY;SIGNAL SE,SC,SL,CLK1:STD_LOGIC;SIGNAL S0,S1,S2,S3,S4,S5,S6,S7,S8:STD_LOGIC;SIGNAL SD,DOUT:STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL SEL:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINU0:CLKGEN PORT MAP(CLK,RESET,CLK1);U1:TESTCTL PORT MAP(CLK=>CLK1,TSTEN=>SE, CLR_CNT=>SC, LOAD=>SL); U2:CNT10 PORT MAP(CLK=>FSIN, CLR=>SC, ENA=>SE, CQ=>SD(3 DOWNTO 0),CO=>S1);U3:CNT10 PORT MAP(CLK=>S1, CLR=>SC, ENA=>SE, CQ=>SD(7 DOWNTO 4),CO=>S2);U4:CNT10 PORT MAP(S2, SC, SE, SD(11 DOWNTO 8),S3);U5:CNT10 PORT MAP(S3, SC, SE, SD(15 DOWNTO 12),S4);U6:CNT10 PORT MAP(S4, SC, SE, SD(19 DOWNTO 16),S5);U7:CNT10 PORT MAP(S5, SC, SE, SD(23 DOWNTO 20),S6);U8:CNT10 PORT MAP(S6, SC, SE, SD(27 DOWNTO 24),S7);U9:CNT10 PORT MAP(S7, SC, SE, SD(31 DOWNTO 28),S8);U10:REG32B PORT MAP(LOAD=>SL, DIN=>SD, DOUT=>DOUT);U11:CTRLS PORT MAP(CLK2,SEL);U12:DISPLAY PORT MAP(SEL,DOUT,COM(7 DOWNTO 0),SEG(7 DOWNTO 0));END ARCHITECTURE ART;3)仿真波形设置本设计包括三个层次,因此先进行底层的测频信号发生器TESTCTL、计数器CNT10、锁存器REG32B,分频器CLKGEN,动态信号产生模块CTRLS,数据动态显示模块DISPLAY的仿真,再进行顶层dtFREQ的仿真。
数字频率计的设计与实现

目录1. 引言 (1)2.设计任务书 (2)3. 数字频率计基本原理 (3)3.1 设计思路 (3)3.2 原理框图 (3)4. 设计步骤及实现方法 (4)4.1 信号拾取与整形 (4)4.2 计数电路 (5)4.3锁存电路 (6)4.4 译码显示电路 (7)4.5 时钟电路及波形设计 (9)5 总体电路图及工作原理 (13)6 元器件的检测与电路调试缺点分析 (14)7 心得体会 (15)参考文献 (16)1. 引言数字频率计是一种基础测量仪器,在许多情况下,要对信号的频率进行测量,利用示波器可以粗略测量被测信号的频率,精确测量则要用到数字频率计。
本设计项目可以进一步加深我们对数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计与调试的方法和步骤。
2.设计任务书1、设计题目:数字频率计2、设计出一个数字频率计,其技术指标如下:( 1 )频率测量范围: 10 ~ 9999Hz 。
( 2 )输入电压幅度 >300mV 。
( 3 )输入信号波形:任意周期信号。
( 4 )显示方式:4位十进制数显示。
( 5 )电源: 220V 、 50Hz 。
3、给定仪器设备及元器件示波器、音频信号发生器、逻辑笔、万用表、数字集成电路测试仪、直流稳压电源。
4.电路原理要求简单,便于制作调试,元件成本低廉易购。
3. 数字频率计基本原理3.1 设计思路(1)利用光电开关管做电机转速的信号拾取元件,在电机的转轴上安装一圆盘,在圆盘上挖一小洞,小洞上下分别对应着光发射和光接受开关,圆盘转动一圈既光电管导通一次,利用此信号做为脉冲计数所需。
(2)计数脉冲通过计数电路进行有效的计数,按照设计要求每一秒种都必须对计数器清零一次,因为电路实行秒更新,所以计数器到译码电路之间有锁存电路,在计数器进行计数的过程中对上一次的数据进行锁存显示,这样做不仅解决了数码显示的逻辑混乱,而且避免了数码显示的闪烁问题。
(3)对于脉冲记数,有测周和测频的方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学
数字系统E D A技术实验报告实验四:数字频率计的设计与实现
姓名:
学号:
专业:电子信息工程
实验时间:2013年11月11日
指导教师:
一、实验名称:数字频率计的设计与实现
二、实验目的:
1. 学会数字频率计的设计方法
2. 掌握自顶向下的设计方法,体会其优越性
三、具体要求:
1. 用VHDL完成 8位数字频率计的设计
2. 频率测量范围:0 ~ 99999999 Hz
3. 基准频率20 MHz、10MHz、5MHz可选,具有清零复位功能
4. 用实验系统箱实现该频率计,频率测量结果用八位数码管稳定显示
5. 对频率计的测量精度进行分析,完成实验总结报告,并提出改进设计方案
四、实验原理:
1. 数字频率计:
采用数字电路制做成的能对周期性变化信号的频率进行测量的仪器。
频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。
其扩展功能可以测量信号的周期和脉冲宽度。
通常说的数字频率计是指电子计数式频率计。
2. 基本原理:
若某一信号在T秒时间里重复变化了N 次,则根据频率的定义可知该信号的频率:N/T (通常测量时间T取1秒或它的十进制时间)。
在本次设计中,通过设计电路产生正脉宽为1s的时钟信号,并设法控制计数器在这1s内对待测输入信号进行计数,然后将该计数数值在七段数码管上显示出来,该显示值即为数字频率计的测量值。
3. 电路组成结构:
对设计的功能需求进行分析后,确定整个数字频率计由以下六个基本部分组成:•1Hz时钟信号发生电路
•测频控制信号发生器
•8位串行级联计数器电路
•32位锁存器
•扫描显示电路
•七段译码器
下面分别对各个部分的功能和设计思路进行说明:
(1)1Hz时钟信号发生电路
由于实验箱上可选时钟信号频率范围有限,要生成1Hz的时钟信号,需要自
己设计一个分频器件;由于后续设计只是利用到这个1Hz信号的上升沿作为
触发信号进行二倍频设计,故占空比可为任意值,只要周期为1s即可。
这
里设输入信号为5MHz,则应当对输入脉冲进行计数,计数值达到4999999
时产生一个输出脉冲。
(2)测频控制信号发生器
频率测量的基本原理是计算每秒钟内待测信号的脉冲个数,这就要求测频控制信号发生器(TESTCTL)的计数使能信号(CEN)能产生一个1秒脉宽的周期信号,并对该频率计的8个计数器(Counter10)的使能端和清零端进行同步控制。
将前面的1Hz时钟信号发生器产生的1Hz信号作为TESTCTL的时钟信号输入,并进行二分频(每遇上升沿翻转输出即构成二分频),可得到正脉宽为1秒的周期信号。
当计数使能信号CEN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。
这就要求在停止计数期间,首先需要测频控制信号发生器产生一个锁存信号(LOAD),它的上升沿将计数器在前一秒内的计数值锁存进32位寄存器中,寄存器输出到七段译码器,最后由数码管稳定显示。
(3)8位串行级联计数器电路
如果直接设计一个独立的计数范围为0~99999999的计数器,要得到十进制数字每一位上的数值需进行大量的计算,将耗费较多的硬件资源,且实现起来比较困难,故首先设计一位带有进位输出的十进制计数器,将8个这样的计数器串行级联起来,并将每一位的当前计数值并行输出。
(4)32位锁存器
每个1s计数时段结束后需要将计数器中的数值进行清零,为下一次计数做好准备,否则计数的数值将是两次计数的叠加,或者产生溢出。
设置锁存器的好处是,显示的数据稳定,数码管不会由于周期性的清零信号而不断闪烁。
(5)扫描显示电路
对输入时钟信号进行循环计数,并产生相应的位选输出信号,该3位位选输出信号经过实验箱内置的译码器进行3-8译码,控制8位数码管依次点亮。
同时扫描电路有4*8=32位输入,分别代表8位计数器的计数值,3位位选输出000~111对应选择8个输入中的一位作为计数输出,使得每一路输入对应各自数位的数码管。
当扫描频率足够高时,从视觉效果上显示结果是稳定的,这样既节约硬件资源,又省去了连线的麻烦。
在实验三中已经对扫描显示电路进行了设计,实验三采用了3位计数器,而本次实验采用了8位,将之前的VHDL文件稍作修改即可。
(6)七段译码器
将8421BCD码转化为能够在数码管上显示的编码。
五、实验内容:
1. 设计过程:
(1)整理设计思路,画出原理方框图(略,见后面的Block Diagram截图);
(2)新建工程,导入实验三中的可用VHDL文件(计数器Counter10和七段译码器SevenSegDecoder)并生成相应的Symbol
(3)分别设计其余的各个元件(VHDL源程序):
①修改后的扫描显示电路:
②1Hz时钟信号发生电路:
③测频控制信号发生器的VHDL源程序:
④32位锁存器的源程序:
(3)进行元件例化(这里仍然采用原理图的方式);
2. 实验结果:
下载程序到实验箱,查看数码管显示的频率是否和待测的频率相同,验证所设计的数字频率计的性能
六、结果分析:
1. 更换不同时钟信号作为待测输入,测试结果全部无误,频率计设计满足要求。
2. 时钟信号刚刚接入时显示的数值可能比预计结果小很多,这是因为接入的时间
点恰好处于测频控制信号1s正脉宽的中间某个位置A,所以从这一时刻开始计数到该1s正脉宽结束,计数值明显小于预计值。
待下一个完整周期B~C结束后,计数重新刷新一次,显示正确的测量值。
(如下图)
七、实验总结:
1. 本次实验实际上是前三次实验的综合,之前已设计好的十进制计数器、七段译
码器、扫描显示电路都在此次实验中得到应用,并在此基础上补充了新的功能电路模块:1Hz时钟信号发生电路、测频控制信号发生器以及32位锁存器。
将它们进行恰当的连接、组合,并下载程序到FPGA芯片中,即可得到完整的数字系统,实现预先构想的电路功能。
通过本次实验我对整个数字频率计的设计流程有了比较熟练的掌握,并由此理解了“自上而下”的设计思路。
2. 整个设计过程经过一系列修改、调试,最终结果基本符合预期,但仍然存在值
得改进之处:
(1)计数器采用串行级联的方式,将导致每个计数器单元上的延迟在整个计数进位链上进行累加,加大了延迟造成的误差,从而限制测频上限范围。
当待测频率很高时,按照串行级联进位的设计方式将不能满足要求。
改为同步并行计数器设计,能够提升数字频率计的性能,提高测量精度并扩大测频范围。
(2)测频刷新周期过长,不能满足对动态性要求较高的测试。
每当频率发生变化,要等到下一个2s测频刷新周期才能得到当前的频率,且有可能在测试期间频率又发生了变化。
可以考虑缩短测频时间,将1s改为更小的数值,并利用f=N/T 将计数结果作乘法,也能得到正确的测量值显示。