女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DFF的電路工作原理與ModelSim仿真

GReq_mcu168 ? 來源:知芯情報局 ? 作者:知芯情報局 ? 2022-07-12 10:22 ? 次閱讀

之前的理解

最近在做設計的時候,發現之前對DFF的理解有些模糊,直到有次在實踐中遇到了一些問題,含糊其詞的也不能解決問題,于是乎就把DFF理解透徹透徹,畢竟這可是時序電路的基本概念。

對于DFF,之前理解的,DFF在時鐘的上升沿進行對D端的數據采集,再下一個時鐘的上升沿來臨,Q端輸出D端采集的數據。能這么理解,是離開書本時間太長了,又觀察到了ModelSim仿真波形的影響,這么理解只是在描述仿真波形的表征現象,并非根本的原理。比如,在Modelsim仿真中,若通過DFF將數據組進行延時,用時鐘將寄存器進行多個時鐘周期的同步,并帶有異步復位,對應Verilog描述如下:

reg [7:0] data_d0, data_d1, data_d2;always @ ( posedge clk or negedge rst_n ) begin    if ( !rst_n ) begin        data_d0 <= 8'b0;        data_d1 <= 8'b0;    end else begin        data_d0 <= data_in;        data_d1 <= data_d0;    endend
對應仿真波形如下:05ed7dcc-0119-11ed-ba43-dac502259ad0.png 此時,時鐘上升沿和數據的變化沿都是對齊的,就產生了不正確的理解:通過Modelsim的wave窗口查看仿真波形的時候,如果將光標打到時鐘的上升沿時候(比如心在光標在Event 1時刻),對應的數據data_in應該是從8‘h00->8‘h0’1,可是光標處data_in的數值顯示為8’h01。這樣,我就理解成了在Even1時刻,時鐘的上升沿對data_in(值為8’h01)進行捕獲(接入到寄存器data_d0的D端),在下一個時鐘的上升沿到來的時刻(Event2時刻),寄存器data_d0的Q端數據發生改變(值為8’h01)。上述理解完全是根據波形描述出來的,是不全面的,是非本源的,是錯誤的。

正確的理解

正確的理解應該從DFF本身出發,通過DFF的電路原理圖分析DFF的電路工作原理,了解時鐘上升沿之前和之內部邏輯的如何變化,如何影響了從D端到Q端的數據輸出。

D鎖存器

在網上找到的很多電路圖講的都是D鎖存器,D鎖存器的電路為消除邏輯門控SR鎖存器不確定狀態,在電路的S和R輸入端連接一個非門(Inverter),從而保證了S和R同時為0的條件,參考下圖由與非門構成的D鎖存器電路圖:

06177e2e-0119-11ed-ba43-dac502259ad0.png

如果D信號在E=1期間發生變化,電路提供的信號路徑將使Q端信號跟隨D端變化。 在E由1跳變為0以后,鎖存器將鎖存跳變前瞬間D端的邏輯值,可以暫存1位二進制數據。又因為有Inverter的存在,SR鎖存器不會存在S&R==1的狀態,所以就有了D鎖存器的捕獲數據,E為0的時候會一直維持數據狀態。此D鎖存器的功能表為:

06285c3a-0119-11ed-ba43-dac502259ad0.png

D觸發器

觸發和觸發器——時鐘脈沖邊沿作用下的狀態刷新稱為觸發,具有這種特性的存儲單元電路稱為觸發器。D觸發器的電路圖如下(圖中的SR為了標注有兩級SR鎖存器,方便邏輯推理):

064a9232-0119-11ed-ba43-dac502259ad0.png

以上升沿觸發為例,進一步分析D觸發器在上升沿捕獲數據,并維持鎖存的過程。D端為0,CLK為0時,此時第一級的D鎖存器輸出為0,第二級SR鎖存器處于保持狀態,詳情參考下圖:

065be6b8-0119-11ed-ba43-dac502259ad0.png

若繼續保持D端為0,CLK變為1時,第一級D鎖存器處于保持狀態,第二級的SR鎖存器將上一次的D值傳遞到Q端輸出,詳情參考下圖:

066de08e-0119-11ed-ba43-dac502259ad0.png

若在D端數值發生改變為1,且CLK仍然為1,第一級的D鎖存器仍處于保持狀態,不會由于D端的變化而改變,更不會影響最后Q端的輸出。

06899aae-0119-11ed-ba43-dac502259ad0.png

D端繼續保持為1,CLK轉換為0,此時第一級D鎖存器的輸出為D端的數據,Q端輸出仍為保持狀態。

06ab5626-0119-11ed-ba43-dac502259ad0.png

D端數據繼續保持為1,CLK轉換為高,第一級D鎖存器的結果就會輸出到Q端,Q端的值也就隨著CLK的上升沿,捕獲到了1,并進行輸出到Q端;

從邏輯圖中,也可以看出DFF的數據捕獲和輸出都需要滿足一定的時間約束。比如:

    • 時鐘上升沿之前前后的數據要做夠穩定,否則在時鐘跳變時刻,可能無法將其傳遞到Q端進行輸出;

    • 時鐘上升沿捕獲數據之后,到Q端輸出也需要一定的時間,穩定之后才能用于下一級工作;

DFF捕獲時鐘上升沿的D端數據,并在Q端輸出,一直維持到下一時鐘上升沿到來之前。在此期間,D端的數據變化不會直接影響到Q端的輸出。

ModelSim仿真

將tb文件中的data_in輸入做5個單位的傳輸延時,仿真結果見下圖:

06d16d66-0119-11ed-ba43-dac502259ad0.png ????????可以看出,在時鐘的上升沿前后數據是不發生變化的,對于寄存器做延時的時序理解為:

Event 1時刻:

    • 在Event 1時刻,時鐘上升沿之前data_in(值為8’h00),data_d0的D端為data_in(值為8’h00);

    • 在Event 1時刻,時鐘上升沿之后data_in(值為8’h00),data_d0的Q端為data_in(值為8’h00);所以在Event 1時刻,data_d0的Q端保持為8’h00不變;

Event 2時刻:
    • 在Event 2時刻,時鐘上升沿之后data_in(值為8’h01),data_d0的D端為data_in(值為8’h01);
    • 在Event 2時刻,時鐘上升沿之后data_in(值為8’h01),data_d0的D端為data_in(值為8’h01);所以在Event 2時刻,data_d0的Q端從8’h00變為8’h01;
Event 3時刻:
    • 在Event 3時刻,時鐘上升沿之后data_in(值為8’h02),data_d0的D端為data_in(值為8’h02);
    • 在Event 3時刻,時鐘上升沿之后data_in(值為8’h02),data_d0的D端為data_in(值為8’h02);所以在Even 3時刻,data_d0的Q端從8’h01變為8’h02;
可以看出在Event 1到Event 2一個時鐘周期內,data_d0的數值保持為8’h00;Event 1到Event 2一個時鐘周期內,data_d0的數值保持為8’h01;在時序上就表明了使用data_d0寄存器,通過clk對data_in進行了1個時鐘周期的延時。在Modelsim仿真中,若數據的變化沿與時鐘的上升沿對齊,cursor在時鐘上升沿時刻,對應的數據需要往后加入延時,才能與實際電路情況相符合。

總結

DFF捕獲時鐘上升沿的D端數據,并在Q端輸出,一直維持到下一時鐘上升沿到來之前。在此期間,D端的數據變化不會直接影響到Q端的輸出。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 時序電路
    +關注

    關注

    1

    文章

    114

    瀏覽量

    21873
  • ModelSim
    +關注

    關注

    5

    文章

    174

    瀏覽量

    47925
  • D鎖存器
    +關注

    關注

    0

    文章

    13

    瀏覽量

    3779
  • dff
    dff
    +關注

    關注

    0

    文章

    26

    瀏覽量

    3582

原文標題:時序電路之DFF再理解

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    FPGA開發:modelsim仿真流程及波形

    你開發過程的最合適的選擇了,下面我以簡單的24進制計數器帶各位熟悉modelsim仿真流程及波形。 一、新建工作庫Library 1、點擊FileNewLibrary 創建新的庫和邏輯映射,編輯庫名,點擊ok確定 如果已經建立過
    的頭像 發表于 09-30 13:52 ?1.1w次閱讀
    FPGA開發:<b class='flag-5'>modelsim</b><b class='flag-5'>仿真</b>流程及波形

    Altera ModelSim 6.5仿真入門教程

    Altera ModelSim 6.5仿真入門教程,需要的可自行下載。 平臺 軟件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 內容 1 設計流程 使用
    發表于 08-15 15:40 ?256次下載
    Altera <b class='flag-5'>ModelSim</b> 6.5<b class='flag-5'>仿真</b>入門教程

    Modelsim的功能仿真和時序仿真

    ModelSim 進行功能仿真,進行功能仿真首先要檢查設計的語法是否正確;其次檢查代碼是否達到設計的功能要求。下文主要介紹仿真步驟和測試激勵的加載。
    發表于 11-13 15:35 ?9909次閱讀

    MODELSIM仿真(適合xilinx ISE)

    基于Xilinx ISE的modelsim仿真教程
    發表于 11-30 15:52 ?9次下載

    使用 ModelSim 進行設計仿真詳解

    本章為ModelSim的初級教程,讀者讀完本章可以較為熟練的使用ModelSim進行設計仿真,本章沒有也不可能涉及ModelSim的各個方面,要想全面的掌握
    發表于 12-24 18:29 ?0次下載

    modelsim仿真詳細過程(功能仿真與時序仿真

    modelsim仿真詳細過程(功能仿真與時序仿真).ModelSim不僅可以用于數字電路系統設計
    發表于 12-19 11:14 ?6.9w次閱讀
    <b class='flag-5'>modelsim</b><b class='flag-5'>仿真</b>詳細過程(功能<b class='flag-5'>仿真</b>與時序<b class='flag-5'>仿真</b>)

    仿真軟件ModelSim及其應用,ModelSim仿真流程

    ModelSim不僅可以用于數字電路系統設計的功能仿真,還可以應用于數字電路系統設計的時序仿真。 Mod
    的頭像 發表于 12-29 11:35 ?1w次閱讀

    Modelsim仿真教程Modelsim的基礎入門基礎教程免費下載

    筆者一直以來都在糾結,自己是否要為仿真編輯相關的教程呢?一般而言,Modelsim等價仿真已經成為大眾的常識,但是學習仿真是否學習Modelsim
    發表于 04-30 18:24 ?24次下載
    <b class='flag-5'>Modelsim</b><b class='flag-5'>仿真</b>教程<b class='flag-5'>Modelsim</b>的基礎入門基礎教程免費下載

    基于ModelSim使用二聯合Quarus自動仿真教程

    3 ModelSim工程實戰之自動仿真說完了 ModelSim 的使用流程,接下來我們將會對每個流程進行詳細的操作演示,一步步、手把手帶領大家學習使用 ModelSim 軟件。首先我們
    的頭像 發表于 07-23 10:51 ?2326次閱讀
    基于<b class='flag-5'>ModelSim</b>使用二聯合Quarus自動<b class='flag-5'>仿真</b>教程

    基于ModelSim使用四ModelSim手動仿真教程

    4.1 新建仿真工程 在開始動手仿真之前,首先,我們需要創建一個文件夾用來放置我們的 ModelSim 仿真工程文件,這里我們就在之前創建的 Quartus 工程目錄下的 simula
    的頭像 發表于 07-23 11:10 ?4397次閱讀

    如何夾帶modelsim仿真波形白底黑線

    Modelsim使用技巧—波形白底黑線設置 在發表期刊或者論文時,我們需要夾帶modelsim仿真波形在我們的論文里,在modelsim默認模式下的波形一般是黑底綠線白字,如圖1所示
    的頭像 發表于 08-26 11:23 ?4216次閱讀

    ModelSim手動仿真教程

    在開始動手仿真之前,首先,我們需要創建一個文件夾用來放置我們的 ModelSim 仿真工程文件,這里我們就在之前創建的 Quartus 工程目錄下的 simulation 文件夾中創建一個
    的頭像 發表于 07-11 10:58 ?5545次閱讀

    芯片設計之Modelsim仿真工具

    Modelsim仿真將設計以樹狀表示,設計中的每一個實體,每一個module、每一個進程(always塊、initial塊等)在Modelsim仿真中以對象的形式展現。
    的頭像 發表于 08-12 15:04 ?2900次閱讀

    Vivado調用Modelsim仿真

    Modelsim是十分常用的外部仿真工具,在Vivado中也可以調用Modelsim進行仿真,下面將介紹如何對vivado進行配置并調用Models
    的頭像 發表于 07-24 09:04 ?4472次閱讀
    Vivado調用<b class='flag-5'>Modelsim</b><b class='flag-5'>仿真</b>

    電路仿真軟件multium的工作原理

    Multisim(是美國國家儀器有限公司推出的仿真工具)的工作原理主要基于電路元件的建模與仿真分析。
    的頭像 發表于 03-29 15:24 ?1883次閱讀