基于FPGA的单脉冲发生器

合集下载

基于FPGA的脉冲发生器波形模块设计

基于FPGA的脉冲发生器波形模块设计

h g r cs n p leg n r t r Ve i g i s d f rwrtn o uewh l a t sIf rsm u ain i h p e ii us e ea o . o rl su e o iig m d l i Qu ru I o i lto . o e
收 稿 日期 : 0 10 一 5 2 1 3 l
冲周期 、 冲个 数 可 调 的脉 冲口 。考 虑 到 如 果 只 脉 ] 用 F GA 内 的时序做 脉 宽调 整 , F GA 内部 的 P 而 P
脉 宽调 整是 通过 计 数 器 计 数来 调 整 的 , 整 的频 调 率 是根 据 当前 的周 期 调 整 的 , 样 就不 能 满 足 高 这
3 2卷 第 3 期
21 年 0 0 1 6月

长 春 工 业 大 学 学 报( 自然 科 学 版 )
J un lo a g h nU nv riyo c n lg ( tr l ce c dto ) o r a fCh n c u ie st fTeh oo y Nau a in eE i n S i
( c o lo mp t rSce c & S h o fCo u e in e En i e rn g n e ig,Ch n c n Unv r iyo c n lg a g hu iest fTe h oo y,Ch n c n 1 0 2,Chn ) a g hu 3 01 ia
HDL语 言 在 F GA 内部 编写 单 脉 冲/ 脉 冲 计 P 群
数 器 。在其 后面加 上 一个 门控 时钟 电路 和窄脉 冲
第 3 期
张 孝 飞 , :基 于 F G 的脉 冲发 生 器 波形 模 块 设计 等 P A

基于FPGA的脉冲控制发生器设计与研究

基于FPGA的脉冲控制发生器设计与研究

fr nf m p l si m n , i c dgt e u nysnhs D S loi m w sao tdt d s nte o i r us as n e t dr t ii l q e c y tei u o e g e af r s( D )agrh a d pe o ei t g h
p le g n r tri u s e e ao n FPGA i rl g HDL. Th s p s e e ao s v lc t n o i o o r l mo e, usng Ve io i ule g n r t rha e o i a d p st n c nto d y i
数 字 量 ,转 换 为相 应 频率 的脉 冲发 送给 驱 动器 ¨ 。
K e o ds:S e o to ;FPGA ;DDS ag rt m ; P le g n rt yW r tp c nrl l o ih us e eae
0 引 言
数 字运 动 控 制 系统 中 可 能采 用 步 进 电机 ,或 者 需 要伺 服 电 机 工 作 在 步 进 模 式 。 在 这 些 情 况 下 ,运
b si n d u io ml h to o r lc r s d o n u eo iy Afe o a i g wi n ag rt m e a sg e nf r y by t e mo in c nto a d ba e n i p tv l ct . t rc mp rn t a lo i h h
中用 V ro D ei gH L语 言完成 了脉 冲发 生器的设计 。该脉 冲发生 器具 有速度 与位 置两种 控制模 式 ,并 可 以根 据 电机 驱 l 动器的工作模式 输出 4种不同的脉 冲。测试 表 明该发生 器 的输 出脉 冲均 匀稳定 ,分辨 率高 ,频 率范 围完全覆 盖宽 ,

FPGA实现可编程单脉冲发生器设计

FPGA实现可编程单脉冲发生器设计

可编程单脉冲发生器设计可编程单脉冲发生器是一种脉冲宽度可编程的信号发生器,其输出为TTL 电平。

在输入按键的控制下,产生单次的脉冲,脉冲的宽度由8位的输入数据控制(以下称之为脉宽参数)。

由于是8位的脉宽参数,故可以产生255种宽度的单次脉冲。

在目标板上,I0~I7用作脉宽参数输入,PULSE_OUT用做可编程单脉冲输出,而KEY和/RB作为启动键和复位键。

图3示出了可编程单脉冲发生器的电路图。

图3 可编程单脉冲发生器的电路图8.3.1 由系统功能描述时序关系可编程单脉冲发生器的操作过程是:(1) 预置脉宽参数。

(2) 按下复位键,初始化系统。

(3) 按下启动键,发出单脉冲。

以上三步可用三个按键来完成。

但是,由于目标板已确定,故考虑在复位键按下后,经过延时自动产生预置脉宽参数的动作。

这一过程可用图4的时序来描述。

图4 可编程单脉冲发生器的时序图图中的/RB为系统复位脉冲,在其之后自动产生LOAD脉冲,装载脉宽参数N。

之后,等待按下/KEY键。

/KEY键按下后,单脉冲P_PULSE便输出。

在此,应注意到:/KEY的按下是与系统时钟CLK不同步的,不加处理将会影响单脉冲P_PULSE的精度。

为此,在/KEY按下期间,产生脉冲P1,它的上跳沿与时钟取得同步。

之后,在脉宽参数的控制下,使计数单元开始计数。

当达到预定时间后,再产生一个与时钟同步的脉冲P2。

由P1和P2就可以算出单脉冲的宽度Tw。

8.3.2 流程图的设计根据时序关系,可以做出图5所示的流程图。

在系统复位后,经一定的延时产生一个预置脉冲LOAD,用来预置脉宽参数。

应该注意:复位脉冲不能用来同时预置,要在其之后再次产生一个脉冲来预置脉宽参数。

为了产生单次的脉冲,必须考虑到在按键KEY有效后,可能会保持较长的时间,也可能会产生多个尖脉冲。

因此,需要设计一种功能,使得当检测到KE Y有效后就封锁KEY的再次输入,直到系统复位。

这是本设计的一个关键所在。

FPGA开发中按键消抖与单脉冲发生器电路

FPGA开发中按键消抖与单脉冲发生器电路

FPGA开发中按键消抖与单脉冲发生器电路作者:邢自茹史明健来源:《现代电子技术》2009年第21期摘要:在介绍FPGA开发中按键消抖电路和单脉冲发生器电路原理的基础上,设计实现了键控单脉冲发生器,利用计数器解决了按键高频消抖问题,并通过按键产生与时钟脉冲完全相同的单脉冲。

该单脉冲键控发生器可独立应用于其他FPGA电路设计中。

在Quartus环境下给出Verilog HDL语言的行为及描述,并进行仿真实验,结果显示该电路合理可行。

关键词:单脉冲发生器;按键消抖;FPGA;Verilog HDL中图分类号:TN782 文献标识码:A文章编号:1004-373X(2009)21-171-02Elimination Buffeting of Keystroke and Single Pulse GeneratorCircuit in FPGA Development ProcessXING Ziru,SHI Mingjian(Inner Mongolia University of Technology,Huhhot,010051,China)Abstract:The circuit principle of elimination buffeting of keystroke and a single pulse generator in FPGA development are introduced,and keying single pulse generator is achieved.It solves eliminating high-frequency buffeting problem by a counter and produces the single pulse which has the same pulse width and same phase with clock cycle.Keying a single pulse generator can be applied to other independent FPGA design.The behavior and description based on Verilog HDL language are given and it is simulated in Quartus software,the method is proved logical and feasible as a result.Keywords:single pulse generator;elimination buffeting of keystroke;FPGA;Verilog HDLFPGA开发中常用到单脉冲发生器。

基于FPGA的脉冲宽度调制信号发生器

基于FPGA的脉冲宽度调制信号发生器

基于FPGA的脉冲宽度调制信号发生器郝建卫【摘要】摘要:为了产生各种不同形式的脉冲宽度调制(PWM)信号,提出一种基于现场可编程门阵列(FPGA)的脉冲宽度调制信号发生器。

采用硬件描述语言Verilog设计底层模块,并在FPGA芯片内部嵌入一个NiosII软核处理器,使用软硬件协同的工作方式产生多路PWM信号。

实验结果表明,该信号发生器的频率输出范围为1 Hz~4 MHz,占空比可调范围为1%~99%,任意两路信号间的相位差范围为1°~180°,达到预期效果。

【期刊名称】计算机工程【年(卷),期】2013(039)002【总页数】6【关键词】关键词:脉冲宽度调制;占空比;NiosII软核;压控放大器;相位累加器1 概述脉冲宽度调制(Pulse Width Modulation, PWM)是一种利用数字信号控制模拟电路的控制技术,广泛应用于电源、电机控制、通信系统、伺服系统、功率控制等电子设备[1]。

PWM技术也是变频调速技术的核心,其实现方法正在不断地被改进和发展,在这些应用领域和产品设计中,比较关键的共同问题是如何提高带宽和稳定度,产生各种不同形式的PWM信号[2]。

本文设计和实现一种基于现场可编程门阵列(Field Programmable Gate Array,FPGA)的脉冲宽度调制信号发生器。

2 信号发生器总体设计本文采用自顶向下逐级细化的设计方法,结合嵌入式可配置微处理器技术,对信号发生器进行模块化设计[3]。

顶层采用图形设计方式,底层模块由Verilog 硬件描述语言描述,利用QuartusII9.0软件完成仿真及综合,并在ALTERA公司的CycloneII系列现场可编程门阵列芯片上进行了实现。

芯片内嵌NiosII软核处理器,实现了处理器与PWM信号产生模块的无缝连接,提升了信号发生器内部的处理速度和稳定性,降低了功耗和成本。

该信号发生器由PWM信号产生模块、键盘模块、LCD显示模块、程控衰减与放大模块及电源模块共5个模块构成。

基于FPGA的单脉冲发生器

基于FPGA的单脉冲发生器

一、设计报告:1.技术规:在clr的控制下置入脉宽data,在输入按键key的控制下,产生单次的脉冲pulse,脉冲的宽度由data 8位的输入数据控制(以下称之为脉宽参数)。

clk_50M为系统的时钟。

2.总体设计方案:①系统功能描述:(1)分频模块:输入为总的时钟50M,经过分频以后变为100HZ。

(2)延时模块:当clk为高电平且在复位脉冲clr有效时置入延时脉宽,延时5个始终周期后输出一个高电平load 。

(3)计数模块:脉宽参数端data接受8位的数据,经数据预置端clr装载脉宽参数,在计数允许端有效后便开始计数。

该计数器设计成为减法计数的模式,当其计数到0时,输出端pulse由高电平变为低电平。

便可得到单脉冲的输出。

②系统功能描述时序关系:可编程单脉冲发生器的操作过程是:(1) 预置脉宽参数。

(2) 按下复位键,初始化系统。

(3) 按下启动键,发出单脉冲。

以上三步可用三个按键来完成。

但是,由于目标板已确定,故考虑在复位键按下后,经过延时自动产生预置脉宽参数的动作。

输出的信号加到灯上,输如的脉宽有开发版上的拨码开关决定,当输入脉宽后,按下复位键置入脉宽,然后按下启动键,发出单脉冲,延时一段时间后灯开始亮,亮一段时间后灯熄灭。

延时模块的时序图如下:clkclrload3.流程图的设计:根据时序关系,可以做出图所示的流程图。

在系统复位后,经一定的延时产生一个预置脉冲load,用来预置脉宽参数。

当按键key有效后产生脉冲pulse。

二、验证方案:1.验证方案的设计:①分频模块的设计:分频模块的代码:module div(clk_50M,clk);//模块名及端口的定义,到endmodule。

input clk_50M;//输入端口的定义。

output clk;//输出端口的定义。

reg [31:0] a=32‘d0;//定义部寄存器并赋初值。

reg clk=0;//给输出赋初值。

always(posedge clk_50M)beginif(a==32'd500000)//判断计数器是不是记到了500000begina<=32'd0;// 计数器记到了500000清零。

基于FPGA信号发生器的设计!

基于FPGA信号发生器的设计!

目录摘要 (2)1 前言 (3)2 设计方案 (5)2.1 总体设计思路 (5)2.2 方案论证 (6)2.2.1方案一 (6)2.2.2方案二 (6)2.2.3方案三 (6)2.3 方案确定 (7)3 软件设计 (8)3.1 波形产生模块 (8)3.1.1正弦波 (8)3.1.2 矩形波 (10)3.1.3 三角波 (10)3.1.4 基波 (11)3.1.5谐波的产生 (11)3.1.6 波形模块图 (11)3.2 频率控制模块 (11)3.3 选择波形模块 (11)3.4 分频器模块 (13)3.4.1 设计思路 (13)3.4.2 VHDL实现 (13)3.4.3 分频值计算 (14)4 硬件电路设计 (15)4.1 硬件设计注意事项 (15)4.2滤波电路 (15)4.3 幅度控制电路 (16)4.4 FPGA器件引脚分配 (16)4.5 硬件电路实现 (17)5 调试 (18)5.1设计及仿真调试使用设备 (18)5.2 调试方法 (18)5.2.1 硬件调试 (18)5.2.2 软件调试 (18)5.2.3 综合调试 (19)5.3 调试结果 (19)5.3.1 软件仿真结果及分析 (19)5.3.2 综合调试结果 (21)6 结论 (24)致谢辞 (25)参考文献 (26)附录 (27)基于FPGA的信号发生器摘要本次设计课题为应用VHDL语言及MAX+PLUS II软件提供的原理图输入设计功能,结合电子线路的设计加以完成一个可应用于数字系统开发或实验时做输入脉冲信号或基准脉冲信号用的信号发生器,它具结构紧凑,性能稳定,设计结构灵活,方便进行多功能组合的特点,经济实用,成本低廉。

具有产生三种基本波形脉冲信号(正弦波、矩形波和三角波),以及三次(及三次以下)谐波与基波的线性组合脉冲波形输出,且单脉冲输出脉宽及连续脉冲输出频率可调,范围从100HZ到1kHZ,步进为100HZ;幅度可调,从0到5伏,步进为0.1V。

一种基于FPGA的脉冲信号发生器的设计

一种基于FPGA的脉冲信号发生器的设计

一种基于FPGA的脉冲信号发生器的设计
崔旭涛;何友;周宪英
【期刊名称】《海军航空工程学院学报》
【年(卷),期】2004(019)004
【摘要】介绍了使用FPGA产生脉冲信号的方法,文中对脉冲信号的频率、脉宽、周期的控制方法、软件设计、仿真结果、硬件设计等进行了简要介绍.所设计的脉冲信号发生器经实际使用,得到了理想效果.
【总页数】4页(P435-438)
【作者】崔旭涛;何友;周宪英
【作者单位】海军航空工程学院信息融合技术研究所,烟台,264001;海军航空工程学院信息融合技术研究所,烟台,264001;92941部队,辽宁葫芦岛,125000
【正文语种】中文
【中图分类】TN761
【相关文献】
1.基于FPGA的雷达脉冲信号发生器的设计 [J], 伊志勇;刘雨
2.基于 FPGA的电磁超声脉冲信号发生器的设计 [J], 马赵;任尚坤;杨梅芳
3.基于FPGA的脉冲信号发生器设计 [J], 章欣
4.基于FPGA的高分辨率数字脉冲信号发生器的设计与实现 [J], 田宇; 施赛烽; 郑子贤; 徐南阳
5.基于FPGA的PSWF脉冲信号发生器设计 [J], 张晨亮;王红星;张榛;康家方
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安邮电大学FPGA课程设计报告题目:可编程单脉冲发生器院系:通信与信息工程学院专业班级:电子信息科学与技术学生姓名:韩萌导师姓名:张丽果起止时间:2012-9-10至2012-9-222012年09月20日FPGA课程设计报告提纲1.任务根据输入的8位的脉宽参数,输出255种宽度的单次脉冲。

可编程单脉冲发生器是一种脉冲宽度可编程的信号发生器,在输入按键的控制下,产生单次的脉冲,脉冲的宽度由8位的输入数据控制。

由于是8位的脉宽参数,故可以产生255种宽度的单次脉冲。

2.目的产生一个脉冲宽度可根据8位输入数据(data)可变的脉冲发生器。

可变的脉冲信号可以通过把输入的data赋值给一个count,通过对count信号做减1操作控制输出的脉冲宽度。

把data赋给count后,在key键启动的情况下,输出脉冲pulse信号开始输出低电平,count同时在每来一个时钟信号的时候做减1操作,而且pulse信号一直保持高电平,当count减为0时,把pulse信号拉低。

这样就输出了一个脉冲宽度可以根据data输入信号可变的脉冲信号。

3.使用环境(软件/硬件环境,设备等)布局布线使用的环境是Quartus II。

仿真测试使用的环境是ModelSim SE。

4.FPGA课程设计详细内容4.1 技术规范(一)、功能定义如下:本设计实现一个可编程单脉冲发生器,具体功能如下:1.异步信号复位,复位后信号输出可以重新开始。

2.把8为脉冲宽度data赋给计数信号count。

3.当有key按键使能时,输出脉冲信号,并做count减1操作,重复再按使能键无效。

4.使能按键后产生的单脉冲的上升沿与时钟取得同步。

5.当count减为0时,脉冲信号拉低。

高电平持续的宽度,即所需的脉冲宽度。

6.产生的脉冲信号的最大宽度为255。

(二)、引脚定义4.2 设计方案(1)系统功能描述(1)分频模块:输入为总的时钟50M,经过分频以后变为100HZ。

分频模块主要是根据系统时钟,对a做加1操作,没来一个系统时钟的上升沿就对a 加1,然后与16进行比较,如果相等,则把a清0,然后分频时钟clk_1翻转,a又重新计数,接着又与16比较,相等则clk_1翻转,不等则继续加1。

如此循环,最后生成分频时钟clk_1。

(2)计数模块:脉宽参数端data接收8位的数据,经数据预置端clr装载脉宽参数,在计数允许端有效后便开始计数。

该计数器设计成为减法计数的模式,当其计数到0时,输出端pulse由高电平变为低电平。

便可得到单脉冲的输出。

②系统功能描述时序关系可编程单脉冲发生器的操作过程是:(1) 预置脉宽参数。

(2) 按下复位键,初始化系统。

(3) 按下启动键,发出单脉冲。

4.3 功能验证方案1:验证对象及目的:本验证方案将描述对“可编程单脉冲发生器”的验证。

2:在本验证过程中将验证一下内容:1>验证环境和工具:a:使用ModelSim仿真工具;b:使用Quartus II工具;2>仿真确认:a:分频模块:由于系统提供的频率为50MHz,通过控制计数a使输出频率为100HZ。

编写完成后,可通过查看仿真波形查看验证的正确性。

分析:通过对a计数输出分频后的时钟信号clk_1。

b: 计数模块:计数模块主要把输入的8位脉冲宽度data传给count,通过对count的计数与0比较判断是否相等来翻转输出的脉冲信号。

通过key键时能后,把输入信号data传给count,并输出脉冲信号pulse高电平,此后count做减1操作,当count减到0时,脉冲信号pulse输出低电平。

通过给data不同的值,会得到不同的脉冲宽度的信号。

编写好测试激励后,通过查看仿真图形可以查看验证的正确性。

分析:key为按键启动信号,当key为低电平时,把8位脉冲宽度给计数信号count并开始计数,同时输出脉冲信号高电平,当count计数为0时,脉冲pulse信号变为低电平。

c:总的仿真波形:通过传送给data不同的1、2、3、4、5、6等6个值,会得到6种不同脉冲宽度的脉冲信号,如图:Clk:系统时钟;rst_n:复位信号;key:按键启动信号;Data:脉冲宽度信号;pulse:脉冲信号;count:中间变量,计数信号;Clk_1;分频后的频率信号;a:计数信号,用于分频;4.4 电路设计源代码,功能仿真激励源代码及功能仿真结果报告1>源代码:module hm(clk,rst_n,data,pulse,key/*,load*/);input clk,rst_n,key;input [7:0] data;output pulse/*,load*/;reg [7:0] count;reg pulse;reg clk_1;reg [4:0] a;alw ays @(posedge clk or negedge rst_n)beginif(~rst_n)beginclk_1=0;a<=5'd0;endelseif(a==5'd16)a<=5'd0;clk_1=~clk_1;endelsea<=a+5'd1;endalw ays @(posedge clk_1 or negedge rst_n)beginif(~rst_n)begincount<=0;pulse<=0;endelsecount<=data;if(key==0)beginpulse<=1;count<=count-8'd1;if(count==8'd0)beginpulse<=0;count<=8'd0;if(pulse==0)begincount<=data;endendendendmodule2>测试激励:module test;reg clk;reg rst_n;reg key;reg [7:0] data;wire pulse;always #1 clk=~clk;hm hm(.clk(clk),.rst_n(rst_n),.data(data),.pulse(pulse),.key(key)/*,.load(load)*/);initialbeginclk<=0;rst_n<=0;key<=1;data<=0;#1 rst_n<=1;#1 data<=8'd1;#1 key<=0;#200 key<=1;#1 key<=0;#1 data<=8'd2;#200 key<=1;#1 key<=0;#1 data<=8'd3;#400 key<=1;#1 key<=0;#1 data<=8'd4;#1 key<=0;#1 data<=8'd5;#100 key<=1;#1 key<=0;#1 data<=8'd6;endendmodule3>仿真结果:详细仿真图如下:从图中可以详细的看出输入data为1个脉冲宽度的情况。

全局的仿真图:从这个图中可以看出脉冲宽度为1、2、3、4、5、6的6个脉冲宽度。

4.5 综合及布局布线报告和引脚分布报告1>:综合,利用Quartus II软件综合后的结果如下图:2>:布局布线:3>:电路结构:4>:引脚定义:4.6 后仿真结果报告加入网表文件的后仿真的结果如图:后仿真所得到的信号图:4.7 硬件测试结果报告因为设备有限,所以,未能完成对硬件的测试。

4.8 对结果和结论的问题讨论自己所做的这个题目相对是比较简单的,刚开始做的时候只用到了一个计数的模块,并没有加入分频模块,但是最后做完之后感觉这样的话会不会太简单,所以在此基础上又加入了分频模块。

从仿真图中可以看出会有几点问题:1>:如果想要根据输入的脉冲宽度data输出特定的脉冲宽度的信号,就必须在输入data数据后,用key按键启动输出信号,其中key键必须全程都按下,否则对输出的脉冲宽度会产生影响。

2>:如果想要往开发板上下载的话,程序还要进行改进:a:因为按键的按下和松开都会有不稳定的状态,所以要加入按键去抖;b:针对第一个问题,要做出一定的改进,我的想法是加入一个状态变量,记录key键按下时的状态,用这个状态变量驱动脉冲的输出。

3>:data数据的读入会有一定的延时,所以要加入模块用来等待data信号全部读入。

5.课程设计的心得体会通过本次为时两周的FPGA课程设计,让我更深的认识到了基于FPGA的开发流程。

从最开始的技术规范开始,到最后的下载到板子上测试,每一步都十分的重要。

这次课设,自己做的题目是“可编程单脉冲发生器”,对于这个题目,刚开始脑子里的想法就是,这个可变的脉冲信号可以通过把输入的data赋值给一个count,通过对count信号做减1操作控制输出的脉冲宽度。

把data赋给count后,在key键启动的情况下,输出脉冲pulse信号开始输出低电平,count同时在每来一个时钟信号的时候做减1操作,而且pulse信号一直保持高电平,当count减为0时,把pulse信号拉低。

这样就输出了一个脉冲宽度可以根据data 输入信号可变的脉冲信号。

基于这个想法,我开始了我这次课设的旅程。

这个想法在课设开始第二天的时候就实现了,那基于对自己的严格要求,自己对这个题目在原先只有技术模块的基础上又加入了分频模块。

其实分频模块的原理和最开始实现脉冲的原理有异曲同工之处。

所以这个模块也很快就实现了。

接下来的时间,我又相继的做了其它的一些题目,包括:“简易的LED流水灯”、“CRC 校验”、“出租车计价器”等几个题目,也逐步的实现了题目的要求。

通过这次课程设计,我从中学习到了很多基于书本上的理论知识加以实践的经验,也在其中遇到问题的同时对问题的解决加深了对某些问题的理解。

总之,每次的课程设计都受益颇深。

6.参考资料等《基于V erilog的FPGA设计基础》——杜慧敏、李宥谋、赵全良编著西安电子科技大学出版社《V erilog HDL数字电路设计与综合》——(美)Samir Palnitkar著——夏宇闻、胡燕祥等译电子工业出版社西安邮电学院电子工程学院FPGA课程设计过程考核表西安邮电学院电子工程学院FPGA课程设计成绩鉴定表。

相关文档
最新文档