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

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

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

Verilog實(shí)現(xiàn)計(jì)數(shù)器在某個(gè)區(qū)間內(nèi)循環(huán)計(jì)數(shù),遞增遞減

鄒逸謙 ? 來源:鄒逸謙 ? 作者:鄒逸謙 ? 2022-04-07 17:33 ? 次閱讀

有時(shí)候在復(fù)雜系統(tǒng)設(shè)計(jì)的時(shí)候會用遇到讓“計(jì)數(shù)器在某個(gè)區(qū)間內(nèi)來回不停遞增遞減”的問題。

話不多說,我們直接上代碼。

以0-10的循環(huán)計(jì)數(shù)為例。

工具:Modelsim, VScode

1.準(zhǔn)備工作

首先在電腦上新建三個(gè)文件夾,SRC、TB以及SIM,用來放置源代碼、仿真文件以及仿真工程文件。

一定不要怕麻煩,特別是新手一定要注意代碼的分類工作!良好的分類能夠大大的提高工作效率。

剛接觸代碼量小,幾十行代碼一個(gè)文件就搞定了。但是隨著從業(yè)時(shí)間的增加,工作復(fù)雜度的提升,代碼的難度也會隨之提升,如果不做好分類管理,面對幾十個(gè)源代碼,十幾個(gè)仿真文件……崩潰是必然的。

請注意:一定不能有中文路徑?。?/p> poYBAGJOrDmARXC8AAA2ZMhSnLM789.png這樣是錯誤的

pYYBAGJOrI6AVnMiAAA4VSHNhEg615.png應(yīng)該這樣修改

2.工程建立

  • 在src文件中添加一個(gè).v文件,名字自擬,最好能夠體現(xiàn)出文件的特性。
module test (
    input   sys_clk,
    input   rst_n,
   
);
    
    

    reg  flag;
    reg [7:0]  adc_data;
    
    always @(posedge sys_clk or negedge rst_n) begin
        if (~rst_n) 
            flag  <=  1'd0;
        else 
            case (flag)
                1'd0:
                    if (adc_data == 8'd9) // -1
                        flag  <=  1'd1;
                    else
                        flag  <=  1'd0;
                1'd1:
                    if (adc_data == 8'd1) // +1
                        flag  <=  1'd0;
                    else
                        flag  <=  1'd1;
                default: flag  <=  flag;
            endcase
    end

    always @(posedge sys_clk or negedge rst_n) begin
        if (~rst_n) begin
            adc_data  <=  8'd0;
        end
        else if (flag == 1'd0)
            adc_data  <=  adc_data + 8'd1;
        else if (flag == 1'd1)
            adc_data  <=  adc_data - 8'd1;
        else
            adc_data  <=  adc_data;
    end

    

endmodule 
  • 在tb文件夾中新建文件,給出仿真所需要的激勵。我們此次所需的只有時(shí)鐘和復(fù)位。時(shí)鐘設(shè)置為50Mhz,復(fù)位1000ns。
`timescale 1 ns /1 ps
module tb_test;
reg  sys_clk;
reg  rst_n;


test  u_tb_test(
    
    .sys_clk    (sys_clk),
    .rst_n      (rst_n)
    
);
  
   initial begin
   
     sys_clk  = 0;
   
     rst_n    = 0;
    #1000;
    rst_n  =  1;
    #20000;
   end
  always  #10  sys_clk = ~ sys_clk;

endmodule
  • 在sim文件夾中新建一個(gè)Modelsim仿真工程,添加src,tb中的文件,此過程不再展示。

3.仿真驗(yàn)證

仿真1us,觀察波形。實(shí)現(xiàn)了0-10直接的循環(huán)計(jì)數(shù),設(shè)計(jì)成功。

poYBAGJOr5qAFlL0AACTavGPYfo707.png

審核編輯:符乾江

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

    關(guān)注

    1624

    文章

    21573

    瀏覽量

    600705
  • 仿真分析
    +關(guān)注

    關(guān)注

    3

    文章

    104

    瀏覽量

    33610
收藏 人收藏

    評論

    相關(guān)推薦

    雷擊計(jì)數(shù)器的概述與應(yīng)用分析

    雷擊計(jì)數(shù)器 是一種用于監(jiān)測和記錄電力系統(tǒng)、通信系統(tǒng)、建筑物等關(guān)鍵設(shè)施遭受雷擊次數(shù)的設(shè)備。它能夠有效地幫助管理人員掌握雷電活動的情況,以便進(jìn)行預(yù)防性維護(hù)和風(fēng)險(xiǎn)評估。雷擊計(jì)數(shù)器根據(jù)工作原理可以分為無源
    的頭像 發(fā)表于 10-21 10:31 ?98次閱讀
    雷擊<b class='flag-5'>計(jì)數(shù)器</b>的概述與應(yīng)用分析

    計(jì)數(shù)器同步和異步怎么判斷

    計(jì)數(shù)器同步和異步是數(shù)字電路設(shè)計(jì)中的一個(gè)重要概念,它們很多應(yīng)用場景中都扮演著關(guān)鍵角色。 一、計(jì)數(shù)器概述 計(jì)數(shù)器是一種常見的數(shù)字電路,它可以對輸入信號進(jìn)行
    的頭像 發(fā)表于 07-23 11:14 ?439次閱讀

    PLC計(jì)數(shù)器的工作原理與功能

    至關(guān)重要的角色。計(jì)數(shù)器能夠統(tǒng)計(jì)輸入信號的脈沖次數(shù),實(shí)現(xiàn)某個(gè)事件的計(jì)數(shù)和監(jiān)控,是控制系統(tǒng)實(shí)現(xiàn)精確控制的關(guān)鍵元件之一。本文將詳細(xì)闡述PLC中
    的頭像 發(fā)表于 06-18 11:51 ?1491次閱讀

    SN74HC193-Q1 4位同步遞增/遞減計(jì)數(shù)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《SN74HC193-Q1 4位同步遞增/遞減計(jì)數(shù)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-04 10:46 ?0次下載
    SN74HC193-Q1 4位同步<b class='flag-5'>遞增</b>/<b class='flag-5'>遞減</b><b class='flag-5'>計(jì)數(shù)器</b>數(shù)據(jù)表

    SN54LS668、SN54LS669、SN74LS668、sn74ls669同步4位遞增/遞減計(jì)數(shù)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《SN54LS668、SN54LS669、SN74LS668、sn74ls669同步4位遞增/遞減計(jì)數(shù)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-04 10:40 ?0次下載
    SN54LS668、SN54LS669、SN74LS668、sn74ls669同步4位<b class='flag-5'>遞增</b>/<b class='flag-5'>遞減</b><b class='flag-5'>計(jì)數(shù)器</b>數(shù)據(jù)表

    SN54LS696、SN54LS697、SN54LS699、SN74LS696、SN74LS697、sn74ls 699同步遞增/遞減計(jì)數(shù)器手冊

    電子發(fā)燒友網(wǎng)站提供《SN54LS696、SN54LS697、SN54LS699、SN74LS696、SN74LS697、sn74ls 699同步遞增/遞減計(jì)數(shù)器手冊.pdf》資料免費(fèi)下載
    發(fā)表于 06-04 10:38 ?0次下載
    SN54LS696、SN54LS697、SN54LS699、SN74LS696、SN74LS697、sn74ls 699同步<b class='flag-5'>遞增</b>/<b class='flag-5'>遞減</b><b class='flag-5'>計(jì)數(shù)器</b>手冊

    同步計(jì)數(shù)器和異步計(jì)數(shù)器的區(qū)別

    在數(shù)字電子領(lǐng)域中,計(jì)數(shù)器是一種用于統(tǒng)計(jì)脈沖信號數(shù)量的重要設(shè)備。其中,同步計(jì)數(shù)器和異步計(jì)數(shù)器是兩種不同類型的計(jì)數(shù)器,它們工作原理、特性以及應(yīng)
    的頭像 發(fā)表于 05-24 14:36 ?2959次閱讀

    計(jì)數(shù)器的結(jié)構(gòu)和工作原理

    計(jì)數(shù)器,作為一種基礎(chǔ)的電子設(shè)備,廣泛應(yīng)用于數(shù)字電路、計(jì)算機(jī)系統(tǒng)以及工業(yè)自動化等多個(gè)領(lǐng)域。它通過對輸入信號進(jìn)行計(jì)數(shù)和狀態(tài)轉(zhuǎn)換,實(shí)現(xiàn)對事件發(fā)生次數(shù)的統(tǒng)計(jì)和顯示。本文將深入探討計(jì)數(shù)器的定義、
    的頭像 發(fā)表于 05-23 15:34 ?3776次閱讀

    脈沖計(jì)數(shù)器的分類和作用

    電子技術(shù)和數(shù)字系統(tǒng)中,脈沖計(jì)數(shù)器作為一種基本而重要的邏輯器件,其應(yīng)用廣泛且功能多樣。脈沖計(jì)數(shù)器不僅能夠實(shí)現(xiàn)基本的計(jì)數(shù)操作,還具備多種輸出功
    的頭像 發(fā)表于 05-15 17:11 ?810次閱讀

    計(jì)數(shù)器怎么判斷同步和異步 計(jì)數(shù)器異步和同步的區(qū)別

    應(yīng)用中的各自優(yōu)勢和限制。 一、計(jì)數(shù)器概述 計(jì)數(shù)器是一個(gè)數(shù)值型的變量,它能夠用于存儲和追蹤特定事件的發(fā)生次數(shù)。計(jì)算機(jī)系統(tǒng)中,計(jì)數(shù)器起到非常重要的作用,例如統(tǒng)計(jì)程序執(zhí)行的指令數(shù)、計(jì)算
    的頭像 發(fā)表于 02-22 15:14 ?2785次閱讀

    計(jì)數(shù)器怎么用 計(jì)數(shù)器的作用有哪些

    計(jì)數(shù)器是一種被廣泛應(yīng)用于各個(gè)領(lǐng)域的實(shí)用工具,我們的日常生活中隨處可見。無論是進(jìn)行時(shí)間統(tǒng)計(jì),協(xié)助工作任務(wù)的完成,還是用于科學(xué)研究和編程技術(shù),各個(gè)領(lǐng)域都起到了重要的作用。本文將詳細(xì)介紹計(jì)數(shù)器
    的頭像 發(fā)表于 02-03 10:04 ?4753次閱讀

    雷擊計(jì)數(shù)器綜合選型應(yīng)用方案

    雷擊計(jì)數(shù)器的基本原理是利用雷電流通過導(dǎo)線時(shí)產(chǎn)生的感應(yīng)電壓或電流來驅(qū)動計(jì)數(shù)器計(jì)數(shù)。根據(jù)計(jì)數(shù)器的類型,可以分為機(jī)械式雷擊計(jì)數(shù)器和電子式雷擊
    的頭像 發(fā)表于 01-31 09:50 ?458次閱讀
    雷擊<b class='flag-5'>計(jì)數(shù)器</b>綜合選型應(yīng)用方案

    同步計(jì)數(shù)器和異步計(jì)數(shù)器各有什么特點(diǎn)

    同步計(jì)數(shù)器和異步計(jì)數(shù)器是兩種常見的數(shù)據(jù)結(jié)構(gòu),它們都用于控制對共享資源的訪問。它們的主要作用是實(shí)現(xiàn)多個(gè)線程之間的同步和并發(fā)控制。盡管它們都被用于同步的目的,但它們有很多不同的特點(diǎn)和用例。 同步計(jì)
    的頭像 發(fā)表于 12-15 10:49 ?1695次閱讀

    同步計(jì)數(shù)器和異步計(jì)數(shù)器的區(qū)別主要在哪里

    同步計(jì)數(shù)器和異步計(jì)數(shù)器的區(qū)別詳解 同步計(jì)數(shù)器和異步計(jì)數(shù)器是數(shù)字電路中兩種常見的計(jì)數(shù)器類型,它們
    的頭像 發(fā)表于 12-13 14:54 ?8647次閱讀

    PLC計(jì)數(shù)器應(yīng)用簡介

    基本指令里面找到計(jì)數(shù)器操作,點(diǎn)擊加計(jì)數(shù)
    的頭像 發(fā)表于 11-08 17:22 ?1822次閱讀
    PLC<b class='flag-5'>計(jì)數(shù)器</b>應(yīng)用簡介