欢迎来到天天文库
浏览记录
ID:35941421
大小:228.54 KB
页数:13页
时间:2019-04-26
《实验四简单频率计地制作》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实用文案一.实验目的1.熟悉Quarters-II软件的使用方法;2.了解VHDL语言编程;3.了解基本的自顶向下模块化设计思想;4.设计频率计并在软件上进行仿真;二.设计的基本原理2.1基本原理:数字频率计是用数字显示被测信号的频率的仪器,被测信号可以是正弦波,方波或者其他周期性变化的信号,它的基本原理是时基信号发生器提供标准的时基脉冲信号,若其周期为1s则门控电路的输出信号持续时间亦准确到1s。闸门电路有标准秒信号控制,当秒信号到来时闸门开通,信号通过闸门送到计数译码显示电路,秒信号结束时闸门关闭,计数器停止计数,由于计数器记得脉冲数N的是一秒内的累积数,
2、所以被测频率是NHZ。闸门时间可以取大于或者小于1秒的值,测得的频率时间间隔与闸门时间的取值成正比,在这里取的闸门时间为1s。数字频率计由分频器,片选电路,计数器,锁存器,译码电路和显示电路作为主要组成部分。三.实验内容及步骤在Quarters-II软件中采用文本编辑的方式(VHDL),生成如下各个模块的元器件。编译完成后点击file-creat/update-creatsymbolfilesforcurrentfile.注意工程名与实体名要相同。3.1分频电路模块分频器在总电路中有两个作用。由总图框图中分频器有两个输出,一个给计数器,一个给锁存器。时钟信号经
3、过分频电路形成了20分频后的门信号。另一个给锁存器作锁存信号,当信号为低电平时就锁存计数器中的数。分频模块的程序:libraryieee;useieee.std_logic_1164.all;entityfenisport(clk:instd_logic;q:outstd_logic);endfen;architecturefen_arcoffenisbeginprocess(clk)variablecnt:integerrange0to9;variablex:std_logic;beginifclk'eventandclk='1'thenifcnt<9the
4、ncnt:=cnt+1;elsecnt:=0;x:=notx;endif;标准文档实用文案endif;q<=x;endprocess;endfen_arc;分频电路图如图2.1图3.1分频电路图3.2片选信号电路模块这个电路有两个用途:一是为后面的片选电路产生片选信号,二是为译码模块提供选择脉冲信号。片选信号模块的程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityselisport(clk:instd_logic;q:outstd_logic_vecto
5、r(2downto0));endsel;architecturesel_arcofselisbeginprocess(clk)variablecnt:std_logic_vector(2downto0);beginifclk'eventandclk='1'thencnt:=cnt+1;endif;q<=cnt;endprocess;endsel_arc;电路图如图2.2标准文档实用文案图3.2片选信号电路图3.3计数器模块计数器模块为该电路中的核心模块,它的功能是:当门信号为上升沿时,电路开始计算半个周期内被测信号通过的周期数,到下升沿后结束。然后送给锁存器锁
6、存。计数器模块的程序: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)variablec3,c2,c1,c0:std_logic_vect
7、or(3downto0);variablex:std_logic;beginifsig'eventandsig='1'thenifclr='0'thenalm<='0';c3:="0000";c2:="0000";c1:="0000";c0:="0000";elsifdoor='0'thenc3:="0000";c2:="0000";c1:="0000";c0:="0000";elsifdoor='1'thenifc0<"1001"thenc0:=c0+1;else标准文档实用文案c0:="0000";ifc1<"1001"thenc1:=c1+1;elsec
8、1:="0000";ifc2<"100
此文档下载收益归作者所有