色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

CHANBAEK ? 來源:通信情報工學算法學習 ? 作者:syu ikko ? 2023-05-22 16:54 ? 次閱讀

前面已經學習了時序邏輯電路中的基本單元:觸發器,這次就用其來整點活,實現計數器的設計,計數器可以說是任何和時序有關的設計都會用到他。

一. 計數器原理

計數器的功能主要就是計數,在數字系統中主要對脈沖的個數進行計數,以實現測量,計數和控制的功能,同時也可以做到分頻等功能。 同時,其也是FPGA設計中最常用的一種時序邏輯電路,根據計數器的計數值可以精確控制各個信號的狀態。

二. 實用

用計數器計數1s間隔,實現led燈每隔1s閃爍的結果。

本設計十分簡單,用一個模塊附帶簡單的輸入輸出便可以完成。 如下所示:

圖片

sys_clk:輸入時鐘,為系統時鐘

sys_rst_n:復位信號,低電平有效

led_out:輸出信號,控制LED燈的亮滅

我們的邏輯是這樣:計數器進行計數,計數到1s便給LED燈賦值,讓其發亮,就可以達到1s亮滅的結果。 所以需要計算一下,計1s需要計數多少次,如果時鐘是50MHz,也就是0.000_000_02s,計數一秒需要計數50_000_000個數才可以,不過在設計時刻視為從0開始計數,所以是49_999_999個。

接下來的設計時,為了節省寄存器資源,只計數24_999_999個,也就是1s內閃爍一次(0.5秒一次)。 這需要25位寬的計數器。

圖片

下面介紹兩種方式的計數器; 帶標志位和不帶標志位。

不帶標志位 :設置一個cnt信號位,時鐘的每個上升沿到來時刻,cnt便自動+1,當計數器計到24_999_999的時候,清0,led_out信號取反,只要不復位,變一直計數下去。

帶標志位: 在上面方案的基礎上,添加一個cnt_flag信號,當計數器計數到24_999_999的時候先不取反,而是讓cnt_flag產生一個高脈沖,當led_out 的信號檢測到cnt_flag拉高的時候取反。

關于標志位有什么用,先挖個坑,以后說。

圖片

圖1

圖片

圖2

注意一下上面兩個圖(取自野火教材),標志位拉高的時刻并不一樣,下面的圖在N-1時刻拉高,led_out的狀態是剛剛好在0時刻轉換(慢一拍),上面的圖實際上到后來是計數計多了。 對于這種簡單的設計這個問題不痛不癢,但是對于一些要求比較高的設計來說,一秒也不能差,所以這個地方需要注意。

下面給出代碼(帶信號標志位)

module counter
 #(
 parameter CNT_MAX = 25'd24_999_999
 )
 (
 input wire sys_clk , //系統時鐘 50Mh
 input wire sys_rst_n , //全局復位


 output reg led_out //輸出控制 led 燈
 );
 
 //reg define
 reg [24:0] cnt ; //經計算得需要 25 位寬的寄存器才夠 500ms
 reg cnt_flag;
 
 //cnt:計數器計數,當計數到 CNT_MAX 的值時清零
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt <= 25'b0;
 else if(cnt == CNT_MAX)
 cnt <= 25'b0;
 else
 cnt <= cnt + 1'b1;
 
 //cnt_flag:計數到最大值產生的標志信號,每當計數滿標志信號有效時取反
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt_flag <= 1'b0;
 else if(cnt == CNT_MAX – 25'b1)
 cnt_flag <= 1'b1;
 else
 cnt_flag <= 1'b0;
 
 //led_out:輸出控制一個 LED 燈
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 led_out <= 1'b0;
 else if(cnt_flag == 1'b1)
 led_out <= ~led_out;
 
 endmodule

測試平臺:

module tb_counter(
    );


reg sys_clk;
reg sys_rst_n;


wire led_out;


initial begin
    sys_clk = 1'b1;
    sys_rst_n <= 1'b0;
    #20
    sys_rst_n <= 1'b1;
end




always #10 sys_clk = ~sys_clk;


counter
#(
    .CNT_MAX (25'd24) //實例化帶參數的模塊時候,當我們想要修改常數在此模塊的值的時候,直接實例化參數名后面的括號中修改即可
)
counter_inst(
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n),


.led_out(led_out)
);




endmodule

仿真波形:

圖片

到這里,問題還沒解決,在7系列的FPGA的板上,并不輸出單端口的時鐘,其是200MHz的差分時鐘。

圖片

AD11和AD12差分時鐘輸出

經過查閱,調用PLL鎖相環的IP核進行差分時鐘的單端口時鐘輸出。

圖片

調用時鐘IP核,并且選擇PLL,在下面選擇差分時鐘接口。 output時鐘設置50MHz。

重新寫頂層代碼,例化時鐘。

module counter




(
//input wire sys_clk,


input wire sys_rst_n,
input clk_p,
input clk_n,


output  reg led_out
    );


reg [24:0] cnt;
reg        cnt_flag;
parameter CNT_MAX = 25'd24_999_999;


wire locked;
wire sys_clk;


clk_wiz_0 diff_2_single
(
    .clk_out1(sys_clk),


    .reset(1'b0),
    .locked(locked),
    .clk_in1_p(clk_p),
    .clk_in1_n(clk_n)
);








//cnt:計數器計數,當計數到cnt_max的時候值清0
always @(posedge sys_clk or negedge sys_rst_n) 
    if (sys_rst_n == 1'b0) 
        cnt <= 25'b0;
    else if(cnt == CNT_MAX)
        cnt <= 25'b0;
    else
        cnt <= cnt+1'b1;


//cnt_flag:計數到最大值產生的標志位信號,每當計數滿標志信號有效時取反
always @(posedge sys_clk or negedge sys_rst_n) 
    if(sys_rst_n == 1'b0)
    cnt_flag <= 1'b0;
    else if (cnt == CNT_MAX - 25'b1)
        cnt_flag <= 1'b1;
    else
        cnt_flag <= 1'b0; 




always @(posedge sys_clk or negedge sys_rst_n)
    if (sys_rst_n == 1'b0)
        led_out <= 1'b0;
    else if (cnt_flag == 1'b1)
        led_out <= ~led_out;    


endmodule

RTL電路如下所示:

圖片

關于kintex7差分時鐘引腳約束的問題需要注意:

這個地方只需要約束其中之一即可,另外一個不用管,如果是不清楚電平標準可以在Tcl控制臺輸入指令查詢:

圖片

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

    關注

    1630

    文章

    21796

    瀏覽量

    605225
  • led
    led
    +關注

    關注

    242

    文章

    23347

    瀏覽量

    662433
  • 計數器
    +關注

    關注

    32

    文章

    2261

    瀏覽量

    94876
  • 觸發器
    +關注

    關注

    14

    文章

    2003

    瀏覽量

    61289
  • 時序邏輯電路

    關注

    2

    文章

    94

    瀏覽量

    16575
收藏 人收藏

    評論

    相關推薦

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

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

    時序邏輯電路設計

    時序邏輯電路設計6.1 基本D觸發的設計6.2 JK觸發6.3 帶異步復位/置位端的使能T觸發6.4 基本
    發表于 03-20 10:04

    【FPGA開源教程連載】第三章 時序邏輯電路設計之計數器

    本帖最后由 芯航線跑堂 于 2016-12-25 01:52 編輯 時序邏輯電路設計之計數器實驗目的:以計數器為例學會簡單的時序
    發表于 12-21 19:15

    時序電路設計計數器詳解

    時序邏輯電路設計之計數器實驗目的:以計數器為例學會簡單的時序邏輯電路設計實驗平臺:芯航線FPGA
    發表于 01-24 06:35

    移位型計數器中反饋邏輯電路的設計

    摘要:移位型計數器是以移位寄存為主體構成的同步計數器。這類計數器具有電路連接簡單,編碼別具特色的特點,用途十分廣泛。文中介紹了移位型
    發表于 04-26 11:16 ?29次下載

    時序邏輯電路

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

    Multisim的時序邏輯電路設計仿真

    通過介紹Multisim軟件的功能和特點,結合格雷瑪計數器的設計實例,敘述了在Multisim軟件平臺進行時序邏輯電路的設計原理及構成方法,并利用軟件對設計進行仿真。
    發表于 02-10 16:43 ?133次下載
    Multisim的<b class='flag-5'>時序</b><b class='flag-5'>邏輯電路設計</b>仿真

    計數器時序電路

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

    時序邏輯電路的主要故障分析

    時序邏輯電路其任一時刻的輸出不僅取決于該時刻的輸入,而且還與過去各時刻的輸入有關。常見的時序邏輯電路有觸發
    發表于 04-09 16:00 ?6420次閱讀
    <b class='flag-5'>時序</b><b class='flag-5'>邏輯電路</b>的主要故障分析

    時序邏輯電路分為幾類

    時序邏輯電路是由組合邏輯電路與記憶電路(又稱存儲電路) 組合而成的。 常見時序
    的頭像 發表于 02-26 15:25 ?5.1w次閱讀

    組合邏輯電路時序邏輯電路的學習課件免費下載

    本文檔的主要內容詳細介紹的是組合邏輯電路時序邏輯電路的學習課件免費下載包括了:任務一 組合邏輯電路,任務二 編碼,任務三 譯碼
    發表于 10-27 15:58 ?31次下載
    組合<b class='flag-5'>邏輯電路</b>和<b class='flag-5'>時序</b><b class='flag-5'>邏輯電路</b>的學習課件免費下載

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

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

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

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

    時序邏輯電路有哪些 時序邏輯電路和組合邏輯電路區別

    產生相應的輸出信號。本文將詳細介紹時序邏輯電路的分類、基本原理、設計方法以及與組合邏輯電路的區別。 一、時序邏輯電路的分類
    的頭像 發表于 02-06 11:18 ?1.1w次閱讀

    時序邏輯電路包括什么器件組成

    當前的輸入信號,還取決于電路的歷史狀態。與組合邏輯電路不同,組合邏輯電路的輸出僅取決于當前的輸入信號,而時序邏輯電路的輸出則受到
    的頭像 發表于 07-30 15:02 ?1343次閱讀
    主站蜘蛛池模板: 无码AV动漫精品一区二区免费 | 99在线精品国自产拍不卡 | 97干97吻| 国产欧美一区二区三区在线看 | 皮皮在线精品亚洲 | 国产深夜福利视频在线 | 久久人妻熟女中文字幕AV蜜芽 | 国产网红主播精品福利大秀专区 | 国产精品1区2区 | 被肉日常np高h | 国产亚洲精品久久久闺蜜 | 国自产拍 高清精品 | 精品亚洲欧美中文字幕在线看 | 欧美日韩视频高清一区 | 无码AV动漫精品一区二区免费 | 一个人在线观看免费中文www | 国产99r视频精品免费观看 | 高hh乱亲女真实 | 果冻传媒AV精品一区 | 东北女人一级毛片 | 久久久精品久久久久特色影视 | 国产精品96久久久久久AV网址 | 草莓西瓜樱桃香蕉直播视频 | 求个av网站 | 日本欧美高清一区二区视频 | 色一伦一情一区二区三区 | 亚洲AV永久无码精品老司机蜜桃 | 欧美视频 亚洲视频 | 国产成人亚洲精品无广告 | 国产69精品久久久久人妻刘玥 | 蜜桃成人在线 | 国产精品69人妻无码久久久 | 亚洲日本va中文字幕久久 | 97久久国产露脸精品国产 | 成人小视频在线观看免费 | 奇虎成人网 | 久久久99精品成人片中文 | 毛片免费播放 | 国产香蕉视频在线观看 | 2023极品少妇XXXO露脸 | 久久久久毛片免费观看 |