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  






审核编辑:刘清

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

    关注

    30

    文章

    5042

    浏览量

    117766
  • D触发器
    +关注

    关注

    2

    文章

    147

    浏览量

    47385
  • CLK
    CLK
    +关注

    关注

    0

    文章

    122

    浏览量

    16912
  • PLL电路
    +关注

    关注

    0

    文章

    91

    浏览量

    6283
  • Verilog语言
    +关注

    关注

    0

    文章

    113

    浏览量

    8162

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

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

收藏 人收藏

    评论

    相关推荐

    寄存器reg延迟问题

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

    寄存器赋值问题

    P1.5 P1.4 P1.3 P1.2 P1.1 P1.0上面的0X开头的数,是以4个“位”为一个单位进行计算,以8421码进行相加计算即可。举个例子就明白了。你可以做一个这样的表格:从上表看出,把
    发表于 11-23 16:08

    寄存器操作

    如下3个8位的寄存器:#defineREG0xFFFFFF101,对单个的位进行赋值(1) 将寄存器REG的第5位置“1”REG |= (1
    发表于 10-23 18:23

    简谈同步复位异步复位

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

    如何给CC2650的寄存器赋值

    Hello, all!      由于在CCSv6.1中未能找到类似CC2650.h的头文件,所以无法在main函数中直接给CC2650的寄存器进行赋值。      问:如何给CC2650的
    发表于 06-21 09:35

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

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

    为什么SSI通信接口的数据寄存器不能直接赋值

    在学SSI的通信接口,试着通过寄存器直接控制,可是调试时发现,对SSI的数据寄存器直接赋值根本就不能赋值,换句话说赋值是无效的。这是什么情况
    发表于 09-04 06:11

    寄存器组R0-R12R0-R12相关资料推荐

    寄存器组R0-R12R0-R12,通用寄存器;R0-R12都是32位通用寄存器,用于数据操作;但是绝大多数16位Thumb指令只能访问R
    发表于 12-09 07:48

    寄存器是怎么封装的

    最近对嵌入式中的地址有了更深入的认识,简单记录一下。以STM32F103为例,在寄存器模板中我们都知道只要对寄存器简单地进行赋值就可以完成流水灯等操作,那么这些
    发表于 01-20 07:06

    单片机如何给寄存器赋值

    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

    51单片机复位电路及复位寄存器的状态

    这是一个有关于51单片机复位电路的介绍以及复位寄存器状态的讲解,有助于我们更好的了解复位电路。
    发表于 05-09 14:16 2次下载

    STM32复位来源(寄存器版)

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

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

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