基于FPGA脉冲宽度测量仪说明书.doc

上传人:h**** 文档编号:130654 上传时间:2018-07-09 格式:DOC 页数:42 大小:1,015KB
下载 相关 举报
基于FPGA脉冲宽度测量仪说明书.doc_第1页
第1页 / 共42页
基于FPGA脉冲宽度测量仪说明书.doc_第2页
第2页 / 共42页
基于FPGA脉冲宽度测量仪说明书.doc_第3页
第3页 / 共42页
基于FPGA脉冲宽度测量仪说明书.doc_第4页
第4页 / 共42页
基于FPGA脉冲宽度测量仪说明书.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、 EDA 课程报告 课 题: 脉冲宽度测量仪 班 级: 电信 0901 姓 名: X X X 指导老师: X X X XXXX年 XX 月 XX日I 主要任务 : 采用 EDA 技术,设计一个能测量脉冲信号宽度的系统。系统图如下: 脉冲边沿检测时钟分频计数器 译码显示P_INCLKCLK1CLK2基本要求 : ( 1)脉冲信号宽度的测量精度为 1ms。 ( 2)脉冲信号宽度的测量范围为 0 10s。 ( 3)调试过程中可以用按键模拟脉冲信号。 ( 4)测量值用 5位数码管显示(可 以采用静态显示)。 ( 5)输入信号为标准 TTL 电平。 ( 6)调试中既可以采用正脉冲,也可以采用负脉冲(任选

2、其一)。 ( 7)必须先进行前仿真,并打印出仿真波形。 ( 8)按要求写好设计报告(设计报告内容包括:引言,方案设计与论证,总体设计,各模块设计,调试与数据分析,总结)。 II 目录 一、 引言 . 1 二、 方案设计与论证 . 2 方案一:基于单片机 AT89C51 的设计 . 2 方案二:基于定时 /计数器的设计 . 2 方案三:基于 FPGA 的设计 . 3 三、 总体设计 . 4 基本原理 . 4 系统总框图 . 4 四、 各模块设计及程序 . 5 顶层模块 . 5 分频模块 . 6 脉冲检测模块 . 6 计数器模块 . 7 3/8 译码器模块 . 7 七段码译码 器模块 . 8 五、

3、 调试及数据分析 . 9 波形仿真图 . 9 数据分析表 . 9 六、 结论 . 9 附:参考文献 . 10 1 一、引言 在电子技术及其应用领域中,常需要对各种系统工作的时间特性进行分析测量,如图 一 给出的这种时间特性示意图,其中 t 表示时间脉冲宽度,即指脉冲起始时间和终止时间的持续时间。 T 表示一个工作周期,即从脉冲的一个上升沿到下一个上升的时间。 tT 图一 脉冲宽度与周期 在测量与仪器仪表领域,经常需要对数字信号的脉冲宽度进行测量 , 如转速传感器、外部系统的门控与选通脉冲,以及 PWM (脉冲宽 度调制 )输入的频率等。因此可以说脉冲宽度和周期是关于脉冲的重要指标。无论是模似电

4、路还是数字电路,往往都需要对脉冲宽度进行测量。 2 二、方案设计与论证 方案一:基于单片机 AT89C51 的设计 利用定时器的门控信号 GATE 进行控制可以实现脉冲宽度的测量。对定时器 T1 来讲,如果 GATE=0,必须使软件控制位 TR1=1,且 INT1 为高电平方可启动定时器 T1,即定时器 T1的启动要受外部中断请求信号 INT1 的影响。利用此特点,被测脉冲信号从 INT1 端引入,其上升沿启动 T1 计数,下降沿停止 T1 计数。定时器的计数值乘以 机器周期即为脉冲宽度。图二中给出了脉冲宽度测量的原理图。 被 检 测 脉 冲 信 号I N T 1为 高 则 等 待为 低 时

5、启 动 T 1下 降 沿 停 止 计 数上 升 沿 开 始 计 数图二 方案一原理图 方案二:基于定时 /计数器的设计 计数法测量脉冲周期原理框图如图三所示,被测信号为方波脉冲,以此方波脉冲控制门控电路,使主门开放时间等于被测信号周期 TX ,由晶体振荡器 (或经分频电路 )输出周期为 TS 的时标脉冲在主门开放时间进入计数器,这种测量方法将被测信号周期 TX 与 TS 时标进行比较,若在 TX 期间内,计数器的计数值为 N,则 TX=NTS为被测信号的周期。 晶 振 分 频 主 控 门 计 数 器 译 码 显 示 器控 制 门脉 冲 宽 度图 三 方案二原理框图 当计数脉冲来自高稳定度晶体振

6、荡 器,且振荡周期比被测脉冲宽度小 2个以上数量级时,该方法的准确度很高。计数器法可能产生的最大误差绝对值不超过计数脉冲周期。 3 方案三:基于 FPGA 的设计 随着 EDA 技术的迅速发展,在 EDA 软件平台上,根据硬件描述语言 VHDL 完成的设计文件, 自动地完成逻辑编译、化简、分割、综合、优化、布局线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作成了脉冲测量的发展方向。采用此种发法,设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在 EDA 工具的帮助下和应用相应的 FPGA/CPLD 器件,就可以得到最后的设计结果。 通常采用脉冲计数法,即在待测信号

7、的高电平或低电平用一高频时钟脉冲进行计数,然后根据脉冲的个数计算待测信号宽度,如 图四 所示。待测信号相对于计数时钟通常是独立的,其上升、下降沿不可能正好落在时钟的边沿上,因此该法的最大测量误差为一个时钟周期。例如采用 50MHz 的高频时钟,最大误差为20ns。 待 测 信 号计 数 时 钟图四 方案三原理图 分析可知,上述三种方案都能较准确的测得脉冲的宽度。经比较方案三的优势更明显,所以选择方案三来设计。 4 三、 总体设计 基本原理 根据设计要求,系统的输入信号有:系统时钟信号 CLK,系统复位信号 CLR,脉冲输入信号 P_IN,计数输出端。当检测到 P_IN 端有脉冲输入时检测模块就

8、会输出 ,否则为 ,输给计数模块的端 ,当各位累计到时 ,会向十位进位 ,以此类推到万位。最后由数码管显示脉冲的宽度。 脉 冲 边 沿 检 测 计 数 器 译 码 显 示时 钟 分 频C L KP _ I NC L K 1C L K 2图五 简易原理框图 系统总框图 系统组成方框图六所示,它由外部输入模块、检测模块和显示模块三部分组成。检测模块是整个系统的核心,它由计数模块、控制模块、计量模块和译码显示模块构成。 时 钟 信 号计 数 信 号输 入 脉 冲复 位 清 零计 数 器 检 测计 宽计 数显示检测器图六 总框图 5 四、 各模块设计及程序 顶层模块 图七 顶层模块图 6 分频模块 l

9、ibrary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenping is port( Clk: in std_logic; Clk1: out std_logic; Clk2: out std_logic ); end fenping; architecture behave of fenping is signal div2clk : std_logic; begin process (Clk) begin if Clkevent and clk = 1 then div2clk

10、= not div2clk; Clk1 = not div2clk; Clk2 = div2clk; end if; end process; end behave; 脉冲检测模块 library ieee; use ieee.std_logic_1164.all; entity jiance is port( P_IN : in std_logic; EN_OUT: out std_logic); end jiance; architecture behave of jiance is begin process (P_IN) begin if(P_IN=1) then EN_OUT=1;

11、-实现检测,若有脉冲就输出 1 else EN_OUT=0; -否则为 0 end if; end process; end behave; 7 计数器模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt10 is port(ENA:in std_logic; CLK:in std_logic; CLR:in std_logic; CQ:out std_logic; Qout:out std_logic_vector(3 downto 0) ); end cnt10;

12、architecture art of cnt10 is signal CQI:STD_LOGIC_VECTOR(3 downto 0); begin U1:process(CLK,CLR,ENA,CQI) BEGIN IF CLR=1THEN CQI=“0000“; ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN IF CQI=“1001“ THEN CQI=“0000“; ELSE CQI=CQI+1; END IF; END IF; END IF; Qout=CQI; END PROCESS U1; U2:PROCESS(CQI) BEGIN IF

13、 CQI=“1001“ THEN CQ=1; else CQ=0; end if; end process U2; END art; 3/8 译码器模块 library ieee; use ieee.std_logic_1164.all; entity YM3_8 is port(A1: in std_logic_vector(2 downto 0); WW,QW,BW,SW,GW:OUT STD_LOGIC); end YM3_8; architecture y3_8Y of YM3_8 is signal S:std_logic_vector(2 downto 0); signal Q:std_logic_vector(4 downto 0); begin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。