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。



VCS在0时刻赋值

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

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

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
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
寄存器
+关注
关注
31文章
5620浏览量
130454 -
D触发器
+关注
关注
3文章
181浏览量
49908 -
CLK
+关注
关注
0文章
132浏览量
18102 -
PLL电路
+关注
关注
0文章
94浏览量
7145 -
Verilog语言
+关注
关注
0文章
113浏览量
8829
原文标题:异步复位寄存器:0时刻赋值
文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
常见的FPGA复位设计
在FPGA设计中,当复位整个系统或功能模块时,需要将先关寄存器被清零或者赋初值,以保证整个系统或功能运行正常。在大部分的设计中,我们经常用“同步复位”或“异步
发表于 05-14 14:49
•3303次阅读
寄存器reg延迟问题
各位看官好,最近小弟遇到了一个寄存器延迟的问题,虽然不是特别重要,但还是想弄明白,请各位看官指导。具体如下: 对于一个只有clk、reset、data_in、data_out的模,当我们用如下
发表于 11-14 10:10
简谈同步复位和异步复位
关键,必须要按住一会会。 那下面咱们就来详细聊聊这三种类型。 一、无复位 没见过这样写代码的,竟然没有复位,老师都说数字电路离不开复位的,没有复位,
发表于 01-30 11:01
什么样的寄存器不需要复位呢?哪些寄存器是CPU能够访问的
地址。当CPU发一个0x46018000的地址下来,那么硬件会自动根据它的基地址判断它是去访问I2C的。然后根据偏移地址便可以知道是访问I2C的哪一个寄存器了。3、寄存器的复位需不需要
发表于 07-08 17:43
Cortex-M3 内部寄存器
寄存器组R0-R12R0-R12,通用寄存器;R0-R12都是32位通用寄存器,用于数据操作;但是绝大多数16位Thumb指令只能访问R
发表于 11-26 16:21
•39次下载
配置STM32寄存器控制GPIO点亮LED
STM32点亮LED 寄存器方式IO简介1、每个IO可以自由编程,但是IO口寄存器必须按照32位字被访问。2、每个IO端口都有7个寄存器来控制。CRL 【0-7】端口配置
发表于 01-13 16:15
•4次下载
对于多位的异步信号如何进行同步呢?
对于多位的异步信号如何进行同步呢? 异步信号(Asynchronous Signals)是指系统中发生的事件或者信号,它们的发生时间不可预测、不可控制,与其他的进程、线程以及系统中的各
NVMe高速传输之摆脱XDMA设计32:寄存器功能验证与分析2
寄存器最大值为 64’hFFFFFFFFFFFFFFFF,到达最大值后一个时钟周期后翻转回 0, 在随机时刻使用 force 将寄存器赋值临
异步复位寄存器的0时刻是如何进行赋值的呢?
评论