EDA《数字频率计》课程设计报告专业:电子信息工程(自动化方向)班级:姓名:学号:指导教师:年月日1目录一、EDA课程设计要求--------------------------------2二、优点及用途-------------------------------------3三、原理图、VHDL语言程序及仿真波形---------------------3四、总结-------------------------------------------五、参考书------------------------------------------2一EDA课程设计要求1)课程设计题:数字频率计2)任务及要求1、设计一个能测量方波信号的频率的频率计。2、测量的频率范围是0999999Hz。3、结果用十进制数显示。4、按要求写好设计报告(设计报告内容包括:引言,方案设计与论证,总体设计,各模块设计,调试与数据分析,总结)。3)教学提示1、脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。所以,在1秒时间内计数器所记录的结果,就是被测信号的频率。2、被测频率信号取自实验箱晶体振荡器输出信号,加到主控门的输入端。3、再取晶体振荡器的另一标准频率信号,经分频后产生各种时基脉冲:1ms,10ms,0.1s,1s等,时基信号的选择可以控制,即量程可以改变。4、时基信号经控制电路产生闸门信号至主控门,只有在闸门信号采样期间内(时基信号的一个周期),输入信号才通过主控门。5f=N/T,改变时基信号的周期T,即可得到不同的测频范围。5、当主控门关闭时,计数器停止计数,显示器显示记录结果,此时控制电路输出一个置零信号,将计数器和所有触发器复位,为新的一次采样做好准备。6、改变量程时,小数点能自动移位。4)设计报告要求1、说明设计作品的功能、特点、应用范围;2、方案对比,确定方案。3、电路工作原理、操作方法;4、编程方法、程序框图及关键程序清单。5、课程设计总结。3二、优点及用途数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字,显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率计。三、原理图、VHDL语言程序及仿真波形1原理图编译成功后其波形图如下:2、信号发生器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityseleis4port(clk:instd_logic;jian:instd_logic_vector(1downto0);oclk:outstd_logic);end;architectures_1ofseleissignalfull:std_logic;signalt:integerrange0to5999999;beginP1:process(jian,t)begincasejianiswhen00=t=5999999;--产生时基脉冲1swhen01=t=599999;--产生时基脉冲100mswhen10=t=59999;--产生时基脉冲10mswhen11=t=5999;--产生时基脉冲1mswhenothers=null;endcase;endprocessP1;P2:process(clk,t)variables:integerrange0to5999999;beginif(clk'eventandclk='1')thenifstthens:=s+1;elses:=0;endif;endif;ifs=tthenfull='1';elsefull='0';5endif;endprocessP2;P3:process(full)variablec:std_logic;beginiffull'eventandfull='1'thenc:=notc;ifc='1'thenoclk='1';elseoclk='0';endif;endif;endprocessP3;end;其仿真波形为:3、测频libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycpisport(clkk:instd_logic;en,rst,load:outstd_logic);end;architecturecp_1ofcpissignaldiv2:std_logic;beginprocess(clkk)6beginif(clkk'eventandclkk='1')thendiv2=notdiv2;endif;endprocess;process(clkk,div2)beginif(clkk='0'anddiv2='0')thenrst='1';elserst='0';endif;endprocess;load=notdiv2;en=div2;end;其仿真波形为:4、计数器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityjishuisport(rst,en,clk:instd_logic;Q:outstd_logic_vector(3downto0);cout:outstd_logic);end;7architecturecntofjishuissignalcnt:std_logic_vector(3downto0);beginprocess(rst,en,clk)beginifrst='1'thencnt=0000;elsif(clk'eventandclk='1')anden='1'thenifcnt=1001thencnt=0000;cout='1';elsecnt=cnt+1;cout='0';endif;endif;endprocess;Q=cnt;end;在源程序中COUT是计数器的进位输出;Q[3..0]是计数器的状态输出;CLK是时钟输入端;RST是复位控制端;当RST=1时,Q[3..0]=0,EN是使能控制输入端,当EN=1时,计数器计数,当EN=0时,计数器保持状态不变。编译成功后,其仿真波形如下:在项目编译仿真成功后,将设计的十进制计数器电路设置成可调用的元件jishu.sym用于以下的顶层设计。85、16位寄存器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysuocunisport(load:instd_logic;din:instd_logic_vector(15downto0);dout:outstd_logic_vector(15downto0));end;architecturesuoofsuocunisbeginprocess(load,din)beginif(load'eventandload='1')thendout=din;endif;endprocess;end;在源程序中load是锁存信号,上升沿触发;din[3..0]是寄存器输入;dout[3..0]是寄存器输出。编译成功后生成元件图如下图,以便顶层模块的调用。4位寄存器寄存器是在计数结束后,利用触发器的上升沿吧最新的频率测量值保存起来,这9样在计数的过程中可不必一直看数码显示器,显示器将最终的频率读数定期进行更新,其输出作为动态扫描电路的输入。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysuoisport(load:instd_logic;din:instd_logic_vector(3downto0);dout:outstd_logic_vector(3downto0));end;architecturesuo_1ofsuoisbeginprocess(load,din)beginif(load'eventandload='1')thendout=din;endif;endprocess;end;在源程序中load是锁存信号,上升沿触发;din[3..0]是寄存器输入;dout[3..0]是寄存器输出。编译成功后生成元件图如下图,以便顶层模块的调用。6、译码器libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityledsisport(clk:instd_logic;Din:instd_logic_vector(15downto0);10sg:outstd_logic_vector(6downto0);bt:outstd_logic_vector(1downto0));end;architectureled_1ofledsissignalcnt8:std_logic_vector(1downto0);signalq:std_logic_vector(3downto0);beginP1:process(cnt8,Din,q)begincasecnt8iswhen00=bt=00;q=Din(3downto0);when01=bt=01;q=Din(7downto4);when10=bt=10;q=Din(11downto8);when11=bt=11;q=Din(15downto12);whenothers=null;endcase;caseqiswhen0000=sg=0111111;when0001=sg=0000110;when0010=sg=1011011;when0011=sg=1001111;when0100=sg=1100110;when0101=sg=1101101;when0110=sg=1111101;when0111=sg=0000111;when1000=sg=1111111;when1001=sg=1101111;whenothers=null;endcase;endprocessP1;P2:process(clk)11beginif(clk'eventandclk='1')thencnt8=cnt8+1;endif;endprocessP2;end;编译成功后,其波形图为:7、译码libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydividisport(clk50:instd_logic;qlkhz:outstd_logic);end;architecturedivofdividisbeginK1:process(clk50)variablecout:integer:=0;beginif(clk50'eventandclk50='1')thencout:=cout+1;ifcout=24999thenqlkhz='1';elsifcout=49999thenqlkhz='1';elsecout:=0;12endif;endif;endprocess;end;编译成功后,其波形图为:8、动态扫描电路libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydongtaiisport(q200hz