0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

异步复位寄存器的0时刻是如何进行赋值的呢?

ruikundianzi 来源:IC的世界 2023-09-07 09:53 次阅读

Verilog规范告诉我们:negedge 事件指的是如表43所示的跳变,发生negedge事件时才会执行操作。那么0时刻,是如何执行操作的呢?

鸽子在Verilog标准中并没有找到0时刻赋值明确的说明。如下代码中,0时刻,rst_n为0,clk 处于低电平,那么cfg_mode的数值是多少呢?

always@(posedgeclkornegedgerst_n)
    if (!rst_n) begin
      cfg_mode                   <= 1'b0;
    end else   begin
      cfg_mode                   <= cfg_mode_in               ;
end

实际电路中:

芯片上电之前,芯片的chip_reset一直处于复位状态,因此导致芯片内部的rst_n一直为0,且芯片内部PLL还没有工作,也没有产生clk,此时没有任何信号的跳变,即clk没有跳变,rst_n一直为0也没有跳变。在实际电路中,从D触发器的结构图可以看到,当复位R一直是1时,即使时钟信号不跳变,Q端输出也是0。

e1cbee1c-4ca1-11ee-a25d-92fbcf53809c.pnge1f6fd50-4ca1-11ee-a25d-92fbcf53809c.pnge217c45e-4ca1-11ee-a25d-92fbcf53809c.png

VCS在0时刻赋值

e22d4004-4ca1-11ee-a25d-92fbcf53809c.png

VCS 在0时刻会执行一次always块的赋值,而不是等到信号跳变。

e2528d78-4ca1-11ee-a25d-92fbcf53809c.png

module zero_time_test;
    reg rst_n;
 
    initial begin
        rst_n = 0;
        #20 rst_n = 1;
    end
 
    always@(posedge rst_n) begin: always_case1
        $display("The always case1 executed @Time %f", $time());
    end
 
    always@(negedge rst_n) begin: always_case2
        $display("The always case2 executed @Time %f", $time());
    end
 
    always@(rst_n) begin: always_case3
        $display("The always case3 executed @Time %f", $time());
    end
 
endmodule
e2640f12-4ca1-11ee-a25d-92fbcf53809c.png
module zero_time_test;
    reg rst_n;
 
    initial begin
        rst_n = 1;
        #20 rst_n = 0;
    end
 
    always@(posedge rst_n) begin: always_case4
        $display("The always case4 executed @Time %f", $time());
    end
 
    always@(negedge rst_n) begin: always_case5
        $display("The always case5 executed @Time %f", $time());
    end
 
    always@(rst_n) begin: always_case6
        $display("The always case6 executed @Time %f", $time());
    end
 
endmodule
e279355e-4ca1-11ee-a25d-92fbcf53809c.png  






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5317

    浏览量

    120010
  • D触发器
    +关注

    关注

    3

    文章

    164

    浏览量

    47863
  • CLK
    CLK
    +关注

    关注

    0

    文章

    127

    浏览量

    17126
  • PLL电路
    +关注

    关注

    0

    文章

    92

    浏览量

    6397
  • Verilog语言
    +关注

    关注

    0

    文章

    113

    浏览量

    8214

原文标题:异步复位寄存器:0时刻赋值

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    常见的FPGA复位设计

    在FPGA设计中,当复位整个系统或功能模块时,需要将先关寄存器被清零或者赋初值,以保证整个系统或功能运行正常。在大部分的设计中,我们经常用“同步复位”或“异步
    发表于 05-14 14:49 2356次阅读
    常见的FPGA<b class='flag-5'>复位</b>设计

    寄存器reg延迟问题

    各位看官好,最近小弟遇到了一个寄存器延迟的问题,虽然不是特别重要,但还是想弄明白,请各位看官指导。具体如下: 对于一个只有clk、reset、data_in、data_out的模,当我们用如下
    发表于 11-14 10:10

    简谈同步复位异步复位

    关键,必须要按住一会会。 那下面咱们就来详细聊聊这三种类型。 一、无复位 没见过这样写代码的,竟然没有复位,老师都说数字电路离不开复位的,没有复位
    发表于 01-30 11:01

    AD5410使用菊花链工作方式时,上电后如何进行软件复位和控制寄存器配置?

    AD5410使用菊花链工作方式时,上电后如何进行软件复位和控制寄存器配置?
    发表于 08-06 07:04

    单片机如何给寄存器赋值

    2020-11-15单片机中在给寄存器赋值时,常常写data|=0x03不直接写data=0x03,是因为前者可以保护寄存器上其它位的值,只
    发表于 01-24 07:52

    什么样的寄存器不需要复位?哪些寄存器是CPU能够访问的

    地址。当CPU发一个0x46018000的地址下来,那么硬件会自动根据它的基地址判断它是去访问I2C的。然后根据偏移地址便可以知道是访问I2C的哪一个寄存器了。3、寄存器复位需不需要
    发表于 07-08 17:43

    AD5410使用菊花链工作方式时,上电后如何进行软件复位和控制寄存器配置?

    AD5410使用菊花链工作方式时,上电后如何进行软件复位和控制寄存器配置?
    发表于 12-11 06:26

    U0IIR寄存器原理下载

    U0IIR寄存器原理下载 U0IIR寄存器 BIT00:有中断 1:没有中断 BI
    发表于 03-10 14:13 95次下载

    寄存器寻址方式

    寄存器寻址方式   寄存器寻址是对由指令选定的工作寄存器(R0--R7)进行读/写,由指令操作码字节的最低3位指明所寻址的工作
    发表于 03-14 15:29 2770次阅读

    SC130GS寄存器配置问题

    思特威的sensor芯片SC130GS在配置寄存器的时候需要注意,如果配置了0103寄存器的bit[0]位,在IIC写数据的时候会出现没有ACK的现象,原因是这个0103寄存器
    发表于 01-24 09:23 3100次阅读

    何进行寄存器名称和地址的映射分析

    首先要清楚的一点,所有操作,最终目的都是操作寄存器一,对比51单片机和STM32对寄存器的操作
    发表于 06-21 17:43 2次下载
    如<b class='flag-5'>何进行</b><b class='flag-5'>寄存器</b>名称和地址的映射分析

    STM32复位来源(寄存器版)

    一篇很简单,有必要了解的文章 - STM32复位来源(寄存器版)
    的头像 发表于 03-14 14:13 1.1w次阅读
    STM32<b class='flag-5'>复位</b>来源(<b class='flag-5'>寄存器</b>版)

    Cortex-M3 内部寄存器

    寄存器组R0-R12R0-R12,通用寄存器;R0-R12都是32位通用寄存器,用于数据操作;但是绝大多数16位Thumb指令只能访问R
    发表于 11-26 16:21 39次下载
    Cortex-M3 内部<b class='flag-5'>寄存器</b>

    配置STM32寄存器控制GPIO点亮LED

    STM32点亮LED 寄存器方式IO简介1、每个IO可以自由编程,但是IO口寄存器必须按照32位字被访问。2、每个IO端口都有7个寄存器来控制。CRL 【0-7】端口配置
    发表于 01-13 16:15 3次下载
    配置STM32<b class='flag-5'>寄存器</b>控制GPIO点亮LED

    异步复位同步释放问题解析

    使用 2 个带异步复位寄存器,D端输入逻辑 1(VCC)。
    的头像 发表于 06-26 16:39 1406次阅读
    <b class='flag-5'>异步</b><b class='flag-5'>复位</b>同步释放问题解析