# vivado usage (4-bit full adder)實驗報告 ### B1095165 黃瑄凱 指導教授:林宏益 ## 一、實驗目的 >本實驗的目的在於瞭解並實現4位全加器的功能,同時掌握Verilog設計語言以及Vivado工具的應用。在此實驗中,我運用到了IP Catalog以及沒有使用到的兩個版本。 ## 二、實驗原理&實驗背景 ### 原理: >在數位電路中,全加器(Full Adder)是一種用於進行二進位加法運算的邏輯電路。它接受三個輸入:兩個位元相加的數值(A和B),以及前一位的進位輸入(Cin)。全加器的輸出包括兩部分:和(Sum)和進位輸出(Cout)。全加器是實現多位元二進位加法的基本組成元件。 ### 背景: 在電腦系統中,位元(bit)的流動和位元的計算是基礎。因此,加法器(Adder)在計算中起著重要的作用。有兩種常見的加法器類型: 1.半加器(Half Adder):用於將兩個輸入位元相加,生成和(Sum)和進位輸出(Carry)。主要處理兩個輸入位元的加法運算。 2.全加器(Full Adder):進一步擴展了半加器,用於處理三個輸入位元,即兩個數值位元(A和B)以及前一位的進位輸入(Cin)。全加器是實現4位元全加器的基本組成部分。 >4位元全加器是一個關鍵的電路元件,用於相加四個4位元的二進制數。它包含輸入位元A3、A2、A1、A0和B3、B2、B1、B0,以及一個進位輸入Cin。其功能是將這四個4位元二進制數相加,並生成一個4位元的和(Sum3、Sum2、Sum1、Sum0)和一個進位輸出Cout。4位元全加器在構建大型計算機處理器、算術運算單元和其他高性能數字電子系統時發揮關鍵作用。。 ## 三、實驗材料: 版本一 * Verilog程式碼(包含IP Catalog) * Vivado設計套件 版本二 * Verilog程式碼 * Vivado設計套件 ## 四、實驗步驟: 1.創建新的Vivado專案。 2.添加4位全加器的Verilog程式碼到專案。 3.綜合和實現設計。 4.進行模擬,產生波形圖。 5.檢查模擬結果,確保4位全加器正確運作。 6.比對模擬結果和預期結果。 ## 五、實驗結果: 使用IP Catalog    未使用IP Catalog    針對未使用IP Catalog的實驗結果中使用以下程式碼: ``` # 打開VCD文件,指定路徑 open_vcd /path/to/your/vcd_file.vcd # 記錄你想要的信號,使用通配符 * 來記錄全部信號 log_vcd * # 執行仿真,例如運行 50us run 50us # 關閉VCD文件 close_vcd ``` 之後透過 https://github.com/ZihaoZhao/vcdvcd 中的main.py進行適當修改, ``` from vcdvcd import VCDVCD # 指定VCD文件的完整路徑 vcd_file_path = r'E:\user\Desktop\new_simulation.vcd' # 創建VCD對象 vcd = VCDVCD(vcd_file_path) # 列出所有可讀的信號名稱 signal_list = vcd.references_to_ids.keys() print("Signal List: ", signal_list) # 遍歷信號列表,獲取每個信號的數據 for signal_name in signal_list: signal = vcd[signal_name] # 獲取信號的時間/數值增量數據 tv = signal.tv # 輸出時間/數值增量數據 print(f"{signal_name}:") for time, value in tv: print(f"Time: {time}, Value: {value}") ``` 可以得到如圖的結果,因版面問題僅提供開頭和結尾   可以透過此和vivado中的波型圖比對結果。 ## 六、實驗討論: 在實驗過程中,我遇到了一些挑戰,並透過不斷的學習和改進來克服它們。 首先,使用IP Catalog時,需要了解如何搜索、選擇和配置所需的IP核心。這可能會導致一些混淆,特別是對於我第一次使用Vivado來說。然而透過閱讀相關文章和觀看教學影片,讓我知道如何使用IP Catalog。 其次,實現4位全加器的Verilog程式碼需要一定的程式設計技能。特別是對於我這個初學者來說,遇到一些語法錯誤或邏輯錯誤。在這方面,不斷的調試和改進是解決問題的關鍵,並透過還原一些網路上的程式碼。並使用VScode來檢查設計的正確性,並確保所有輸入情況下的輸出都是預期的。 最後,實驗中的波形模擬對於檢驗4位全加器的功能至關重要。通過觀察波形圖,我們能夠確保4位元的二進位加法在各種情況下都能正確執行。然而,對於更複雜的設計,可能需要更多的波形模擬和測試以確保高度可靠性。 這個實驗讓我獲得了實際的設計經驗,並期待將來能夠應用這些技能在更多的項目中。 ## 七、實驗心得: 在這次的4位全加器實驗中,我首次接觸了Vivado設計套件,並且從零開始學習。在實驗過程中,我翻閱了大量相關文章,其中包括下面提到的IP Catalog,這種工具使我們能夠以極簡潔的方式完成所需的設計,避免了使用冗長的程式碼,例如將多個1位元組合成4位元的全加器。 然而使用IP Catalog並不一定是一帆風順的,它需要我們了解如何搜索、選擇和配置所需的IP核心。在這個過程中,可能會遇到一些挑戰,通過閱讀文章,或是在youtube找教學從模仿開始修改,讓我能夠克服這些挑戰,並完成這份作品。 後續透過Python比對Vivado波型圖的部分對於我是一個相當艱難的挑戰。雖然網絡上有許多開源的程式碼和資源可供參考,但許多都是年代久遠的,需要做一些微調才能夠正確運作。 這次實驗讓我不僅學會了設計4-bit full adder,還學會了如何尋找、理解和應用現有的資源來解決問題。我期待將來能夠應用這些經驗和技能來處理更多事物,並不斷提升自己的專業能力。 ## 八、參考文獻: ALINX.FPGA ZYNQ Ultrascale+ MPSOC教程: 自定义IP实验. https://zhuanlan.zhihu.com/p/346124527 鸽子不二. (2019). 四位全加器的设计与仿真. CSDN. https://blog.csdn.net/qq_41587612/article/details/98620678 Dr. HariPrasad Naik Bhattu. (2023,6月 20日). 4-Bit Full Adder Design with IP Catalog in Xilinx Vivado. YouTube. https://www.youtube.com/watch?v=XOwzi2IXkpM&ab_channel=Dr.HariPrasadNaikBhattu ayeshayounas. (2021, 1月 17日). 4-Bit Full Adder using Logic Gates in Proteus https://www.theengineeringprojects.com/2021/01/4-bit-full-adder-using-logic-gates-in-proteus.html ZihaoZhao. 教你如何用Python讀取分析Vivado模擬波形 https://zhuanlan.zhihu.com/p/366411788
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up