多功能数字频率计的设计
- 格式:doc
- 大小:840.50 KB
- 文档页数:13
电子技术综合设计实验报告
1
目录
一: 摘要
二: 方案设计与论证
三: 系统设计原理框图及分析说明
四: 软件设计技术细节
五: 硬件原理说明
六: 测试方法及对结果的分析
七: 综合设计实验总结
八: 附录
电子技术综合设计实验报告
2 一:摘要
频率,即单位时间内物理量变化的次数。如交流电50Hz意味着在1秒钟内电压规律变化50次。根据频率的这一定义,容易想到,可以用一个标准时基信号作为“闸门”,当闸门打开(高电平)时计数器对输入脉冲信号计数,所得结果就表明了在闸门打开的时间内输入信号变化的次数。
频率计是常用的测量设备,以频率的数字化测量为基础。建立和发展起来的各种数字化测量仪器正在取代各种传统的模拟的电工测试仪器和仪表。
数字频率计是用于测量输入信号频率并将测量结果用十进制数显示的测量仪器。它采用数字电路的设计方法,在一定的测量精度和准确度的要求下实现对方波、脉冲波、正弦信号等频率的测量。
二:方案设计与论证:
1:设计的基本要求:
测量范围 信号:方波、脉冲波
幅度:0.5 V ~5V
频率:1Hz~1MHz
2:设计方法的分析:
数字频率计电路模块的设计从测量的角度有以下方法:
1)传统方式的频率/周期测量
有以下四种实现方法:
(1)直接测量法 直接测量法是把频率信号经脉冲形成电路后加闸门的一个输入端,只有在闸门开通时间T(以秒计)内,计数脉冲被送到十进制计数器进行计数。设计数器的值为N,由频率定义可以计算得到被测信号频率为
f = N/T
经分析,此种测量在低频段的相对测量误差较大。增大T可以提高测量精度,但在低频段仍不能满足任务要求。
(2)组合法 直接测量周期法在低频段精度高。组合法是指在低频时采用直接测量周期法测量信号的周期,然后换算成频率。这种方法在一定程度上可以祢补方法(1)的不足,电路实现较为复杂。
(3)倍频法 直接测量法在高频段有者很高的精度。可以把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数将经整形的低频信号进行倍频后再进行测量,高频段则进行直接测量。
(4)直接周期测量法 用被测信号经放大整形后形成的方波信号直接控制计门控电路,使主门开放时间等于信号周期,时标为Ts的脉冲在主门开放时间进入计数器。设T为被测周期,Ts为时标为,在Tx时间计数值为N,可以根据以下公式来算得被测信号周期:
Tx = N * Ts
此种方法,被测信号频率越高,测量误差越大。
采用多个周期进行计数取平均值的方法虽可提高精度,每一次的等待时间较长,显然是不可取的。
三:系统设计原理及分析说明:
1:系统原理图:
电子技术综合设计实验报告
3 分频器(fenpin)
锁存器(scq)
2,设计原理说明:
按照“自顶向下”得设计思想,我们首先对测频系统顶层进行设计。
对顶层的设计实际上是对系统的功能模块进行划分。根据传统方案的原理,测量系统首先根据被测信号的频率范围考虑使用何种测量方法,测频法或测周法。确定了测量方法后就要选择频率为fstd的信号作为闸门或计数信号对被测脉冲信号进行测量。如果频率fstd 选择不当,计数结果将落在1000-10000的范围之外,此时就需对fstd进行调整,这一过程就是所谓的“选档”。在恰当的fstd作用下,电路就可以得到符合精度的计数结果。将计数结果做适当的处理(测频模式下,要把计数结果由自然二进制数转换成BCD码;测周模式下,要把计数结果取倒数并转成BCD码)后送显示电路。由此我们可以归纳出实现系统功能的几大模块,其名称和功能如表所示。
各模块功能
模块名称 模块功能
十进制计数器(cnt) 完成计数功能
分频器(fenpin) 完成分频功能
锁存器(scq) 锁存输出结果
控制器 (test) 控制电路
接口电路(jiekou) 与单片机的接口电路
四:软件设计与技术细节:
控制器(test)
计数器(cnt)
FPGA接口模块(jiekou)
C51单片机:用来显示 INT0 被测信号
RD 1MHz 电子技术综合设计实验报告
4 1:顶层模块连接
电子技术综合设计实验报告
5 2:单片机程序流程图:
五:硬件原理说明
数字频率计电路模块的设计从系统实现技术的角度有以下方法:
1)系统采用中小规模数字集成电路,完成测量。此方案的特点是中小规模数字集成电路应用技术成熟,能可靠的完成频率计的基本功能,但由于系统功能要求较高,所以电路实现过于庞大和复杂。
2)单片专用集成芯片设计
如美国INTERSLL公司研制的系列通用计数电路ICM7216A/B/C/D是用于数字频率计、计数器、时间间隔测量仪器的单片专用集成电路。该电路只需外接少量元器件就能构成10MHz数字频率计等数字测量仪表。
3)单片机为核心的系统设计
以单片机作为控制核心,门控信号由其内部的定时计数器产生由于单片机计数频率上限较低,所以需对高频被测信号进行硬件预分频处理,由于单片机系统的软件上的灵活性,使整个系统的设计上有较大的自由度,但在硬件电路上需要增加额外的开销。
4)FPGA器件为核心的系统设计
采用FPGA作为信号处理及系统的控制的核心,完成计数、门控、显示等功能,可以充分发挥FPGA工作速度较快,性能稳定,硬件电路设计简单等优点,但由于FPGA系统性价比不高,并且系统的功能扩展受到限制。
5)FPGA和单片机双控制器系统设计 START
INT7219
开T0中断
INT0 INT0
等待中断 R0指向数据单元
R1赋4
取数据送内存单元
结果送显示
结束 电子技术综合设计实验报告
6 FPGA和单片机双控制器为核心的系统可以充分的发挥FPGA系统的高速性和单片机系统在控制方面的灵活性,进而提高频率计的测量精度及灵敏度。
方案比较:
传统方案思路清楚,可用FPGA直接实现,但实现较为复杂,特别是测周模式要用到除法器,用FPGA实现时较占用资源。但是,由于仅使用FPGA开发,整个系统可在一个芯片上实现(即所谓的片上系统,system on chip,SOC),大大降低了系统面积,节省了开发成本,提高了系统稳定性。
等精度测量方案的优点非常明显,思路简单,编程也不复杂。在很大范围内能达到很高的精度。逻辑功能划分清楚,计数模块易于用FPGA实现,计算功能和显示控制则可用单片机实现。
六,对测试结果的分析
1:误差分析
由于闸门的开启时间与被测脉冲信号之间的时间关系是不相关的,所以它们在时间轴上的相对位置是随机的,这必将导致“±1误差”,即在闸门时间内计数结果在某一中心值上有±1变动。
很明显,此误差是绝对误差。在频率测量中,主要关心的是相对误差。
根据误差合成公式,测量值的变化量与影响测量值的各参数关系如下式:
在测频结果中,被测频率
根据(2)式,可得
相对误差stdstdininffNNff11
前一项就是计数结果造成的误差,而后一项则是标准时基信号造成的误差。一般的,由于标准时基信号的频率稳定度很高,后一项造成的误差可忽略。于是上式可简化为
)1(11NNNNffinin
由此可见,如果计数结果N很大,那么其相对误差就小。要达到设计所要求的3位有效数字的精度,则测量结果必须大于1000。
根据精度的要求,我们可将计数结果范围设定在1000-10000之间。 )2........(............................................................1imiixxyystdinfNf2stdstdstdstdinininfNNffffNNff22电子技术综合设计实验报告
7 七:综合设计实验总结:
1. 老师和吴勇同学的帮助下以及同组同学的共同努力下,我们最终完成了这个实验,一开始我们把实验想难了,幻想着别人帮我们做,最后被老师逼到必须自己做,在参考别人的作品后自己也做了出来,发挥出了我们的潜力,相比一些从头混到尾的同学来说,我们学到的比他们多,可惜当时没努力,不然时光不会这样过去,谢谢老师又给了我们一个找回尊严的机会。
2. 由于唯一一次接触vhdl编程实在大二阶段,并且当时没有正规地学习语言,对基本知识掌握生疏,并且不知道如何下手。这也是我们开始混混的一个原因。
3. 另一个也是主要的原因是我们一开始和别人是一个组的,对其中一个同学有依赖感,如果当时一人一个组的话一定会用心去做的。
4. 这个实验相当重要,老师选题也很好,既有理论又突出实际操作,做了后感到收获很大,尤其是林老师的为人,我们相当佩服。
5. 由于时间的关系,我们没有做除法器,同时用maxplus2时感觉这个软件还有许多让人不是很舒服的地方,vhdl语言也没有直接做除法器的方法,本来是一个次要的问题结果成了一个大难题,软件和语言都有许多要改进的地方。
6. 再次感谢老师,给了我们改过的机会。
八:附录
(一)参考文献
1. 林建英,林秋华,《电子综合技术设计实验讲义》,大连理工大学电工电子技术实验中心,2003。
2. 侯伯亨,顾新,《VHDL硬件描述语言与数字逻辑电路设计》,西安电子科技大学出版社,1999。
(二)各部分模块图形及源代码
1.计数器:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity cnt is
port(clk,clr,di,ena:in std_logic;
co:out std_logic;
q:out std_logic_vector(3 downto 0));
end cnt;
architecture a of cnt is
signal t:integer range 0 to 15;
begin process(clk,clr)
begin