久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6294|回復: 1
打印 上一主題 下一主題
收起左側

FPGA學習-高性能計數器IP核調用與驗證

[復制鏈接]
跳轉到指定樓層
樓主
ID:108531 發表于 2016-3-12 22:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

1、利用Quartus II自帶的計數器IP核來熟悉怎么使用Quartus II的IP核。

2、使用計數器IP核的步驟(具體過程參考視頻,這里貼出幾張比較重要的步驟以及解釋)

 

 

 

這一步不能勾選,否則會出現其他問題(暫時還不明白是咋回事)

 

 

3、生成的原理圖(看不懂、略)

4、仿真程序

/* 實驗名稱:計數器IP核驗證

 * 程序功能:每5個時鐘周期計數一次,當計數10次后輸出一個高電平

 */

 

`timescale 1ns/1ns

`define clock_period    20

 

module count_ip_tb;

 

    reg cin;           

    reg clk;

    wire cout;

    wire[3:0] q;

   

    count_ip count_ip0(

    .cin(cin),        // cin 給一次高電平,計數一次并通過 q 輸出

    .clock(clk),    // 時鐘頻率

    .cout(cout),    // 當計數器溢出或者計數到指定的數值會輸出一個時鐘周期的高電平

    .q(q)                // cin 為高電平是,更新計數器的值并通過 q 輸出

    );

   

    initial clk = 1;

    always #(`clock_period/2) clk = ~clk;    // 產生時鐘

   

    initial begin

        repeat(20)begin                // 循環 20 次

            // 為了方便理解,這部分是我改寫的代碼

            cin = 0;                       

            #(`clock_period * 5);    //cin 維持5個時鐘的低電平   

            cin = 1;

            #(`clock_period);            //cin 維持1個時鐘的高電平

                   

        end

       

        cin = 0;        // 為避免計數器繼續計數輸出,需要將 cin 設置為低電平

       

        #(`clock_period * 200);            // 延時200個時鐘周期

        $stop;                                // 停止執行

   

    end

 

endmodule 

 

5、輸出的波形



6、兩個4位計數器IP核級聯為8位計數器


 

7、源程序(注意,這里需要將計數器IP核設置為 Plain binary 即計數到最大值

/* 實驗名稱:級聯計數器IP核

 * 程序功能:將兩個4位計數器IP核級聯實現8位計數器

 */

module mytest(cin, clk, cout, q);

    input cin;       

    input clk;

    output cout;

    output[7:0] q;

   

    wire cout0;        // 線網類型,暫時理解為導線

    // 計數器0

    count_ip count_ip0(

    .cin(cin),        // cin 觸發計數

    .clock(clk),        // 時鐘

    // 計數器0的 count 通過 cout0 與計數器1的 cin 鏈接

    .cout(cout0),        // 當計數器溢出了,cout就會觸發一個時鐘的高電平

    .q(q[3:0])        // 輸出計數器的值為低4位,即表示計數了多少次

    );

    // 計數器1

    count_ip count_ip1(

    // cin 的觸發由計數器0的cout輸出觸發

    .cin(cout0),        // 當計數器0溢出1次這里才計數1次

    .clock(clk),        // 時鐘

    .cout(cout),        // 當計數器1溢出了,就會輸出一個時鐘的高電平

    .q(q[7:4])        // 輸出計數器的值為高4位,即表示多少個計數器0溢出

    );

endmodule   

 

 

8、仿真源程序

/* 實驗名稱:級聯計數器IP核驗證

 * 程序功能:測試級聯過后的計數器是否為8位

 */

`timescale 1ns/1ns

`define clock_period    20

 

module mytest_tb;

    reg cin;           

    reg clk;

    wire cout;

    wire[7:0] q;

   

    mytest count_ip(

    .cin(cin),        // cin 給一次高電平,計數一次并通過 q 輸出

    .clk(clk),        // 時鐘頻率

    .cout(cout),        // 當計數器溢出或者計數到指定的數值會輸出一個時鐘周期的高電平

    .q(q)            // cin 為高電平是,更新計數器的值并通過 q 輸出

    );

   

    initial clk = 1;

    always #(`clock_period/2)  clk = ~clk;    // 產生時鐘

   

    initial begin

        repeat(300)begin                    // 循環 20 次

            // 為了方便理解,這部分是我改寫的代碼

            cin = 0;                       

            #(`clock_period * 5);            //cin 維持5個時鐘的低電平   

            cin = 1;

            #(`clock_period);                //cin 維持1個時鐘的高電平

                   

        end

       

        cin = 0;        // 為避免計數器繼續計數輸出,需要將 cin 設置為低電平

       

        #(`clock_period * 200);                // 延時200個時鐘周期

        $stop;                            // 停止執行

   

    end

 

endmodule   

 

 

9、波形圖(圖中 q 顯示的值是無符號十進制)

 

10、電路圖

 

11、級聯8位的好處是可以將兩個計數器的值進行分離。舉個例子,我們要將兩位計數的數字顯示在兩個數碼管中,那么就可以將計數器0的輸出端q直接輸出給表示個位的數碼管,而計數器1的輸出端q直接輸出給表示十位的數碼管即可。

 

12、波形圖(設置計數器計數到9,十六進制)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:108615 發表于 2016-3-14 00:29 | 只看該作者
教程很好,收藏保存了,51黑論壇有你更精彩!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲综合 | 久久亚洲天堂 | 夜夜爽99久久国产综合精品女不卡 | 天天澡天天狠天天天做 | 国产欧美一区二区三区免费 | 色婷婷综合久久久中字幕精品久久 | 中文字幕丁香5月 | 黄色小视频大全 | 亚洲福利网 | 精品视频99 | 亚洲精品二三区 | 中文字幕不卡在线观看 | 人人人人干| 91精品观看 | 色免费看 | 99九色| 特级做a爰片毛片免费看108 | 99久久99| 超碰在线人人 | 麻豆久久久久久久 | ririsao久久精品一区 | 国产乱码精品一区二区三区中文 | 国产福利在线 | 黄色在线免费观看 | 中文在线a在线 | 国产精品毛片一区二区在线看 | 精品福利视频一区二区三区 | 91网站在线观看视频 | 天天爽天天干 | 国产精品一区二区三区免费观看 | 日韩成人| 99爱在线 | 中文字幕高清一区 | 日韩精品视频在线播放 | 97国产精品视频 | caoporn地址| 91伊人| 国产精品一区二区三区久久 | 日韩av成人| 欧美极品在线视频 | 午夜久草 |