日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Verilog RTL 代码设计示例

發布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Verilog RTL 代码设计示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗一.做一個4選1的mux,并且進行波形仿真和2選1的mux對比,觀察資源消耗的變化

四選一mux代碼如下:

RTL視圖如下:

波形仿真如下:

2選1的mux資源消耗情況:

4選1的mux資源消耗情況:

4選1比2選1消耗資源更多。

實驗二.編寫一個4X4路交叉開關的RTL,然后編譯,看RTL View 比較2x2與4x4之間消耗資源的區別。通過對比資源,你有什么結論?

4X4路交叉開關實驗代碼設計如下:

4X4路交叉開關RTL視圖如下:

2X2路交叉開關RTL視圖如下:

2X2路交叉開關資源消耗情況:

4X4路交叉開關資源消耗情況:

可見4X4的交叉開關消耗資源成倍的增長了。

實驗三.編寫一個8輸入的優先編碼器,然后編譯,看RTL View


實驗四.

  • 編寫一個4-16的譯碼器,編譯
  • 和3-8譯碼器對比資源開銷
  • 看RTL View
    4-16譯碼器實驗代碼如下:


    資源消耗變化如下:
    3-8譯碼器資源消耗:

    4-16譯碼器資源消耗:

    輸入多了一位、輸出多了八位的情況下資源消耗幾乎多了一倍,可見資源消耗主要與輸出位數正相關。
  • 實驗五.

  • 把加法器的輸出信號改成4比特位寬,編譯,波形仿真。觀察輸出結果,說出輸出和輸入的對應關系。
  • 把加法器的輸入信號改成8比特位寬,編譯,波形仿真。觀察加法器的輸出延遲,和4比特輸入位寬的情況對比,你有什么結論,為什么?
    1.把加法器的輸出信號改成4比特位寬,程序如下:

    波形仿真如下:

    可見當輸出信號位寬下降時,不能完整的實現其功能,當輸出值大于15之后就會出錯。
    2.把加法器的輸入信號改成8比特位寬,程序如下:

    仿真波形圖如下:

    可見其輸出時延稍大于4輸入的無符號加法器。
  • 實驗六.

  • 把加法器的輸出信號改成4比特位寬,編譯,波形仿真。觀察輸出結果,觀察輸出結果在什么時候是正確的?。
  • 把加法器的輸入信號改成8比特位寬,編譯,波形仿真。觀察加法器的輸出延遲,和4比特輸入位寬的情況對比,你有什么結論,為什么?
    1.把加法器的輸出信號改成4比特位寬:


    2.把加法器的輸入信號改成8比特位寬:

  • 實驗七.

  • 不改變流水線的級數,把加法器的輸入信號改成8比特位寬,編譯,波形仿真,和不帶流水線的情況對比一下,你有什么結論?

  • 在8比特輸入位寬的情況下,在輸入上再添加一級流水線,觀察編譯和仿真的結果,你有什么結論?

  • 分析:
    純粹的加法器是一堆組合邏輯門構成的,這些組合邏輯的計算延遲較大,如果加法器電路的前極或后級電路也是一個規模較大的組合邏輯,那么它們會和加法器電路合并成為一個更大的組合邏輯,從而帶來更大的組合邏輯計算延遲。
    每一個D觸發器都有其所容許的最小的建立與保持時間,當兩個D觸發器之間的組合電路邏輯延遲變得更大的時候,會導致電路只能工作在更低的時鐘頻率,為了讓電路能夠工作在更高的時鐘頻率,需要用D觸發器來把大塊的組合邏輯分割為小塊,這就是流水線技術。(建議自行Google 關鍵字 D觸發器 建立與保持時間)
    與不加流水線的加法器相比,帶流水線的加法器即在加法器的輸入與輸出都連接了D觸發器,有效的減少了組合邏輯的競爭與冒險,從而明顯減少了“毛刺”的長度。而流水線的級數越高,毛刺也隨之越短,但輸出的時延也會相應的多一個時鐘周期。
    1.不改變流水線的級數,把加法器的輸入信號改成8比特位寬,代碼:



    與不加流水線的加法器相比,帶流水線的加法器即在加法器的輸入與輸出都連接了D觸發器,有效的減少了組合邏輯的競爭與冒險,從而明顯減少了“毛刺”的長度。
    2.在8比特輸入位寬的情況下,在輸入上再添加一級流水線:



    可以發現流水線的級數越高,毛刺也隨之越短,但輸出的時延也會相應的多一個時鐘周期。

    實驗八.

  • 改變乘法器的輸入位寬為8比特,編譯,波形仿真,觀察信號毛刺的時間長度。
  • 選一款沒有硬件乘法器的FPGA芯片(例如Cyclone EP1C6)對比8比特的乘法器和加法器兩者編譯之后的資源開銷(LogicCell的數目)
  • 編寫一個輸入和輸出都有D觸發器的流水線乘法器代碼,編譯后波形仿真,觀察組合邏輯延遲和毛刺的時間,和不帶流水線的情況下對比。
    1.改變乘法器的輸入位寬為8比特,編譯,波形仿真,觀察信號毛刺的時間長度。



    2.選一款沒有硬件乘法器的FPGA芯片(例如Cyclone EP1C6)對比8比特的乘法器和加法器兩者編譯之后的資源開銷(LogicCell的數目)

    乘法器資源消耗

    加法器資源消耗
    3.編寫一個輸入和輸出都有D觸發器的流水線乘法器代碼,編譯后波形仿真,觀察組合邏輯延遲和毛刺的時間,和不帶流水線的情況下對比。


  • 實驗九

    • 設計一個最簡單的計數器,只有一個CLK輸入和一個OVerflow輸出,當計數到最大值的時鐘周期CLK輸出1
    • 設計復雜的計數器,和本例相似,帶有多種信號,其中同步清零CLR的優先級最高,使能EN次之,LOAD最低。
      1.設計一個最簡單的計數器,只有一個CLK輸入和一個OVerflow輸出,當計數到最大值的時鐘周期CLK輸出1


      2.設計復雜的計數器,和本例相似,帶有多種信號,其中同步清零CLR的優先級最高,使能EN次之,LOAD最低。

    實驗十

    設計一個用于識別2進制序列“1011”的狀態機

    • 基本要求: 電路每個時鐘周期輸入1比特數據,當捕獲到1011的時鐘周期,電路輸出1,否則輸出0
      使用序列101011010作為輸出的測試序列
    • 擴展要求:給你的電路添加輸入使能端口,只有輸入使能EN為1的時鐘周期,才從輸入的數據端口向內部獲取1比特序列數據。
      實驗分析:因為要捕獲的是“1011”序列,從最低位開始進行匹配,匹配成功跳轉到下一狀態匹配更高一位,只要有一位匹配錯誤就應該跳轉至狀態0重新開始。而加上使能信號后,只有EN為1才從輸入端讀入輸入數據進行匹配。
    • 狀態跳轉邏輯表:
    當前狀態輸入次態
    ST0IN==0ST0
    ST0IN==1ST1
    ST1IN==0ST2
    ST1IN==1ST0
    ST2IN==0ST0
    ST2IN==1ST3
    ST3IN==0ST0
    ST3IN==1ST4
    ST4DONOT CAREST0
    • 輸出邏輯表:
    當前狀態輸出OUT
    ST00
    ST10
    ST20
    ST30
    ST41

    代碼及仿真波形圖如下:


    實驗十一

    設計一個如本節“電路描述”部分的“帶加載使能和移位使能的并入串出”的移位寄存器,電路的RTL結構圖如“電路描述”部分的RTL結構圖所示。
    實驗分析:所謂“串入并出”的移位寄存器,及輸入一個1位輸入信號,移位寄存器將這個一位數據存入第0位,并將原本的后3位一同前移1位,最后從高到低并行輸出四位數據。而“并入串出”的移位寄存器是指,輸入一個4位輸入信號,存入移位寄存器,若移位使能有效,則將最高位輸出,移位寄存器后三3同時前移1位,最低位存入0;若加載時能有效,則從輸入端重新讀入4位數據。


    總結

    以上是生活随笔為你收集整理的Verilog RTL 代码设计示例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。