2位十进制高精度数字频率计设计
- 格式:doc
- 大小:757.00 KB
- 文档页数:3
数字式频率计的设计摘要在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量显得更为重要。
数字频率计是近代电子技术领域的重要测量工具之一,同时也是其他许多领域广泛应用的测量仪器。
数字频率计是在规定的基准时间内把测量的脉冲数记录下来,换算成频率并以数字形式显示出来。
数字频率计用于测量信号(方波,正弦波或其他周期信号)的频率,并用十进制数字显示,它具有精度高,测量速度快,读数直观,使用方便等优点。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点。
本次设计的数字频率计以555为核心,采用直接测频法测频,能够测量正弦波、三角波、锯齿波、矩形波等。
根据显示的频率范围,用4片10进制的计数器构成1000进制对输入的被测脉冲进行计数;根据输入信号的幅值要求,所以要经过衰减与放大电路进行检查被测脉冲的幅值;由于被测的波形是各种不同的波,而后面的闸门或计数电路要求被测的信号必须是矩形波,所以还需要波形整形电路,通过这些整体要求,由显示部分,计数部分,逻辑控制部分,时基电路部分,构成简易的频率计的设计。
目录一.设计任务和要求 (3)1.设计任务 (3)2.设计要求 (3)二.系统设计 (4)1.系统要求 (4)2. 方案设计 (5)3.系统工作原理 (6)三.单元电路设计 (8)1.时基电路部分 (8)2.计数显示部分电路 (11)3.控制电路设计如下 (14)四.电路仿真分析 (15)五.元器件的选择及参数确定 (17)1.电路调试 (17)2系统功能及性能测试 (18)3.电路安装 (20)4.调试 (21)参考文献 (25)总结及体会 (26)附录 (28)一.设计任务和要求1.设计任务设计一个数字式频率计。
2.设计要求1、能够测量正弦波、三角波、锯齿波、矩形波等周期性信号的频率;2、能直接用十进制数字显示测得的频率;3、频率测量范围:1HZ—10KHZ且量程能自动切换;4、输入信号幅度范围为0.5—5V,要求仪器自动适应5、测量时间:t≼1.5s6、电源:220V/50HZ的工频交流电供电;(注:直流电源部分仅完成设计即可,不需制作,用实验室提供的稳压电源调试,但要求设计的直流电源能够满足电路要求)7、按照以上技术要求设计电路,绘制电路图,对设计的电路用Multisim或OrCAD/PspiceAD9.2进行仿真,用万用板焊接元器件,制作电路,完成调试、测试,撰写设计报告。
基于FPGA和单片机的高精度数字频率计的设计与实现1. 引言1.1 背景介绍数字计数器是一种广泛应用于科学研究、工程技术和日常生活中的仪器设备,用于测量信号的频率、周期和脉冲数量等。
随着科技的不断发展,对于数字频率计的精度和性能要求也越来越高。
传统的数字频率计主要基于单片机或专用芯片的设计,存在精度受限、功能单一等问题。
而基于FPGA和单片机的高精度数字频率计能够充分发挥FPGA在并行计算和高速数据处理方面的优势,结合单片机的灵活性和易编程性,实现更高精度、更丰富功能的数字频率测量。
本文基于FPGA和单片机,设计并实现了一种高精度数字频率计,具有高度精准、快速响应的特点。
通过软硬件结合的设计思路,实现了数字信号频率的精确测量,同时在硬件设计和软件设计上都进行了详细优化和实现。
系统测试结果表明,该数字频率计具有较高的测量精度和稳定性,在实验中取得了良好的效果和准确的测量数据。
此设计不仅具有实用价值,还对数字频率计的进一步研究和应用具有一定的参考意义。
1.2 研究意义随着科技的发展,对于频率计的要求也越来越高,需要具备更高的精度、更快的响应速度和更广泛的适用范围。
设计和实现基于FPGA 和单片机的高精度数字频率计具有重要的研究意义。
通过本文的研究,可以深入了解数字频率计的工作原理和设计方法,为高精度频率计的研究和应用提供参考和借鉴。
本文的研究成果还可以为提高电子测量仪器的性能,推动数字频率计技术的发展做出重要的贡献。
本文的研究具有重要的理论和实践意义。
1.3 研究现状当前,数字频率计在电子测量领域具有重要的应用价值,其精度和稳定性对于提高测量精度和准确性至关重要。
目前,数字频率计的研究主要集中在硬件设计和软件算法的优化上。
在硬件设计方面,传统的数字频率计主要采用FPGA(现场可编程门阵列)作为核心控制器,实现高速、高精度的频率测量。
通过合理的电路设计和时序控制,可以实现更稳定和准确的频率计算。
在软件设计方面,研究者们致力于优化频率计算算法,提高频率计算的速度和精度。
东北大学秦皇岛分校计算机与通信工程学院电子线路课程设计压力测量数显电路专业名称班级学号学生姓名指导教师设计时间课程设计任务书专业学号学生姓名(签名):设计题目:压力测量数显电路一、设计实验条件Multisim实验室二、设计任务及要求1.熟悉译码器、555定时器、计数器和七位数码管的功能,并熟练应用;2.掌握555定时器产生脉冲的原理和方法;3.选择合适的器件来构成脉冲信号发生器;4.学会利用计数器构成不同进制的计数器;5.设计压力测量数显电路。
三、设计报告的内容1.设计题目与设计任务(设计任务书)2.前言(绪论)(设计的目的、意义等)3.设计主体(各部分设计内容、分析、结论等)4.结束语(设计的收获、体会等)5.参考资料四、设计时间与安排1、设计时间:2周2、设计时间安排:熟悉实验设备、收集资料:2 天设计图纸、实验、计算、程序编写调试: 5天编写课程设计报告:2 天答辩:1 天1、绪论随着计算机科学与技术迅猛地发展,用数字电路进行信号处理的优势也更加的突出。
数字电路具有精度高、稳定性好、抗干扰能力强、程序软件控制等一系列优点。
为了充分发挥数字电路在信号处理上的强大功能,我们可以先将拟信号按比例转换成数字信号,然后送到数字电路进行处理,最后将处理结果根据需要转换成相应的模拟信号输出。
自20世纪七十年代开始,这种用数字电路处理模拟信号的所谓“数字化”浪潮已经席卷了电子技术几乎左右的领域。
现在,学校给我提供了这次机会,我将利用所学的数电知识,仿真一个压力测试数电电路,以求更好掌握数电知识。
此次课程设计的目的是学会利用555定时器产生脉冲信号,熟练应用计数器、译码器和数码器构成压力测试数显电路。
通过此次的课程设计掌握数字信号的基本元件和知识,以实践的方式加深知识的掌握程度,扩展我们的思维。
2、系统设计(一)设计结构1、由555脉冲信号发生器产生脉冲信号;2、100进制计数器有两个74LS160计数器串联构成;3、显示器是由两个译码器和两个数码管构成。
五邑大学数字电路课程设计报告题目:两位十进制计数显示器院系信息工程学院专业通信工程学号学生姓名指导教师报告日期2011年5月一、设计任务与要求本设计主要采用芯片有555定时器、74162计数器、7448七段字形译码器,以及七段LED数码管。
能过以上元器件的组合,构成一个两位十进制计数显示器,实现循环依序显示0~99的数字。
二、课题分析与方案根据实验要求,首先使用555定时器构成多谐振荡器,选择合适的电容电阻产生—方波脉冲作为时钟信号,将此信号输入到74162计数器中,编译成—4位十进制信号输出,经显示驱动芯片7448译码—7位输出信号驱动七段LED显示器,使其从0~9循环显示字形。
图1 电路组成框图三、电路设计1.总电路原理电路设计的原理图如图2所示[2]。
电路工作原理:(1)先把555定时器时钟的2,6脚相连并通过电容C2接地,并同时通过R16接到7脚,7脚通过R15接电源V cc,构成多谐振荡器。
用以产生方波时钟信号。
电路中,R15、R16、C2是定时元件。
(2)时钟信号分别输入到两个74162芯片的2脚,分别产生个位与十位计数计数。
个位74162,使CEP、CET(状态控制端)、PE(置数端)、SR(清零端)接高电平,使之计数;而十位的74162与个位共用相同的时钟,PE、SR高电平,CET,CTP接个位的进位信号TC。
当个位的TC进位信号来的时候,使CEP、CET变高电平,CLK到来的时候,可实现进位计数!没有进位的时候保持,输出端接译码电路。
(3)译码电路构成,使用两块7448芯片对计数器的个位与十位输出进行译码。
个位和十位的7448的灯LT(测试端)、灭零端(RBI)、BI/RBI(动态输出端)均接高电平,实现正常译码。
输出端接上接电阻,以增加共阴数码管的亮度。
图2、总电路原理图2.各模块数字逻辑:(1)555定时器表1NE555功能表555定时器是一种用途很广的集成电路,如表3所示,可以构成施密特触发器、单稳态触发器和多谐振荡器,都是利用R 、C 元件构成的脉冲电路,分析的关键就是电容的充放电,关键的连线点事是与电容相连的元件输入端。
0 绪论数字频率计是采用数字电路制成的实现对周期性变化信号的频率的测量仪器。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字,显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率计。
1 总体方案原理与论证1.1数字频率计频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。
频率计主要由四个部分构成:时基电路、输入电路、计数显示电路以及控制电路。
数字频率计用来测量正弦信号、矩形信号、三角波等波形,其测量结果直接用十进制数字显示。
本设计要求用中小规模芯片设计一个数字频率测量仪。
频率的测量有三种方法:直接测量法、直接与间接测量结合法和多周期同步测量法。
直接测量法最简单,但测量误差大;后两种方法测量精度高,但电路较复杂。
由于本题目没有对测量误差提出特别的要求,为简单起见,采用直接测量法。
1.2原理其最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率Tf=。
在一个测量周期过程中,被测周期信号在输入电路中经过放大、整形、N/微分操作之后形成特定周期的窄脉冲,送到主门的一个输入端。
主门的另外一个输入端为时基电路产生电路产生的闸门脉冲。
在闸门脉冲开启主门的期间,特定周期的窄脉冲才能通过主门,从而进入计数器进行计数,计数器的显示电路则用来显示被测信号的频率值,内部控制电路则用来完成各种测量功能之间的切换并实现测量设置。
设x f为待测频率,从输入端进入后经整形电路变成方波,加到与非门的一个输入端上。
与该与非门起主闸门作用,在与非门第二个输入端上加上闸门控制信号,控制信号为低电平时,闸门关闭,无信号输入;控制信号为高电平时,闸门打开,整形脉冲进入计数器计数。
电子科技大学实验报告学生姓名:范仁森学号:2011032030016 指导教师:杜涛学生姓名:李彦龙学号:2012032030019学生姓名:万金山学号:2011032030030一、实验室名称:计算机大楼309二、实验项目名称:两位十进制计数器在7段数码管显示的设计三、实验原理:用FPGA板上的晶振频率为33.86MHz的时钟进行2的25次方分频作为基准频率,然后用两位十进制计数器计数,计数结果输出至七段数码管显示器的数据端。
再将时钟进行2的19次方分频作为数码管扫描频率,接到数码管的共阴极端。
其中七段数码管由8个(a,b,c,d,e,f,g,dp)按照一定位置排列的发光二极管构成,通常采取共阴极或者共阳极的设计,将8个二极管的同一极接在一起,通过分别控制另外的8个电极的电平,使二极管导通(发光)或截止(不发光)。
四、实验目的:1、掌握七段数码管译码器的工作原理;2、掌握设计两位十进制计数器。
3、学会运用波形仿真测试检验程序的正确性。
五、实验内容:用VHDL设计两位十进制计数器在7段数码管显示的设计,并在VHDL描述的测试平台下对译码器进行功能仿真,给出仿真的波形,并在FPGA板上测试。
六、实验器材(设备、元器件):电脑一台,Active-HDL,30MHz FPGA开发板七、实验步骤:程序:顶层BDE设计U1部分:div25:将晶振信号进行2的25次方分频作为计数基准频率library IEEE;use IEEE.STD_LOGIC_1164.all;use ieee.std_logic_unsigned.all;entity div25 isport(clk : in STD_LOGIC;clr : in STD_LOGIC;div_25 : out STD_LOGIC);end div25;architecture div25 of div25 issignal count:std_logic_vector(24 downto 0);----为分频器设置一个中间信号beginprocess(clk,clr)beginif(clr='1')thencount<="0000000000000000000000000"; ----初始化elsif(clk'event and clk='1')then ----上升延触发if (count="1111111111111111111111111")then ----将时钟频率分频至接近1Hzcount<="0000000000000000000000000";---进位elsecount<=count+1; ---计数end if ;end if;end process;div_25<=count(24);----输出1Hz信号end div25;U3部分:count ---十进制的个位计数器library IEEE;use IEEE.STD_LOGIC_1164.all;use ieee.std_logic_unsigned.all;entity count isport(clk : in STD_LOGIC;clr : in STD_LOGIC;en : in STD_LOGIC;count_4:out std_logic_vector(3 downto 0);cin:out std_logic);end count;architecture count of count issignal count_3:std_logic_vector(3 downto 0); ----计数十位数需要4位2进制begincount_4<=count_3;process(clk,clr)beginif(clr='1')thencount_3<="0000";初始化cin<='0';初始化elsif(clk'event and clk='1')then-----上升沿触发if(en='1')thenif(count_3="1001")then-----进位count_3<="0000";----进位cin<='1';-----输出进位信号elsecount_3<=count_3+1;计数cin<='0';重置进位信号end if;end if;end if;end process;end count;U4部分:count 十进制的十位计数器library IEEE;use IEEE.STD_LOGIC_1164.all;use ieee.std_logic_unsigned.all;entity count isport(clk : in STD_LOGIC;clr : in STD_LOGIC;en : in STD_LOGIC;count_4:out std_logic_vector(3 downto 0);cin:out std_logic);end count;architecture count of count issignal count_3:std_logic_vector(3 downto 0);begincount_4<=count_3;process(clk,clr)beginif(clr='1')thencount_3<="0000";-----初始化cin<='0';elsif(clk'event and clk='1')thenif(en='1')thenif(count_3="1001")then-----十进制计数count_3<="0000";----进位重置cin<='1';----输出进位信号elsecount_3<=count_3+1;-----计数cin<='0';-----进位信号重置end if;end if;end if;end process;end count;U2部分:div19 -----将晶振信号进行2的19次方分频作为扫描频率library IEEE;use IEEE.STD_LOGIC_1164.all;use ieee.std_logic_unsigned.all;entity div19 isport(clk : in STD_LOGIC;clr : in STD_LOGIC;div_19 : out STD_LOGIC);end div19;architecture div19 of div19 issignal count:std_logic_vector(18 downto 0);beginprocess(clk,clr)beginif(clr='1')thencount<="0000000000000000000";-----初始化elsif(clk'event and clk='1')thenif (count="1111111111111111111")thencount<="0000000000000000000";-----进位重置elsecount<=count+1;------计数end if ;end if;end process;div_19<=count(18);-----出接近64Hz的扫描信号end div19;U5部分:mux2----将两位十进制进行扫描输出library IEEE;use IEEE.STD_LOGIC_1164.all;entity mux2 isport(a : in STD_LOGIC;counter1 : in STD_LOGIC_VECTOR(3 downto 0);counter2 : in STD_LOGIC_VECTOR(3 downto 0);dout : out STD_LOGIC_VECTOR(3 downto 0));end mux2;architecture rtl of mux2 isprocess(a,counter1,counter2)beginif (a='0')thendout<=counter1;----输出个位elsif(a='1')thendout<=counter2;------输出十位end if;end process;end rtl;U6部分:decoder -----将两位十进制的数转换为七段显示码输出至显示管library IEEE;use IEEE.STD_LOGIC_1164.all;entity decoder7 isport(din : in STD_LOGIC_VECTOR(3 downto 0);dout : out STD_LOGIC_VECTOR(6 downto 0));end decoder7;architecture rtl of decoder7 issignal indata:std_logic_vector(3 downto 0);indata<=din;----载入数据process(indata)begincase indata iswhen"0000"=>dout<="1111110";------输出0when"0001"=>dout<="0110000";-----输出1when"0010"=>dout<="1101101";-----输出2when"0011"=>dout<="1111001";-----输出3when"0100"=>dout<="0110011";----输出4when"0101"=>dout<="1011011";-----输出5when"0110"=>dout<="0011111";-----输出6when"0111"=>dout<="1110000";-----输出7when"1000"=>dout<="1111111";-----输出8when"1001"=>dout<="1111011";-----输出9when others=>dout<="0000000";-----输出0 end case;end process;end rtl;仿真:在ise上FPGA板上I/O接口选择clk P79, clr P109, en P114, com1 P135, com2 P133,dout1 P138,dout2 P139,dout3 P140,dout4 P141,dout5 P143,dout6 P144,dout7 P146.在ise上继续编译,最后program下载进FPGA。
广州大学学生实验报告
实验室:电子信息楼 317EDA 2017 年 10 月 2 日
学院机电学院年级、专
业、班
电信
151
姓名苏伟强学号1507400051
实验课
程名称
可编程逻辑器件及硬件描述语言实验成绩
实验项
目名称
实验4 2位十进制高精度数字频率计设计指导老师
秦剑
一实验目的
1 熟悉原理图输入法中74系列等宏功能元件的使用方法,掌握更复杂的原理图层次化设计技术和数字系统设计方法。
2 完成2位十进制频率计的设计,学会利用实验系统上的FPGA/CPLD验证较复杂设计项目的方法。
二实验原理
1 若某一信号在T秒时间里重复变化了N 次,则根据频率的定义可知该信号的频率fs 为:fs=N/T 通常测量时间T取1秒或它的十进制时间。
三实验设备
1 FPGA
实验箱,quarteus软件
四实验内容和结果
1 2位十进制计数器设计
1.1 设计原理图:新建quarteus工程,新建block diagram/schematic File文件,绘制原理图,命名为conter8,如图1,保存,编译,注意:ql[3..0]输出的低4位(十进制的个位),
qh[3..0]输出的高4位(十进制的十位)
图片11.2 系统仿真:如图2建立波形图进行波形仿真,如图可以看到完全符合设计要求,当clk输入时钟信号时,clr有清零功能,当enb高电平时允许计数,低电平禁止计数,当低4位计数到9时向高4位进1
图2
1.3 生成元件符号:File->create/updata->create symbol file for current file,保存,命名为conter8,如图3为元件符号(block symbol file 文件):
图3
2 频率计主结构电路设计
2.1 绘制原理图:关闭原理的工程,新建工程,命名为ft_top,新建原理图文件,在project navigator的file 选项卡,右键file->add file to the project->libraries->project library name添加之前conters8工程的目录在该目录下,这样做的目的是因为我们会用到里面的conters8进行原理图绘制,绘制原理图,如图4,为了显示更多的过程信息,我们将74374的输出也作为output,重新绘制了原理图,图5
图4
图5
2.2 波形仿真:注:设end of time 为10s,F_IN 频率为20Hz(周期为50ms),EN_CNT 频率为0.5Hz (周期为2s ,之所以这样做是因为,结果可以直接显示出F_IN 的频率),如图
6
图6
F_IN 是待测频率信号(设其频率周期为50ms );CNT_EN 是对待测频率脉冲计数允许信号(设其频率周期为2s,频率为0.5Hz ),CNT_EN 高电平时允许计数,低电平时禁止计数。
仿真波形显示,当CNT_EN 为高电平时允许conter8对F_IN 计数,低电平时conter8停止计数,由锁存信号LOCK 发出的脉冲将conter8中的2个4位十进制数“21”锁存进74374中,并由74374分高低位通过总线H[6..0]和L[6..0]输给74248译码输出显示,这就是测得的频率值。
“21”的7段译码值分别是“5b ”和“06”。
此后由清0信号CLR 对计数器conter8清0,以备下一周期计数之用。
注意,由于有锁存器74374的存在,即使在conter8被清0后,数码管仍然能稳定显示上一测频周期测得的频率值。
3 时序控制电路设计
3.1 原理图设计:新建工程并且新建原理图文件,绘制如下原理图,保存文件名为controler.图7
图7
3.2 波形图仿真:如图
8
分析:
3.3 生成元件符号,File->create/updata->create symbol file for current file,保存,命名为controler (block symbol file 文件):如图8
图9
4 频率计顶层电路设计 4.1 原理图绘制:在project navigator 的file 选项卡,右键file->add file to the project->libraries->project library name 添加之前controler 工程的目录在该目录下,这样做的目的是因为我们会用到里面的controler 进行原理图绘制,绘制好的原理图如图9:
图10
4.2 波形仿真:设end of time为10s,F_IN频率为20Hz(周期为50ms),CLK频率为8Hz(周期为125ms,之所以这样做是因为,结果可以直接显示出F_IN的频率),如图10
图11
分析:电路只有两个输入信号:待测频率输入信号F_IN和测控时钟CLK,从CLK输入的时钟频率是8Hz,计数使能信号CNT_EN的脉宽即为1s,从而可使数码管直接显示F_IN的频率值。
如图所示,测出来的频率值为20Hz,和实际相符。
5 管脚的绑定和下载
5.1 引脚绑定:硬件测试实验电路采用NO.0电路结构,待测信号F_IN接clock0;测频控制时钟CLK接clock2,输出接数码管。
如图11
图12 5.2 下载:
可以看到,频率测量的结果是正确的。
五实验分析总结
思考题:
怎样提高测量的精确度?
答:由实验知道,在一个计数周期要尽可能的计到更多的输入信号周期,才能不会出现像一个计数周期没有出现一个完整周期的情况,这样会大大影响准确度,所以我们需要信号提高计数周期,来增加测量频率的准确度。
总结:
1 注意在绘制2位十进制计数器的时候,最后需要生成元件符号,文件名后缀是.bsf(block symbol file 文件),而不是block schematic file文件。
2 在波形仿真的时候,调整波形显示的进制数,方便查看实验结果,例如2位十进制计数器波形仿真的时候,输出的结果为2位十进制,但是引脚的输出是2进制的,这时候在波形右键->properties->radix->usigned decimal进行十进制表示,仿真的结果看得更直观了。
后面频率计主体结构的波形仿真也是同样的道理。
3 在进行管脚绑定的时候,在assignment editor中的category选项卡中选择location
4 在原理图中使用之前已经设计好的block symbol file 文件,需要在file选项卡中添加库,具体的方法是:ile->add file to the project->libraries->project library name,添加之前的自定义符号文件(block symbol file).
16。