频率计实验报告

合集下载

频率计实验报告

频率计实验报告

频率计实验报告一,实验目的1. 应用AT89S52单片机、单片机的I/O端口外扩驱动器74HC573和74HC138、LED数码管动态显示等实现对外部信号频率进行准确计数的设计。

二,实验要求A.基本要求:使用单片机的定时器/计数器功能,设计频率测量装置。

(1)当被测频率fx<100Hz时,采用测周法,显示频率XXX.XXX;当被测频率fx>100Hz时,采用测频法,显示频率XXXXXX。

(2)利用键盘分段测量和自动分段测量。

(3)完成单脉冲测量,输入脉冲宽度范围是100µs-0.1s。

B.扩展部分:三,实验基本原理以单片机AT89S52为核心,利用单片机AT89S52的计数/定时器(T1和T0)的功能来实现频率的计数,并且利用单片机的动态扫描把测出的数据送到数字显示电路显示。

利用7SEG-MPX8-CC-BLUE共阴极数码管,显示电路共由六位共阴极数码管组成,总体原理框图如图1.1所示。

图1.1 总体设计框图测频原理测量频率有测周法和测频法两种。

如图2.2和图2.3所示图1.2测周法 图1.3测频法(1)测频法(T 法):通过测量脉冲宽度来确定频率,适用于高频。

(2)测周法(M 法):是计数器在一定时间内对速度的脉冲数,确定频率,适用于低频。

四,实验设计分析针对要实现的功能,采用AT89S52单片机进行设计,AT89S52 单片机是一款低功耗,高性能CMOS8位单片机,片内含8KB 在线可编程(ISP )的可反复擦写1000次的Flash 只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 52指令系统及80C52引脚结构。

这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

延时程序等。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。

频率计实验报告

频率计实验报告

频率计实验报告一、实验目的本次实验的目的是通过设计和搭建频率计电路,掌握频率测量的基本原理和方法,熟悉相关电子元器件的使用,提高电路设计和调试的能力,并深入理解数字电路中计数器、定时器等模块的工作原理。

二、实验原理频率是指周期性信号在单位时间内重复的次数。

频率计的基本原理是通过对输入信号的周期进行测量,并将其转换为频率值进行显示。

常见的频率测量方法有直接测频法和间接测频法。

直接测频法是在给定的闸门时间内,对输入信号的脉冲个数进行计数,从而得到信号的频率。

间接测频法则是先测量信号的周期,然后通过倒数计算出频率。

在本次实验中,我们采用直接测频法。

使用计数器对输入信号的脉冲进行计数,同时使用定时器产生固定的闸门时间。

在闸门时间结束后,读取计数器的值,并通过计算得到输入信号的频率。

三、实验设备与器材1、数字电路实验箱2、示波器3、函数信号发生器4、集成电路芯片(如计数器芯片、定时器芯片等)5、电阻、电容、导线等若干四、实验步骤1、设计电路原理图根据实验要求和原理,选择合适的计数器芯片和定时器芯片,并设计出相应的电路连接图。

确定芯片的引脚连接方式,以及与外部输入输出信号的连接关系。

2、搭建实验电路在数字电路实验箱上,按照设计好的电路原理图,插入相应的芯片和元器件,并使用导线进行连接。

仔细检查电路连接是否正确,确保无短路和断路现象。

3、调试电路接通实验箱电源,使用示波器观察输入信号和输出信号的波形,检查电路是否正常工作。

调整函数信号发生器的输出频率和幅度,观察频率计的测量结果是否准确。

4、记录实验数据在不同的输入信号频率下,记录频率计的测量值,并与函数信号发生器的设定值进行比较。

分析测量误差产生的原因,并尝试采取相应的措施进行改进。

五、实验数据与分析以下是在实验中记录的部分数据:|输入信号频率(Hz)|测量值(Hz)|误差(%)||||||100|98|2||500|495|1||1000|990|1||2000|1980|1|从数据中可以看出,测量值与输入信号的实际频率存在一定的误差。

频率计实验报告(二)

频率计实验报告(二)

频率计实验报告(二)引言概述:本文是关于频率计实验报告的第二篇。

在上一篇实验报告中,我们介绍了频率计的原理和使用方法。

在本文中,我们将继续讨论频率计的准确性、稳定性以及实验中可能遇到的问题和解决方法。

通过本次实验,我们将深入了解频率计的性能和应用情况。

正文:一、频率计的准确性1. 选择合适的输入信号:合适的输入信号能够提高频率计的准确性。

应根据实际需求选择合适的信号源,例如使用稳定的标准信号源进行校准,或者根据被测信号的特点进行合理选择。

2. 校准频率计:频率计应定期进行校准,确保准确性。

校准过程中需注意输入电平、信号形状等因素对准确性的影响,及时进行调整和校准,提高频率计的准确性。

二、频率计的稳定性1. 加强电源管理:频率计的稳定性与供电电压、电源干扰等因素密切相关。

合理管理电源,选择稳定的供电电压,避免电源波动对频率计稳定性的影响。

2. 提高抗干扰能力:频率计应具备一定的抗干扰能力,可以通过加装滤波器、进行屏蔽等方式减小外部干扰对频率计的影响,提高稳定性。

3. 保持恒温环境:频率计对环境温度敏感,应保持恒温环境,避免温度变化对频率计稳定性的影响。

三、实验中可能遇到的问题及解决方法1. 频率计读数不稳定:可能是由于输入信号波动引起的,可以尝试增加信号源的稳定性或调整信号输入方式。

2. 频率计误差较大:可能是由于输入电平过高或过低导致的,可以通过减小或增大输入信号电平进行调整。

3. 频率计显示故障:可能是由于设备故障引起的,可以检查设备连接是否正常、是否存在损坏等问题,并进行相应维修或更换操作。

四、实验中的注意事项1. 注意输入信号的频率范围:在实验中应选择适合频率范围的输入信号,避免超出频率计的测量范围。

2. 避免过高电压输入:过高的输入电压可能导致频率计损坏或显示异常,需根据设备的额定电压进行输入控制。

3. 防止外界干扰:实验时需注意周围环境的电磁干扰,如尽量远离其他电磁辐射源,以确保测量准确性和稳定性。

系统频率测试实验报告(3篇)

系统频率测试实验报告(3篇)

第1篇一、实验目的1. 了解系统频率特性的基本概念和测试方法。

2. 掌握使用示波器、频谱分析仪等设备进行系统频率测试的操作技巧。

3. 分析测试结果,确定系统的主要频率成分和频率响应特性。

二、实验原理系统频率特性是指系统对正弦输入信号的响应,通常用幅频特性(A(f))和相频特性(φ(f))来描述。

幅频特性表示系统输出信号幅度与输入信号幅度之比,相频特性表示系统输出信号相位与输入信号相位之差。

频率测试实验通常包括以下步骤:1. 使用正弦信号发生器产生正弦输入信号;2. 将输入信号输入被测系统,并测量输出信号;3. 使用示波器或频谱分析仪观察和分析输出信号的频率特性。

三、实验设备1. 正弦信号发生器2. 示波器3. 频谱分析仪4. 被测系统(如放大器、滤波器等)5. 连接线四、实验步骤1. 准备实验设备,将正弦信号发生器输出端与被测系统输入端相连;2. 打开正弦信号发生器,设置合适的频率和幅度;3. 使用示波器观察输入信号和输出信号的波形,确保信号正常传输;4. 使用频谱分析仪分析输出信号的频率特性,记录幅频特性和相频特性;5. 改变输入信号的频率,重复步骤4,得到一系列频率特性曲线;6. 分析频率特性曲线,确定系统的主要频率成分和频率响应特性。

五、实验结果与分析1. 幅频特性曲线:观察幅频特性曲线,可以发现系统存在一定频率范围内的增益峰值和谷值。

这些峰值和谷值可能对应系统中的谐振频率或截止频率。

通过分析峰值和谷值的位置,可以了解系统的带宽和选择性。

2. 相频特性曲线:观察相频特性曲线,可以发现系统在不同频率下存在相位滞后或超前。

相位滞后表示系统对输入信号的相位延迟,相位超前表示系统对输入信号的相位提前。

通过分析相位特性,可以了解系统的相位稳定性。

六、实验总结1. 通过本次实验,我们掌握了系统频率特性的基本概念和测试方法。

2. 使用示波器和频谱分析仪等设备,我们成功地分析了被测系统的频率特性。

3. 通过分析频率特性曲线,我们了解了系统的主要频率成分和频率响应特性。

频率计的制作实验报告

频率计的制作实验报告

频率计的制作实验报告实验目的:本实验的目的是通过制作一个简单的频率计,了解频率计的工作原理以及实际应用。

实验仪器与材料:1. 模块化电子实验箱2. 函数信号发生器3. 示波器4. 电压表5. 电阻、电容等基本元件实验原理:频率计是用于测量信号频率的一种仪器。

其基本原理是利用周期性信号的周期长度与频率之间的倒数关系,通过计算周期长度来确定信号的频率。

实验步骤:第一步:搭建电路1. 将函数信号发生器的输出接入电路板上的输入端,作为输入信号源。

2. 将电路板上的元件按照电路图连接,包括电容、电阻等。

确保电路连接正确。

第二步:调试电路1. 将函数信号发生器的频率设置为一个已知的数值,例如1000Hz。

2. 使用示波器测量电路输出端信号的周期长度。

3. 使用计算器计算出信号的频率。

4. 调整电路参数,直到测量到的频率与设定的频率相等。

第三步:验证测量准确性1. 将函数信号发生器的频率调整到其他已知值,例如2000Hz。

2. 重复上述步骤,测量并计算信号的频率。

3. 比较测量到的频率与设定的频率,验证测量准确性。

实验结果与分析:通过实验,我们成功制作了一个简单的频率计。

在调试电路的过程中,我们可以通过测量输出信号的周期长度,并利用频率的倒数与周期长度的关系计算出信号的频率。

通过与设定的频率进行比较,验证了测量的准确性。

实验中可能存在的误差主要来自于电路元件的稳定性以及测量设备的精度。

为了提高测量准确性,可以选择更稳定的元件,并使用更精确的测量设备。

实验结论:本实验通过制作一个简单的频率计,深入了解了频率计的工作原理和实际应用。

通过测量信号的周期长度并计算出频率,我们可以准确地测量信号的频率。

实验结果验证了测量的准确性,并提出了进一步提高准确性的建议。

频率计在电子测量中具有重要的应用价值,可以广泛应用于通信、电子设备维修等领域。

简易频率计实验报告

简易频率计实验报告

实验二简易数字频率计实验目的:(1)学会各种简易数字频率计的设计方法(2)学会VHDL的多进程及多层次设计方法实验原理:设计一个四位数字频率计,此频率计共分四档。

一档:0~9999Hz二档:10~99.99kHz三档:100~999.9kHz四档:1~10MHz分频器模块FEN通过对1Hz的时钟的分频得到0.5Hz的时钟信号。

测频模块FTEST,是整个程序的核心,此模块完成在1s的时间内对被测信号计数的功能,并通过输出数据实现自动换挡的功能。

LOCK模块用来锁存数据。

实验内容:在MAX+plusII中用VHDL语言输入FEN2 、MUX21、CD源程序,保存名字与实体名一致,后缀为vhd,选择目标器件为EP1K30TC144-3,然后进行编译、仿真。

参考程序:1、FEN通过对1Hz的时钟的分频得到0.5Hz的时钟信号。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fen ISPORT(clk:IN STD_LOGIC;q:OUT STD_LOGIC);END fen;ARCHITECTURE fen_arc OF fen ISBEGINPROCESS(clk)VARIABLE x:STD_LOGIC;BEGINIF clk'EVENT AND clk='1'THENx:=NOT x;END IF;q<=x;END PROCESS;END fen_arc;波形仿真图:2、FTSET此模块完成在1s的时间内对被测信号计数的功能,并通过输出数据实现自动换挡的功能。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ftest ISPORT(clr,Fx,door:IN STD_LOGIC;alm:OUT STD_LOGIC;q3,q2,q1,q0,dang:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ftest;ARCHITECTURE CORN_ARC OF ftest ISBEGINPROCESS(door,Fx)VARIABLE c0,c1,c2,c3,c4,c5,c6 :STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE x:STD_LOGIC;BEGINIF Fx'EVENT AND Fx='1'THENIF door='1'THENIF c0<"1001"THENc0:=c0+1;ELSEc0:="0000";IF c1<"1001"THENc1:=c1+1;ELSEc1:="0000";IF c2<"1001"THENc2:=c2+1;ELSEc2:="0000";IF c3<"1001"THENc3:=c3+1;ELSEc3:="0000";c4:=c4+1;ELSEc4:="0000";IF c5<"1001"THEN c5:=c5+1;ELSEc5:="0000"; IF c6<"1001"THEN c6:=c6+1;ELSEc6:="0000";alm<='1';END IF;END IF;END IF;END IF;END IF;END IF;END IF;ELSEIF clr='0'THENalm<='0';END IF;c6:="0000";c5:="0000";c4:="0000";c3:="0000";c2:="0000";c1:="0000";c0:="0000";END IF;IF c6/="0000"THENq3<=c6;q2<=c5;q1<=c4;q0<=c3;dang<="0100";ELSIF c5/="0000"THEN q3<=c5;q2<=c4;q1<=c3;q0<=c2;dang<="0011";q3<=c4;q2<=c3;q1<=c2;q0<=c1;dang<="0010";ELSEq3<=c3;q2<=c2;q1<=c1;q0<=c0;dang<="0001";END IF;END IF;END PROCESS;END CORN_ARC;波形仿真图:3、LOCK模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LOCK ISPORT(A0,A1,A2,A3,A4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);q0,q1,q2,q3,q4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);clk:IN STD_LOGIC);END LOCK;ARCHITECTURE ART OF LOCK ISBEGINPROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THEN q0<=A0;q1<=A1;q2<=A2;q3<=A3;q4<=A4;END IF;END PROCESS;END ART;波形仿真图:顶层仿真波形:实验结果:实现了四位数字频率计的设计。

频率计实验报告频率计实验报告xx011014

频率计实验报告频率计实验报告xx011014

频率计实验报告频率计实验报告xx011014 数字逻辑与处理器基础实验三频率计实验实验目的:掌握频率计的原理和设计方法。

实验工具:1 Verilog语言2 Quartus II 9.03 DE2实验板实验设计:1 总体思路以及模块总述设计的基本思路是按照实验指导书上给出的原理图划分模块。

①待测信号产生模块signalinput.v :由指导书给出,用于产生待测信号sigin ;② 1Hz 时钟产生模块clk_1hz.v:通过实验板50MHz 产生1Hz 时钟clk_1hz;③控制信号产生模块control.v :通过1Hz 时钟,产生频率计所需的使能信号en ,同步清零信号reset ,锁存信号la ,生成一个3秒钟的频率计数周期;④十分频模块div_10.v:若量程选择信号sw_2为高电平,则待测信号需进行十分频;⑤计数器模块counter.v :频率计的核心部分,包括四位十进制计数器,以及对应七段译码器的译码器。

这里我把实验指导书中的译码模块整合在了里面,原因是认为在这个设计中单做一个译码模块意义不大,整合在里面翻倒方便一些;⑥信号锁存模块lat.v :当锁存信号la 为高电平时,锁存输出持续显示;⑦顶层模块div.v :进行各分立模块的功能综合;2 模块分述(1) 待测信号产生模块代码:module signalinput(testmode,sysclk,sigin);input [1:0] testmode;//00,01,10,11分别代表4种频率,分别为3125,6250,50,12500Hz ,使用SW1~SW0来控制input sysclk;//系统时钟50Moutput sigin;//输出待测信号reg[20:0] state;reg[20:0] divide;reg sigin;initialbeginsigin=0;state=21"b[***********]000;divide=21"b000000_1111_1010_0000000; endalways@(testmode)begincase(testmode[1:0])2"b00:divide=21"d16000; //3125Hz2"b01:divide=21"d8000; //6250Hz2"b10:divide=21"d1000000; //50Hz2"b11:divide=21"d4000; //12500Hzendcaseendalways@(posedge sysclk)//按divide 分频beginif(state==0)sigin=~sigin;state=state+21"b0_00__0000_0000_0000_0000_10; if(state==divide)state=27"b000_0000_0000_0000_0000_0000_0000; endendmodule可以看出大致由两部分构成:频率选择、分频。

频率计——电子电路实验报告

频率计——电子电路实验报告

电子电路实验报告学院(系)电子与信息工程学院专业电子信息工程(中意)学生姓名秦翰学号11523032013 年8 月2日一、数字频率计的原理频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号。

因此数字频率计实际是一个脉冲计数器,即在单位时间里所统计的脉冲个数,所以我们课题研究的主要内容放在计数脉冲电路。

实际应用中测量频率和周期的方法一般可分为无源测频法、有源测频法及计数器法等方法。

计数器法,又分为直接测频法和间接测频法。

(1)直接测频法,即在一定闸门时间内测量被测信号的脉冲个数。

用一标准闸门信号(闸门宽度为T c )对被测信号的重复周期进行计数,计数结果为N x 时,其待测频率为时间T c 为标准闸门宽度(s ),N x 为计数器计出的脉冲个数(重复周期数),测量的精度主要取决于计数N x 的误差。

其特点在于:测量方法简单;待测信号频率越高,精度越高;测量时间越长,误差越小;但当待测信号频率较低时,误差较大。

(2)间接测频法,如周期测频法。

此法是在待测信号的一个周期T x 内,记录标准频率信号变化次数N 0。

这种方法测出的频率是x F =0N /x T (公式2-2) 此法的特点是低频检测时精度高,但高频检测时误差很大。

为了提高T 法高频测量时的精度可通过A 分频使待测信号的周期扩大A 倍。

数字频率计作为数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。

随着复杂可编程逻辑器件的广泛应用,以EDA 工具作为开发手段,运用VHDL 语言。

将使整个系统大大简化。

提高整体的性能和可靠性。

1.电路的组成及工作原理(1) 电路的组成数字频率计一般都由振荡器、分频器、三级CMOS 反相器、控制器、计数译码器、LED 显示器这几部分组成。

首先晶振信号由振荡器的振荡电路产生一个标准频率信号,经分频器分频得到2Hz 的控制脉冲。

实验报告_频率计

实验报告_频率计

实验报告_频率计数字逻辑与处理器基础实验频率计实验报告姓名:学号:2012011250班级:组号:S2⽬录实验⼋:频率计 (3)⼀、实验⽬的 (3)⼆、实验内容 (3)(⼀) 设计⽅案 (3)1. 待测信号产⽣模块 (3)2. 分频模块 (4)3. 计数器模块 (4)4. 16位锁存器模块 (5)5. 控制信号产⽣模块 (6)6. 译码模块 (7)7. 扫描模块 (8)(⼆) 仿真结果 (9)(三) 实验硬件调试 (10)1. ⾯积与速度的关系清单 (10)2. 综合电路图 (12)3. 实验调试结果 (12)三、实验总结 (13)实验⼋:频率计⼀、实验⽬的掌握频率计的原理和设计⽅法⼆、实验内容(⼀)设计⽅案频率计⽤于对⼀个未知频率的周期信号进⾏频率测量,在1s内对信号周期进⾏计数,即为此周期信号的频率。

频率计内部实现框图如下所⽰,其内部包括频率量程处理模块(10 分频)、时钟频率产⽣模块、控制信号产⽣模块、⼗进制计数器模块、锁存器模块、译码显⽰模块等。

下⾯对⼏个模块分别作出阐释。

1.待测信号产⽣模块系统时钟信号为100MHz,利⽤不同的分频⽐将系统时钟分成四组不同的待测信号:3125Hz,6250Hz,50Hz,12500Hz。

将以上四组信号作频率计的输⼊。

具体代码如下,代码⽂件为siginput.v2.分频模块产⽣三个不同的分频⽐,其中两个将系统时钟分为1Hz信号和1KHz信号,分别作为计数时钟和扫描时钟;另⼀个分频⽐为10,⽤于⾼量程下的测量。

具体代码如下,代码⽂件为divider.v3.计数器模块这是⼀个四位⼗进制的计数器,当待测信号的上升沿来临,在使能信号enable有效,复位信号reset⽆效时开始计数。

具体代码如下,代码⽂件为counter.v4.16位锁存器模块输⼊为计数器产⽣的16位输出,lock信号(⾼电平)有效时输出锁定,否则,输出透明显⽰计数器值。

具体代码如下,代码⽂件为latch_16bits5.控制信号产⽣模块产⽣计数器的使能信号enable(⾼电平有效)、复位清零信号reset(低电平有效)以及锁存器的锁存信号lock(⾼电平锁存,低电平透明输出)。

频率计实验报告1

频率计实验报告1

简易的数字频率计实验报告逻辑与数字系统设计——实验部分作者姓名班级学号一、实验目的1.学习数字系统设计的步骤和方法;2.学习QUARTUS II的编译环境,和VHDL编程语言;3.熟悉ALTERA公司的MAX7000S系列的使用及程序下载方法;二、实验内容本实验要求设计并实现简易的数字频率计电路,要求可以实现以下功能:(1) 频率计的频率测量范围:最低要求0~9999Hz。

(2) 闸门时间为1s,测量结果以十进制数字显示。

(3) 设计一位复位键,对频率计进行清零复位。

(4) 利用实验箱上的四个七段数码管显示频率计结果,要求显示结果稳定,无闪烁。

三、实验任务1. 设计频率计的原理图,完成频率计子模块的功能设计;2. 在QUARTUS II环境下,建立新工程文件;3. 新建VHDL文件,完成各个子模块的VHDL编程,并利用QuartusII的工具生成相应的原理图文件;4. 在QUARTUS II环境下,新建原理图文件(注意:原理图文件名应与新建的工程文件名相同),完成各个模块之间的电路连接;5. 电路的功能仿真,验证设计的正确性;6. 为电路分配输入输出引脚,生成.pof文件;6. 下载.pof文件到MAX7128SL84-15;7. 连接MAX7128SL84-15与实验箱,并利用信号发生器和示波器检验频率计是否正常工作并测试频率计的相对误差;8. 撰写实验报告。

四、考核方法实验成绩由三个部分组成:考核内容所占分值频率计设计合理,编译通过,功能仿真结果正确30分程序可以正常下载,连接实验箱后频率计能够正常工作30分频率计工作稳定性好,误差小,测量范围广(1.2MHz以上)10分实验报告内容详实,叙述准确30分五、实验原理5.1 Max7000S系列开发板简介MAX7000系列是高密度,高性能的CMOS CPLD,采用先进的0.8um CMOS E2PROM技术制造。

MAX7000系列提供600-5000个可用门,引线端子到引线端子的延时为6ns。

频率计实验报告

频率计实验报告

频率计实验报告专业电子信息工程姓名学号姓名学号姓名学号指导教师设计时间目录引言 .............................................................................................. - 3 - 第一章频率计概述........................................................................ - 3 -1.1数字频率计概述.................................................................. - 3 -1.2频率计设计要求.................................................................. - 4 - 第二章频率计方案设计 ................................................................ - 4 -2.1 方案比较............................................................................ - 4 -2.1.1方案一:单片机频率计(基于A T89S52) ....................... - 4 -2.1.2方案二:CPLD频率计(基于VHDL语言).............. - 5 -2.2方案选择............................................................................. - 6 - 第三章CPLD频率计总体设计 ..................................................... - 6 -3.1 测频的方法 ........................................................................ - 6 -3.2 记数器法测频原理............................................................. - 7 -3.3 设计实现............................................................................ - 7 -3.3.1总体方案...................................................................... - 7 -3.3.2设计的实现 .................................................................. - 8 -3.3.3 VHDL语言编写的程序................................................ - 9 -3.3.4编译与仿真 ................................................................ - 14 -3.3.5程序加载至单片机........................... 错误!未定义书签。

数字频率计设计实验报告

数字频率计设计实验报告

数字频率计设计实验报告1.实验目的本实验旨在通过设计数字频率计的电路,使学生掌握数字电路的设计与运用,加深对计数器、分频器等数字电路的理解,同时熟悉数字电路及测量方法。

2.实验原理数字频率计的原理基于时间测量,将待测信号的周期或频率转化为时间或计数值,再转化为显示在数码管上的频率或周期。

其电路主要由时基、型切换及显示部分组成。

时基部分是实现数字频率计最核心的部分,具有准确的定频测量功能。

根据时基频率的稳定性,数字频率计还可分为光学时基式和晶体时基式,后者是目前数字频率计设计中较为主流和有效的方案。

型切换部分是将输入信号的周期或频率转化为电平,经一个比较器进行比较,输出脉冲后送到后端的计数器。

可分为一级型切换和两级型切换,一级型切换分频系数较小,能测量的频率范围较宽,但精度相对较低;两级型切换分频系数较多,能够实现更高的精度,但测量范围相对较窄。

显示部分主要由解码器、数码管、驱动器等构成,将计数器输出的数字部分经过解码器解码,以驱动数码管显示实际测量结果。

3.实验内容3.1电路设计本实验按照晶体时基式数字频率计的设计原理,设计一个简单的频率计电路。

时基部分采用简单的晶体振荡器电路,输入3V的电源电压,晶体振荡频率为6M,采用CD4066B型CMOS开关实现时填充寄存器与计数控制部分的切换。

型切换部分采用两级型切换,以加强精度,输入信号经过第一级分频后送到S1端,S1端接CD4066B的开关控制引脚,在S1位置上的6dB衰减电阻衰减输入信号再经过第二级分频后进入计数控制部分。

显示部分采用三片74LS47数码管显示器驱动芯片将数码转移至共阴数码管,选用CD4052B组成的位选开关循环驱动数码管。

3.2电路测试将方法频率计电路搭建完成后,接通电源,输入300Hz、3kHz、30kHz和300kHz的信号,观察数码管的测量结果。

并与示波器进行对比,计算相对误差。

4.实验结果通过实验测试,本设计可以稳定地测量300Hz至300kHz范围内的信号频率,并且测量误差相对较小。

数字频率计实训报告

数字频率计实训报告

一、实训目的本次数字频率计实训旨在使学生掌握数字频率计的基本原理、结构、工作原理以及实际操作技能。

通过实训,学生能够了解数字频率计在电子技术中的应用,提高电子测量和信号处理能力,为今后从事相关领域的工作打下坚实基础。

二、实训环境1. 实训设备:数字频率计、示波器、信号发生器、万用表等。

2. 实训软件:数字频率计操作软件、示波器操作软件等。

3. 实训场地:电子实验室。

三、实训原理数字频率计是一种用于测量信号频率的仪器,它通过数字电路对输入信号进行采样、计数、处理,最终显示出信号的频率。

其基本原理如下:1. 采样:将输入信号按照一定的采样频率进行采样,得到一系列离散的采样值。

2. 计数:对采样值进行计数,得到在一定时间内信号变化的次数。

3. 处理:根据计数结果和采样频率,计算出信号的频率。

四、实训过程1. 数字频率计的结构认识:了解数字频率计的组成部分,如:模拟输入电路、数字信号处理电路、显示电路等。

2. 数字频率计的使用方法:学习数字频率计的操作步骤,包括:开机、设置测量范围、输入信号、读取频率值等。

3. 信号发生器的使用:掌握信号发生器的操作方法,产生不同频率、幅度和波形的信号。

4. 数字频率计的测量:使用数字频率计测量信号发生器产生的信号频率,并与理论值进行比较,分析误差原因。

5. 示波器的使用:观察信号波形,分析信号的频率、幅度、相位等特性。

6. 数据分析与处理:对测量数据进行处理和分析,得出结论。

五、实训结果1. 成功掌握了数字频率计的基本原理、结构和工作原理。

2. 熟练掌握了数字频率计的操作方法,能够独立进行测量和数据分析。

3. 通过实验,验证了数字频率计在电子技术中的应用价值。

4. 提高了电子测量和信号处理能力。

六、实训总结1. 数字频率计是一种重要的电子测量仪器,广泛应用于电子技术领域。

2. 掌握数字频率计的基本原理、结构和工作原理,对于从事电子技术工作具有重要意义。

3. 实训过程中,应注意以下几点:- 熟悉数字频率计的操作方法,避免误操作。

频率计实验报告

频率计实验报告

频率计实验报告姓名: 学号:一、实验目的1.了解频率计的工作原理和实现方法。

2.利用CPLD 和单片机设计制作一台可以测量频率为1Hz~10MHz 信号的频率计,频率精度的基本要求为误差在±1Hz 内,f 为10MHz 时,频率绝对误差不大于1000Hz ;f 小于1000Hz 时,频率绝对误差不大于1Hz 。

3.通过对频率计的程序设计进一步加强对CPLD 和单片机的编程应用能力和电路设计及搭接能力。

二、实验原理方案一:CPLD 实验I - 被测信号 IV – 锁存 II - 秒信号 V – 显示 III- 与门输出时序:闸门信号的周期与占空比锁存信号的产生计数器输出格式和位数计数器清零信号的产生显示格式计数器时序产生锁存器Signal inClockI II III IV VDisplayI II III IVV方案二:CPLD+单片机由8MHz 的晶振分频至0.8Hz ,作为闸门信号闸门信号:占空比为80%,低电平时间为0.25s ,高电平时间为1s (闸门) 时序与方案1的时序相似,只是锁存器已不存在,无需锁存信号计数器清零信号是在单片机完成读取后给出用选择器的目的在于减少单片机引脚的使用可每次读取一个显示位所对应的数据方案3:CPLD+单片机闸门信号由输入信号同步,因此其时间可变可由闸门时间内输入脉冲出现的数目Ns 和闸门时间内晶振信号脉冲出现的数目Nc 得到输入信号的频率:fs = Ns * fc / Nc适应不同频率的输入信号单片机(或CPLD )感知输入信号的频率范围,并由此调节闸门时间闸门时间的调节必须是在一次完整的计数显示过程后进行无论频率、周期还是时间间隔的数字化测量,均是基于主门加计数器的结构而实现的。

其中主门具有“与门”的逻辑功能。

主门的一个输入端送入的是待检测的信号。

另一端送入的是闸门信号,可以由晶振通过分频得到高电平为1秒,低电平为0.25秒的闸门信号。

其中的1秒钟用于对待测信号的脉冲个数进行检分频链选择器Clock 闸门速度选择触发器计数器计数器选择器选择器Signal in 计数器选择器Signal inClock 分频链单片机Display测,0.25秒则用于传输数据、显示以及计数器的清零。

频率计实验报告

频率计实验报告

频率计实验报告频率计实验报告引言:频率计是一种用于测量信号频率的仪器。

在电子工程、通信和物理等领域中,频率计被广泛应用于测量和分析各种信号的频率特性。

本实验旨在通过使用频率计来测量不同信号源的频率,并探究其测量精度和适用范围。

实验过程:实验中,我们使用了一台精密频率计和几个不同的信号源。

首先,我们将频率计连接到信号源,并调整频率计的设置以适应不同的信号频率范围。

然后,我们逐个测量每个信号源的频率,并记录下测量结果。

在测量过程中,我们还注意到信号源的幅度对频率计的测量结果是否有影响。

实验结果:通过实验,我们得到了一系列信号源的频率测量结果。

我们发现,在低频范围内,频率计的测量精度较高,能够准确测量信号源的频率。

然而,当信号频率超过一定范围后,频率计的测量精度开始下降,甚至无法准确测量。

这是因为频率计的设计和工作原理决定了其适用范围有限。

进一步分析:在实验中,我们还发现信号源的幅度对频率计的测量结果有一定影响。

当信号幅度较小时,频率计可能无法稳定地测量信号的频率。

这是因为频率计需要足够的信号能量来进行稳定的测量。

因此,在使用频率计进行测量时,我们需要注意信号源的幅度是否满足要求。

实验误差:在实验中,我们还存在一定的测量误差。

这些误差可能来自于频率计本身的精度限制,也可能来自于信号源的不稳定性或其他外界干扰因素。

为了减小误差,我们可以采取一些措施,例如增加测量次数并取平均值,或使用更高精度的频率计。

应用与展望:频率计在现代科学和工程中具有广泛的应用前景。

它可以用于测量和分析各种信号的频率特性,从而帮助我们更好地理解和掌握信号的行为规律。

未来,随着科学技术的不断进步,频率计的测量精度和适用范围将进一步提高,为各个领域的研究和应用提供更多可能性。

结论:通过本次实验,我们深入了解了频率计的工作原理和测量特性。

我们发现频率计在测量低频信号时具有较高的精度,但在高频范围内可能存在测量误差。

同时,我们还注意到信号源的幅度对频率计的测量结果有一定影响。

数字频率计设计实训报告

数字频率计设计实训报告

一、实训目的1. 熟悉数字频率计的原理和设计方法。

2. 学会使用数字电路设计工具进行电路设计。

3. 提高实际动手能力,培养创新思维。

4. 增强团队协作意识。

二、实训内容本次实训以设计一款简易数字频率计为目标,主要内容包括:1. 确定设计指标和功能要求。

2. 设计数字频率计的硬件电路。

3. 编写程序实现频率计的功能。

4. 进行电路调试和测试。

三、设计指标和功能要求1. 频率测量范围:1Hz~99.99kHz。

2. 波形测量:正弦波、方波、三角波等。

3. 数码显示:LCD1602液晶显示屏。

4. 量程选择:手动切换。

5. 误差:≤±1%。

四、硬件电路设计1. 信号输入电路:采用LM324运算放大器作为信号放大和整形电路,确保信号幅度在1Vpp以上。

2. 分频电路:采用74HC390计数器进行分频,将输入信号频率降低到计数器可计数的范围内。

3. 计数电路:采用74HC595移位寄存器实现计数功能,计数结果通过串口输出。

4. 显示电路:采用LCD1602液晶显示屏显示频率值。

5. 控制电路:采用AT89C52单片机作为主控制器,负责信号处理、计数、显示和量程切换等功能。

五、程序设计1. 初始化:设置计数器初值、波特率、LCD1602显示模式等。

2. 主循环:检测信号输入、计数、计算频率、显示结果。

3. 信号处理:对输入信号进行放大、整形、分频等处理。

4. 计数:根据分频后的信号频率,对计数器进行计数。

5. 计算频率:根据计数结果和分频系数计算实际频率。

6. 显示:将计算出的频率值通过串口发送到LCD1602显示屏。

7. 量程切换:根据手动切换的量程,调整分频系数。

六、电路调试与测试1. 调试信号输入电路,确保信号幅度在1Vpp以上。

2. 调试分频电路,确保分频后的信号频率在计数器可计数的范围内。

3. 调试计数电路,确保计数器能够正确计数。

4. 调试显示电路,确保LCD1602显示屏能够正确显示频率值。

频率计课程设计实验报告

频率计课程设计实验报告

课程设计报告课程设计名称:电子系统综合课程设计课程设计题目:频率计频率计课程设计实验报告一、设计任务要求1、根本要求:设计一个3位十进制数字显示的数字式频率计,其频率测量范围在1MHz内。

量程分别为10kHz,100kHz和1MHz三档,即最大读数分别为和999kHz。

这里要求量程可以自动转换,详细要求如下:1〕、当读数大于999时,频率计处于超量程状态,此时显示器发出溢出指示〔最高位显示F,其余各位不显示数字〕,下一次测量时,量程自动增大一档。

2〕、当读数小于099时,频率计处于欠量程状态,下一次测量时,量程自动减小一档。

3〕、采用记忆显示方式,即计数过程中不显示数据,待计数过程完毕以后,显示测频结果,并将此显示结果保持到下一次计数完毕,显示时间不小于1s。

4〕、小数点位置随量程变更自动移位。

二、设计方案1、系统功能〔根本功能和附加功能〕根本功能:显示待测频率,LED灯显示小数点,显示待测频率的量程。

附加功能:实现量程自由变化,通过拨码开关控制待测频率大小。

2、系统设计方案说明1、分频模块:由于测频时不同量程档需要不同的时基信号,分频模块是必不可少的。

系统通过试验箱给定的50MHZ的频率通过分频变成0.5HZ,即1秒钟得计数时间,通过1秒钟的记数时间里待测频率上升沿的数量实现频率测定,待测频率通过分频,多路器等实现各频率的测定2 计数模块:想要实现频率的测定,其实就是在1秒钟的计数时间里对待测频率信号上升沿进展计数,所以计数模块是不可缺少的,本计数器需输出指示超量程和欠量程状态的信号。

3 量程控制模块:对待测频率的量程进展判断,确定量程以后,根据不同的量程,在试验箱上显示,我们的设计是4个量程〔1,2,3量程和超量程〕。

:4 BCD译码模块:用到实验箱SOPC上的6个静态共阳数码管中的后三个数码管,并且试验箱内部有译码器,只需要输入4位数就可以在数码管上显示。

三、各模块程序如下:1、分频模块程序:1〕百分频模块程序:module plj(clk,dingshi);input clk;output dingshi;reg [40:0] counter;reg dingshi;always @(posedge clk)beginif (counter==49) //计数时钟上升沿数量,100次时钟周期begin //输出一周期信号,得到100分频信号。

频率计实验报告

频率计实验报告

频率计实验报告信息工程实验任务及要求:1.设计一个可测量的数字式频率计,测量范围为1Hz-12MHz。

2.用层次化的设计方法设计该电路,编写各个功能模块的程序。

3.仿真各功能模块,通过观察有关波形确认电路设计是否正确4.完成电路设计后,通过在实验系统上下载,验证设计的正确性实验原理分析:根据总的设计图可知:8位十进制数字频率计的设计有一个测频控制信号发生器TESTCTL,8个有时钟使能的十进制数字计数器CNT10,一个32位锁存器REG32B组成。

测频控制信号发生器的设计原理和要求:频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。

这就要求TESTCTL的计数使能信号TSTEN能产生1秒脉宽的周期信号,并对频率计的每一个计数器CNT10的ENA使能端进行不同控制。

当TSTEN高电平时允许计数,低电平时停止计数,并保持所计的数。

在停止计数的期间,首先需要一个锁存信号Load的上跳沿将计数器在前一秒的计数值锁存进32位锁存器REG32B中,且由外部的七段译码器译出并稳定显示。

设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

锁存信号之后,必须有一个清零信号CLR_CNT对计数器进行清零,为下一秒钟的计数操作做准备,测频控制信号发生器的工作时序为周期2秒,占空比为0.5的方波,为了产生的方波,需首先建立一个由D触发器构成的二分频器,在每秒时钟CLK上升沿到来时使其翻转,其中控制信号时钟CLK的频率为1Hz,那么信号TSTEN的脉宽恰好为1秒,可以用作闸门信号,然后根据测频的时序要求,可得出信号Load和CLR_CNT的逻辑描述,在一个计数完成后,即计数使能信号TSTEN在1秒的高电平后,利用其反向值的上升沿产生一个锁存信号Load,0.5秒后,CLR_CNT产生一个清零信号跳沿。

各个模块的源程序如下所示:TESTCTL仿真波形:REG32B仿真波形:分析:设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

简易频率计设计实验报告

简易频率计设计实验报告

(2) 、T1 25ms 定时中断服务程序 系 统 时 钟 为 24MHz , 机 器 周 期 为 0.5us , 最 大 定 时 时 间 为

65536 0.5us 32.768ms ,我们选用的定时时间为 25ms,定时中断 40 次即可实现 1s 定 时,T1 中断服务程序的流程图如下:
姓 学 专
名: 号: 业:
胡 嗣 维 021240*** 物 理 学 杨 老 师
指导老师:
2015 年 7 月 5 日
简易数字频率计的设计
实验目标:设计一个简易的数字频率计,能实时测量周期信号的频率,并将结果显示出 来,频率测量范围为 0~1MHz
总体方案
1.频率测量基本原理 数字频率计的主要功能是测量周期信号的频率。频率是单位时间内(1s)信号发生周期变 化的次数。如果能在给定的 1s 时间内对周期信号进行计数,并将计数结果显示出来,就实 现了对被测信号的频率测量。 2 实现方法 单片机 AT89S51 内部具有两个 16 位定时/计数器,如果用 T0 对外界周期信号进行计数, T1 作为定时器产生 1s 的定时中断, 在 T1 的定时中断服务程序中读取 T0 的计数值, 即可实 现频率的测量。由于测量的频率范围是 0~1000000Hz(1MHz) ,根据单片机对外部信号的计 数需要两个机器周期才能识别一个脉冲, 所以外部计数脉冲的频率应该小于振荡频率的 1/24. 所以选择 24MHz 才能实现频率测量范围为 0~1000000Hz(1MHz) 。如果系统的频率测量范 围更大,则可以在周期脉冲信号接入 T0 引脚前加分频电路即可。 3 系统硬件设计 系统硬件连接电路图如图所示。系统比较简单,数据处理量不大,因此选用 AT89S51 作为 控制系统的核心。其特点是低功耗、高性能的 CMOS 单片机。AT89S51 单片机采用静态时 钟方式,时钟频率为 0~33MHz。本次我们采用的是 24MHz 的工作频率。频率测量没有大量 的运算和暂存数据,现有的 128B 片内 RAM 已经满足要求,因此不必要外扩片外 RAM。系 统选用 LCD1602 显示频率,因为系统外扩的元件先对比较少,LCD1602 采用 I/O 并行接口 方式和单片机相连。图中

频率计设计实验报告

频率计设计实验报告

频率计设计实验报告频率计设计实验报告智能09012009010993周红蕊一、设计任务设计一个频率计电路,要求有4位十进制数码显示,可测量函数发生器输出的信号频率。

1.可测量9.999KHZ以内的频率并显示。

2.4位数的任意脉冲计数和显示。

3.将灵敏度从100mv提高到5mv。

二、技术要求1. 电源电压:+5V。

2. 输入信号幅度范围:5m v~10 V。

3. 信号输入方式:交流输入。

4. 输入信号波形要求:任意波形周期信号、任意波形脉冲信号。

三、设计器材及仪器1.晶体振荡器。

2.电路芯片(4060、4518、4017、7414、74373、74247)。

3.数码管LA5011。

4.电阻(300、1K、2 K、2M)。

5.电容33pf。

6.稳压电源。

7.信号源。

8.万用表。

9.示波器。

四、频率计工作原理1.频率计工作原理简述频率计是实验室常用仪器之一,其基本工作原理如图6.6.1所示。

首先要有一个稳定而又准确的频率源,用它产生的频率信号经过分频电路后得到标准时间等于一秒的闸门信号,并在闸门信号的后沿由锁存清零控制器产生锁存信号使锁存器锁存数据、产生清零脉冲使计数器清零,以便下一次重新开始计数被测频率信号在闸门开启的一秒钟内可以通过闸门电路进入BCD码计数器进行计数,当闸门信号的后沿到来时计数器停止计数,同时在锁存信号的控制下将计数结果锁存在锁存器中,被锁存的数据经译码驱动电路译码后驱动数码显示电路。

图6.6.1 简易频率计原理框图2.电路分析1)限幅整形电路U i U o频率计的输入信号是各种各样的,既可能有正弦波、矩形波和三角波,也可能有各种周期的、非周期的脉冲波和奇异波。

无论什么波形,要计数准确,起码的条件是信号的信噪比必须足够大。

输入级阻抗要足够高,而且当信号幅度很高时输入级电路不能被烧毁。

因此在信号输入端应有一级高阻输入低噪声前置放大器和限幅器,并且应有一级整形电路,把各种输入信号变成比较规范的矩形波。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一.设计方案1. 整体思路:求待测信号的频率,实际上是在1s内对脉冲进行计数。

故先对1MHz分频产生1s的闸门信号,由此产生计数使能信号,计数清零信号(有锁存要求的也要产生锁存信号要求);六位十进制计数器在计数使能和计数清零信号的控制下计数。

若有显示频率值固定的要求,则由锁存信号控制寄存器锁存稳定的频率值。

2. 模块划分:采用“自顶向下,逐步细化”的设计思想,顶层文件定义总输入输出端口及各模块的输入输出端口,并进行端口匹配。

底层分为三个模块:分频模块,计数模块和锁存模块,分别完成各自功能。

(1)分频模块:输入为1MHz基准时钟信号,输出为计数使能信号,计数清零信号(和锁存信号)共有四个线程,p1: process (clk01) 用于将1MHz时钟基准信号500000分频产生2Hz时钟信号(具体实现方式是设置计数变量,每计到49999时2Hz时钟信号clk2产生一个脉冲);p2: process ( clk2 ) 用于将2Hz时钟信号clk2 2分频,产生1s的闸门信号(实现方法是clk2每出现一个脉冲,clk1的值反转一次。

这样两次分频产生的闸门信号是方波,而将1MHz 直接500000分频得到的输出信号占空比不是50%);p3: process ( clk1 ) 用于将闸门信号clk1再次2分频从而产生计数使能信号en(和锁存信号lock);p4: process ( clk1,clk0_5 ) 用于产生计数清零信号clr(计数使能信号无效的后0.5s计数器清零)。

(2)计数模块:输入为待测脉冲频率,计数使能和计数清零信号,输出为27位(前7位对应十万位7段译码管g~a,后20位对应万位~各位的8421码输出)。

采用异步清零。

计数器的原理入下:a.若个位小于9,则个位加1,其余位不变;b.若个位为9,十位小于9,则十位加1,个位归0,其余位不变;c.若个位,十位均为9,百位小于9,则百位加1,十位,个位归0,其余位不变;d.若个,十,百位均为9,千位小于9,则千位加1,百位,十位,个位归0,其余位不变;e.若个,十,百,千位均为9,万位小于9,则万位加1,千位,百位,十位,个位归0,其余位不变;f.若个,十,百,千,万位均为9,十万位小于9,则十万位加1,万位,千位,百位,十位,个位归0,其余位不变;g.若这6位均为9,则各位均归0(此时待测频率超出0~999999Hz量程,频率计不能正确显示)。

计数器的数值一定是上述情况中的一种,因此一定会进入某个if条件中执行相应语句。

*(3)锁存模块有锁存要求时,由锁存信号控制在第2s初(上升沿)锁存计数值,因此当输入待测信号稳定时,输出总是某个恒定值。

没有锁存要求时,不需锁存信号控制,锁存模块的输出就是本模块的输入。

二.问题及解决方案1.顶层设计时,最初为了简便将各模块对应端口直接MAP起来,而没有设置中间变量;后来怀疑这种写法是否规范,和小组成员商量后,组长的建议书是决定还是在端口间设置signal,将各端口与对应signal匹配。

2.if-else 需出现在process中,不可直接出现在architecture中。

这是是个小问题,在自己百度后就解决了。

3.分频器中三个输出信号的产生逻辑顺序:设置了4个进程,分别产生2Hz时钟信号,1Hz闸门信号,0.5Hz时钟信号(计数使能信号)和计数器清零信号。

这样虽然麻烦了一点,但是思路较为清晰。

4.除了技术性问题外,还有一些由于粗心造成的错误,如if后缺少then, 拼写错误,忘记包含use ieee.std_logic_unsigned.all 头文件,带有标号的信号名称忘记打标号等等。

5.variable 和 signal的赋值语句形式不同6.由于试验台的6个7段译码管中,有5个是4位8421码输入,1个是7位输入,之前没有注意到这个细节,误以为都是4位输入。

发现问题后修改了锁存器的代码(24位锁存器->27位锁存器),计数器代码(增添8421码到 7段译码管的转换)及顶层文件代码(输出位数变为27位)。

由此也有不小的心得与体会:再设计前一定要先仔细考察硬件电路,一丁点考虑不周导致的后果可能是程序结构,代码的大量修改。

7.系统不能清零:计数器清零信号clr的产生依赖于闸门信号clk1和计数使能信号en,最初设计clk1二分频得到clk0_5,再将clk0_5赋给en,并由clk0_5作为敏感信号触发产生clr信号的进程,系统可以清零。

后来为了使代码更加简洁,将clk0_5省去,clk1二分频直接得到en,并由en作为敏感信号触发产生clr信号的进程,但系统反而不能正确清零,后来迫不得已又改回了原版。

由输出信号直接控制进程,细细想来确实不太合适。

这让我认识到中间缓冲信号的作用与价值。

三.心得体会1.对VHDL语言有了更加深刻的认识。

从前只是知道某些语句可以实现某些功能,而并真正未从一种编程语言的角度来看待它。

之前的数字逻辑实验要求设计的常常是具有单一功能的元器件,而这次实验设计则比较综合,这就要求我们掌握“自顶向下,逐步细化”的设计思想,先将总功能的实现划分成多个模块,由顶层声明各模块及其管脚;具体的功能在各个模块内部实现。

2.在编程过程中,发现VHDL硬件语言与以前使用的C语言,C++语言有很多相似(如语句方面:if-else;case语句;设计思想方面:自顶向下,逐步细化,功能划分成多个子模块来实现),也有许多不同(如VHDL中同一进程中的if语句是并行进行的,而C语言和C++则是顺序进行的,由此C中的一些设计技巧在VHDL中无法进行)。

3.建立多个线程可使子模块继续“分块”,程序思路也更加清晰。

但有时在多个线程中对同一个变量赋值是不允许的,这就给线程的划分带来了困难。

一些逻辑上不可分的功能只能在同一个进程中实现。

4.模块合理划分的重要性:编程后期深刻的体会到,在编码前一定要先做好分析设计,将功能合理的划分成一个个的子模块,考虑清楚每个模块的输入,输出端口。

模块分得好,事半功倍,后面的编码也会轻松许多;模块分得混乱,编码时很难思路清晰,有时也会造成代码冗余和重复。

四.代码1.顶层文件:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cymometer isPort(ukclk: in std_logic;--待测时钟输入信号clk :in std_logic;--5kHz基准时钟信号q: out STD_LOGIC_VECTOR(26 DOWNTO 0) );--27位显示输出end cymometer;architecture art of cymometer isCOMPONENT dividerPORT (clk01:in std_logic;-- 1MHz基准时钟信号输入clr1: out std_logic;--计数清零信号输出en1: out std_logic);--计数使能信号输出END COMPONENT;COMPONENT count10PORT ( ukclk2: in std_logic; --待测时钟输入信号clr2: in std_logic; --计数清零信号输入en2: in std_logic; --计数使能信号输入qout:out STD_LOGIC_VECTOR(26 DOWNTO 0)); --27位输出END COMPONENT;COMPONENT latch6PORT ( qin: in STD_LOGIC_VECTOR(26 DOWNTO 0);fre:out STD_LOGIC_VECTOR(26 DOWNTO 0));END COMPONENT;signal tempq:STD_LOGIC_VECTOR(26 DOWNTO 0);signal tempclr:std_logic;signal tempen:std_logic;BEGINu1 : divider PORT MAP ( clk01=>clk,clr1=>tempclr,en1=>tempen);u2:count10 PORT MAP ( ukclk2=>ukclk,clr2=>tempclr,en2=>tempen,qout=>tempq );u3 : latch6 PORT MAP ( qin=>tempq,fre=>q);end art;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2.底层文件(1)分频模块library ieee;use ieee.std_logic_1164.all;entity divider isPORT (clk01:in std_logic;clr1: out std_logic;en1: out std_logic;lock1: out std_logic );end;architecture art of divider issignal clk2 : std_logic ;signal clk1 : std_logic ;signal clk0_5 : std_logic ;beginp1: process (clk01)variable count1 : integer range 0 to 500000;beginif clk01'event and clk01='1' thenif count1 = 49999 thencount1 := 0;clk2 <='1';else count1 :=count1+1;clk2<='0';End if;End if;end process;p2: process ( clk2 )variable count2 : std_logic ;beginif clk2'event and clk2='1' thencount2 := not count2;if count2 = '1'thenclk1 <='1';elseclk1 <='0';end if;end if;end process;p3: process ( clk1 )variable count3 : std_logic ;beginif clk1'event and clk1='1' thencount3 := not count3;if count3 = '1'thenclk0_5<='1';lock1<='0';elseclk0_5<='0';lock1<='1';end if;end if;en1<=clk0_5;end process;p4: process ( clk1,clk0_5 )beginif clk1='0' and clk0_5='0' thenclr1 <='1';elseclr1 <='0';end if;end process;end art;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(2)计数模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count10 isPORT ( ukclk2: in std_logic;clr2: in std_logic;en2: in std_logic;qout:out STD_LOGIC_VECTOR(26 DOWNTO 0));end count10;architecture art of count10 isSIGNAL temp1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL temp2:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL temp3:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL temp4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL temp5:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL temp6:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL temp:STD_LOGIC_VECTOR(6 DOWNTO 0);beginprocess(ukclk2,clr2,en2)beginif(clr2='1')thentemp1<="0000";temp2<="0000";temp3<="0000";temp4<="0000";temp5<="0000";temp6<="0000";temp<="0111111";elsif(en2='1')thenif(ukclk2'event and ukclk2='1')thenif(temp1<9) thentemp1<=temp1+1;end if;if(temp2<9 and temp1="1001") thentemp2<=temp2+1;temp1<="0000";end if;if(temp3<9 and temp2="1001" and temp1="1001") thentemp3<=temp3+1;temp1<="0000";temp2<="0000";end if;if(temp4<9 and temp3="1001" and temp2="1001" and temp1="1001") thentemp4<=temp4+1;temp1<="0000";temp2<="0000";temp3<="0000";end if;if(temp5<9 and temp4="1001" and temp3="1001" and temp2="1001" and temp1="1001") thentemp5<=temp5+1;temp1<="0000";temp2<="0000";temp3<="0000";temp4<="0000";end if;if(temp6<9 and temp5="1001"and temp4="1001" and temp3="1001" and temp2="1001" and temp1="1001") thentemp6<=temp6+1;temp1<="0000";temp2<="0000";temp3<="0000";temp4<="0000";temp5<="0000";end if;if(temp6="1001" and temp5="1001"and temp4="1001" and temp3="1001" and temp2="1001" and temp1="1001") thentemp6<="0000";temp1<="0000";temp2<="0000";temp3<="0000";temp4<="0000";temp5<="0000";end if;end if;end if;case temp6 isWHEN "0000"=>temp<="0111111";WHEN "0001"=>temp<="0000110";WHEN "0010"=>temp<="1011011";WHEN "0011"=>temp<="1001111";WHEN "0100"=>temp<="1100110";WHEN "0101"=>temp<="1101101";WHEN "0110"=>temp<="1111100";WHEN "0111"=>temp<="0000111";WHEN "1000"=>temp<="1111111";WHEN "1001"=>temp<="1101111";WHEN OTHERS=>temp<="0000000";END case;end process;qout<=temp & temp5 & temp4 & temp3 & temp2 & temp1;end art;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(3)锁存模块带有锁存功能LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY latch6 ISPORT(lock3:IN STD_LOGIC;qin: IN STD_LOGIC_VECTOR(26 DOWNTO 0);fre:OUT STD_LOGIC_VECTOR(26 DOWNTO 0) );END latch6;ARCHITECTURE art OF latch6 ISBEGINPROCESS(lock3)BEGINIF (lock3'event AND lock3='1' )THENfre<=qin;END IF;END PROCESS;END art;***************************************************************************不带有锁存功能:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY latch6 ISPORT( qin: IN STD_LOGIC_VECTOR(26 DOWNTO 0);fre:OUT STD_LOGIC_VECTOR(26 DOWNTO 0) );END latch6;ARCHITECTURE art OF latch6 ISBEGINfre<=qin;END art;五,失误由于自己的底子差,刚开始没有和小组成员没有商量好,组长说我做频率计,我先在网上找来资料和在图书馆借的书看,这样就耗费了几乎一周的时间,这周开始是小组成员开始调试自己的代码和带我去看调试过程和自己的思路,给我讲解一些需要注意的技巧,等她们三个验收完了之后我才开始准备,但是由于时间的关系,还是没有能够调出来,组长尽力的帮助我,让我在这个过程也学习到了一些知识和调试和VHDL的过程,但是代码的缺陷还是没有能够找出来。

相关文档
最新文档