一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

時序邏輯電路設(shè)計之計數(shù)器

CHANBAEK ? 來源:通信情報工學(xué)算法學(xué)習(xí) ? 作者:syu ikko ? 2023-05-22 16:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前面已經(jīng)學(xué)習(xí)了時序邏輯電路中的基本單元:觸發(fā)器,這次就用其來整點活,實現(xiàn)計數(shù)器的設(shè)計,計數(shù)器可以說是任何和時序有關(guān)的設(shè)計都會用到他。

一. 計數(shù)器原理

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

二. 實用

用計數(shù)器計數(shù)1s間隔,實現(xiàn)led燈每隔1s閃爍的結(jié)果。

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

圖片

sys_clk:輸入時鐘,為系統(tǒng)時鐘

sys_rst_n:復(fù)位信號,低電平有效

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

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

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

圖片

下面介紹兩種方式的計數(shù)器; 帶標(biāo)志位和不帶標(biāo)志位。

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

帶標(biāo)志位: 在上面方案的基礎(chǔ)上,添加一個cnt_flag信號,當(dāng)計數(shù)器計數(shù)到24_999_999的時候先不取反,而是讓cnt_flag產(chǎn)生一個高脈沖,當(dāng)led_out 的信號檢測到cnt_flag拉高的時候取反。

關(guān)于標(biāo)志位有什么用,先挖個坑,以后說。

圖片

圖1

圖片

圖2

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

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

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


 output reg led_out //輸出控制 led 燈
 );
 
 //reg define
 reg [24:0] cnt ; //經(jīng)計算得需要 25 位寬的寄存器才夠 500ms
 reg cnt_flag;
 
 //cnt:計數(shù)器計數(shù),當(dāng)計數(shù)到 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:計數(shù)到最大值產(chǎn)生的標(biāo)志信號,每當(dāng)計數(shù)滿標(biāo)志信號有效時取反
 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) //實例化帶參數(shù)的模塊時候,當(dāng)我們想要修改常數(shù)在此模塊的值的時候,直接實例化參數(shù)名后面的括號中修改即可
)
counter_inst(
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n),


.led_out(led_out)
);




endmodule

仿真波形:

圖片

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

圖片

AD11和AD12差分時鐘輸出

經(jīng)過查閱,調(diào)用PLL鎖相環(huán)的IP核進行差分時鐘的單端口時鐘輸出。

圖片

調(diào)用時鐘IP核,并且選擇PLL,在下面選擇差分時鐘接口。 output時鐘設(shè)置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:計數(shù)器計數(shù),當(dāng)計數(shù)到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:計數(shù)到最大值產(chǎn)生的標(biāo)志位信號,每當(dāng)計數(shù)滿標(biāo)志信號有效時取反
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電路如下所示:

圖片

關(guān)于kintex7差分時鐘引腳約束的問題需要注意:

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

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22034

    瀏覽量

    618000
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23826

    瀏覽量

    673686
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2291

    瀏覽量

    96370
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    2039

    瀏覽量

    62118
  • 時序邏輯電路
    +關(guān)注

    關(guān)注

    2

    文章

    94

    瀏覽量

    16845
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    時序邏輯電路的精華——計數(shù)器

    時序邏輯電路的精華——計數(shù)器
    的頭像 發(fā)表于 12-29 09:23 ?1602次閱讀

    時序邏輯電路設(shè)計

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

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

    本帖最后由 芯航線跑堂 于 2016-12-25 01:52 編輯 時序邏輯電路設(shè)計之計數(shù)器實驗?zāi)康模阂?b class='flag-5'>計數(shù)器為例學(xué)會簡單的時序
    發(fā)表于 12-21 19:15

    時序電路設(shè)計計數(shù)器詳解

    時序邏輯電路設(shè)計之計數(shù)器實驗?zāi)康模阂?b class='flag-5'>計數(shù)器為例學(xué)會簡單的時序邏輯電路設(shè)計實驗平臺:芯航線FPGA
    發(fā)表于 01-24 06:35

    移位型計數(shù)器中反饋邏輯電路的設(shè)計

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

    時序邏輯電路

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

    Multisim的時序邏輯電路設(shè)計仿真

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

    計數(shù)器時序電路

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

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

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

    時序邏輯電路分為幾類

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

    組合邏輯電路時序邏輯電路的學(xué)習(xí)課件免費下載

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

    時序邏輯電路設(shè)計之同步計數(shù)器

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

    時序邏輯電路設(shè)計之異步計數(shù)器

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

    時序邏輯電路有哪些 時序邏輯電路和組合邏輯電路區(qū)別

    產(chǎn)生相應(yīng)的輸出信號。本文將詳細介紹時序邏輯電路的分類、基本原理、設(shè)計方法以及與組合邏輯電路的區(qū)別。 一、時序邏輯電路的分類
    的頭像 發(fā)表于 02-06 11:18 ?1.3w次閱讀

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

    當(dāng)前的輸入信號,還取決于電路的歷史狀態(tài)。與組合邏輯電路不同,組合邏輯電路的輸出僅取決于當(dāng)前的輸入信號,而時序邏輯電路的輸出則受到
    的頭像 發(fā)表于 07-30 15:02 ?2420次閱讀