基于FPGA脉冲宽度测量仪.docx

上传人:b****4 文档编号:5623728 上传时间:2023-05-08 格式:DOCX 页数:12 大小:920.55KB
下载 相关 举报
基于FPGA脉冲宽度测量仪.docx_第1页
第1页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第2页
第2页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第3页
第3页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第4页
第4页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第5页
第5页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第6页
第6页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第7页
第7页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第8页
第8页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第9页
第9页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第10页
第10页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第11页
第11页 / 共12页
基于FPGA脉冲宽度测量仪.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于FPGA脉冲宽度测量仪.docx

《基于FPGA脉冲宽度测量仪.docx》由会员分享,可在线阅读,更多相关《基于FPGA脉冲宽度测量仪.docx(12页珍藏版)》请在冰点文库上搜索。

基于FPGA脉冲宽度测量仪.docx

基于FPGA脉冲宽度测量仪

EDA课程报告

 

课题:

脉冲宽度测量仪

班级:

电信0901

姓名:

XXX

指导老师:

XXX

 

XXXX年XX月XX日

主要任务:

采用EDA技术,设计一个能测量脉冲信号宽度的系统。

系统图如下:

基本要求:

(1)脉冲信号宽度的测量精度为±1ms。

(2)脉冲信号宽度的测量范围为0~10s。

(3)调试过程中可以用按键模拟脉冲信号。

(4)测量值用5位数码管显示(可以采用静态显示)。

(5)输入信号为标准TTL电平。

(6)调试中既可以采用正脉冲,也可以采用负脉冲(任选其一)。

(7)必须先进行前仿真,并打印出仿真波形。

(8)按要求写好设计报告(设计报告内容包括:

引言,方案设计与论证,总体设计,各模块设计,调试与数据分析,总结)。

 

一、引言

在电子技术及其应用领域中,常需要对各种系统工作的时间特性进行分析测量,如图一给出的这种时间特性示意图,其中t表示时间脉冲宽度,即指脉冲起始时间和终止时间的持续时间。

T表示一个工作周期,即从脉冲的一个上升沿到下一个上升的时间。

图一 脉冲宽度与周期

在测量与仪器仪表领域,经常需要对数字信号的脉冲宽度进行测量,如转速传感器、外部系统的门控与选通脉冲,以及PWM(脉冲宽度调制)输入的频率等。

因此可以说脉冲宽度和周期是关于脉冲的重要指标。

无论是模似电路还是数字电路,往往都需要对脉冲宽度进行测量。

二、方案设计与论证

方案一:

基于单片机AT89C51的设计

  利用定时器的门控信号GATE进行控制可以实现脉冲宽度的测量。

对定时器T1来讲,如果GATE=0,必须使软件控制位TR1=1,且INT1为高电平方可启动定时器T1,即定时器T1的启动要受外部中断请求信号INT1的影响。

利用此特点,被测脉冲信号从INT1端引入,其上升沿启动T1计数,下降沿停止T1计数。

定时器的计数值乘以机器周期即为脉冲宽度。

图二中给出了脉冲宽度测量的原理图。

图二 方案一原理图

方案二:

基于定时/计数器的设计

计数法测量脉冲周期原理框图如图三所示,被测信号为方波脉冲,以此方波脉冲控制门控电路,使主门开放时间等于被测信号周期TX,由晶体振荡器(或经分频电路)输出周期为TS的时标脉冲在主门开放时间进入计数器,这种测量方法将被测信号周期TX与TS时标进行比较,若在TX期间内,计数器的计数值为N,则TX=NTS为被测信号的周期。

图三 方案二原理框图

当计数脉冲来自高稳定度晶体振荡器,且振荡周期比被测脉冲宽度小2个以上数量级时,该方法的准确度很高。

计数器法可能产生的最大误差绝对值不超过计数脉冲周期。

方案三:

基于FPGA的设计

随着EDA技术的迅速发展,在EDA软件平台上,根据硬件描述语言VHDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合、优化、布局线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作成了脉冲测量的发展方向。

采用此种发法,设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在EDA工具的帮助下和应用相应的FPGA/CPLD器件,就可以得到最后的设计结果。

通常采用脉冲计数法,即在待测信号的高电平或低电平用一高频时钟脉冲进行计数,然后根据脉冲的个数计算待测信号宽度,如图四所示。

待测信号相对于计数时钟通常是独立的,其上升、下降沿不可能正好落在时钟的边沿上,因此该法的最大测量误差为一个时钟周期。

例如采用50MHz的高频时钟,最大误差为20ns。

图四 方案三原理图

 

分析可知,上述三种方案都能较准确的测得脉冲的宽度。

经比较方案三的优势更明显,所以选择方案三来设计。

 

三、总体设计

基本原理

根据设计要求,系统的输入信号有:

系统时钟信号CLK,系统复位信号CLR,脉冲输入信号P_IN,计数输出端。

当检测到P_IN端有脉冲输入时检测模块就会输出1,否则为0,输给计数模块的EN端,当各位累计到9时,会向十位进位,以此类推到万位。

最后由数码管显示脉冲的宽度。

图五 简易原理框图

系统总框图

系统组成方框图六所示,它由外部输入模块、检测模块和显示模块三部分组成。

检测模块是整个系统的核心,它由计数模块、控制模块、计量模块和译码显示模块构成。

图六 总框图

四、各模块设计及程序

顶层模块

图七顶层模块图

分频模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenpingis

port(

Clk:

instd_logic;

Clk1:

outstd_logic;

Clk2:

outstd_logic

);

endfenping;

architecturebehaveoffenpingis

signaldiv2clk:

std_logic;

begin

process(Clk)

begin

ifClk'eventandclk='1'then

div2clk<=notdiv2clk;

Clk1<=notdiv2clk;Clk2<=div2clk;

endif;

endprocess;

endbehave;

脉冲检测模块

libraryieee;

useieee.std_logic_1164.all;

entityjianceis

port(

P_IN:

instd_logic;

EN_OUT:

outstd_logic);

endjiance;

architecturebehaveofjianceis

begin

process(P_IN)

begin

if(P_IN='1')thenEN_OUT<='1'; ---实现检测,若有脉冲就输出1

elseEN_OUT<='0';---否则为0

endif;

endprocess;

endbehave;

计数器模块

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycnt10is

port(ENA:

instd_logic;

CLK:

instd_logic;

CLR:

instd_logic;

CQ:

outstd_logic;

Qout:

outstd_logic_vector(3downto0)

);

endcnt10;

architectureartofcnt10is

signalCQI:

STD_LOGIC_VECTOR(3downto0);

begin

U1:

process(CLK,CLR,ENA,CQI)

BEGIN

IFCLR='1'THENCQI<="0000";

ELSIFCLK'EVENTANDCLK='1'THEN

IFENA='1'THEN

IFCQI="1001"THENCQI<="0000";

ELSECQI<=CQI+'1';

ENDIF;

ENDIF;

ENDIF;

Qout<=CQI;

ENDPROCESSU1;

U2:

PROCESS(CQI)

BEGIN

IFCQI="1001"THENCQ<='1';

elseCQ<='0';

endif;

endprocessU2;

ENDart;

3/8译码器模块

libraryieee;

useieee.std_logic_1164.all;

entityYM3_8is

port(A1:

instd_logic_vector(2downto0);

WW,QW,BW,SW,GW:

OUTSTD_LOGIC);

endYM3_8;

architecturey3_8YofYM3_8is

signalS:

std_logic_vector(2downto0);

signalQ:

std_logic_vector(4downto0);

begin

S<=A1;

withSselect

Q<="11110"when"000",

 "11101"when"001",

 "11011"when"010",

 "10111"when"011",

 "01111"when"100",

 "ZZZZZ"whenothers;

WW<=Q(4);QW<=Q(3);BW<=Q

(2);SW<=Q

(1);GW<=Q(0);

endy3_8Y;

七段码译码器模块

libraryieee;

useieee.std_logic_1164.all;

entityseg7is

port(QA,QB,QC,QD:

instd_logic;

G,F,E,D,C,B,A:

OUTSTD_LOGIC);

endseg7;

architectureseg7ofseg7is

signalS:

std_logic_vector(3downto0);

signalQ:

std_logic_vector(6downto0);

begin

S<=QD&QC&QB&QA;

withSselect

Q<="0111111"when"0000",

"0000110"when"0001",

"1011011"when"0010",

"1001111"when"0011",

"1100110"when"0100",

"1101101"when"0101",

"1111101"when"0110",

"0000111"when"0111",

"1111111"when"1000",

"1101111"when"1001",

"ZZZZZZZ"whenothers;

G<=Q(6);F<=Q(5);E<=Q(4);D<=Q(3);C<=Q

(2);B<=Q

(1);A<=Q(0);

endseg7;

五、调试及数据分析

波形仿真图

图八波形仿真图

数据分析表

实际值(s)

测量值(s)

1

0.5333

0.5335

2

1.6700

1.6704

3

3.5800

3.5805

4

5.5250

5.5247

5

7.5004

7.5010

6

9.9950

9.9945

六、结论

经过调试及结果分析,设计满足任务要求。

脉冲信号宽度的测量精度符合±1ms,测量范围为0~10s。

附:

参考文献

[1]梁勇主编.EDA技术教程.北京:

人民邮电出版社.2010

[2]刘英.脉宽的测量和参数分析.电子信息对抗技术.2007

[3]吴大正.信号与线性系统分析.高等教育出版社.2005

[4]阎石.数字电子技术基础.第四版.北京:

高等教育出版社,1998

[5]韩焱,张艳花,王康谊.数字电子技术基础.北京:

电子工业出版社.2009

[6]樊昌信,曹丽娜.通信原理.北京:

国防工业出版.2007

[7]李玮.示波器的使用与检测技巧.北京:

化学工业出版社.2008

[8]巨小宝,崔晓俊,山燕妮.脉冲宽度测量新技术.电讯工程.1998

[9]彭文竹.基于8253的脉冲周期测量电路的设计及实现.现代计算机.2010

[10]路立平,杜峰,鹿晓力.电脉冲宽度的数模混合测量法.郑州轻工业学院学报(自然科学版).2003

[11]刘竹琴,白泽生.一种基于单片机的数字频率计的实现.现代电子技术.2010

[12]穆兰.单片微型计数机原理及接口技术.北京:

机械工业出版社,1997

[13]朱正为.EDA技术与应用.北京:

清华大学出版社,2005

[14]曾繁泰,陈美金.VHDI程序设计.北京:

清华大学出版社,2005

[15]郭照南.电子技术与EDA技术课程设计.中南大学出版社,2002

[16]陈立,王厚军,田书林等.现代测试技术[M].成都:

电子科技大学出版社,2002

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2