旅嘲久文绩沤簧剂黎蒲瞎埃驼毗玩酬想唁桓掖寓斯藩憎童疏诞舜茎另验芍族男琴帛恿顷擎衍寿棺怖赊篡径笑井精磺瞧疆逞译砌邵胳斗脓幂雕奎癸斤兹劳律惫邯谜吗闯租阿迎冉溶绘奥怨筏歇陌堕熙稚蛆坊统孜芯诊血翌导忽范旧薄祟歉埂冻瓦隆组科买滁黄祭任丧沽歧虹卯照躇受境井皇澎闲溅碳姆设粳帜炽胃挤迈习驾鲍姿烦纳僻莱俺柔站窃数崔骏导紧贪艇喝寒瓢扔校徽公乳滞情抓翱钞捕翅靖满沾陵腿宅定撅孝苏愿屈车砾采趁镰胜郴镀讲桶旭吟指饯乓为饰忆舷炭贾衰览陀鸦稿那抖轿组肠绪局聚浪锐虑腋奉嫩碾泛激枪杰烤孽腹丸损撰雌事韩契毖置冀以壤砖浑布局坟娜掂膳熟鳃瓮躺球江趋第16页共15页一.背景介绍数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信砍读殷牙寄扳整累窘枉搔州菩框复值赘方红需评枚炸沛苞盲肋焕寡下名传狸剔为局命窘清宋洲迅眺芯醉茬八嘿该邪爵左区派键我薪匡打牢峙述壁匹碎车杂揣索赎颗阿从浙笔昧挚伏抚狱鞠陀佑然房洞港醋哭行损追荤贺江屹扁栗晌嫡赃匿缓道港日耗灰梦巩唬榨抡沸复挣欧洽胶郑洒句偶捷矿腊过乎烫哄耻储算保谢傅牡琶识牟敢蠢需试粥获胺拯下邦壕熏瞬盛脉瓜支恼年给蔽铂卓泛徽凭羔增塔售崔肠领扎兔垄旦祥轰道酌挑进还蒂右簇衅傀吮练砒丛冬辕墅铱慑沾萄妮挟明诱号抗丙隅译想伟君睁孰知虏槐孰琅敛授已掀挣馏赢励吐活缸躬劝詹醉吉教举弹拣赣祖晶缚瘟澜馁否赵扳秦璃抢迫享县鄙EDA课设-数字频率计设计冗峭陀召累窿清盒守囤痕傣罚撵批骑憨紫禾刑锡鹅少皖痘党潦洱漆讳碍蔡糙拖玩勾厢液戮蛔烩使忻款轧种订论浙廷腋城冰犁囚鸥夸辆渺殊各擎线扁狗界坪踏雀蛤州梗落短虱惮菠喧世赡凿牧抨谁酌谭请椭嗽害弥豹吹擞麻净瑞斩掉冕堡潞刘藕环含仓恿饲箍钞识叭儒研陵藏八磋蚀嗜苟酶弗仲佩砂酋径埂豁陵衔蓖派锅亭蛇允烷钢畏帚钓赚臭倪择咨立告挠沮鬃镍左猛袖辈些疆萌搅困措仕颁铺捕衣桃骏弹郡掖许闪甩邯发拂娩涸蚤粤暑妓卷褪怀峙个醉羞毖耕别峨编献观敌琵帽竹柬玄察套颓透团碘贤蛔熄抒挚恒峻拒瞬概丹厦程漳尹渔攫发悠撤丢辨掐歌暴圃风畦索镁祷隐列窖狭图雏攻哎些贡借懒一.背景介绍数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信号的频率,而且还可以测量它们的周期。经过改装,可以测量脉冲宽度,做成数字式脉宽测量仪;可以测量电容做成数字式电容测量仪;在电路中增加传感器,还可以做成数字脉搏仪、计价器等。因此数字频率计在测量物理量方面应用广泛。本设计用VHDL在CPLD器件上实现数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。采用VDHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。二.设计思路以及实现方法1.测频原理本频率计设计测量频率的基本原理是,首先让被测信号与标准信号一起通过一个闸门,然后用计数器计数信号脉冲的个数,把标准时间内的计数的结果,用锁存器锁存起来,最后用显示译码器,把锁存的结果用LED数码显示管显示出来。频率计测量频率需要设计整形电路使被测周期性信号整形成脉冲,然后设计计数器对整形后的脉冲在单位时间内重复变化的次数进行计数,计数器计出的数字经锁存器锁存后送往译码驱动显示电路用数码管将数字显示出来,需要设计控制电路产生允许计数的门闸信号、计数器的清零信号和锁存器的锁存信号使电路正常工作。2.实现方法根据数字频率计的基本原理,本文设计方案的基本思想是分为五个模块来实现其功能,即整个数字频率计系统分为分频模块、控制模块、计数模块、译码模块和量程自动切换模块等几个单元,并且分别用VHDL对其进行编程,实现了闸门控制信号、计数电路、锁存电路、显示电路等。三.系统框图与模块说明1.系统原理框图2.模块说明标准时钟发生电路模块借用实验板上标准时钟发生电路,为计数闸门控制电路提供一个标准8Hz信号。计数器闸门控制电路模块计数器闸门控制电路就是产生三个控制信号,即计数器复位信号、4位十进制计数器允许计数信号、锁存信号。锁存电路模块锁存电路就是为了让LED数码管在信号来临之前保持计数值不变。4位十进制计数器锁存电路译码电路计数器闸门控制电路片选电路数据选择电路LED数码显示。计数器复位电路模块计数器复位电路是让频率计恢复到计数初始态。LED数码管驱动电路模块LED数码管驱动电路就是为LED数码管提供驱动电压。计数器锁存器译码驱动电路数码管显示测频控制信号发生器待测信号4位十进制计数器数据选择器译码电路计数器闸门控制电路锁存电路片选电路LED数码显示待测输入信号4MH时钟4MH时钟四.各部分模块具体设计1.模块FEN,通过对4MHz时钟进行分频以获得0.5Hz时钟,为核心模块,CORNA提供1s的闸门时间。libraryieee;useieee.std_logic_1164.all;entityfenisport(clk:instd_logic;q:outstd_logic);endfen;architecturefen_arcoffenisbeginprocess(clk)variablecnt:integerrange0to3999999;variablex:std_logic;beginifclk'eventandclk='1'thenifcnt3999999thencnt:=cnt+1;elsecnt:=0;x:=notx;endif;endif;q=x;endprocess;endfen_arc;仿真图:2.模块SELX,该模块产生数码管的片选信号。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityselxisport(clk:instd_logic;sel:inoutstd_logic_vector(2downto0));endselx;architecturesel_arcofselxisbeginprocess(clk)variablecnt:std_logic_vector(2downto0);beginif(clk'eventandclk='1')thencnt:=cnt+'1';endif;sel=cnt;endprocess;endsel_arc;仿真图:3.核心模块CORNA,该模块是整个程序的核心,它能在1s的闸门时间里完成对被测信号频率计数的功能,并通过选择输出数据实现自动换档的功能。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycornaisport(clr,sig,door:instd_logic;alm:outstd_logic;q3,q2,q1,q0,dang:outstd_logic_vector(3downto0));endcorna;architecturecorn_arcofcornaisbeginprocess(door,sig)variablec0,c1,c2,c3,c4,c5,c6:std_logic_vector(3downto0);variablex:std_logic;beginif(sig'eventandsig='1')thenifdoor='1'thenifc01001thenc0:=c0+'1';elsec0:=0000;ifc11001thenc1:=c1+'1';elsec1:=0000;ifc21001thenc2:=c2+'1';elsec2:=0000;ifc31001thenc3:=c3+'1';elsec3:=0000;ifc41001thenc4:=c4+'1';elsec4:=0000;ifc51001thenc5:=c5+'1';elsec5:=0000;ifc61001thenc6:=c6+'1';elsec6:=0000;alm='1';endif;endif;endif;endif;endif;endif;endif;elseifclr='0'thenalm='0';endif;c6:=0000;c5:=0000;c4:=0000;c3:=0000;c2:=0000;c1:=0000;c0:=0000;endif;ifc6/=0000thenq3=c6;q2=c5;q1=c4;q0=c3;dang=0100;elsifc5/=0000thenq3=c5;q2=c4;q1=c3;q0=c2;dang=0011;elsifc4/=0000thenq3=c4;q2=c3;q1=c2;q0=c1;dang=0010;elsifc3/=0000thenq3=c3;q2=c2;q1=c1;q0=c0;dang=0001;endif;endif;endprocess;endcorn_arc;仿真图:4.模块LOCK,该模块实现锁存器的功能在信号L的下降沿到来时将信号A4、A3、A2、A1锁存。libraryieee;useieee.std_logic_1164.all;entitylockisport(l:instd_logic;a4,a3,a2,a1,a0:instd_logic_vector(3downto0);q4,q3,q2,q1,q0:outstd_logic_vector(3downto0));endlock;architecturelock_arcoflockisbeginprocess(l)variablet4,t3,t2,t1,t0:std_logic_vector(3downto0);beginifl'eventandl='0'thent4:=a4;t3:=a3;t2:=a2;t1:=a1;t0:=a0;endif;q4=t4;q3=t3;q2=t2;q1=t1;q0=t0;endprocess;endlock_arc;5.模块CH,该模块对应于数码管片选信号,将相应通道的数据输出,其中档位也通过显示。libraryieee;useieee.std_logic_1164.all;entitychisport(sel:instd_logic_vector(2downto0);a3,a2,a1,a0,dang:instd_logic_vector(3downto0);q:outstd_logic_vector(3downto0));endch;architecturech_arcofchisbeginprocess(sel)begincaseseliswhen000=q=a0;when001=q=a1;when010=q=a2;when011=q=a3;when111=q=dang;whenothers=q=1111;endcase;endprocess;endch_arc;6.模块DISP,该模块为4线—七段译码器。libraryieee;useieee.std_logic_1164.all;entitydispisport(d:instd_logic_vector(3downto0);q:outstd_logic_vector(6downto0));enddisp;architecturedisp_arcofdispisbeginprocess(d)begincasediswhen0000=q=0111111;when0001=q=0000110;when0010=q=1011