压控振荡器与简易数字频率计的设计一.设计要求设计一个具有如下功能的简易频率计。1)可以测量压控振荡器产生的频率,用4位数码管显示2)测量结果直接用十进制数值显示3)被测信号是压控振荡器产生的方波脉冲信号,根据设计的压控振荡器确定电压值4)具有超量程警告(可以用LED灯显示)设计采用NE555去实现压控振荡器可提供的元器件:NE555、10K电阻、1nF电容、可变电阻二.压控振荡器设计原理压控振荡器(voltage-controlledoscillator,VCO)是一种以电压输入来控制振荡频率的电子振荡电路。它输出的振荡的频率会随着输入的直流电压的改变而改变,通过这个特性可以用压控振荡器产生需要的可变频率。本次设计我们采用NE555去实现压控振荡器。1)NE555是一个用途很广且相当普遍的计时IC,只需少数的电阻和电容,便可产生数位电路所需的各种丌同频率信号。一般多应用于单稳态多谐振荡器(MonostableMultivibrator)及无稳态多谐振荡器(AstableMultivibrator)。2)NE555的管脚图接地)-地线(戒共同接地),通常被连接到电路共同接地。触发点)-这个脚位是触发NE555使其启动它的时间周期。触发信号上缘电压须大于2/3VCC,下缘须低于1/3VCC。输出)-当时间周期开始555的输出脚位,移至比电源电压少1.7伏的高电位。周期的结束输出回到O伏左右的低电位。于高电位时的最大输出电流大约200mA。重置)-一个低逻辑电位送至这个脚位时会重置定时器和使输出回到一个低电位。它通常被接到正电源戒忽略丌用。控制)-这个接脚准许由外部电压改变触发和闸限电压。当计时器经营在稳定戒振荡的运作方式下,这输入能用来改变戒调整输出频率。重置锁定)-Pin6重置锁定并使输出呈低态。当这个接脚的电压从1/3VCC电压以下移至2/3VCC以上时启动这个动作。放电)-这个接脚和主要的输出接脚有相同的电流输出能力,当输出为ON时为LOW,对地为低阻抗,当输出为OFF时为HIGH,对地为高阻抗。-这是555个计时器IC的正电源电压端。供应电压的范围是+4.5伏特(最小值)至+16伏特(最大值)。三.数字频率计设计原理根据系统设计要求,需要实现一个4位十进制数字频率计,主要由脉冲发生器电路、测频控制信号发生器电路、待测信号计数模块电路、锁存器、七段译码驱动电路及扫描显示电路等模块组成。频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。为此,测频控制信号发生器应设置一个控制信号时钟CLK,一个计数使能信输出端EN、一个不EN输出信号反向的锁存输出信号LOCK和清零输出信号CLR。若CLK的输入频率为1HZ,则输出信号端EN输出一个脉宽恰好为1秒的周期信号,可以作为闸门信号用。由它对频率计的每一个计数器的使能端进行同步控制。当EN高电平时允许计数,低电平时停止计数,并保持所计的数。在停止计数期间,锁存信号LOCK的上跳沿将计数器在前1秒钟的计数值锁存进4位锁存器LOCK,由7段译码器译出并稳定显示。锁存信号之后,清零信号CLR对计数器进行清零,为下1秒钟的计数操作作准备。四.压控振荡器电路图Multisim仿真原理图实际连接电路示波器显示波形(失真略有些严重)五.数字频率计VerilogHDL代码与实现频率计数图Verilog语言设计代码`timescale1ns/1nsmodulepinlvji(oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5,clk_50M,clk_1Hz,reset,signal_out);inputclk_50M,reset;//50MHz时钟输入、复位output[6:0]oHEX0,oHEX1,oHEX2,oHEX3,oHEX4,oHEX5;//数码管0-5,分别显示个、十、百、千、万、十万位的数字outputregclk_1Hz;inputsignal_out;regsignal_in;reg[29:0]cnt;reg[29:0]cnt1;regcount_en;//计数允许,count_en=1时计数,下降沿到来时锁存regload;reg[3:0]ge,shi,bai,qian,wan,shiwan;regcout1,cout2,cout3,cout4,cout5;reg[3:0]q0,q1,q2,q3,q4,q5;wireclr;always@(posedgeclk_50M)//50M分频产生1Hz时钟begincnt=cnt+1;if(cnt=25_000_000)clk_1Hz=0;elseif(cnt==50_000_000)cnt=0;elseclk_1Hz=1;end/*被测信号signal_out作为个位的输入,,signal_out上升沿到来时ge位+1;进位输出是cout1,作为十位的输入*/always@(posedgesignal_outorposedgeresetorposedgeclr)beginif(reset)ge=0;elseif(clr)ge=0;elsebeginif(count_en)beginif(ge==9)beginge=0;cout1=1;endelsebeginge=ge+1;cout1=0;endendendend/*cout1作为十位的输入,cout1上升沿到来时shi位+1;进位输出是cout2,作为百位的输入*/always@(posedgecout1orposedgeresetorposedgeclr)beginif(reset)shi=0;elseif(clr)shi=0;elsebeginif(count_en)beginif(shi==9)beginshi=0;cout2=1;endelsebeginshi=shi+1;cout2=0;endendendend/*cout2作为百位的输入,cout2上升沿到来时bai位+1;进位输出是cout3,作为千位的输入*/always@(posedgecout2orposedgeresetorposedgeclr)beginif(reset)bai=0;elseif(clr)bai=0;elsebeginif(count_en)beginif(bai==9)beginbai=0;cout3=1;endelsebeginbai=bai+1;cout3=0;endendendend/*cout3作为千位的输入,cout3上升沿到来时qian位+1;进位输出是cout4,作为万位的输入*/always@(posedgecout3orposedgeresetorposedgeclr)beginif(reset)qian=0;elseif(clr)qian=0;elsebeginif(count_en)beginif(qian==9)beginqian=0;cout4=1;endelsebeginqian=qian+1;cout4=0;endendendendalways@(posedgecout4orposedgeresetorposedgeclr)beginif(reset)wan=0;elseif(clr)wan=0;elsebeginif(count_en)beginif(wan==9)beginwan=0;cout5=1;endelsebeginwan=wan+1;cout5=0;endendendendalways@(posedgecout5orposedgeresetorposedgeclr)beginif(reset)shiwan=0;elseif(clr)shiwan=0;elsebeginif(count_en)beginif(shiwan==9)beginshiwan=9;endelsebeginshiwan=shiwan+1;endendendend/*****count_en=1时计数,count_en=0不允许计数********/always@(posedgeclk_1Hz,posedgereset)beginif(reset)begincount_en=0;endelsebegincount_en=~count_en;load=~count_en;endend/*****count_en下降沿到来时锁存数据****/always@(negedgecount_en)beginq0=ge;q1=shi;q2=bai;q3=qian;q4=wan;q5=shiwan;#2if(q5=1)beginq0=1;q1=1;q2=1;q3=1;q4=1;q5=1;endendassignclr=~clk_1Hz&load;/****调用数码管显示*****/led7su0(q0,oHEX0);led7su1(q1,oHEX1);led7su2(q2,oHEX2);led7su3(q3,oHEX3);led7su4(q4,oHEX4);led7su5(q5,oHEX5);endmodulemoduleled7s(datain,ledout);input[3:0]datain;outputreg[6:0]ledout;alwaysbegincase(datain)0:ledout=7'b1000000;1:ledout=7'b1111001;2:ledout=7'b0100100;3:ledout=7'b0110000;4:ledout=7'b0011001;5:ledout=7'b0010010;6:ledout=7'b0000010;7:ledout=7'b1111000;8:ledout=7'b0000000;9:ledout=7'b0010000;default:ledout=7'b1000000;endcaseendendmodule数字频率计数器实现计数图(输入方波周期信号频率为200Hz)六.实验心得体会通过设计并连接压控振荡器,了解了NE555芯片的用处,各管脚的功能,并锻炼了动手能力。通过频率计的设计试验,对频率计有了更深的认识,尤其是对频率计的工作原理以及各功能模块的实现有深入了解。此外,还熟悉了QuartusⅡ软件的用法和VHDL/Verilog的编程环境,通过本次的设计对硬件描述语言和纯元件语言,如c语言之间的差别又有了更深一层次的理解,想要对Verilog语言要很熟练的掌握的话,还需要多多的练习才行。