集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 910|回复: 2

基于FPGA的按键弹跳消除模块的研究与应用(二)

[复制链接]
zhiweiqiang33 发表于 2012-10-19 17:43:47 | 显示全部楼层 |阅读模式
2.2 程序设计

设计一个高脉冲计数器count1和一个低脉冲计数器conut0。引入一个采样脉冲信号clk,对输入信号button_in进行采样,并对clk进行计数。若button_in为高电平,count1做加法计数,直到count1各位全为1,停止计数,归零,使消抖后的输出信号button_out输出1。若button_in为低电平,count0做加法计数,直到count0各位全为1,停止计数归零,并使消抖后的输出信号button_out输出0。

部分程序如下:

module filter(clk,

reset,

button_in,

button_out);

input clk;

input reset;

input button_in;

output button_out;

wire buttong_out1;

reg [20:0] count0;

reg [20:0] count1;

reg button_out1_reg;

……

assign button_out=button_out1_reg;

//对输入进行采样,计数

always@(posedge clk or negedge reset)

begin

if(!reset) count1<=21'h000000;

else if(button_out1==1'b1) count1<=count1+1;//对高电平计数

else count1<=21'h000000;

end

always@(posedge clk or negedge reset)

begin

if(!reset) count0<=21'h000000;

else if(button_out1==1'b0) count0<=count0+1;//对低电平计数

else count0<=21’h000000;

end

//输出

always@(posedge clk or negedge reset

begin

if(!reset) button_out1_reg<=1'b1;

else if(count0==21'h1312D0) //判断低电平信号是否符合输出条件

button_out1_reg<=1'b0; //如果符合条件,则输出低电平

else if(count1==21'h1312D0) //判断低电平信号是否符合输出条件

button_out1_reg<=1'b1; //如果符合条件,则输出高电平

else button_out1_reg<=button_out1_reg;

end

endmodule

3 按键弹跳消除模块的实际应用

利用Memec virtex-4 开发板,通过开发板上的按钮输入8位的01控制代码,用开发板上的开关输入状态控制位,从而控制板上的1602 C型字符型液晶模块的显示模式和内容。

LCD控制信号生成模块:根据按钮输入,产生控制显示模块的8位控制信号。对按钮送入该模块的1位(0/1)信号进行保存并进行转换,使每8次输入形成一个8位的信号。如果输入不满8位或需重新输入,则取消上次结果;如果确定输入结果正确,则将8位信号保存并输出。

LCD显示控制模块:完成1602 C型字符型液晶模块的初始化,并根据控制信号完成状态转换。

结束语

本文进行性模块化设计,实现了弹跳消除电路模块、LCD控制信号生成模块和LCD显示控制模块组成的系统的具体功能,在Memec实验板上运行效果良好。并且在用FPGA进行电路调试的时候,可以将该系统嵌入其它电路中,增加需要的测试点和观察点,通过按钮控制显示,可以动态的对电路进行测试,找出问题,使调试更加直观,从而提高的FPGA的内部信号的可观察性,提高验证效率。
 楼主| zhiweiqiang33 发表于 2012-10-28 13:38:07 | 显示全部楼层
 楼主| zhiweiqiang33 发表于 2012-10-28 13:38:11 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-26 16:56 , Processed in 0.111950 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表