OpenEdv-开源电子网
标题:
【FPGA开源教程连载】第九章 独立按键消抖实验B
[打印本页]
作者:
芯航线跑堂
时间:
2016-12-27 23:36
标题:
【FPGA开源教程连载】第九章 独立按键消抖实验B
本帖最后由 芯航线跑堂 于 2016-12-28 00:02 编辑
独立按键消抖实验
B
https://imgcache.qq.com/tencentvideo_v1/playerv3/TPout.swf?max_age=86400&v=20161117&vid=v0188qhv3t3&auto=0
实验目的:
1.
复习按键的设计
2.用模块化设计的方式实现每次按下按键0,4个LED显示状态以二进制加法格式加1,每次按下按键1,4个LED显示状态以二进制加法格式减1
实验平台:芯航线FPGA核心板
(, 下载次数: 1)
上传
点击文件名下载附件
实验原理:
在上一讲中设计并验证了独立按键的消抖,这里基于上一讲的按键消抖模块来实现一个加减法计数器,并以此学习模块化的设计方式。
在设计过程中,相对大一点的工程经常通常不会写在一个设计文件中,通常会针对不同的功能设计出不同的子文件,最后在顶层文件中进行例化。基于本讲其模块的划分如图
9-1
所示。
(, 下载次数: 1)
上传
点击文件名下载附件
图
9-1
顶层模块端口图
实验步骤:
这里先编写
led_ctrl
,从图
9-1
可得出其端口列表如下。
(, 下载次数: 1)
上传
点击文件名下载附件
(, 下载次数: 3)
上传
点击文件名下载附件
这里需要进行根据两个按键的状态来进行计数器的加减。
(, 下载次数: 1)
上传
点击文件名下载附件
计数器的初值为
4’b0000
,这里当按键
0
按下即计数器加一计数器变为
4’b0001
,由开发板上的
led
灯电路图可知,
led
灯为低电平点亮,此时就会出现
led0-led3
分别为亮亮亮暗,为了更直观的显示效果对输出数据进行取反,这样
led
的数据就会变为暗暗暗亮,与正常的思路相符合。
(, 下载次数: 2)
上传
点击文件名下载附件
(, 下载次数: 1)
上传
点击文件名下载附件
图
9-2 led
灯电路图
这样各个独立的模块即编写完成,下面开始顶层文件的设计。
(, 下载次数: 3)
上传
点击文件名下载附件
(, 下载次数: 1)
上传
点击文件名下载附件
(, 下载次数: 2)
上传
点击文件名下载附件
进行分析和综合直至没有错误以及警告。这时可以打开Quartus II软件中的RTL Viewer,查看模块间的连接。如图9-4所示,与设计的顶层模块端口图一样,因此可以看出顶层文件例化正确。
(, 下载次数: 3)
上传
点击文件名下载附件
图
9-4
顶层模块
RTL
视图
为了测试仿真编写测试激励文件,这里由于调用了两个按键进行仿真,因此需要将前一讲设计的按键仿真模型进行改写,加入使能信号press,即press上升沿时就执行一次输出key,其中任务task press_key部分是不变的。如果不改写调用的两个仿真模型会同时执行,就导致出错。
(, 下载次数: 1)
上传
点击文件名下载附件
(, 下载次数: 1)
上传
点击文件名下载附件
新建key_led_top_tb.v文件输入以下内容并保存到testbench文件夹下,再次进行分析和综合直至没有错误以及警告。以下内容除了生成了时钟以及复位信号,还模拟了按键0按下释放两次以及按键1按下释放两次的过程。这样整体的代码就如下所示。
(, 下载次数: 1)
上传
点击文件名下载附件
(, 下载次数: 2)
上传
点击文件名下载附件
(, 下载次数: 1)
上传
点击文件名下载附件
(, 下载次数: 1)
上传
点击文件名下载附件
(, 下载次数: 2)
上传
点击文件名下载附件
(, 下载次数: 2)
上传
点击文件名下载附件
设置好仿真脚本后进行功能仿真,可以看到如图9-5所示的波形文件。每当按键0按下时计数器led_r则会加一,按键1按下后计数器led_r则会减一。
(, 下载次数: 2)
上传
点击文件名下载附件
图
9-5
功能仿真波形图
分配引脚后全编译无误后下载工程到开发板中。也看到与之对应的现象,即为设计无误。
至此,实现了一个简单的模块化设计,并进行了仿真与板级验证。
小梅哥
芯航线电子工作室
关于学习资料,小梅哥系列所有能够开放的资料和更新(包括视频教程,程序代码,教程文档,工具软件,开发板资料)都会发布在我的云分享。(记得订阅)链接:
http://yun.baidu.com/share/home?uk=402885837&view=share#category/type=0
欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/)
Powered by Discuz! X3.4