3GHZ 频率计 数点课程设计.docx
《3GHZ 频率计 数点课程设计.docx》由会员分享,可在线阅读,更多相关《3GHZ 频率计 数点课程设计.docx(26页珍藏版)》请在冰豆网上搜索。
3GHZ频率计数点课程设计
湖南文理学院芙蓉学院
课程设计报告
课程名称:
电子技术课程设计
专业班级:
芙蓉通信工程0901班
学生姓名:
指导教师:
完成时间:
报告成绩:
评阅意见:
评阅教师日期
200MHz数字频率计设计
摘要
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。
将使整个系统大大简化。
提高整体性能和可靠性。
数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。
它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信号的频率,而且还可以测量它们的周期。
经过改装,可以测量脉冲宽度,做成数字式脉宽测量仪;可以测量电容做成数字式电容测量仪;在电路中增加传感器,还可以做成数字脉搏仪、计价器等。
因此数字频率计在测量物理量方面应用广泛。
本设计用VHDL在CPLD器件上实现数字频率计测频系统,能够用十进制数码显示被测信号的频率,能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。
具有体积小、可靠性高、功耗低的特点。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
采用VDHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余全部在一片FPGA芯片上实现,整个系统非常精简,而且具有灵活的现场可更改性。
在不更改硬件电路的基础上,对系统进行各种改进还可以进一步提高系统的性能。
该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。
关键词:
数字频率计、VHDL、PROTEL
1、任务
设计并制作一台数字显示的简易频率计。
二、要求
1.基本要求
(1)频率测量:
a.测量范围信号:
方波、正弦波
幅度:
0.5V一5V
频率:
1Hz一1MHz
b.测试误差≤0.1%
(2)周期测量:
a.测量范围信号:
方波、正弦波
幅度:
0.5V~5V
频率单位:
1Hz、1KHz、1MHz
b.测试误差≤0.1%
(3)脉冲宽度测量:
a.测量范围信号:
脉冲波
幅度:
0.5V~5V
脉冲宽度≥100μs
b.测试误差≤0.1%
(4)显示器:
十进制显示,显示刷新时间lS~10S连续可调,对上述三种测量功能分别用不同颜色的发光二极管指示。
(5)具有自校功能,时标信号频率为1MHz。
(6)自行设计并制作满足本设计任务要求的稳压电源。
2.发挥部分
(1)扩展测量范围为0.1Hz—200MHz(信号幅度0.5V~5V),测试误差降低为0.01%(最大闸门时间≤10S)
(2)测量并显示周期脉冲信号(幅度0.5V~5V),频率1Hz~lkHz)的占空比,占空比变化范围为10%----90%,测试误差≤0.1%
(3)在1Hz~lkHz范围内及测试误差≤0.1%的条件下,进行小信号的频率测量,提出并实现抗干扰的措施。
1数字频率计测频率的基本原理
频率的定义是单位时间(1s)内周期信号的变化次数。
若在一定时间间隔T内测得周期信号的重复变化次数为N,则其频率为
f=N/T
据此,设计方案框图如图1.1。
图1.1设计框图
被测信号Vx经整形电路变成计数器所要求的矩形脉冲信号,其频率与被测信号的频率Fx相同。
时钟电路提供标准时间基准信号,基准时钟经分频器后输出频率分别有1Hz,0.1Hz,0.01Hz,0.001Hz,0.0001Hz的阀门信号,计数器在一个阀门信号周期内对被测信号计数,直到1周期阀门信号结束时,停止计数,同时产生锁存信号,启动延时信号。
锁存信号使计数器的值在数码管上显示。
当延时结束后清除计时器和分频器开始下一次测量。
在计数过程中若闸门时间未到计数器计就产生溢出信号,说明被测频率信号高,这是要启动自动换挡功能,设置更小的阀门时间。
2数字频率计的设计
2.1.1电源电路
220V交流电通过变压器降为12V,后经过整流桥后变为脉动直流电,经过7805稳压块后变为标志5V直流电。
电路如图2.1.1
图2.1.1电源电路
2.1.2放大整形电路
放大整形电路由运算放大器LM358与施密特触发器74LS14等组成。
其中LM358组成放大器,当输入信号很小时将其进行放大。
开关可以用来选择是否放大。
施密特触发器,它对放大器的输出信号进行整形,使之成为矩形脉冲。
电路如图2.1.2。
图2.1.2整形电路
2.1.3时钟电路
时钟信号是控制计数器计数的标准时间信号,其精度很大程度上决定了频率计的频率测量精度。
当要求频率测量精度较高时,应使用晶体振荡器通过分频获得。
电路应用74LS04与晶振产生10MHz的时钟信号,其输出频率稳定性很高。
电路如图2.1.3
图2.1.3时钟电路
2.1.4分频器电路
首先时基信号的频率一定要足够小,也就是时间一定要足够长,进入的脉冲波才足够多,从而减少误差。
应用2个74LS390十进制计数器对10M的时钟信号进行100分频得到100KHz时钟。
再用2个74LS390分别对10KHz时钟进行10,100,1000,10000分频得到1000Hz,100Hz,10Hz,1Hz的时钟信号。
电路如图2.1.4。
图2.1.4分频电路
2.1.5同步检测电路
被测信号整形后,通过反相器连接到D触发器CLK引脚当被测信号出现下跳沿时,D触发器输出高电平,这时与非门开启,分频器开始工作。
据此可以达到同步的目的。
电路如图2.1.5。
图2.1.5同步检测电路
2.1.6计数测量电路
计数脉冲通过计数电路进行有效的计数,按照设计要求每一秒种都必须对计数器清零一次,当检测到被测信号的下降沿时,阀门打开,用74LS390构成的十进制计数器开始对被测信号进行计数。
当阀门时间到后计数器停止计数。
电路如图2.1.6。
图2.1.6计数测量电路
2.1.7锁存电路
计数器的结果进入锁存器锁存:
当阀门时间到时U1974LS74~Q端输出高电平,在其上升沿产生锁存信号使74LS273锁存。
电路如图2.1.7。
图2.1.7锁存电路
2.1.8显示电路
电路通过4个7段数码管显示被测信号的频率,当74LS273锁存后,把数据送到74LS48进行译码。
74LS48译码后输出对应的高低电平使数码管显示不同的值。
从而达到显示。
电路如图2.1.8。
图2.1.8显示电路
2.1.9自动换挡电路
当被测信号的频率太高时,计数器在一秒内对被测信号计数时会产生溢出,因此电路要根据不同的信号设定不同的阀门时间。
本电路通过检测计数器是否溢出判断。
第一次测量时阀门时间是一秒,当计数器溢出一次时U374LS390加一,U3构成5进制计数器,输出接74LS151A,B,C三端。
当计数器值为零时151选择D0即阀门时间为1秒,当计数器加一后,151选择D1即阀门时间为0.1秒。
当计数器值为4时,151选择D3即阀门时间为0.001秒。
电路如图2.1.9。
图2.1.9自动换挡电路
2.1.10量程显示电路
U3计数器对溢出次数计数,每计数一次阀门时间变为原来的1/10,当前的计数值通过138译码后即可显示量程。
电路如图2.1.10。
图2.1.10量程显示电路
2.1.11阀门时间产生电路
74151输出频率为1Hz,10Hz等的时钟,通过U19D触发器构成的T触发器,使其输出高(低)电平时间为1秒,0.1秒等,其输出控制阀门U14。
2.1.12清零电路
当阀门时间到时U14~Q端输出高电平开启计数延时U3B,当延时完成,产生全局清零信号。
另外每当换挡之后也会产生清零信号,这些信号通过或非门去清除分频器,计数器值。
电路如图2.1.12。
图2.1.12清零电路
2.2芯片功能介绍
2.2.174LS138引脚图如图2.2.1
图2.2.1(a)74LS138引脚图
74LS138功能图如图2.2.2。
图2.2.1(b)
2.2.274LS48引脚图2.2.2(a)
74LS48功能表如图2.2.2(b)
2.2.374LS390引脚图如图2.2.3(a)
74LS390功能表如图2.2.3(b)
74LS273引脚图和功能表如图2.2.4
3.1源程序
--文件名:
plj.vhd。
--功能:
频率计。
具有4位显示,能自动根据7位十进制计数的结果,自动选择有效数据的
--高4位进行动态显示。
小数点表示是千位,即KHz。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitypljis
port(start:
instd_logic;--复位信号
clk:
instd_logic;--系统时钟
clk1:
instd_logic;--被测信号
yy1:
outstd_logic_vector(7downto0);--八段码
w1:
outstd_logic_vector(3downto0));--数码管位选信号
endplj;
architecturebehavofPLjis
signalb1,b2,b3,b4,b5,b6,b7:
std_logic_vector(3downto0);--十进制计数器
signalbcd:
std_logic_vector(3downto0);--BCD码寄存器
signalq:
integerrange0to49999999;--秒分频系数
signalqq:
integerrange0to499999;--动态扫描分频系数
signalen,bclk:
std_logic;--使能信号,有效被测信号
signalsss:
std_logic_vector(3downto0);--小数点
signalbcd0,bcd1,bcd2,bcd3:
std_logic_vector(3downto0);
--寄存7位十位计数器中有效的高4位数据
begin
second:
process(clk)--此进程产生一个持续时间为一秒的的闸门信号
begin
ifstart='1'thenq<=0;
elsifclk'eventandclk='1'then
ifq<49999999thenq<=q+1;
elseq<=49999999;
endif;
endif;
ifq<49999999andstart='0'thenen<='1';
elseen<='0';
endif;
endprocess;
and2:
process(en,clk1)--此进程得到7位十进制计数器的计数脉冲
begin
bclk<=clk1anden;
endprocess;
com:
process(start,bclk)--此进程完成对被测信号计脉冲数
begin
ifstart='1'then--复位
b1<="0000";b2<="0000";b3<="0000";b4<="0000";b5<="0000";b6<="0000";b7<="0000";
elsifbclk'eventandbclk='1'then
ifb1="1001"thenb1<="0000";--此IF语句完成个位十进制计数
ifb2="1001"thenb2<="0000";--此IF语句完成百位十进制计数
ifb3="1001"thenb3<="0000";--此IF语句完成千位十进制计数
ifb4="1001"thenb4<="0000";--此IF语句完成万位十进制计数
ifb5="1001"THENb5<="0000";--此IF语句完成十万位十进制计数
ifb6="1001"thenb6<="0000";--此IF语句完成百万位十进制计数
ifb7="1001"thenb7<="0000";--此IF语句完成千万位十进制计数
elseb7<=b7+1;
endif;
elseb6<=b6+1;
endif;
elseb5<=b5+1;
endif;
elseb4<=b4+1;
endif;
elseb3<=b3+1;
endif;
elseb2<=b2+1;
endif;
elseb1<=b1+1;
endif;
endif;
endprocess;
process(clk)--此进程把7位十进制计数器有效的高4位数据送如bcd0~3;并得到小数点信息
begin
ifrising_edge(clk)then
ifen='0'then
ifb7>"0000"thenbcd3<=b7;bcd2<=b6;bcd1<=b5;bcd0<=b4;sss<="1110";
elsifb6>"0000"thenbcd3<=b6;bcd2<=b5;bcd1<=b4;bcd0<=b3;sss<="1101";
elsifb5>"0000"thenbcd3<=b5;bcd2<=b4;bcd1<=b3;bcd0<=b2;sss<="1011";
elsebcd3<=b4;bcd2<=b3;bcd1<=b2;bcd0<=b1;sss<="1111";
endif;
endif;
endif;
endprocess;
weixuan:
process(clk)--此进程完成数据的动态显示
begin
ifclk'eventandclk='1'then
ifqq<99999thenqq<=qq+1;bcd<=bcd3;w1<="0111";
ifsss="0111"thenyy1(0)<='0';
elseyy1(0)<='1';
endif;
elsifqq<199999thenqq<=qq+1;bcd<=bcd2;w1<="1011";
ifsss="1011"thenyy1(0)<='0';
elseyy1(0)<='1';
endif;
elsifqq<299999thenqq<=qq+1;bcd<=bcd1;w1<="1101";
ifsss="1101"thenyy1(0)<='0';
elseyy1(0)<='1';
endif;
elsifqq<399999thenqq<=qq+1;bcd<=bcd0;w1<="1110";
ifsss="1110"thenyy1(0)<='0';
elseyy1(0)<='1';
endif;
elseqq<=0;
endif;
endif;
endprocess;
m0:
process(bcd)--译码
begin
casebcdis
when"0000"=>yy1(7downto1)<="0000001";
when"0001"=>yy1(7downto1)<="1001111";
when"0010"=>yy1(7downto1)<="0010010";
when"0011"=>yy1(7downto1)<="0000110";
when"0100"=>yy1(7downto1)<="1001100";
when"0101"=>yy1(7downto1)<="0100100";
when"0110"=>yy1(7downto1)<="1100000";
when"0111"=>yy1(7downto1)<="0001111";
when"1000"=>yy1(7downto1)<="0000000";
when"1001"=>yy1(7downto1)<="0001100";
whenothers=>yy1(7downto1)<="1111111";
endcase;
endprocess;
endbehav;
3.2程序仿
注:
仿真中秒分频为50000,动态显示的分频系数也相应调小。
频率计仿真全图
频率计仿真-开始计数部分
频率计仿真-结束结束、动态显示部分
频率计仿真-复位、重新测频部分
四、总结
通过此次设计,我们进一步加深了对数字电路知识的认识与理解,掌握了数字频率计的设计、组装与调试方。
更加熟练的运用仿真软件,并学习了运用软件测试、调试、改进电路。
培养了独立思考、分析、解决问题的能力,并培养了我们的动手能力。
本次设计是本人第一次运用数字电路。
因而在许多方面都还不熟练,比如说对一些元器件的功能还不完全了解,不能熟练运用同事也遇到了一些从前没有见过的元件,因而不能完全的一次性设计好该电路。
不过通过本次的课程设计我学会了许多知识,学会了Multisim的一些基本使用方法,培养了我们独立思考问题解决问题的能力,加深了我们对数电模电只是的理解,巩固率我们的学习知识,有助于我们今后的学习。
本次设计让我体会到设计过程中的的苦与甜。
设计师我们将来必须的技能,这次恰恰给我们提供了一个应用自己所学知识的的机会,从图书馆查找资料到理论分析再到最后电路的设计,都对我所学的知识进行了检验。
在设计过程中发现了以前学的数字电路的知识掌握的不牢。
最重要的是要熟练的掌握课本上的知识,这样才能对设计中出现的问题进行分析解决。
总之,正在这次的课程设计过程中,我收获了很多,即为我以后的学习生活有了很大的帮助,也为将来的人生之路做了一个很好的铺垫。
最后,感谢老师的辛勤指导。
感谢同学的帮助与合作。
参考文献
1.何小艇《电子系统设计》浙江大学出版社,2001年6月
2.姚福安《电子电路设计与实践》山东科技技术出版社,2001年10月
3.王橙非《电路与数字电路设计实践》东南大学出版社,1999年10月
4.李银华《电子线路设计指导》北京航空航天大学出版社,2005年6月
5.康华光《电子技术基础》高教出版社,2003年
附录元件清单
名称
类别
数目
电容
0.01uf
1
电容
150pf
1
电容
10uf
1
电阻
500
4
电阻
1K
3
电阻
10K
2
U1U2U3U4U5
74LS390
4
U6U7U8U9
74LS48
4
U10
74LS151
1
U11U12
74LS273
2
U13
74LS00
1
U14U15
74LS74
2
U16
LM358
1
U17
74LS14
1
U18
74LS02
1
U19
74LS138
1
晶体振荡器
10M
1
发光二极管
5
数码管
4