基于FPGA的单脉冲发生器

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

西安邮电大学FPGA课程设计报告

题目:可编程单脉冲发生器

院系:通信与信息工程学院专业班级:电子信息科学与技术学生姓名:韩萌

导师姓名:张丽果

起止时间:2012-9-10至2012-9-22

2012年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)

begin

if(~rst_n)

begin

clk_1=0;

a<=5'd0;

end

else

if(a==5'd16)

相关文档
最新文档