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文章
5608瀏覽量
129996 -
D觸發器
+關注
關注
3文章
181瀏覽量
49741 -
CLK
+關注
關注
0文章
132瀏覽量
18041 -
PLL電路
+關注
關注
0文章
94瀏覽量
7089 -
Verilog語言
+關注
關注
0文章
113瀏覽量
8790
原文標題:異步復位寄存器:0時刻賦值
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
常見的FPGA復位設計
在FPGA設計中,當復位整個系統或功能模塊時,需要將先關寄存器被清零或者賦初值,以保證整個系統或功能運行正常。在大部分的設計中,我們經常用“同步復位”或“異步
發表于 05-14 14:49
?3231次閱讀
寄存器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時刻是如何進行賦值的呢?
評論