FPGA单脉冲产生器.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FPGA单脉冲产生器

可编程单脉冲发生器的设计 功能描述 1. 可编程单脉冲发生器是一种脉冲宽度可编程的信号发生器,其输出为TTL电平。 2. 在输入按键的控制下,产生单次的脉冲,脉冲的宽度由8位的输入数据控制。由于是8位的脉宽参数,故可以产生255种宽度的单次脉冲。 3. 按下复位键,初始化系统。 4. 按下启动键,产生单脉冲。 输入输出信号描述 信号名 输入/输出 目标/源 功能描述 clk Input 时钟信号 width Input Pin 脉冲宽度 start Input Pin 开始输出信号命令 RST Input Pin 复位信号 pluse_out Output Pin 输出脉冲信号 时钟分析 顶层模块: 设计思想说明: 在系统复位后,经一定的延时产生一个预置脉冲load,用来预置width。应该注意:复位脉冲不能用来同时预置,要在其之后再次产生一个脉冲来预置脉宽参数。为了产生单次的脉冲,必须考虑到在按键start有效后,可能会保持较长的时间,也可能会产生多个尖脉冲。因此,需要设计一种功能,使得当检测到start有效后就封锁start的再次输入,直到系统复位。这是本设计的一个关键所在。start产生后,单脉冲pluse_out便输出。在此,应注意到:start是与系统时钟clk不同步的,不加处理将会影响单脉冲pluse_out的精度。为此,在start产生后,等待clk到达上升沿,当clk到达上升沿后,计数单元开始计数。当达到预定时钟宽度后,再产生一个宽度为widyh的单脉冲。 四、子模块描述 4.1,延时模块 1、功能描述 本设计中需要产生一个延时为5个时钟的延时信号。 2、管脚描述 信号名称 输入 / 输出 源 功能描述 cnt[2:0] 输入 PIN 计数信号 CLK 输入 PIN 时钟信号 load 输出 PIN 延迟标志信号 RST 输入 PIN 复位信号 3、实现说明: 当RST无效时,由计数器计数5个时钟周期后输出一个时钟延时信号。 4.2 计数模块 1、功能描述 本设计中要产生一个预置位宽的计数寄存器。 2、管脚描述 信号名称 输入 / 输出 源 功能描述 count[7:0] 输入 PIN 地址寄存器 CLK 输入 PIN 时钟信号 RST 输入 PIN 复位信号 3、实现说明: 当RST有效时,计数信号count初始值为‘d0,当RST无效时,每当CLK上升沿来临时,count自加1,当到达预置脉冲信号width时,计数器清零。 4.3 信号产生模块 1、功能描述 本设计中产生一个脉冲为width的脉冲信号。 2、管脚描述 信号名称 输入 / 输出 源 功能描述 pluse_out 输出 PIN 脉冲信号 CLK 输入 PIN 时钟信号 start 输入 PIN 开始信号 RST 输入 PIN 复位信号 3、实现说明: 当RST有效时,pluse_out=‘d0,当RST无效且start信号有效时,pluse_out=d1,当count信号到达指定位宽时,pluse_out=d0。 源程序: module single_pluse(pluse_out,width,CLK,RST,start); output pluse_out; input CLK,RST,start; input [7:0] width; reg pluse_out; reg [7:0] count; reg load; reg [2:0] cnt; always@(posedge CLK or negedge RST) begin if(!RST) begin cnt=5; load=0; end else begin cnt=cnt-d1; if(cnt==d0) begin cnt=d0; load=1; end end end always@(posedge CLK or negedge RST) begin if(!RST) begin count = width; pluse_out= d0; end else if(load == d1) begin if(start == d1) begin

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档