软复位与硬复位

软复位与硬复位

1、软复位与硬复位

软复位信号名称中通常包含soft,硬复位信号名称中通常包含hard

软复位:常用于复位逻辑模块

硬复位:常用于配置寄存器模块,配置信号同步模块

硬复位有效会驱动软复位有效

一个模块出现问题时,可以使其软复位有效,进行逻辑复位操作,但是由于配置寄存器是由硬复位驱动的,所以不会发现改变,因此无需浪费时间重新配置。

2、复位的产生

NOTE:硬复位有效会导致软复位有效,而通过soc总线配置软复位有效时硬复位不受影响。

硬复位如何产生:芯片复位时(chip_poweron_rst_n=0)

如下图所示,复位信号_n表示低电平有效,其他信号高电平有效

chip_poweron_rst_n由芯片复位管脚驱动,此信号有效(值为0)则芯片中所有子系统软复位和硬复位都有效,即芯片重启。hard_rst_en_csr,硬复位总使能信号,sub_sys_hard_rst_cfg_csr为硬复位配置寄存器,控制着芯片中子系统的软复位和硬复位,sub_sys_hard_rst_cfg_csr[0]为子系统硬复位总开关,当sub_sys_hard_rst_cfg_csr和hard_rst_en_csr同时有效时,所有硬复位全部有效。

当sub_sys_hard_rst_cfg_csr[1]而sub_sys_hard_rst_cfg_csr[0]无效(前提,chip_poweron_rst_n和hard_rst_en_csr均为1),则仅仅ppu_hard_rst_n有效。

硬复位会驱动软复位有效,当ppu_hard_rst_n有效时,ppu_soft_rst_n同样有效。


assign  ppu_hard_rst_n = chip_poweron_rst_n&(~(hard_rst_en_csr&(sub_sys_hard_rst_cfg_csr[0]|sub_sys_hard_rst_cfg_csr[1])));
assign  hbm_hard_rst_n = chip_poweron_rst_n&(~(hard_rst_en_csr&(sub_sys_hard_rst_cfg_csr[0]|sub_sys_hard_rst_cfg_csr[2])));
assign  cfg_hard_rst_n = chip_poweron_rst_n&(~(hard_rst_en_csr&(sub_sys_hard_rst_cfg_csr[0]|sub_sys_hard_rst_cfg_csr[3])));
assign  se_hard_rst_n  = chip_poweron_rst_n&(~(hard_rst_en_csr&(sub_sys_hard_rst_cfg_csr[0]|sub_sys_hard_rst_cfg_csr[4])));

assign  ppu_soft_rst_n = ppu_hard_rst_n&(~(soft_rst_en_csr&(sub_sys_soft_rst_cfg_csr[0]|sub_sys_soft_rst_cfg_csr[1])));
assign  hbm_soft_rst_n = hbm_hard_rst_n&(~(soft_rst_en_csr&(sub_sys_soft_rst_cfg_csr[0]|sub_sys_soft_rst_cfg_csr[2])));
assign  cfg_soft_rst_n = cfg_hard_rst_n&(~(soft_rst_en_csr&(sub_sys_soft_rst_cfg_csr[0]|sub_sys_soft_rst_cfg_csr[3])));
assign  se_soft_rst_n  = se_hard_rst_n &(~(soft_rst_en_csr&(sub_sys_soft_rst_cfg_csr[0]|sub_sys_soft_rst_cfg_csr[4])));

猜你喜欢

转载自blog.csdn.net/icxiaoge/article/details/84697192
今日推荐