# 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.