河南科技大学课程设计说明书课程名称现代电子系统设计题目简易数字频率计设计学院__电信学院_____班级_______学生姓名____________________指导教师_________日期__2010-01-10______课程设计任务书(指导教师填写)课程设计名称现代电子系统课程设计学生姓名刘轮辉专业班级电信科071 设计题目简易数字频率计设计一、课程设计目的掌握高速AD的使用方法;掌握频率计的工作原理;掌握GW48_SOPC实验箱的使用方法;了解基于FPGA的电子系统的设计方法。
二、设计内容、技术条件和要求设计一个具有如下功能的简易频率计。
(1)基本要求:a.被测信号的频率范围为1~20kHz,用4位数码管显示数据。
b.测量结果直接用十进制数值显示。
c.被测信号可以是正弦波、三角波、方波,幅值1~3V不等。
d.具有超量程警告(可以用LED灯显示,也可以用蜂鸣器报警)。
e.当测量脉冲信号时,能显示其占空比(精度误差不大于1%)。
(2)发挥部分a.修改设计,实现自动切换量程。
b.构思方案,使整形时,以实现扩宽被测信号的幅值范围。
三、时间进度安排布置课题和讲解:1天查阅资料、设计:4天实验:3天撰写报告:2天四、主要参考文献何小艇《电子系统设计》浙江大学出版社2008.1潘松黄继业《EDA技术实用教程》科学出版社2006.10指导教师签字:2009年12月14日目录一、摘要 (4)二、系统方案论证 (4)2.1频率测量方案 (5)三、数字频率频率计的基本原理 (6)四、各个模块设计 (7)4、1 A/D模数转换模块 (8)4、2 比较模块 (9)4、3 频率和占空比测量模块 (10)五、各个模块仿真波形 (12)六、心得体会 (14)七、参考文献 (15)附录一 (16)附录二 (22)一.摘要频率计是数字电路中的一个典型应用,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,频率测量在科技研究和实际应用中的作用日益重要。
设计所要达到的效果,同时此设计具有抗干扰性强、易于传输 ,较高的测量精度等特点。
数字频率计是一种基础测量仪器,在许多情况下,要对信号的频率进行测量,利用示波器可以粗略测量被测信号的频率,精确测量则要用到数字频率计,测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量,测量采用了多周期同步测量法,它避免了直接测量法对精度的不足,同时消除了直接与间接相结合方法,需对被测信号的频率与中介频率的关系进行判断带来的不便,能实现较高的等精度频率和周期的测量。
关键词:频率计、仪器、频率、精度、脉冲个数二.系统方案论证由于本课程设计是基于特定的硬件平台,在GW48-SOPC实验开发系统上进行实现对被测信号通过AD进行转换,把转换的结果和给定的阈值进行比较,产生相应的脉冲信号。
得到脉冲信号之后,先进行频率测量,给定1S的基准信号,在1S信号内对脉冲信号进行计数,计数的方式采用BCD码,然后把计数结果直接送数码管显示,对应的就是十进制的数值。
为了实现占空比精度的要求,在适当的范围内竟可能提高基准信号的频率。
通过一个led灯来表示相应的单位。
然后对脉冲信号进行占空比测量,给定一个高频的基准信号,在脉冲信号的高电平期间对脉冲信号进行计数,把计数结果进行相应的运算,运算结果直接送数码管显示,对应的也是十进制显示。
对于报警信号,我设计的方案是接数码管显示,频率超过3khz时就会发出警告,数码管指示灯全部变为0。
下面是简单的系统原理框图:系统原理框图2.1频率的测量对于频率的测量没有现成的硬件模块,因此对于频率的测量需要我们用VHDL 语言进行实现。
对于频率的测量主要考虑有两种实现方案。
方案一:直接测频法测频法就是在确定的闸门时间Tw 内,记录被测信号的变化周期数(或脉冲个数)Nx ,则被测信号的频率为:fx=Nx/Tw 。
TWNX闸门信号被测信号测量的过程如图所示,在TW 时间内通过计数器记录被测信号脉冲的个数,然后把记录结果锁存,经过运算后,送数码管显示,即为所测频率。
, 方案二: 测周期法测周期法需要有标准信号的频率fs ,这个标准信号应该取一个频率适中的高频信号,在待测信号的一个周期Tx 内,记录标准频率的周期数Ns ,则被测信号的频率为:fx=fs/Ns 。
被测信号标准信号TXNS测量测周期法的过程如上图所示,在待测信号的一个周期Tx 内,记录标准信号周期的个数,然后把记录结果锁存,经过运算后,送数码管显示,即为所测频率。
,比较一二两种方案:这两种测频率的原理基本一样,都是通过在给定的时间内记录脉冲的个数,经过一定的运算处理,得出结果显示出来。
并且这两种方案的计数值都会产生误差,都与计数器中记录的数值Nx 或Ns 有关。
但是考虑到用VHDL 语言编写乘除的算法比较困难,并且经过乘除运算后所得结果的误差较大,因此选用方案一。
方案一得好处是闸门信号直接可以选择1S 的时钟信号,在这1S 时间内记录的被测信号脉冲的个数,正好就是被测信号的频率,不再需要进行运算处理。
不但减少编程的难度,而且也减小了实验的误差。
因为侧周期法的标准信号是一个高频信号,在不同的被测信号的脉冲下所造成的误差有很大的不同。
而在1S 闸门信号下,记录的脉冲个数,对于所有被测信号的产生的误差基本是一样。
考虑到以上的各因素,我认为方案一是比较理想的选择。
三.数字频率频率计的基本原理(1) 数字频率计的主要功能是测量周期信号的频率。
频率是单位时间( 1S )内信号发生周期变化的次数。
如果我们能在给定的 1S 时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。
数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。
这就是数字频率计的基本原理。
(2)从频率计的基本原理出发,根据基本要求可以得到如图3的系统框图:图3 数字频率计原理框图四. 各个模块设计本系统除了特定硬件资源外,还需通过软件实现四个模块的设计,分别是:(1)数模转换模块:A/D数模转换,为把数字信号转换为信息基本相同的模拟信号而设计的处理过程。
将信号发生器传过来的模拟信号转化成数字信号。
(2)比较器模块:输出量数值与规定的参比值相比较,以产生一个差值信号(误差信号)的器件。
(3)频率和占空比测量模块:在一个测量周期过程中,被测周期信号在输入电路中经过放大、整形、微分操作之后形成特定周期的窄脉冲,送到主门的一个输入端。
主门的另外一个输入端为时基电路产生电路产生的闸门脉冲。
在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。
4、1 A/D数模转换控制模块通过编程实现对ADC0809的控制,具体的程序见附录,其控制模块见下图:AD0809的工作过程是:输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,ALE,START,OE,ADDA都是ADC0809的控制信号,ADDA为模拟通道选择,低电平选择通道0,ALE为通道地址锁存信号,START为启动AD转换的信号,OE为ADC0809转换结果输出的使能信号。
数模转换控制模块的部分程序如下:beginADDA<='1';y5<=REGL;LOCK0<=LOCK;COM:process(CURRENT_STATE,EOC)BEGINCASE CURRENT_STATE ISWHEN ST0=>ALE<='0';START<='0';LOCK<='0';OE<='0';NEXT_STATE<=ST1; WHEN ST1=>ALE<='1';START<='1';LOCK<='0';OE<='0';NEXT_STATE<=ST2; WHEN ST2=>ALE<='0';START<='0';LOCK<='0';OE<='0';IF (EOC='1') THEN NEXT_STATE<=ST3;ELSE NEXT_STATE<=ST2;END IF;WHEN ST3=>ALE<='0';START<='0';LOCK<='0';OE<='1';NEXT_STATE<=ST4; WHEN ST4=>ALE<='0';START<='0';LOCK<='1';OE<='1';NEXT_STATE<=ST0; WHEN OTHERS=>NEXT_STATE<=ST0;END CASE;END PROCESS COM;REG:PROCESS(CLK10)上述程序中为ADDA为1时,为通道1,当ST0=0,START<='0';LOCK<='0';OE<='0'时从状态0转换到状态1;实现了从状态1到状态2,从状态3到状态4,再从状态4到状态0,把输入信号转化为二进制。
然后作为比较器的输入信号。
在比较器中和阀值进行比较。
其具体与ADC0809的连接电路图如下:转换时钟4、2 比较模块数字比较器用于数字信号的比较,例如,数据A和B比较,如果A>B,则输出A大于B的结果信号FA>B=1,FA=B=0,FA<B=0。
如果A=B,则输出A等于B的结果信号FA>B=0,FA=B=1,FA<B=0。
如果A<B,则输出A小于B的结果信号FA>B=0,FA=B=0,FA<B=1。