电工电子实验报告
学生姓名: 张能
学生学号:05125205
系别班级:物理系0504班
课程名称:电子技术综合实验
报告性质:(综合)报告
实验地点:综合电子技术实验室
开课学期:2007.1
成绩评定:
教师签名:
选题名称:数字频率计设计
一、设计目的:
测量一定频率范围信号的频率。
二、测量思想:
计1s内被测信号脉冲的个数。
不足:若被测信号频率不大于(1~2HZ),错误将会出现。
三、使用的方案:
1、整体器件选择:
选用存在的纯硬件器件来完成任务,但是方案所需要连接硬件线路较复杂,开发周期较长,不易开始作为实验来练习。故采用可编程逻辑器件(FPGA)来完成。
这种方法采用的硬件连线较少,可修改性好,操作较易,故选择这种方法来实验。
2、显示器件选择:
(1)使用数码管作为显示。在显示多位数时,数码管个数选择很受限制,其可变性差。(2)通过单片机读取数据,串口发送至PC机。可以在PC机上清楚看见数据的变化过程,对误差的分析也较易。
四、原理框图:
五、原理图:
六、模块分析:
1、分频模块
此项是把实验箱是24MHZ晶振分成1HZ信号
上图为分频后的信号,在它的上升沿把计数器清零,下降沿启动计数;到再次到来的上升沿是产生中断,同时打开数据缓冲器。
分频AHDL语言如下:
subdesign clk_1hz
(
clk :input;
clk1hz :output;
)
VARIABLE
count0[24..0] : DFF;
ss : DFF;
BEGIN
count0[].clk = clk;
count0[].clrn = vcc;
ss.clk=clk;
ss.clrn=vcc;
IF(count0[]==H"16E3691")then
ss=vcc;
count0[]=0;
ELSE
count0[].d=count0[].q+1;
ss=gnd;
END IF;
clk1hz=ss;
END;
2、计数模块:
通过D触发器来计脉冲次数,每来一个脉冲就计一次数;触发器个数的选择要满足2^n>99999999。
3、控制电路:
1HZ时钟为高电平是对输入信号的封锁,同时通过非门对计数器清零;由此可知计数是在低电平段。
4、数据缓冲:
缓冲区选择74273芯片如图:
1HZ时钟为上升沿时数据缓冲区打开,从而对数据进行更新,其他时刻计数数据对输出是无影响。
5、数据输出:
SUBDESIGN saomiao
(
clk,AA[31..0] :INPUT;
q[7..0] :OUTPUT;
)
VARIABLE
count[1..0] : DFF;
BEGIN
count[].clk=clk;
count[].clrn=vcc;
IF(count[]==3)THEN
count[]=0;
ELSE
count[].d=count[].q+1;
END IF;
CASE count[]IS
WHEN 0 => q[]=AA[7..0];
WHEN 1 => q[]=AA[15..8];
WHEN 2 => q[]=AA[23..16];
WHEN 3 => q[]=AA[31..24];
END CASE;
END;
产生中断后,单片机发送读信号,连续发四次;每发一次读信号就会产生一个低电平,扫描模块通过每次的低电平来计数(0~3)的循环,为0时读取(0~7)位,为1时读取(8~15)位,为2时读取(16~23)位,为3时读取(24~31)位。读完的数据通过串口发送到PC机显示计数输出为BCD码。
七、总结:(误差分析):
1、若分频后的1s 低电平是准确,那显示频率与被测频率误差<1/F(F为被测频率)。
2、若24MHZ晶振产生的时钟不稳定,引起分频后1s低电平是变化,故误差(基于1/F的误差)是不可避免的。
3、若24MHZ,不一定是24MHZ会有偏移,晶振产生的时钟固定不变,基于2的误差是可以避免的。
算法如下: 24M对应1s低电平分频16进制计数是16E3601;测量后的显示频率为f;补充1s低电平分频16进制计数的变化量为m(m带符号运算+表示加|m|,-表示减|m|);算式: 24M/m=F/(F-f).
注意:被测信号频率不能超出晶振的振荡频率;越偏小于晶振的振荡频率越精确。
经验小结:
开始一个项目时,首先要对它的整体原理要知道并弄清楚,思考各模块是怎样相互联系的;假如这些不太清楚就会很盲目。在有了一个整体的模块的构想后并对各个模块可以进行设计分析,有些模块在自己没有最优的方案时,可以向别人讨论并学习。每个细节都要做好,不然到后面又会很麻烦,尽量做好每个细节,免得到后来又要重头检查,总之,尽量减少人为误差并把实验做好。
电话:13886342126 学校:6570517/3093426