SOC设计:关于reset的细节

03-07 1284阅读

有如下几个信号

SOC设计:关于reset的细节
(图片来源网络,侵删)

1、时钟:clk_top

2、总的reset信号:rstn_top

3、scan的reset信号:scan_rstn

4、软件复位信号:rstn_soft_sub

5、scan模式信号:scan_mode

6、reset bypass 信号:scan_rstn_sel

功能:

一:在非test模式时,也就是test_mode=1'd0时,如果rstn_soft_sub=1,则rstn_top直接透传过去给reset_soft_block里的rstn,然后rstn再经过2拍同步处理,然后产生rstn_sub。这里涉及到了异步复位,同步释放知识点。

二:正常功能仿真时,scan_mode = 1'd0 和scan_rstn_sel=0,直观点讲,rstn_sub是由rstn_top同步处理2拍后产生。

reset_soft_block u0_sub_rstn_gen (/*autoinst*/

    .clk                            (clk_top                                     ), // input  

    .rstn0                          (rstn_top                                    ), // input  

    .rstn1                          (scan_rstn                                  ), // input  

    .rstn_soft                      (rstn_soft_sub                            ), // input  

    .test_mode                      (scan_mode                                  ), // input  

    .rst_bypass                     (scan_rstn_sel                              ), // input  

    .rstn_out                       (rstn_sub                                )  // output

                );

 

reset_soft_block功能

module reset_soft_block (

                clk,

                rstn0,

                rstn1,

                rstn_soft,

                test_mode,

        rst_bypass,

                rstn_out

        );

input        clk;

input        rstn0;

input        rstn1;

input        rstn_soft;

input        test_mode;

input        rst_bypass;

output        rstn_out;

wire        rstn;

wire        rstnsync;

//assign rstn = rstn0 & (rstn_soft | test_mode);

macro_oa21 C1 ( .b0(rstn0), .a0(rstn_soft), .a1(test_mode), .o(rstn) );

resetsync u_rstn_sync (.clk(clk), .rstn(rstn), .rstnsync(rstnsync));

macro_mux C2 ( .d0(rstnsync), .d1(rstn1), .s(rst_bypass), .o(rstn_out) );

 

endmodule

module resetsync ( clk, rstn, rstnsync);

input        clk;

input        rstn;

output        rstnsync;

wire        rstnsync1;

macro_sdfr u_rstnsync1(.CK(clk), .D(rstn), .RB(rstn), .Q(rstnsync1));

macro_sdfr u_rstnsync2(.CK(clk), .D(rstnsync1), .RB(rstn), .Q(rstnsync));

endmodule

 

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]