用于在FPGA上反跳按钮的Verilog代码
预览截图
应用介绍
此项目是用于在FPGA上反跳按钮的Verilog代码。这项目是将为FPGA上的按钮提供一个简单的防抖Verilog代码。机械开关/按钮在切换时会导致信号中无法预测的反弹。 有多种方法可以为FPGA上的按钮实现去抖动电路。 在该项目中,在Verilog中实现了一个简单的去抖动电路,当按下FPGA上的一个按钮时,该电路仅产生单个脉冲。在附件文件中包括:FPGA上按钮的反跳电路、在FPGA上反跳按钮的Verilog代码、用于反跳按钮的Testbench Verilog代码等等。【注意,此代码将在设计中创建另一个时钟域,因此在设计时必须注意多时钟域问题,例如在不同时钟域之间连接信号(需要同步器等)。 无需在设计中创建另一个慢速时钟,我们可以生成时钟使信号来驱动两个去抖触发器。】本人在预览区展示了FPGA上按钮的反跳电路、去抖电路的预期波形图、按钮去抖动的仿真波形图、用于反跳按钮的Verilog代码的仿真波形图;同时在下方也展示了在FPGA上反跳按钮的Verilog代码;想了解得更多请下载附件。
//fpga4student.com
// FPGA projects, Verilog projects, VHDL projects
// Verilog code for button debouncing on FPGA
// debouncing module
module debounce(input pb_1,clk,output pb_out);
wire slow_clk;
wire Q1,Q2,Q2_bar;
clock_div u1(clk,slow_clk);
my_dff d1(slow_clk, pb_1,Q1 );
my_dff d2(slow_clk, Q1,Q2 );
assign Q2_bar = ~Q2;
assign pb_out = Q1 & Q2_bar;
endmodule
// Slow clock for debouncing
module clock_div(input Clk_100M, output reg slow_clk
);
reg [26:0]counter=0;
always @(posedge Clk_100M)
begin
counter <= (counter>=249999)?0:counter+1;
slow_clk <= (counter < 125000)?1'b0:1'b1;
end
endmodule
// D-flip-flop for debouncing module
module my_dff(input DFF_CLOCK, D, output reg Q);
always @ (posedge DFF_CLOCK) begin
Q <= D;
end
endmodule
©版权声明:本文内容由互联网用户自发贡献,版权归原创作者所有,本站不拥有所有权,也不承担相关法律责任。如果您发现本站中有涉嫌抄袭的内容,欢迎发送邮件至: www_apollocode_net@163.com 进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
转载请注明出处: apollocode » 用于在FPGA上反跳按钮的Verilog代码
文件列表(部分)
名称 | 大小 | 修改日期 |
---|---|---|
用于在FPGA上反跳按钮的Verilog代码.txt | 0.94 KB | 2020-03-28 |
button_debouce1.png | 27.09 KB | 2020-03-28 |
button_debouce2.png | 29.49 KB | 2020-03-28 |
button_debouce3.png | 14.38 KB | 2020-03-28 |
debouncing_button_verilog.jpg | 37.82 KB | 2020-03-28 |
image | 0.00 KB | 2020-03-28 |
发表评论 取消回复