我是靠谱客的博主 故意早晨,最近开发中收集的这篇文章主要介绍复位电路设计1.1 概念1.2 为什么需要复位电路1.3 FPGA的复位电路1.4 同步复位和异步复位1.5 异步复位同步释放1.6 案例----按键消抖,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
复位电路
- 1.1 概念
- 1.2 为什么需要复位电路
- 1.3 FPGA的复位电路
- 1.4 同步复位和异步复位
- 1.5 异步复位同步释放
- 1.6 案例----按键消抖
1.1 概念
复位指的是将寄存器恢复到默认值,一般包括同步复位和异步复位。
1.2 为什么需要复位电路
数字电路中寄存器和RAM在上电之后默认的状态和数据是不确定的,使用复位功能将寄存器复位到初始状态0(寄存器也可以设置上电复位为1)、将RAM的数据复位到初始化0。
1.3 FPGA的复位电路
FPGA中有上电复位功能,也就是POR(power on reset),内部的商店检测模块检测到电源电压超过检测门限后,产生一个上电复位脉冲送给所有的寄存器,来进行复位操作。
1.4 同步复位和异步复位
同步复位,指的是当 时钟上升沿 检测到 复位信号,执行复位操作,有效的时钟沿是前提。
异步复位,指的是无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。当时钟上升沿检测到复位信号,执行复位操作。
`timescale 1ns / 1ps
///
同步复位 如下:
always @ (posedge clk) begin
if (rst_n == 1'b0)
signal <= 1'b0;
else
signal <= a;
异步复位 如下:
always @ (posedge clk or negedge rst_n) begin
if (rst_n == 1'b0)
signal <= 1'b0;
else
signal <= a;
1.5 异步复位同步释放
目的是为了防止复位信号撤除时,可能产生亚稳态
`timescale 1ns / 1ps
///
异步复位同步释放 如下:
always @ (posedge clk or negedge rst_n) begin
if (!rst_n) begin
rst_1 <= 1'b0;
rst_2 <= 1'b0;
end
else begin
rst_1 <= 1'b1;
rst_2 <= 1'b0;
end
end
assign rst_n = rst_2 ;
always @ (posedge clk or negedge rst_n)
if(rst_n == 1'b0)
signal <= 1'b0;
else
signal <= a ;
1.6 案例----按键消抖
`timescale 1ns / 1ps
///
按键消抖 如下:
module key_debounce(
input clk ,
input key ,
output rst_n
);
reg key_reg ;
reg [31:0] delay_cnt ;
reg key_value;
always @ (posedge clk ) begin
key_reg <= key ;
if(key_reg != key)
delay_cnt <= 32'd1000000 ;
else if(key_reg == key) begin
if(delay_cnt > 32'd0)
delay_cnt <= delay_cnt - 1'b1 ;
else
delay_cnt <= delay_cnt ;
end
end
always @ (posedge clk) begin
if(delay_cnt == 32'd1) begin
key_value <= key ;
end
else begin
key_value <= rst_n ;
end
end
assign rst_n = key & key_value ;
endmodule
仿真代码:
module tb_key();
reg clk ;
reg key ;
wire rst_n;
initial begin
clk = 1'b0 ;
key = 1'b1 ;
#200
key = 1'b0 ;
#200
key = 1'b0 ;
#200
key = 1'b1 ;
#200
key = 1'b1 ;
#200
key = 1'b1 ;
end
always #10 clk = ~clk ;
key_debounce key_debounce_inst(
.clk (clk),
.key (key),
.rst_n(rst_n)
);
endmodule
最后
以上就是故意早晨为你收集整理的复位电路设计1.1 概念1.2 为什么需要复位电路1.3 FPGA的复位电路1.4 同步复位和异步复位1.5 异步复位同步释放1.6 案例----按键消抖的全部内容,希望文章能够帮你解决复位电路设计1.1 概念1.2 为什么需要复位电路1.3 FPGA的复位电路1.4 同步复位和异步复位1.5 异步复位同步释放1.6 案例----按键消抖所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复