收藏 分销(赏)

现代电子系统设计-简易数字频率计设计.pdf

上传人:曲**** 文档编号:11722101 上传时间:2025-08-09 格式:PDF 页数:23 大小:1,023.26KB 下载积分:10 金币
下载 相关 举报
现代电子系统设计-简易数字频率计设计.pdf_第1页
第1页 / 共23页
现代电子系统设计-简易数字频率计设计.pdf_第2页
第2页 / 共23页


点击查看更多>>
资源描述
目录一、摘要.4二、系统方案论证.42.1频率测量方案.5三、数字频率频率计的基本原理.6四、各个模块设计.74、1 A/D模数转换模块.84、2比较模块.94、3频率和占空比测量模块.10五、各个模块仿真波形.12六、心得体会.14七、参考文献.15附录一.16附录二.22一.摘要频率计是数字电路中的一个典型应用,是计算机、通讯设备、音频视频等 科研生产领域不可缺少的测量仪器,频率测量在科技研究和实际应用中的作用 日益重要。设计所要达到的效果,同时此设计具有抗干扰性强、易于传输,较高的测量精度等特点。数字频率计是一种基础测量仪器,在许多情况下,要 对信号的频率进行测量,利川示波器可以粗略测量被测信号的频率,精确测量 则要用到数字频率计,测量频率的方法有多种,其中电子计数器测量频率具有精 度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测 量的重要手段之一。电子计数器测频有两种方式:一是直接测频法,即在一定 闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。直接 测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量,测量采用了多周期同步测量法,它避免了直接测量法对精度的不足,同时消除 了直接与间接相结合方法,需对被测信号的频率与中介频率的关系进行判断带 来的不便,能实现较高的等精度频率和周期的测量。关键词:频率计、仪器、频率、精度、脉冲个数二.系统方案论证由于本课程设计是基于特定的硬件平台,在GW48-SOPC实验开发系统上 进行实现对被测信号通过AD进行转换,把转换的结果和给定的阈值进行比 较,产生相应的脉冲信号。得到脉冲信号之后,先进行频率测量,给定1S的 基准信号,在1S信号内对脉冲信号进行计数,计数的方式采用BCD码,然 后把计数结果直接送数码管显示,对应的就是十进制的数值。为了实现占空比 精度的要求,在适当的范围内竟可能提高基准信号的频率。通过一个led灯来 表示相应的单位。然后对脉冲信号进行占空比测量,给定一个高频的基准信号,在脉冲信号的高电平期间对脉冲信号进行计数,把计数结果进行相应的运算,运算结果直接送数码管显示,对应的也是十进制显示。对于报警信号,我设计 的方案是接数码管显示,频率超过3khz时就会发出警告,数码管指示灯全部 变为0。下面是简单的系统原理框图:系统原理框图2.1频率的测量对于频率的测量没有现成的硬件模块,因此对于频率的测量需要我们用 VHDL语言进行实现。对于频率的测量主要考虑有两种实现方案。方案一:直接测频法测频法就是在确定的闸门时间Tw内,记录被测信号的变化周期数(或脉冲个数)Nx,则被测信号的频率为:fx=Nx/Two闸门信号测量的过程如图所示,在TW时间内通过计数器记录被测信号脉冲的个数,然后把记录结果锁存,经过运算后,送数码管显示,即为所测频率。,方案二:测周期法测周期法需要有标准信号的频率fs,这个标准信号应该取一个频率适中的 高频信号,在待测信号的一个周期Tx内,记录标准频率的周期数Ns,则被测 信号的频率为:fx=fs/Nso被测信号1 TX J标准信号I NS B ADIXtINa!START E(X*t)5 iE CIXXK rv,f rkEH rGNI)DiADDA ADDB A!MX*ALEr套债或冲数模转换控制模块的部分程序如下:beginADDA=?T;y5=REGL;L0CK0ALE=?0?;START二O;LOCK二O;OE=0?;NEXT_STATEALE=T;START二1;LOCK二O;OE=O?;NEXT_STATE=ST2;WHEN ST2二ALE二O;START二O;LOCK二O;OE=?O?;IF(EOC=J T)THEN NEXT_STATE=ST3;ELSE NEXT_STATE=ST2;END IF;WHEN ST3二ALE二O;START二O;LOCK二O;OE=T;NEXT_STATEALE=?O?;START=O?;LOCK=T;OE=T;NEXT_STATENEXT_STATE=STO;END CASE;END PROCESS COM;REG:PROCESS(CLK1O)上述程序中为 ADDA为1时,为通道1,当STO=O,STARTS O;LOCK二O;OEB,则 输出A大于B的结果信号FAB=1,FA=B=O,FAB=O,FA=B=1,FAB=0o如果AB=O,FA=B=O,FA=n10000000nthenfin-r;else fin=,0,;end if;end process;end block BJ;上述程序中选取阀值为1000000,当大于阀值时,输出为高电平,低于阀值 时输出为低电平。从而实现了把正弦波,三角波转换为方波。然后输入到频率 和占空比的控制模块中。通过编程实现的比较模块见下图:经过Q 70输出的结果,直接给d 70 做为输入,然后用输入和这个阈值作比较,如果大于则输出为高电平,小于或 等于则输出为低电平。4、3频率和占空比测量模块Clk3M为系统时钟信号,clkin是输入的时钟信号,fin是经过过比较器后的 输入信号,在1S的信号下对fin信号进行计数。计数器,要求低位的计数值 溢出信号做为高位的输入信号,从而显示频率的计量。Cnpl30为计算频率 计的khz位,cnp2 3-0为频率计数位的hz位,cnp3 3-0为频率计数位的 个位,cnp430系统占用的位,cnp530和beef对应的数码管是显示占 空比,hz和khz是被系统占用的位。在fin的高电平期间就对这个基准脉冲 信号的个数进行计数同时也在fin二分频后的高电平期间对这个基准信号进 行计数,把这两个得到的计数结果进行相除运算,相除后得到的结果进行个位 和十位分离,然后再进行进制转换,送到数码管中显示。占空比部分程序如下:beginif f3=,T then nl=0;ml=0;ll=0;elseif clk7?event and clk7=,1 thenif gl-r thennl=nl+l;end if;end if;if clk7?event and clk7=,1 thenif f2=,r thenml=ml+l;end if;end if;end if;ll=mllOO/nl;end process p5;p6:process(ml,nl)beginy3(3 downto 0)=conv_std_logic_vector(12 rem 10,4);y3(7 downto 4)=conv_std_logic_vector(12/10 rem 10,4);end process p6;end block ZKB;上面程序中ml为高电平时的所得到的频率,nl为一个周期的频率。把12 和10求余,结果转换成四位二进制,得到的就为显示占空比的个位,把上述 求余后再和10求余,结果转换成四位二进制,所得到的就是显示数码管的十 位,二个就是显示占空比的二位数码管。五.各个模块仿真波行各个模块的源程序见附录,对于各个模块的仿真如下:A/D模数转换模块:如果从被测信号输入端输入幅值在IV左右频率为IKHz左右的正弦信号,如果电路正常,数码管可以显示被测信号的频率。如果数码管没有显示,或显 示值明显偏离输入信号频率,则要作进一步检测。比较模块:Simulation mode:Timing*正常情况下,可以观测到与输入频率一致、如观测不到输出波形,或观测到 的波形形状与幅值不对,则应检测这一部分电路,消除故障。如该部分电路正 常,或消除故障后频率计仍不能正常工作时,也需要进一步检查程序。频率和占空比模块测量:Simulation mode:Timing如频率关系不一致或波形不正常,则应对计数器和反馈门的各引脚电平与波 形进行检测。正常情况各电平值或波形应与电路中给出的状态一致。通过检测 与分析找出原因,消除故障。电路中Clkin为1Hz信号,Clk3M为系统时钟的 基准信号。fin是输入的脉冲信号,cnpl,p3为记数码管的khz,hz 和个位。Cnp5和beef为显示在数码管中的占空比。在仿真中也应该给一个较 高频率的时钟信号,对于占空比测量,在可以允许的范围内应竟可能的给一个 高频的基准信号,因为频率越高输出的占空比结果会越接近真实值。对总的系统仿真:正常情况各电平值应与电路中给出的状态一致。但是由于显示的是高频的信 号,在输入时往往会有一些不正确,有一些功能没有显示出来,占空比不稳定 等,我在程序中找到了一些错误。通过检测与分析找出原因,消除故障,减小 误差。六.心得体会在这实习的两周中,我了解到了很多书本上未曾有过的东西。在我多次陷入困境时 找到了出路,从而使我们能轻松完成此次设计。数字频率计是一种用十进制数字显示被 测信号频率的数字测量仪器.它的基本功能是测量正弦信号.方波信号,尖脉冲信号及其他 各种单位时间内变化的物理量。我们在此次实习中,理论结合实际,提高和培养创新能 力,为后续课程的学习,毕业设计,毕业后的工作打下基础。同时,结合实践操作,可 以体现现代化的设计方法和理念,使电子课程设计在培养我们能力方面,得到比较大的 提高。通过此次的课程设计,我对数字电子课本上的基本知识有了更深刻的领 悟和掌握。由于我设计的是数字频率计,涉及的知识面很广,所以我查阅了很 多的书籍,并上网查阅了相关的知识,才完成了这份课程设计。在这个过程中,遇到了种种的问题,但是通过老师和同学的帮助,以及查阅书籍,最终解决了 问题。本次课程设计在王老师和同学的大力帮助下,我才得以完成大学里第一次的课程设 计。在次,向老师和同学表示感谢。在课程设计中,难免有错误,希望老师和同学帮助 改正,使我的运用知识的能力有更大的提高。七.参考文献(1)现代电子系统设计 浙江大学出版社 何小艇主编(2)EDA技术使用教程 科学出版社 潘松 编著(3)电子技术基础(数字部分),康华光,高等教育出版社,1998年(4)实用电子电路手册,高等教育出版社,1992年(5)新型集成器件实用电路,杨帮文,电子工业出版社,2002年(6)电子技术课程设计书,艾永乐、付子义,焦作工学院电气系,1998年附录一:.:MN_.0.:汜id=u,句 3 g:巴在idWEsfNoRErN 尸3:打.伫4.事野尸.1 J|江4-k n豆ns C Z 1 U C 1 4可芸dNo攵 30-1nujrf4:i:巴/d tess:鼠 J Lldra量里110:尊S110(瞽l O誓 I I sf i I空学留一ao ZJlJQO一理叁 q(0:m3O.E8w-一0.&0X3 WW 30 83星-s 三。h&2S E SHI累S E S.4 晏:.E.系统总电路图附录二:模数转换模块:library ieee;use ieee.std_logic_l 164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity LL isport(yl:in std_logic_vector(7 downto 0);d,e,clk,CLK10,eoc:in std_logic;a,b,c:buffer std_logic;adclk:out std_logic;ALE,START,OE,ADDA,LOCKO:OUT STD LOGIC;y:out std_logic_vector(15 downto 0);end;architecture bhv of LL issignal clkl,clk2,clk3?clk4?clk5?clk6,clk7,fin:std_logic;signal 1:integer range 0 to 2;signal m:integer range 0 to 5;signal n:integer range 0 to 5999999;signal f,g,h:std_logic;signal dout,din:std_logic_vector(19 downto 0);signal cc:std_logic:-0,;signal nl integer range 0 to 999999;signal ml integer range 0 to 199999;signal 11,12integer range 0 to 99;signal y3,y4:std_logic_vector(7 downto 0);signal f 1,g 1,h 1,f3,f2:std logic;signal y2,y5:std_logic_vector(7 downto 0);beginad:blockTYPE STATES IS(STO,ST1,ST2,ST35ST4);signal CURRENT_STATE,NEXT_STATE:STATES:=ST0;signal REGL:std_logic_vector(7 downto 0);signal LOCK:std_logic;beginADDA=T;y5=REGL;LOCKOALE=,0,;START=,0,;LOCK=,0,;OE=,0,;NEXT_STATEALE=T;STARTv=T;L0CK=O;0E=O;NEXT_STATEALEv=0;STARTv=0;LOCKv=0;OEv=0;IF(EOC=T)THEN NEXT_STATE=ST3;ELSE NEXT_STATEALE=,0,;START=,0,;LOCK=,0,;OE=,r;NEXT_STATEALE=,0,;START=,0,;LOCK=,r;OE=,r;NEXT_STATENEXT_STATE=STO;END CASE;END PROCESS COM;REG:PROCESS(CLK10)BEGINIF(CLKIOWENT AND CLK10=T)THENCURRENT_STATE=NEXT_STArE;END IF;END PROCESS REG;LATCH1:PROCESS(LOCK)BEGINIF LOCK=l AND LOCKEVENT THEN REGL=n10000000f,thenfin-r;else fin=,0,;end if;end process;end block BJ;FP:blockbeginprocess(clk)beginif clkevent and clk-T then ifn=5999999 then clkl=not clkl;n=0;else n=n+l;if m=5 thenclk2=not clk2;m=0;else m=m+l;if 1=2 thenclk3=not clk3;l=0;else 1=1+1;end if;end if;end if;end if;end process;end block FP;频率计模块beginpl:process(clkl)beginif clkrevent and clkl=T then clk4=not clk4;end if;end process pl;p2:process(clkl,clk4)beginif clkl-O1 and clk4=O theng-r;else g=O;end if;f=not clk4;h=clk4;end process p2;p3:process(f)beginif fevent and then din=dout;c=cc;end if;end process p3;p4:process(fin,g,h)beginif g-T then dout,0,);cc=,0,;elsif finfevent and fin-T thenif h-T and cc=O thenif dout(3 downto 0)=1001 thenif dout(7 downto 4)=1001”thenif dout(ll downto 8)=n1001n thenif dout(15 downto 12)=n0010n thenif dout(19 downto 16)=n0001n thencc-r;-else dout(19 downto 16)=dout(19 downto 16)+T;cc=O;-end if;dout(15 downto 12)=n0000n;else dout(15 downto 12)=dout(15 downto 12)+T;end if;dout(ll downto 8)-f0000n;else dout(ll downto 8)=dout(ll downto 8)+T;end if;dout(7 downto 4)=n0000n;else dout(7 downto 4)=dout(7 downto 4)+1;end if;dout(3 downto 0)=n0000n;else dout(3 downto 0)=dout(3 downto 0)+T;end if;end if;end if;end process p4;end block PLJS;占空比模块beginpl:process(fin)beginif finevent and fin-T thenclk6=not clk6;end if;end process pl;p2:process(fin,clk6)beginif fin=,0,and clk6-0f then f3-T;else f3-0,;end if;if fin-T and clk6-I1 then f2-T;else f2=,01;end if;fl=not clk6;gl=clk6;end process p2;p3:process(fl)beginif frevent and fl-T then12=11;end if;end process p3;p4:process(a,b)beginif a-T then clk7=clk2;elsif b-T then clk7=clk3;end if;end process p4;p5:process(f3,gl,clk7)beginif f3-T then nl=0;ml=0;ll=0;elseif clk7fevent and clk7=T thenif gl-T then nl=nl+l;end if;end if;if clk7fevent and clk7-T thenif f2-T then ml=ml+l;end if;end if;end if;ll=ml*100/nl;end process p5;p6:process(ml,nl)beginy3(3 downto 0)=conv_std_logic_vector(12 rem 10,4);y3(7 downto 4)=conv_std_logic_vector(12/l0 rem 10,4);end process p6;end block ZKB;XS:blockbeginprocess(d,c,e)beginif e-T theny(7 downto 0)=y3;y(15 downto 8)=M00000000;elsif d-lf thenif c=T then y=n0000000000000000n;a=,0,;b=,0,;elseif din(19 downto 16户”0000”theny=din(15 downto 0);a-T;b-01;else y=din(19 downto 4);b-r;a-0end if;end if;end if;end process;end block XS;end;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服