基于FPGA的单脉冲发生器说明书.doc

上传人:h**** 文档编号:101763 上传时间:2018-07-06 格式:DOC 页数:43 大小:646KB
下载 相关 举报
基于FPGA的单脉冲发生器说明书.doc_第1页
第1页 / 共43页
基于FPGA的单脉冲发生器说明书.doc_第2页
第2页 / 共43页
基于FPGA的单脉冲发生器说明书.doc_第3页
第3页 / 共43页
基于FPGA的单脉冲发生器说明书.doc_第4页
第4页 / 共43页
基于FPGA的单脉冲发生器说明书.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

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

2、 8 位输入数据 (data)可变的脉冲发生器。 可变的脉冲信号可以通过把输入的 data 赋值给一个 count,通过对 count 信号做减 1 操作控制输出的脉冲宽度。把 data 赋给 count 后,在 key 键启动的情况下,输出脉冲 pulse 信号开始输出低电平, count 同时在每来一个时钟信号的时候做减 1 操作,而且 pulse 信号一直保持高电平,当 count 减为 0 时,把 pulse 信号拉低。这样就输出了一个脉冲宽度可以根据 data 输入信号可变的脉冲信号。 3 使用 环境 (软件 /硬件环境,设备等 ) 布局布线使用的环境是 Quartus II。 仿真

3、测试使用的环境是 ModelSim SE。 4 FPGA 课程设计详细内容 4.1 技术规范 (一)、 功能定义如下 : 本设计实现一个可编程单脉冲发生器 , 具体功能如下 : 1.异步信号复位 , 复位后信号输出 可以 重新开始。 2.把 8 为脉冲宽度 data 赋给计数信号 count 。 3.当有 key 按键使能时 ,输出脉冲信号, 并做 count 减 1 操作, 重复再按使能键 无效。 4.使能按键后产生的单脉冲的上升沿与时钟取得同步。 5.当 count 减为 0 时,脉冲信号拉低。高电平持续的宽度,即所需的脉冲宽度。 6.产生的脉冲信号的最大宽度为 255。 (二)、引脚定义

4、 3 信号名 输入 /输出 功能描述 clk Input 时钟频率 50M 占空比 1:1。 rst_n Input 低电平有效 ,程序重新执行 ,计数器清零。 data7:0 Input 8 位控 制脉冲信号的宽度。 key Input 按键控制 pulse 输出。 pulse Output 输出信号。 4.2 设计方案 (1) 系统功能描述 (1)分频模块 : 输入为总的时钟 50M,经过分频以后变为 100HZ。 分频模块主要是根据系统时钟,对 a 做加 1 操作,没来一个系统时钟的上升沿就对a 加 1,然后与 16 进行比较,如果相等,则把 a 清 0,然后分频时钟 clk_1 翻转,

5、 a 又重新计数,接着又与 16 比较,相等则 clk_1 翻转,不等则继续加 1。如此循环,最后生成分频时钟 clk_1。 (2)计数模块 : 脉宽参数端 data 接收 8 位的数据 , 经数据预置端 clr 装载脉宽参数 , 在计数允许端有效后便开始计数。该计数器设计成为减法计数的模式,当其计数到 0 时 ,输出端 pulse 由高电平变为低电平。便可得到单脉冲的输出。 4 系统功能描述时序关系 可编程单脉冲发生器的操作过程是 : (1) 预置脉宽参数。 (2) 按下复位键 , 初始化系统。 (3) 按下启动键 , 发出单脉冲。 4.3 功能验证方案 1:验证对象及目的: 本验证方案将描

6、述对“可编程单脉冲发生器”的验证。 2:在本验证过程中将验证一下内容: 1验证环境和工具: a:使用 ModelSim 仿真工具; b:使用 Quartus II 工具; 2仿真确认: a:分频模块: 由于系统提供的频率为 50MHz, 通过控制计数 a 使输出频率为 100HZ。编写完成后,可通过查看仿真波形查看验证的正确性。 分析:通过对 a 计数输出分频后的时钟信号 clk_1。 b: 计数模块: 计数模块主要把输入的 8 位脉冲宽度 data 传给 count,通过对 count 的计数与 0 比较判断是否相等来翻转输出的脉冲信号。通过 key 键时能后,把输入信号 data 传给 c

7、ount,并输出脉冲信号 pulse 高电平,此后 count做减 1 操作,当 count 减到 0 时,脉冲信号 pulse 输出低电平。通过给 data 不同的值,会得到不同的脉冲宽度的信号。编写好测试激励后,通过查看仿真图形可以查看验证的正确性。 分析: key 为按键启动信号,当 key 为低电平时,把 8 位脉冲宽度给计数信号 count 并开始计数,同时输出脉冲信号高电平,当 count 计数为 0 时,脉冲 pulse 信号变为低电平。 5 c:总的仿真波形: 通过传送给 data 不同的 1、 2、 3、 4、 5、 6 等 6 个值,会得到 6 种不同脉冲宽度的脉冲信号,如

8、图: 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;

9、always (posedge clk or negedge rst_n) begin if(rst_n) begin clk_1=0; a测试激励 : 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)*/); initial begin clk仿真结果 : 详细仿真图如下: 从图中可以详细的看出输入 data 为

10、 1 个脉冲宽度的情况。 全局的仿真图: 从这个图中可以看出脉冲宽度为 1、 2、 3、 4、 5、 6 的 6 个脉冲宽度。 4.5 综合及布局布线报告和引脚分布报告 1:综合, 利用 Quartus II 软件综合后的结果如下图: 9 2:布局布线: 3:电路结构: 4:引脚定义: 10 4.6 后仿真结果报告 加入网表文件 的 后仿真的结果如图: 后仿真所得到的信号图: 4.7 硬件测试结果报告 因为设备有限,所 以,未能完成对硬件的测试。 4.8 对 结果和结论 的 问题讨论 自己所做的这个题目相对是比较简单的,刚开始做的时候只用到了一个计数的模块,并没有加入分频模块,但是最后做完之后感觉这样的话会不会太简单,所以在此基础上又加入了分频模块。 从仿真图中可以看出会有几点问题: 1:如果想要根据输入的脉冲宽度 data 输出特定的脉冲宽度的信号,就必须在输入 data 数 据后,用 key 按键启动输出信号,其中 key 键必须全程都按下 ,否则对输出的脉冲宽度会产生影响。 2:如果想要往开发板上下载的话,程序还要进行改进: a:因为按键的按下和松开都会有不稳定的状态,所以要加入按键去抖; b:针对第一个问题,要做出一定的改进,我的想法是加入一个状态变量,记录 key 键按下时的状态,用这个状态变量驱动脉冲的输出。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。