精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

設計一個計數器來講解時序邏輯

FPGA技術江湖 ? 來源:叁芯智能FPGA課程 ? 2023-08-14 09:28 ? 次閱讀

一、時序邏輯

時序邏輯是Verilog HDL 設計中另一類重要應用。從電路特征上看來,其特點為任意時刻的輸出不僅取決于該時刻的輸入,而且還和電路原來的狀態有關。

從電路行為上講,不管輸入如何變化,僅當時鐘的沿(上升沿或下降沿)到達時,才有可能使輸出發生變化。

1、在描述時序電路的always塊中的reg型信號都會被綜合成寄存器,這是和組合邏輯電路所不同的。
2、時序邏輯中推薦使用非阻塞賦值“<=”。

3、時序邏輯的敏感信號列表只需要加入所用的時鐘觸發沿即可,其余所有的輸入和條件判斷信號都不用加入,這是因為時序邏輯是通過時鐘信號的跳變沿來控制的。

二、時序邏輯在FPGA里RTL實現

我們寫一個簡單的寄存器,看看fpga是怎樣實現時序邏輯的

module  counter(
    input           a,
    input               clk,
     
    output  reg     q
);
 
    always@(posedge clk)begin
        q <= a;
    end
 
endmodule

我們看一下fpga的芯片規劃器

c63e649e-3a32-11ee-9e74-dac502259ad0.png

從芯片規劃器,可以看出來幾個細節。

1、我們用了一個查找表、一個寄存器。對FPGA來說,這個寄存器你就算不使用他也是在那里的

2、我么的輸出信號是與clk同步的,必須要等到clk的上升沿到來是,輸出才會更新,因此就實現了寄存器的功能

三、同步復位、異步復位

1、同步復位:其實就是你的操作和時鐘的上升沿同步

舉個例子,你要將q設置為0,下面這代碼就是同步復位,q <= 0,是在時鐘上升沿到來時執行的,所以是同步復位

module  counter(
    input           a,
    input               clk,
     
    output  reg     q
);
 
    always@(posedge clk)begin
        q <= 0;
    end
 
endmodule

2、異步復位:其實就是你的操作和時鐘沒有關系

舉個例子,你要將q設置為0,下面這代碼就是異步復位,q <= 0,無論時鐘是什么狀態,只有rst_n到來就執行清零

module  counter(
    input                   a,
    input                       clk,
    input                       rst_n,
    output  reg [7:0]   q
);
 
    always@(posedge clk,negedge rst_n)begin
        if(!rst_n)
            q <= 0;
        else   
            q <= q + 1'b1;
    end
endmodule

四、競爭冒險

競爭冒險:意思是,在我時鐘的上升沿進行采樣時,輸入信號處于不穩定狀態,這個會給電路帶來亞穩態的問題

c6946eca-3a32-11ee-9e74-dac502259ad0.png

為了解決競爭冒險,我們只要滿足信號的建立時間和保持時間即可

c6aeecaa-3a32-11ee-9e74-dac502259ad0.png

五、verilog語法補充

1、parameter 定義全局變量

parameter   T =     26'd49_000_000;

2、defparam重新定義參數,這個主要是在仿真腳本修改例化的模塊的內部參數

defparam counter_inst.T = 26'd49;
 
counter counter_inst(
.clk        (clk),
.rst_n  (rst_n),   
.flag       (flag)

六、計數器設計

設計一個1秒的計數器,當時間到一秒后給出一個flag信號

1、代碼實現 verilog.v

module  counter(
    input               clk,
    input               rst_n,
    output  reg     flag
);
 
    reg [25:0] count;
     
    parameter   T =     26'd49_000_000;
     
    always@(posedge clk,negedge rst_n)begin
        if(!rst_n)begin
            flag <= 1'b0;
            count <= 0;
            end
        else    if(count == T)begin
                flag <= 1'b1;
                count <= 0;
            end
        else
            begin
                count <= count + 1'b1;
                flag <= 1'b0;
            end
    end
 
endmodule

2、仿真腳本

我在仿真腳本將時間參數改為T改為 T=26‘d49;方便仿真

`timescale 1ns/1ps
 
 
module counter_tb;
 
    reg             clk;
    reg             rst_n;
    wire                flag;
     
    defparam counter_inst.T = 26'd49;
     
    counter counter_inst(
    .clk        (clk),
    .rst_n  (rst_n),   
    .flag       (flag)
);
 
    always #10 clk = ~clk;
 
    initial begin
        clk = 0;
        rst_n = 0;
        #20;
        rst_n = 1;
        #5000000;
        $stop;
    end
 
endmodule

3、仿真結果

1、可以看出脈沖flag只持續了一個周期

c6ddfb8a-3a32-11ee-9e74-dac502259ad0.png

2、可以看出脈沖的觸發是50個計數值

c70bc6fa-3a32-11ee-9e74-dac502259ad0.png

七、計數器里隱藏的加法器問題

我們設計的這個計數器,里面其實用了一個加法器,加法器是組合邏輯(因為組合邏輯只取決于輸入)

當我們給加法器一個初值0的時候,加法器的輸出立即就輸出1,這就是仿真的時候,開始復位拉高后,count在第一個clk上升沿就為1的原因

c75139c4-3a32-11ee-9e74-dac502259ad0.png







審核編輯:劉清

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

    關注

    1626

    文章

    21678

    瀏覽量

    602022
  • 邏輯電路
    +關注

    關注

    13

    文章

    494

    瀏覽量

    42581
  • 寄存器
    +關注

    關注

    31

    文章

    5325

    瀏覽量

    120052
  • Verilog
    +關注

    關注

    28

    文章

    1345

    瀏覽量

    109996
  • 計數器
    +關注

    關注

    32

    文章

    2254

    瀏覽量

    94371
  • 時序邏輯電路

    關注

    2

    文章

    94

    瀏覽量

    16528
  • 開發板
    +關注

    關注

    25

    文章

    4959

    瀏覽量

    97214
  • FPGA開發板
    +關注

    關注

    10

    文章

    122

    瀏覽量

    31487
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8219

原文標題:筆記連載精選 |【時序邏輯、競爭冒險、同步復位、異步復位】之【計數器設計、verilog語法補充】

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    時序邏輯電路的精華——計數器

    時序邏輯電路的精華——計數器
    的頭像 發表于 12-29 09:23 ?1327次閱讀

    時序電路設計的計數器詳解

    500ms的時間進行閃爍,如果有示波器也可以測量這時候的引腳波形進行觀察。圖3-10 RTLviewer圖3-11 實驗現象至此,就完成了基本的時序邏輯
    發表于 01-24 06:35

    中規模集成時序邏輯設計

    中規模集成時序邏輯設計:計數器:在數字邏輯系統中,使用最多的時序電路要算計數器了。它是
    發表于 09-01 09:09 ?13次下載

    時序邏輯電路

    實驗十六  時序邏輯電路? 實驗(1) 計數器?、實驗目的?⒈ 熟悉計數器的設計方法及工作原理。?⒉ 了解同步
    發表于 09-24 22:17 ?3311次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>邏輯</b>電路

    計數器,計數器的工作原理是什么?

    計數器,計數器的工作原理是什么? 在數字系統中使用最多的時序電路是計數器計數器不僅能用于對時鐘脈沖進行
    發表于 03-08 13:50 ?6.1w次閱讀

    基于Multisim的計數器設計仿真

    計數器是常用的時序邏輯電路器件,文中介紹了以四位同步二進制集成計數器74LS161和異步二-五-十模值計數器74LS290為主要芯片,設計實
    發表于 07-26 11:38 ?134次下載
    基于Multisim的<b class='flag-5'>計數器</b>設計仿真

    計數器時序電路

    1、了解時序電路的經典設計方法(D觸發、JK觸發邏輯門組成的時序
    發表于 07-10 14:37 ?15次下載

    計數器邏輯功能測試實驗報告

    本文主要介紹了計數器邏輯功能測試實驗報告。時序邏輯電路中,有種電路叫計數器
    發表于 06-27 08:00 ?15次下載
    <b class='flag-5'>計數器</b><b class='flag-5'>邏輯</b>功能測試實驗報告

    采用中規模集成計數器進行任意進制計數器設計的解決方案

    計數器是數字邏輯系統中的基本部件, 它是數字系統中用得最多的時序邏輯電路,其主要功能就是用計數器的不同狀態來記憶輸入脈沖的個數。除此以外還具
    的頭像 發表于 05-30 08:24 ?1.6w次閱讀
    采用中規模集成<b class='flag-5'>計數器</b>進行任意進制<b class='flag-5'>計數器</b>設計的解決方案

    MOD計數器時序

    計數器的工作是通過每個時鐘脈沖將計數器的內容提前計數計數。當被時鐘輸入激活時推進其數字或狀
    的頭像 發表于 06-23 07:47 ?1.4w次閱讀
    MOD<b class='flag-5'>計數器</b>和<b class='flag-5'>時序</b>圖

    環形計數器的種類、工作原理及應用特性

      環形計數器是使用移位寄存構成的時序邏輯電路。根據時鐘脈沖,相同的數據在計數器中循環。
    的頭像 發表于 10-31 15:50 ?1.9w次閱讀
    環形<b class='flag-5'>計數器</b>的種類、工作原理及應用特性

    同步計數器和異步計數器是什么 同步計數器和異步計數器的主要區別?

    在數字電子產品中,計數器是由系列觸發組成的時序邏輯電路。顧名思義,計數器用于計算輸入在負或正
    的頭像 發表于 03-25 17:31 ?2.5w次閱讀
    同步<b class='flag-5'>計數器</b>和異步<b class='flag-5'>計數器</b>是什么 同步<b class='flag-5'>計數器</b>和異步<b class='flag-5'>計數器</b>的主要區別?

    時序邏輯電路設計之計數器

    前面已經學習了時序邏輯電路中的基本單元:觸發,這次就用其來整點活,實現計數器的設計,計數器可以說是任何和
    的頭像 發表于 05-22 16:54 ?5210次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>邏輯</b>電路設計之<b class='flag-5'>計數器</b>

    時序邏輯電路設計之同步計數器

    時序電路的考察主要涉及分析與設計兩部分,上文介紹了時序邏輯電路的些分析方法,重點介紹了同步時序
    的頭像 發表于 05-22 17:01 ?3162次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>邏輯</b>電路設計之同步<b class='flag-5'>計數器</b>

    時序邏輯電路設計之異步計數器

    上文介紹了同步計數器的設計原則以及各注意事項,本文承接上文繼續介紹異步計數器以及三種常用的集成計數器的相關內容。
    的頭像 發表于 05-22 17:07 ?4557次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>邏輯</b>電路設計之異步<b class='flag-5'>計數器</b>