ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:569.93KB ,
资源ID:12787301      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12787301.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(可编程单脉冲发生器设计FPGA.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

可编程单脉冲发生器设计FPGA.docx

1、可编程单脉冲发生器设计FPGA可编程单脉冲发生器设计一、功能描述:本设计实现一个可编程单脉冲发生器,具体功能如下:1.异步信号复位,复位后信号输出重新开始。2.复位后5个时钟周期时,产生一个脉冲,对输入的脉冲宽度参数读取。3.当有按键使能时,输出脉冲信号,重复再按使能键,无效。4.使能按键后产生的单脉冲的上升沿与时钟取得同步。5.产生的脉冲信号的最大宽度为255。二、输入输出信号描述:信号名输入/输出目标/源功能描述clkInputPin时钟频率50M占空比1:1rstInputPin低电平有效,程序重新执行,计数器清零。data7:0InputPin8位控制脉冲信号的宽度outOutputP

2、in输出信号LED6:0OutputPin接入数码管显示data输入值三、顶层划分:系统结构框图顶层模块说明:1、 counter:计数比较,确保输出信号宽度为输入data值;2、 sync:将按键产生的单脉冲的上升沿与时钟取得同步;3、 T_trigger:T触发器模块,锁按键信号,使按键只能第一次有效;4、 preset_parameter:预置脉冲参数;5、 LED:将输入data用数码管输出显示。设计说明: 设计分为计数比较、按键同步、预置脉冲参数、T触发器模块、LED显示五个模块。计数比较模块:计数延时,由输入的宽度参数data的不同而得到不同宽度的脉冲。按键同步模块:使按键产生的单

3、脉冲的上升沿与时钟取得同步。预置脉冲参数:在系统进行复位操作的5个时间单位后,将输入的脉冲参数data预置到flag_data中。T触发器模块:T触发器模块,锁按键信号,使按键只能第一次有效。LED显示模块:将脉冲宽度的预置值和计数模块的计数值转换为数码管输出显示。四、子模块描述:4.1、counter:计数判断输出模块 1、功能描述 计数延时,由输入的宽度参数data的不同而得到不同宽度的脉冲。 2、管脚描述信号名称输入 / 输出源目标功能描述clkInputPin时钟信号50MHzrstInputPin复位信号,低电平有效data_in7:0InputPin脉冲宽度参数Q_inInputP

4、in按键使能标志outOutputPin脉冲输出 3、实现说明复位后输出out为0。当Q_in按键使能标志有效时,cnt7:0从零开始计数,当cntdata_in时,输出out=1;其余输出为0。4、模块验证 1.正常运行观测其输出变化;复位观测。 2.将cnt接数码管显示,观测脉冲宽度。4.2、sync:同步按键与时钟信号模块 1、功能描述使按键产生的单脉冲的上升沿与时钟取得同步。 2、管脚描述信号名称输入 / 输出源目标功能描述clkInputPin时钟信号50MHzrstInputPin复位信号,低电平有效en_inInputPin按键使能en_outOutputPin同步后的按键使能

5、3、实现说明当按键被按下(即en_in=0)时,将Q1=1,在clk为高电平时将Q2=Q1,en_out=Q2;clr=en_in&en_out,当clr有效时Q1=0。复位信号rst有效时,Q1=0,Q2=0,en_out=0。sync结构图:4、模块验证1.复位验证。4.3、T_trigger:T触发器模块 1、功能描述T触发器模块,锁按键信号,使按键只能第一次有效。 2、管脚描述信号名称输入 / 输出源目标功能描述rstInputPin复位信号,低电平有效inInputPinT触发器输入Q_outOutputPinT触发器输出 3、实现说明当复位时,Q_out=0;其他时输出结果为Q_o

6、ut=inQ_out。4、模块验证复位验证。4.4、preset_parameter:预置脉冲参数模块1、功能描述在系统进行复位操作的5个时间单位后,将输入的脉冲参数data预置到flag_data中。 2、管脚描述信号名称输入 / 输出源目标功能描述clkInputPin时钟信号50MHzrstInputPin复位信号,低电平有效data7:0InputPin输入的脉冲宽度参数flag_data7:0OutputPin预置脉冲宽度值 3、实现说明系统复位后sum从零开始计数,当sum=5时,将flag_data=data4、模块验证复位后检测sum值和flag_data值。4.5、LED:数

7、码管显示模块 1、功能描述 将脉冲宽度的预置值和计数模块的计数值转换为数码管输出显示。 2、管脚描述信号名称输入 / 输出源目标功能描述rstInputPin复位信号,低电平有效data2:0InputPin输入数值cnt_num7:0InputPin计数模块中cnt值led16:0OutputPin接数码管显示输入的data百位Led26:0OutputPin接数码管显示输入的data十位Led36:0OutputPin接数码管显示输入的data个位Led46:0OutputPin接数码管显示计数模块中cnt的百位Led56:0OutputPin接数码管显示计数模块中cnt的十位Led66:

8、0OutputPin接数码管显示计数模块中cnt的个位 3、实现说明将data和cnt的输入值转换为数码管显示输出。对百位取余作为百位的值,对百位取余再对十位取整作为十位的值,对个位取余作为个位的值。五、验证方案:1、结果验证 将程序下载至实验板,接示波器后,先设置脉冲宽度再复位,最后按键,观测示波器显示的波形信号。2、复位验证 下载到实验板,让其运行一段时间,进行复位,观测变化。3、仿真验证六、实验截图:前仿真波形:Quartus II综合:后仿真波形:分配管脚:程序运行最高速度:七、源程序代码:顶层模块:module pulser(data,en,rst,clk,out,led1,led2

9、,led3,led4,led5,led6);input7:0data;input en,rst,clk;output out;output6:0led1,led2,led3,led4,led5,led6;wire x,m;wire7:0d,y;sync S(.clk(c),.rst(rst),.en_in(en),.en_out(m);counter C(.Q_in(x),.clk(clk),.rst(rst),.data_in(d),.out(out),.cnt(y);preset_parameter P(.clk(clk),.rst(rst),.data(data),.flag_data(

10、d);T_trigger T(.rst(rst),.in(m),.Q_out(x);LED L(.led_data(d),.cnt_num(y),.rst(rst),.led1(led1),.led2(led2),.led3(led3),.led4(led4),.led5(led5),.led6(led6);endmodule计数判断输出模块:countermodule counter(Q_in,clk,rst,data_in,out,cnt);input7:0data_in;input Q_in,clk,rst;output7:0cnt;output out;reg out;reg7:0cn

11、t;always(posedge clk or negedge rst)begin if(!rst) begin cnt=0; out=0; end else if(Q_in&cntdata_in) begin out=1; cnt=cnt+1; end else begin out=0; endendendmodule同步按键与时钟信号模块:syncmodule sync(clk,rst,en_in,en_out);input en_in,clk,rst;output en_out;reg Q1,Q2,en_out;wire clr;assign clr=en_in&en_out;alway

12、s(en_in or rst or clk)begin if(!rst) begin Q1=0; Q2=0; en_out=0; end else if(!en_in)Q1=1; else if(clr)Q1=0; else if(clk) begin Q2=Q1; en_out=Q2; endendendmoduleT触发器模块:T_triggermodule T_trigger(rst,in,Q_out);input rst,in;output Q_out;reg Q_out;always(in or rst)begin if(!rst)Q_out=0; else Q_out=inQ_ou

13、t;endendmodule预置脉冲参数模块:preset_parametermodule preset_parameter(clk,rst,data,flag_data);input clk,rst;input7:0data;output7:0flag_data;reg7:0flag_data;reg2:0sum;reg flag_sum;always(posedge clk or negedge rst)begin if(!rst) begin sum=0; flag_sum=0; flag_data=0; end else if(flag_sum=0&sum=5) begin flag_

14、data=data; flag_sum=flag_sum+1; end else if(flag_sum=0&sum5)sum=sum+1;endendmodule数码管显示模块:LEDmodule LED(led_data,cnt_num,rst,led1,led2,led3,led4,led5,led6);input7:0led_data,cnt_num;input rst;output6:0led1,led2,led3,led4,led5,led6;reg6:0led1,led2,led3,led4,led5,led6;reg6:0LED9:0;always(rst or cnt_num

15、 or led_data)beginLED0=7b1000000;LED1=7b1111001;LED2=7b0100100;LED3=7b0110000;LED4=7b0011001;LED5=7b0010010;LED6=7b0000010;LED7=7b1111000;LED8=7b0000000;LED9=7b0010000; if(!rst) begin led1=0; led2=0; led3=0; led4=0; led5=0; led6=0; end else begin led1=LEDled_data/100; led2=LEDled_data%100/10; led3=L

16、EDled_data%10; led4=LEDcnt_num/100; led5=LEDcnt_num%100/10; led6=LEDcnt_num%10; endendendmodule测试激励模块:timescale 10ns/1nsmodule test;reg clk,rst,en;reg7:0data;wire out;wire6:0led1,led2,led3,led4,led5,led6;pulser P(data,en,rst,clk,out,led1,led2,led3,led4,led5,led6);initialbegin clk=b1; forever #1 clk=clk;endinitialbegin rst=b0;en=1;data=d14;#1 rst=0; #1 rst=b1; #6 en=0;#1 en=1; #50 data=d220;#1 rst=0;#1 rst=b1;#6 en=0;#1 en=1; #500 data=d113;#1 rst=0;#1 rst=b1;#6 en=0;#1 en=1;endendmodule

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1