脉冲信号发生器设计.docx
《脉冲信号发生器设计.docx》由会员分享,可在线阅读,更多相关《脉冲信号发生器设计.docx(15页珍藏版)》请在冰豆网上搜索。
![脉冲信号发生器设计.docx](https://file1.bdocx.com/fileroot1/2022-11/27/33f52d78-e0ee-4f15-af50-c919e6c21b76/33f52d78-e0ee-4f15-af50-c919e6c21b761.gif)
脉冲信号发生器设计
摘要:
本实验是采用fpga方式基于AlterCyclone2EP2C5T144C8的简易脉冲信号发生器,可以实现输出一路周期1us到10ms,脉冲宽度:
0.1us到周期-0.1us,时间分辨率为0.1us的脉冲信号,并且还能输出一路正弦信号(与脉冲信号同时输出)。
输出模式可分为连续触发和单次手动可预置数(0~9)触发,具有周期、脉宽、触发数等显示功能。
采用fpga计数实现的电路简化了电路结构并提高了射击精度,降低了电路功耗和资源成本。
关键词:
FPGA;脉冲信号发生器;矩形脉冲;正弦信号;
引言
(一)方案设计与比较
脉冲信号产生方案:
方案一、采用专用DDS芯片的技术方案:
目前已有多种专用DDS集成芯片可用,采用专用芯片可大大简化系统硬件制作难度,内部数字信号抖动小,输出信号指标高;但专用芯片控制方式比较固定,最大的缺点是进行脉宽控制,测量困难,无法进行外同步,不满足设计要求。
方案二、单片机法:
利用单片机实现矩形脉冲,可以较方案以更简化外围硬件,节约成本,并且也可以实现灵活控制、能产生任意波形的信号发生器。
但是单片机的内部时钟一般是小于25Mhz,速度上无法满足设计要求,通过单片机产生脉冲至少需要三条指令,所需时间大于所要求的精度要求,故不可取。
方案二:
FPGA法:
利用了可编程逻辑器件的灵活性且资源丰富的特点,通过Quartus软件的设计编写,实现脉冲信号的产生及数控,并下载到试验箱中,这种方案电路简单、响应速度快、精度高、稳定性好故采用此种方案。
(二)理论分析与计算
脉冲信号产生原理:
输入量周期和脉宽,结合时钟频率,转换成两个计数器的容量,用来对周期和高电平的计时,输出即可产生脉冲信号。
脉冲信号的精度保证:
时间分辨率0.1us,周期精度:
+0.1%+0.05us,宽度精度:
+0.1%+0.05us,为满足精度要求,所以所选时钟频率至少1/0.05us=20MHZ,由于试验箱上大于10MHZ只有50MHZ,故选时钟信号50MHZ,此时精度1/50MHZ=0.02us<0.05us,满足精度要求。
正弦信号产生原理:
正弦信号的产生由DDS原理实现,频率由频率控制字M和时钟周期Fc决定,M=Fout*2^N/Fc,Fout=1/T,N即为相位累加器的位数,化简锝M=2^N/(5*T),即说明可以通过输入量周期控制正弦的频率,与脉冲达到同周期。
(三)程序设计
3.1系统框图如图3-1所示。
图3-1系统框图
按键输入模块:
通过不同的按键切换周期和脉宽、高低位输入数据。
(vhdl语言见附录1)
图3-2按键输入模块
显示模块:
采用查询ROM表的方法,二进制数值通过一个ROM表显示为十进制数值,在数码管上显示。
(Vhdl及rom表见附录2)
图3-3显示模块
高低电平计数模块:
计数器接时钟脉冲50MHZ,即每次计数0.02us,5次计数为0.1us,即为实验要求的时间精度0.1us,通过置入周期和脉宽放大5倍(周期和脉宽均以0.1us为单位)便可产生高低脉冲信号。
(Mk模块vhdl见附录三)
图3-4脉冲信号产生模块
正弦信号产生模块:
由DDS原理产生,频率控制字M=Fout*2^N/Fc,Fout=1/T,N即为相位累加器的位数,化简得M=2^N/(5*T),再通过相位累加器查找正弦ROM表,便可产生正弦信号,正弦信号的周期即为T,与脉冲信号同周期。
(reg29、dm1、正弦rom见附录四)
图3-5正弦信号产生模块
整体电路连接:
(见附录五)
(四)作品测试
4.1测试仪器
TDS1002型60MHZ10GS/s双通道数字存储示波器,系统试验箱。
4.2测试方案
控制时钟:
50MHz
按键操作:
Key1:
十分位、百位计数使能;Key2:
个位、千位计数使能;key3:
十位、万位计数使能;key4:
高三位低三位切换;key5:
脉宽、周期切换;key6:
脉宽周期输入脉冲;Key7:
猝发脉冲计数按键;key8:
系统清零键;key3与key2同时按下切换至单猝发方式;key3、2、1同时按下但猝发脉冲发射。
测试方法:
按键输入脉宽和周期,经过示波器观察测量正弦和脉冲周期以及脉宽,记录数据制4.3表格,切换猝发方式后继续用示波器进行单猝发计数测试。
4.3测试结果
输入
周期
输入
脉宽
显示
脉宽
脉宽
误差
显示
周期
周期
误差
上升
时间
正弦周期
幅度
猝发模式状态下输入数据N,示波器显示输出N个脉冲和正弦信号;波形图见附录6
4.4结果分析
系统在输出脉冲脉宽、周期和正弦波以及猝发脉冲等指标达到题目的基本和发挥部分要求,各项指标测量精度高,整体性能达到题目发挥部分要求。
(五)总结
本系统以fpga作为系统的核心控制器件,以系统试验箱为平台,具有1us-10ms的方波脉冲发生和正弦脉冲发生功能,同时具有1-9固定数量脉冲单猝发功能,具有精度较高速度快的特点,所有指标均达到或部分超过赛题要求。
附录
附件1:
按键输入模块
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_1164.all;
entityxianshiis
port(cp,change,clr,hl,aj1,aj2,aj3:
instd_logic;
zq,mk:
outstd_logic_vector(16downto0));
endxianshi;
architectureoneofxianshiis
signalm:
std_logic_vector(16downto0);
signaln:
std_logic_vector(16downto0);
begin
process(cp,change,clr,hl,aj1,aj2,aj3)
begin
ifclr='1'then
m<="00000000000000000";n<="00000000000000000";
elsifcp'eventandcp='1'then
ifchange='0'andhl='0'then
ifaj1='1'thenm<=m+1;endif;
ifaj2='1'thenm<=m+10;endif;
ifaj3='1'thenm<=m+100;endif;
endif;
ifchange='0'andhl='1'then
ifaj1='1'thenm<=m+1000;endif;
ifaj2='1'thenm<=m+10000;endif;
ifaj3='1'thenm<=m+100000;endif;
endif;
ifchange='1'andhl='0'then
ifaj1='1'thenn<=n+1;endif;
ifaj2='1'thenn<=n+10;endif;
ifaj3='1'thenn<=n+100;endif;
endif;
ifchange='1'andhl='1'then
ifaj1='1'thenn<=n+1000;endif;
ifaj2='1'thenn<=n+10000;endif;
ifaj3='1'thenn<=n+100000;endif;
endif;
endif;
zq<=m;
mk<=n;
endprocess;
endone;
附件2:
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_1164.all;
entitychgis
port(change:
instd_logic;
zq,mk:
instd_logic_vector(16downto0);
xs:
outstd_logic_vector(16downto0));
endchg;
architectureoneofchgis
begin
process(change)
begin
ifchange='0'then
xs<=zq;
else
xs<=mk;
endif;
endprocess;
endone;
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_1164.all;
entityhhllis
port(hl:
instd_logic;
h:
instd_logic_vector(16downto0);
l:
instd_logic_vector(9downto0);
xxss:
outstd_logic_vector(9downto0));
endhhll;
architectureoneofhhllis
begin
process(hl)
begin
ifhl='0'then
xxss<=l;
else
xxss<=h(9downto0);
endif;
endprocess;
endone;
显示rom表
附件3:
mk
libraryieee;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_1164.all;
entitymkis
port(clk:
instd_logic;
t,k:
std_logic_vector(19downto0);
f:
outstd_logic);
endmk;
architectureoneofmkis
signalm:
std_logic_vector(19downto0);
begin
process(clk,t,m)
begin
ifclk'eventandclk='1'then
m<=m+1;
ifm>=tthen
m<="00000000000000000001";f<='0';
elsifm<=kthen
f<='1';
elsef<='0';
endif;
endif;endprocess;
endone;
附件4:
Reg29
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityreg29is
port(d:
instd_logic_vector(31downto0);
clk:
instd_logic;
q:
outstd_logic_vector(31downto0));
endreg29;
architectureoneofreg29is
begin
process(clk,d)
begin
ifclk'eventandclk='1'then
q<=d;
endif;
endprocess;
endone;
dm1
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitydm1is
port(q:
instd_logic_vector(9downto0);
si:
instd_logic_vector(16downto0);
f:
outstd_logic_vector(9downto0));
enddm1;
architectureoneofdm1is
begin
process(si,q)
begin
ifsi="00000000000000000"thenf<="0000000000";
elsef<=q;
endif;
endprocess;
endone;
正弦rom
附件五:
烟台工程职业技术学院
毕业(设计)成绩评定评分表
评价基元
评价内涵
满分
实评分
平时成绩
30%
能按时完成毕业设计(论文)各阶段所要求的工作
10
能综合运用所学知识分析与解决问题的能力、独立工作能力和实际动手能力
14
工作态度认真、端正、虚心、严谨,严格遵守纪律
6
小计
30
评阅成绩
30%
能按任务书要求出成果
3
论文结构完整、合理,条理清晰,对实验方案的论述正确
5
能运用本学科常规研究方法及相关研究手段(如计算机、实验仪器设备等)进行实验、实践并加工处理、整合信息,实验数据可靠,实验结果正确
5
设计用语、格式、图纸(图表)、数据、量和单位符合国家标准,各种资料引用规范
4
视角新颖,主题突出,论据充分,论证有力,分析透彻,计算和结论正确
5
论文中所表述的基本概念清楚,基础知识和专业知识的掌握牢固扎实
6
文字表达通顺无误,字数符合要求
2
小计
30
答辩成绩
40%
答辩时基本概念清楚,基础知识和专业知识的掌握牢固扎实
10
答辩过程中的自述简明无误,语言流畅
10
能正确回答问题,特别是本课题范围内的基本理论和基本技能问题
20
课题范围以外的提问仅作参考,不计分
小计
40
总成绩合计
100
说明:
评定成绩分为优秀、良好、中等、及格、不及格五个等级,实评总分90分(含90分)以上记为优秀,80分(含80分)以上为良好,70分(含70分)以上记为中等,60分(含60分)以上记为及格,60分以下记为不及格。
烟台工程职业技术学院
毕业设计(论文)成绩评定评审等级表
指导教师评审意见
评语:
评定等级:
指导教师(签名):
答辩小组意见
评语:
评定等级:
负责人(签名):
学院抽查意见
评语:
评定等级:
负责人(签名):