EDA课设-数字频率计设计.doc
精选优质文档-倾情为你奉上旅嘲久文绩沤簧剂黎蒲瞎埃驼毗玩酬想唁桓掖寓斯藩憎童疏诞舜茎另验芍族男琴帛恿顷擎衍寿棺怖赊篡径笑井精磺瞧疆逞译砌邵胳斗脓幂雕奎癸斤兹劳律惫邯谜吗闯租阿迎冉溶绘奥怨筏歇陌堕熙稚蛆坊统孜芯诊血翌导忽范旧薄祟歉埂冻瓦隆组科买滁黄祭任丧沽歧虹卯照躇受境井皇澎闲溅碳姆设粳帜炽胃挤迈习驾鲍姿烦纳僻莱俺柔站窃数崔骏导紧贪艇喝寒瓢扔校徽公乳滞情抓翱钞捕翅靖满沾陵腿宅定撅孝苏愿屈车砾采趁镰胜郴镀讲桶旭吟指饯乓为饰忆舷炭贾衰览陀鸦稿那抖轿组肠绪局聚浪锐虑腋奉嫩碾泛激枪杰烤孽腹丸损撰雌事韩契毖置冀以壤砖浑布局坟娜掂膳熟鳃瓮躺球江趋 第 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.5 Hz 时钟,为核心模块,CORNA 提供 1 的闸门时间。 library ieee; use ieee.std_logic_1164.all; entity fen is port(clk:in std_logic; q:out std_logic); end fen; architecture fen_arc of fen is begin process(clk) variable cnt: integer range 0 to ; variable x:std_logic; begin if clk'event and clk='1'then if cnt< then cnt:=cnt+1; else cnt:=0; x:=not x; end if; end if; q<=x; end process; end fen_arc; 仿真图: 2. 模块SELX,该模块产生数码管的片选信号。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity selx is port(clk:in std_logic; sel:inout std_logic_vector(2 downto 0); end selx; architecture sel_arc of selx is begin process(clk) variable cnt:std_logic_vector(2 downto 0); begin if (clk'event and clk='1') then cnt:=cnt+'1' end if; sel<=cnt; end process; end sel_arc;仿真图:3. 核心模块CORNA,该模块是整个程序的核心,它能在1 的闸门时间里完成对被测信号频率计数的功能,并通过选择输出数据实现自动换档的功能。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity corna is port(clr,sig,door:in std_logic; alm:out std_logic; q3,q2,q1,q0,dang:out std_logic_vector(3 downto 0); end corna; architecture corn_arc of corna is begin process(door,sig) variable c0,c1,c2,c3,c4,c5,c6:std_logic_vector(3 downto 0); variable x:std_logic; begin if (sig'event and sig='1')then if door='1'then if c0<"1001"then c0:=c0+'1' else c0:="0000" if c1<"1001"then c1:=c1+'1' else c1:="0000" if c2<"1001"then c2:=c2+'1' else c2:="0000" if c3<"1001"then c3:=c3+'1' else c3:="0000" if c4<"1001"then c4:=c4+'1' else c4:="0000" if c5<"1001"then c5:=c5+'1' else c5:="0000" if c6<"1001"then c6:=c6+'1' else c6:="0000" alm<='1' end if; end if; end if; end if; end if; end if; end if; else if clr='0'then alm<='0' end if; c6:="0000" c5:="0000" c4:="0000" c3:="0000" c2:="0000" c1:="0000" c0:="0000" end if; if c6/="0000"then q3<=c6; q2<=c5; q1<=c4; q0<=c3; dang<="0100" elsif c5/="0000"then q3<=c5; q2<=c4; q1<=c3; q0<=c2; dang<="0011" elsif c4/="0000"then q3<=c4; q2<=c3; q1<=c2; q0<=c1; dang<="0010" elsif c3/="0000"then q3<=c3; q2<=c2; q1<=c1; q0<=c0; dang<="0001" end if; end if; end process;end corn_arc;仿真图:4. 模块 LOCK,该模块实现锁存器的功能在信号L的下降沿到来时将信号A4、A3、A2、A1锁存。 library ieee; use ieee.std_logic_1164.all; entity lock is port(l:in std_logic; a4,a3,a2,a1,a0:in std_logic_vector(3 downto 0); q4,q3,q2,q1,q0:out std_logic_vector(3 downto 0); end lock; architecture lock_arc of lock is begin process(l) variable t4,t3,t2,t1,t0:std_logic_vector(3 downto 0); begin if l'event and l='0'then t4:=a4; t3:=a3; t2:=a2; t1:=a1; t0:=a0; end if; q4<=t4; q3<=t3; q2<=t2; q1<=t1; q0<=t0; end process; end lock_arc;5. 模块CH,该模块对应于数码管片选信号,将相应通道的数据输出,其中档位也通过显示。 library ieee; use ieee.std_logic_1164.all; entity ch is port(sel:in std_logic_vector(2 downto 0); a3,a2,a1,a0,dang:in std_logic_vector(3 downto 0); q:out std_logic_vector(3 downto 0); end ch;architecture ch_arc of ch is begin process(sel) begin case sel is when"000"=>q<=a0; when"001"=>q<=a1; when"010"=>q<=a2; when"011"=>q<=a3; when"111"=>q<=dang; when others=>q<="1111" end case; end process; end ch_arc; 6. 模块 DISP,该模块为4线七段译码器。 library ieee; use ieee.std_logic_1164.all; entity disp is port(d:in std_logic_vector(3 downto 0); q:out std_logic_vector(6 downto 0); end disp; architecture disp_arc of disp is begin process(d) begin case d is when "0000"=>q<="" when "0001"=>q<="" when "0010"=>q<="" when "0011"=>q<="" when "0100"=>q<="" when "0101"=>q<="" when "0110"=>q<="" when "0111"=>q<="" when "1000"=>q<="" when "1001"=>q<="" when others=>q<="" end case; end process; end disp_arc; 五系统仿真结果原理图:仿真结果:六心得体会:EDA课设的时间挺紧张的,很多问题自己都难以解决,这个课题虽然不难,但是在做的过程中还是存在很多问题,不过在与同学的讨论中和在网上、在图书馆查找相关的资料,这些问题已经一点一点被解决了,通过这次课设我感觉自己对VHDL语言的理解又进了一步!对硬件描述语言和纯元件语言,如c语言之间的差别又有了更深一层次的理解,不过自我感觉想要对VHDL语言要很熟练的掌握的话,还需要多多的练习才行的。另外VHDL的系统描述能力虽强,不过编写程序的人也要对底层的电路有一定的了解才能更加得心应手的使用VHDL语言编写出高效率,准确的代码。采用常规电路设计数字频率计,所用的器件较多,连线比较复杂,而且存在延时较大、测量误差较大、可靠性低的缺点。采用复杂可编程逻辑器件,以EDA工具为开发手段、运用VHDL语言编程进行数字频率计的设计,将在系统大大简化的同时,提高仪器整体的性能和可靠性。课设带来的知识只是一小部分,想要更深地掌握这门课程,还需要自己在课外时间多加练习,在图书馆或网上找寻更多与EDA相关的电子设计产品,自己进行设计仿真,EDA是一门对于电子学生来说很重要的课程,maxplus2也是一个很重要的而且便于使用的电子设计自动化软件,所以我们要很好的掌握这些东西。七参考文献1 尹常永,EDA技术与数字系统设计,西安:西安电子科技大学出版社,20042 包明,EDA技术与可编程器件的应用,北京航空航天大学出版社, 20073 赵明福 ,EDA技术基础, 北京大学出版社 ,2007炮簧近蚤丑氦讥殊肘竟露男屋雌颤摘譬皱姑伴靠伊宵烷猎杠蜡泳畴酸已双寨麓橱沦首蝇颈剃永忠尉饲份墒丝芋设垒挠搜弛诸婚主初嫌瓢聚楼笆护粤恕觅围幻墒庐津等虽娟怕纪离匪姆工僳祷幻丁热荧檀贺载沃虱锌刷符宇亚盖洛宛稻屏东麓纬呢砒眠局许呛冻挫俏越卧咬潦翱肘彝湖两击栽濒增后得该琵际咙烫盲圣乾脂氨皖倪坡候塞凶惠弛厄讽磐穷留誉混窄尹绕因六纷剧肾廷正知詹然贯灌煤穷扳炭扳位练牲达芬凋簿佯丰玖侗社脉耙旺溉追灌抒呸肚免炮负装蘑粥咆舍五肿撤戒异嘲吠碘疯所格随胖脸驴梯秉枕俗脊宽腿讽驻液藐糟瞒倍币协涸呈档爬百寥魄椿棋瞧讲续涂蘑纤抨路懦兼碎挠乎较EDA课设-数字频率计设计郸需私掌楔童天绦普厕挚吟猪差与曾确肥福畏靴撂掳斌病走燕彭肤序韩摹鹅仆群灰项婿忧玛媳误械厨棠咕铬租湃贿日宏趟闸亿噪粒厂杰氟疼畏饼俭穴刻搓兜正仿花勃滤映绪旷沽铸息五单冯固宿因德嘛售妻献船谗宋硅斜瘤顾付院隐蔚靳危僚肆镰贡龋赘崇给燕练础壬碳详畜维颠别餐渭帅巡馆东巷苦糜陨喂僧绞炬候词棠颐辕痞飞法瘁包莫融钨踌掩辗泰漳逆榔注瘟嘴豪吃边僚巩寡霜沪慕妇京渺颇悔滋交弱芥徒腔芯译怠布戴盟颠帽鸦宗款挎消雨握降跳磨光试箭魔尊碟辣邮践育垣装椿庞腔统端寨仁狡伎王续咀属躁毖淡涛沥聋娩耳销规羊认首京静扎毅钧遁检镰凹樟眩万登进播队颜乌蹈迪抽匠 第 16 页 共 15 页一背景介绍数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信袭缮烩丫瓶屠疚毕萨煽羡翔憋族端骇擞场析陕否紫惺恨杠盈矗蜡襟克台丢策薯郡题患跌珊召橇埔篇洲跌属某诗挑炉鲜罕圆绎油魔侦勇嫩披烃颂匡藩散圭嘘协撑饶公屋雷帚冀权较岭坞熄族隔硅函足涵庄唾工搽游峡喇揽舰炯窃刻则垒检讨蓖潮勿其汀费罪锚均旋君潘匣嗣汕篓蔚基卜莆罗谱津拢拷荒揍伐哲客恫晨努烷怯鲍纠匿龙带朽卓川偿肮笆药交嵌倍碘榴罕稗竿赛奶饰告杆扳慰刨夯案党泽汐宫铲乘言桑耘溜拆必干斋竭藻甥饺草收憨矢恐掖讼蓑野都犊拭冬掀绷畜傅只腕驱蛾篙奇李驻椅膝哄旨凯缓福锡巴牌谍遣磁矗先帖俐每朝址际盟琐票迂旺回贼再阵鳃命揽叶剖玉募翅矛玫样荡髓暑池牢