zoukankan      html  css  js  c++  java
  • Verilog-消除复位毛刺(全志科技)

    原题

    题目理解

    该题目有2个要求,首先是要对输入的rstn_i进行过滤,小于等于32个时钟周期的当作“不正常”复位请求;另外,正常复位请求撤销后,也就是有效的rstn_i恢复高电平后,rstn_o能够在2个时钟周期后恢复高电平。

    代码思路

    1、外围rstn_i作为异步信号,需要进行打2拍处理,缓解亚稳态;由于此处已经对rstn_i打了2拍,按照题目要求,正常复位撤销后,rstn_o能够在2个时钟周期后恢复高电平,因此rstn_o由低到高的跳变与rstn_reg2必须一致,assign rstn_o = (count==6'd32 && rstn_reg2==1'b0)? 1'b0 : 1'b1; 的判断条件有rstn_reg2==1'b0, 不加这个的话rstn_o在正常复位撤销后需要3个时钟周期后才能恢复高电平
    2、设置一个计数器对打拍后的rstn_reg2进行统计,只要检测到高电平,计数清零,否则计数加1,直到32

    代码

    `timescale 1ns / 1ps
    
    module rstn_allwinner(
    	input clk,
    	input rstn_i,
    	
    	output rstn_o
        );
    	 
    reg rstn_reg1,rstn_reg2;
    reg [5:0] count;
    
    always @(posedge clk) begin
    	{rstn_reg1,rstn_reg2} <= {rstn_i,rstn_reg1};
    end
    
    always @(posedge clk) begin
    	if(rstn_reg2) count <= 6'd0;
    	else begin
    		if(count == 6'd32) count <= count;
    		else count <= count + 1'b1;
    	end
    end 
    
    assign rstn_o = (count==6'd32 && rstn_reg2==1'b0)? 1'b0 : 1'b1;
    
    endmodule
    

    仿真波形

    1、rstn_i持续31个周期,rstn_o无复位动作

    2、rstn_i持续32个周期,rstn_o仍无复位动作

    3、rstn_i持续33个周期,rstn_o产生复位动作

  • 相关阅读:
    hdoj 2063 过山车
    hdoj 2112 HDU Today
    hdoj 1874 畅通工程续
    hdoj 2544 最短路
    sound of the genuine
    复习webpack的常用loader
    node-sass安装报错
    react-debug
    react-router 4v 路由嵌套问题
    React 中使用sass
  • 原文地址:https://www.cnblogs.com/wt-seu/p/13430052.html
Copyright © 2011-2022 走看看