数字系统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)对于脉冲记数,有测周和测频的方式。
eda数字频率计课程设计

eda数字频率计课程设计一、课程目标知识目标:1. 让学生理解数字频率计的基本原理,掌握EDA工具的使用方法;2. 使学生掌握数字频率计的电路设计,包括计数器、时钟分频器等关键部分;3. 让学生掌握数字频率计的仿真与调试方法,了解其在实际应用中的限制和改进措施。
技能目标:1. 培养学生运用EDA工具进行数字电路设计和仿真的能力;2. 培养学生独立分析问题、解决问题的能力,能够根据实际需求调整和优化数字频率计的设计;3. 培养学生团队合作意识,提高沟通与协作能力。
情感态度价值观目标:1. 激发学生对电子设计的兴趣,培养创新意识和探索精神;2. 培养学生严谨的科学态度,注重实验数据的真实性,遵循实验操作规范;3. 引导学生关注我国电子产业的发展,增强民族自豪感和使命感。
课程性质:本课程为实践性较强的电子设计课程,旨在通过数字频率计的设计与实现,让学生掌握电子设计的基本方法和技能。
学生特点:学生已具备一定的电子基础知识,具有较强的学习能力和动手能力,但对EDA工具的使用和数字电路设计尚较陌生。
教学要求:教师需结合学生特点,注重理论与实践相结合,引导学生主动参与课堂讨论和实践活动,培养其独立思考和解决问题的能力。
通过课程学习,使学生能够达到预定的学习成果,为后续相关课程的学习打下坚实基础。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 数字频率计原理介绍:使学生了解数字频率计的工作原理,掌握频率测量的基本方法。
- 相关教材章节:第五章“数字频率计”- 内容列举:频率计的基本原理、计数器原理、时钟分频器原理等。
2. EDA工具使用:培养学生运用EDA工具进行电路设计与仿真的能力。
- 相关教材章节:第三章“EDA工具的使用”- 内容列举:EDA工具的基本操作、原理图绘制、电路仿真等。
3. 数字频率计电路设计:使学生掌握数字频率计的电路设计方法,包括计数器、时钟分频器等关键部分。
- 相关教材章节:第四章“数字电路设计”- 内容列举:计数器设计、时钟分频器设计、数字频率计整体电路设计等。
EDA报告(数字频率计)

第 5页
西华大学课程设计说明书 说明书
率。 方案二:等精度频率计。此种方案能够保证计数器的工作时间恰好等于被测信号的
完整周期数,这保证了信号在任何频率条件下都能保持恒定精度。系统对信号进行计数 后还需要运用单片机进行处理,才能得到其频率。本方案原理较第一方案要复杂一些, 但是精度得到了保证。但系统的核心只有一部分能用 VERILOG 描述处来,数据的处理还 得靠单片机来执行,所以系统整体电路较为复杂。做成实物之后的成本也会大幅上升。
input clkdiv2;
output tsten,clr_cnt,load;
reg clr_cnt;
wire tsten,load;
reg div2clk;
always@(posedge clkdiv2)
div2clk<=~div2clk;
always@(clkdiv2 or div2clk)
begin
DOUTH[3..0] 最高位输出的 BCD 码。 逻辑功能:当 LOAD 信号上跳时,将输入的 8 位 BCD 码送到输出端,由于接收的是 8 个计数器的输出信号,因此输入信号是 8 个 4 位而不是 1 个 32 位。输出信号中低 7 位 不需要译码,最高位又需要译码,所以采用两个信号分开输出。 2、Verilog 源代码 modulereg2(load,din0,din1,din2,din3,din4,din5,dout0,dout1,dout2,dout3,d out4,dout5); input load; input[3:0]din0,din1,din2,din3,din4,din5; output[3:0] dout0,dout1,dout2,dout3,dout4,dout5; reg[3:0]dout0,dout1,dout2,dout3,dout4,dout5;
eda课程设计数字频率计的设计

VHDL与数字系统设计设计说明书数字频率计的设计起止日期:2010年12 月14 日至2010年12 月26 日学生姓名班级学号成绩指导教师(签字)计算机与通信学院2010 年12 月26 日附件:附件1、设计图形元件原理图:附件2、程序源代码:1、频率产生器:library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity lpm_counter0 isport(clock: in std_logic ;q: out std_logic_vector (26 downto 0));end lpm_counter0;architecture syn of lpm_counter0 issignal sub_wire0 : std_logic_vector (26 downto 0);component lpm_countergeneric (lpm_direction : string;lpm_port_updown : string;lpm_type : string;lpm_width : natural);port(clock : in std_logic ;q : out std_logic_vector (26 downto 0));end component;beginq <= sub_wire0(26 downto 0);lpm_counter_component : lpm_countergeneric map (lpm_direction => "up",lpm_port_updown => "port_unused",lpm_type => "lpm_counter",lpm_width => 27)port map (clock => clock,q => sub_wire0);end syn;2、测频控制信号发生器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl isport(clk:in std_logic;--1Hz信号tsten:out std_logic;--计数器使能信号clr_cnt:out std_logic;--计数器清零信号load:out std_logic);--锁存器输出控制信号end testpl;architecture art of testpl issignal div2clk:std_logic;beginprocess(clk)beginif clk'event and clk='1'thendiv2clk<=not div2clk; --div2clk为2Hzend if ;end process;process (clk ,div2clk)beginif( clk='0'and div2clk='0')thenclr_cnt<='1'; --当div2clk与clk同时为零时计数器清零 else clr_cnt<='0'; --当div2clk处于的高电平时计数器计数end if;end process;load<=not div2clk; --锁存器输出与计数器使能信号反相tsten<=div2clk;end art;3、有时钟使能的十进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,clr,en: in std_logic;--clk:计数器时钟,clr:清零信号,en:计数使能信号q: out std_logic_vector(3 downto 0);--q:4位计数结果输出 c10: out std_logic);--计数进位end cnt10;architecture art of cnt10 issignal cqi: std_logic_vector(3 downto 0);beginprocess (clk,clr)beginif clr='1' then cqi<="0000";--当输入的clr_cnt为低电平0时清零elsif clk'event and clk='1' thenif en='1' then--当输入的tesen为高电平1时允许计数if (cqi<9) then cqi<=cqi+1;else cqi<="0000"; --等于9则计数器清零end if;--当输入的tesen为低电平0时禁止计数,锁定计数值end if;end if;end process;--产生进位process(cqi)beginif cqi="1001" then c10<='1'; --当加的9时产生进位输出 else c10<='0';end if;end process;q<=cqi;end art;4、16位锁存器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b isport (load: in std_logic;--输出锁存控制信号din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end reg16b;architecture art of reg16b isbeginprocess(load,din)beginif load'event and load='1'then--load为高电平时teten为低电平,计数器禁止dout<=din; --锁存输入的数据end if;end process;end art;5、数码管控制器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcom isport(clk:in std_logic; --数码管扫描频率datain: in std_logic_vector(15 downto 0);--锁存器输入的16位信号 dataout: out std_logic_vector(3 downto 0);-输出至译码器的4位信号 com: out std_logic_vector(3 downto 0));--输出数码管选择信号end ledcom;architecture art of ledcom issignal comclk: std_logic_vector(1 downto 0);begin--comclk同扫描频率clk循环变化process(clk)beginif rising_edge(clk) thenif comclk>=3 thencomclk <="00";else comclk<=comclk+1;end if;end if;end process;--数码管选择process(comclk)begincase comclk iswhen "00" => com<="1000";when "01" => com<="0100";when "10" => com<="0010";when "11" => com<="0001";when others =>NULL;end case;end process;--对应数码管的输出process(comclk,datain)begincase comclk iswhen "11"=> dataout<=datain(3 downto 0);when "10"=> dataout<=datain(7 downto 4);when "01"=> dataout<=datain(11 downto 8);when "00"=> dataout<=datain(15 downto 12);when others =>NULL;end case;end process;end art;6、七段数码管的译码器library IEEE;use IEEE.std_logic_1164.all;entity ymq isport(d_in: in std_logic_vector(3 downto 0);--数码管控制器输入四位信号d_out: out std_logic_vector(7 downto 0)); --输出8位信号end ymq;--第8位d_out[7]为逗号architecture art of ymq isbeginprocess(d_in)begincase d_in is --第8位为1高电平逗号不显示when "0000" => d_out<="11000000"; --0when "0001" => d_out<="11111001"; --1when "0010" => d_out<="10100100"; --2when "0011" => d_out<="10110000"; --3when "0100" => d_out<="10011001"; --4when "0101" => d_out<="10010010"; --5when "0110" => d_out<="10000010"; --6when "0111" => d_out<="11111000"; --7when "1000" => d_out<="10000000"; --8when "1001" => d_out<="10010000"; --9when others =>NULL;end case;end process;end art;7、元件声明及例化将各个元器件依据设计相连library ieee;use ieee.std_logic_1164.all;entity lx isport(clk: in std_logic;led: out std_logic_vector(7 downto 0);ledc: out std_logic_vector(3 downto 0));end lx;architecture art of lx iscomponent lpm_counter0 --待调用的频率生成器端口定义PORT(clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (26 DOWNTO 0) );end component;--十进制计数器component cnt10 --待调用的有时钟使能的十进制计数器端口定义port(clk,clr,en: in std_logic;q: out std_logic_vector(3 downto 0);c10: out std_logic);end component;--16位锁存器component reg16b --待调用的32位锁存器端口定义port (load: in std_logic;din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end component;--测频控制器component testpl --待调用的测频控制信号发生器端口定义 port(clk:in std_logic;tsten:out std_logic;clr_cnt:out std_logic;load:out std_logic);end component;--数码管选择器component ledcom --待调用的数码管选择器端口定义port(clk:in std_logic;datain: in std_logic_vector(15 downto 0);dataout: out std_logic_vector(3 downto 0);com: out std_logic_vector(3 downto 0));end component;--译码器component ymq --待调用的译码器端口定义port(d_in: in std_logic_vector(3 downto 0);d_out: out std_logic_vector(7 downto 0));end component;signal clk1,clk2,clk3: std_logic;--clk1为1Hz信号,clk2为被测信号,clk3为数码管扫描信号signal tsten,clr,load: std_logic;signal c1,c2,c3,c4: std_logic;signal qout,rout: std_logic_vector(15 downto 0);signal datao: std_logic_vector(3 downto 0);beginu0:testpl port map(clk1,tsten,clr,load);u1:cnt10 port map(clk2,clr,tsten,qout(3 downto 0),c1);u2:cnt10 port map(c1,clr,tsten,qout(7 downto 4),c2);u3:cnt10 port map(c2,clr,tsten,qout(11 downto 8),c3);u4:cnt10 port map(c3,clr,tsten,qout(15 downto 12),c4);u5:reg16b port map(load,qout(15 downto 0),rout);u6:ledcom port map(clk3,rout,datao,ledc);u8:ymq port map(datao,led);u9:lpm_counter0 port map(clk,q(25)=>clk1,q(15)=>clk2,q(17)=>clk3); end art;。
eda频率计课程设计

eda频率计课程设计一、课程目标知识目标:1. 学生能够理解EDA(电子设计自动化)的基本概念,掌握频率计的设计原理。
2. 学生能够运用所学知识,分析并设计简单的频率计电路。
3. 学生能够了解频率计在实际应用中的重要性,如信号处理、通信等领域。
技能目标:1. 学生能够运用EDA工具进行电路设计和仿真,提高实际操作能力。
2. 学生能够通过小组合作,解决设计过程中遇到的问题,培养团队协作能力。
3. 学生能够运用所学知识,对频率计电路进行调试和优化,提高问题解决能力。
情感态度价值观目标:1. 学生对EDA技术和电子设计产生兴趣,培养科学探究精神。
2. 学生在学习过程中,养成积极思考、主动探究的良好学习习惯。
3. 学生通过课程学习,认识到科技创新对国家和社会发展的意义,增强社会责任感。
课程性质分析:本课程为电子技术相关课程,旨在让学生掌握EDA技术及其在频率计设计中的应用。
课程内容紧密结合实际,注重培养学生的动手能力和创新能力。
学生特点分析:学生为高中年级,已具备一定的电子技术基础,对新技术和新知识充满好奇,具备较强的学习能力和探究精神。
教学要求:1. 结合教材内容,注重理论与实践相结合,提高学生的实际操作能力。
2. 鼓励学生积极参与课堂讨论,培养学生的思考能力和表达能力。
3. 以项目为导向,注重过程评价,关注学生的学习成果和情感态度价值观的培养。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. EDA基本概念与工具使用- EDA技术的定义、作用及其发展- 常用EDA工具软件的介绍与安装- EDA工具的基本操作与使用方法2. 频率计设计原理- 频率计的基本工作原理- 常见频率计电路拓扑结构分析- 频率计的关键参数及其影响3. 频率计电路设计与仿真- 电路设计流程与方法- 使用EDA工具进行频率计电路设计- 电路仿真与分析4. 频率计电路制作与调试- 电路板设计规范与制作- 元器件选型与焊接- 电路调试与优化5. 频率计在实际应用中的案例分析- 频率计在信号处理、通信等领域的应用- 案例分析与讨论教学大纲安排:第一课时:介绍EDA基本概念与工具使用第二课时:讲解频率计设计原理第三课时:进行频率计电路设计与仿真第四课时:制作与调试频率计电路第五课时:分析频率计在实际应用中的案例教学内容与教材关联:本教学内容紧密结合教材中关于EDA技术、电子测量、电路设计与仿真等章节,确保内容的科学性和系统性。
EDA课程设计——数字频率计的设计

《电子设计自动化(EDA)技术》课程设计报告书题目: 数字频率计的VHDL设计姓名:院系:专业:学号:指导教师:完成时间: 年月日课程设计题目、内容、要求目录1 课程设计题目、内容与要求……………………………………1.1 设计内容……………………………………………………1.2 具体要求……………………………………………………2 系统设计…………………………………………………………2.1 设计思路……………………………………………………2.2 系统原理与设计说明3 系统实现…………………………………………………………4 系统仿真…………………………………………………………5 硬件验证(操作)说明…………………………………………6 总结……………………………………………………………7 参考书目………………………………………………………1 课程设计题目、内容与要求1.1课程设计的题目:数字频率计设计1.2课程设计内容:(1)设计一个能测量方波信号的频率计;(2)测量范围是0-999999Hz;(3)结果用十进制数显示。
2 系统设计2.1设计思路:2.1.1 数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器.它的基本功能是测量方波信号及其他各种单位时间内变化的物理量。
本数字频率计采用自顶向下的设计思想,通过闸门提供的1s闸门时间对被测信号进行计数及测出的被测信号的频率,测出的频率再通过译码器译码后输出给显示器显示。
根据系统设计的要求,数字频率计的电路原理框图如下:2.2 系统原理与设计说明系统各个模块的功能如下:2.2.1标准时钟发生电路模块借用实验板上标准时钟发生电路,为计数闸门控制电路提供一个标准8Hz信号。
2.2.2 计数器闸门控制电路模块计数器闸门控制电路就是产生三个控制信号,即计数器复位信号、4位十进制计数器允许计数信号、锁存信号。
2.2.3锁存电路模块锁存电路就是为了让LED数码管在信号来临之前保持计数值不变。
eda课程设计数字频率计的设计[1]
![eda课程设计数字频率计的设计[1]](https://img.taocdn.com/s3/m/d98a057ba26925c52cc5bf39.png)
VHDL与数字系统设计设计说明书数字频率计的设计起止日期:2010年12 月14 日至2010年12 月26 日学生姓名班级学号成绩指导教师(签字)计算机与通信学院2010 年12 月26 日附件:附件1、设计图形元件原理图:附件2、程序源代码:1、频率产生器:library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity lpm_counter0 isport(clock: in std_logic ;q: out std_logic_vector (26 downto 0));end lpm_counter0;architecture syn of lpm_counter0 issignal sub_wire0 : std_logic_vector (26 downto 0);component lpm_countergeneric (lpm_direction : string;lpm_port_updown : string;lpm_type : string;lpm_width : natural);port(clock : in std_logic ;q : out std_logic_vector (26 downto 0));end component;beginq <= sub_wire0(26 downto 0);lpm_counter_component : lpm_countergeneric map (lpm_direction => "up",lpm_port_updown => "port_unused",lpm_type => "lpm_counter",lpm_width => 27)port map (clock => clock,q => sub_wire0);end syn;2、测频控制信号发生器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl isport(clk:in std_logic;--1Hz信号tsten:out std_logic;--计数器使能信号clr_cnt:out std_logic;--计数器清零信号load:out std_logic);--锁存器输出控制信号end testpl;architecture art of testpl issignal div2clk:std_logic;beginprocess(clk)beginif clk'event and clk='1'thendiv2clk<=not div2clk; --div2clk为2Hzend if ;end process;process (clk ,div2clk)beginif( clk='0'and div2clk='0')thenclr_cnt<='1'; --当div2clk与clk同时为零时计数器清零 else clr_cnt<='0'; --当div2clk处于的高电平时计数器计数end if;end process;load<=not div2clk; --锁存器输出与计数器使能信号反相tsten<=div2clk;end art;3、有时钟使能的十进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,clr,en: in std_logic;--clk:计数器时钟,clr:清零信号,en:计数使能信号q: out std_logic_vector(3 downto 0);--q:4位计数结果输出 c10: out std_logic);--计数进位end cnt10;architecture art of cnt10 issignal cqi: std_logic_vector(3 downto 0);beginprocess (clk,clr)beginif clr='1' then cqi<="0000";--当输入的clr_cnt为低电平0时清零elsif clk'event and clk='1' thenif en='1' then--当输入的tesen为高电平1时允许计数if (cqi<9) then cqi<=cqi+1;else cqi<="0000"; --等于9则计数器清零end if;--当输入的tesen为低电平0时禁止计数,锁定计数值end if;end if;end process;--产生进位process(cqi)beginif cqi="1001" then c10<='1'; --当加的9时产生进位输出 else c10<='0';end if;end process;q<=cqi;end art;4、16位锁存器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b isport (load: in std_logic;--输出锁存控制信号din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end reg16b;architecture art of reg16b isbeginprocess(load,din)beginif load'event and load='1'then--load为高电平时teten为低电平,计数器禁止dout<=din; --锁存输入的数据end if;end process;end art;5、数码管控制器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcom isport(clk:in std_logic; --数码管扫描频率datain: in std_logic_vector(15 downto 0);--锁存器输入的16位信号 dataout: out std_logic_vector(3 downto 0);-输出至译码器的4位信号 com: out std_logic_vector(3 downto 0));--输出数码管选择信号end ledcom;architecture art of ledcom issignal comclk: std_logic_vector(1 downto 0);begin--comclk同扫描频率clk循环变化process(clk)beginif rising_edge(clk) thenif comclk>=3 thencomclk <="00";else comclk<=comclk+1;end if;end if;end process;--数码管选择process(comclk)begincase comclk iswhen "00" => com<="1000";when "01" => com<="0100";when "10" => com<="0010";when "11" => com<="0001";when others =>NULL;end case;end process;--对应数码管的输出process(comclk,datain)begincase comclk iswhen "11"=> dataout<=datain(3 downto 0);when "10"=> dataout<=datain(7 downto 4);when "01"=> dataout<=datain(11 downto 8);when "00"=> dataout<=datain(15 downto 12);when others =>NULL;end case;end process;end art;6、七段数码管的译码器library IEEE;use IEEE.std_logic_1164.all;entity ymq isport(d_in: in std_logic_vector(3 downto 0);--数码管控制器输入四位信号d_out: out std_logic_vector(7 downto 0)); --输出8位信号end ymq;--第8位d_out[7]为逗号architecture art of ymq isbeginprocess(d_in)begincase d_in is --第8位为1高电平逗号不显示when "0000" => d_out<="11000000"; --0when "0001" => d_out<="11111001"; --1when "0010" => d_out<="10100100"; --2when "0011" => d_out<="10110000"; --3when "0100" => d_out<="10011001"; --4when "0101" => d_out<="10010010"; --5when "0110" => d_out<="10000010"; --6when "0111" => d_out<="11111000"; --7when "1000" => d_out<="10000000"; --8when "1001" => d_out<="10010000"; --9 when others =>NULL;end case;end process;end art;。
EDA技术与应用实践—数字频率计的设计

--计数复位 --计数使能
--计数到9,则回0,进位脉冲输出1
--小于9,则累加1
cnt10
clk dout[3..0]
clr
co
பைடு நூலகம்en
inst
图 6 - 13 计数模块
6.2 数字频率计的设计
⒊ 锁存模块
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY reg IS
IF cnt="00" THEN bt<="1110";num<=din3;
ELSIF cnt="01" THEN bt<="1101";num<=din2;
--显示din3的值 --显示din2的值
6.2 数字频率计的设计
ELSIF cnt="10" THEN bt<="1011";num<=din1; ELSIF cnt="11" THEN bt<="0111";num<=din0; ELSE bt<="1111"; num<="1011"; END IF; END PROCESS;
bt:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
--位控端
sg:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
--段控端
END disp;
ARCHITECTURE rtl OF disp IS SIGNAL num:STD_LOGIC_VECTOR(3 DOWNTO 0);
EDA课程设计--数字频率计

EDA《数字频率计》课程设计报告专业:电子信息工程(自动化方向)班级:姓名:学号:指导教师:年月日目录一、EDA课程设计要求 -------------------------------- 2二、优点及用途------------------------------------- 3三、原理图、VHDL语言程序及仿真波形--------------------- 3四、总结 -------------------------------------------五、参考书 ------------------------------------------一EDA课程设计要求1)课程设计题:数字频率计2)任务及要求1、设计一个能测量方波信号的频率的频率计。
2、测量的频率范围是0 999999Hz。
3、结果用十进制数显示。
4、按要求写好设计报告(设计报告内容包括:引言,方案设计与论证,总体设计,各模块设计,调试与数据分析,总结)。
3)教学提示1、脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。
所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。
2、被测频率信号取自实验箱晶体振荡器输出信号,加到主控门的输入端。
3、再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。
4、时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。
5f=N/T,改变时基信号的周期T,即可得到不同的测频范围。
5、当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新的一次采样做好准备。
6、改变量程时,小数点能自动移位。
4)设计报告要求1、说明设计作品的功能、特点、应用范围;2、方案对比,确定方案。
EDA课程设计报告__频率计

课程设计报告一、设计目的和要求1.课程设计目的(1).熟悉CPLD的开发软件的基本使用。
(2).理解频率计的测量原理。
(3).掌握CPLD逻辑电路设计方法。
(4).掌握虚拟数字频率计的软件设计。
2.课程设计的基本要求在CPLD中设计一个数字频率计电路,设计要求为:测量范围:1Hz~1MHz。
3.课程设计类型Vhdl程序设计二、仪器和设备1.电脑2.max+plus2软件三、设计过程1.设计内容和要求在CPLD中设计一个数字频率计电路,设计要求为:测量范围:1Hz~1MHz。
2.设计方法和开发步骤3.设计思路下图是8位十进制数字频率计的电路逻辑图,它由1个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器的CNT10、1个32位锁存器REG32B组成。
常熟理工学院课程设计报告1)测频控制信号发射器的设计频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。
这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当TSTEN高电平时,允许计数;低电平时,停止计数,并保持其所计的数。
在停止计数期间,首先需要一个锁存信号LOAD 的上跳沿将计数器在前1秒钟的计数值锁存进32位锁存器REG32B 中,由外部的7段译码器译出并稳定显示,锁存信号之后必须有一清零信号CLR_CNT对计数器进行清零,为下一秒的计数操作作准备。
测频控制信号发生器是先建立一个由D触发器构成的二分频物理与电子工程学院EDA实验室器,再在每次时钟CLK上沿到来时其值翻转。
其中,控制信号时钟CLK的频率取1Hz,而信号TSTEN的脉宽恰好是1s,可以用做闸门信号。
此时,根据测频的时序要求,可得出信号LOAD和CLR_CNT的逻辑描述。
在计数完成后,即计数使能信号TSTEN在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号LOAD,0.5秒后,CLR_CNT产生一个清零信号上跳沿。
- 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 将计数结果作乘法,也能得到正确的测量值显示。