FPGA學習(一)——DE2-115開發板編程入級

FPGA學習(一)——DE2-115開發板編程入級

一、實驗目的

通過 1 位全加器的詳細設計,深入掌握原理圖輸入以及 Verilog 的兩種設計方法,熟悉 Quartus II 13.0 軟件的使用流程,以及在 Intel DE2-115 開發板上的硬件測試過程,提升對 FPGA 編程和數字電路設計的理解與實踐能力。

二、實驗環境

(一)軟件環境

1. Quartus II 13.0

用于 FPGA 編程和設計的集成開發環境,提供原理圖編輯、代碼編寫、編譯、仿真等功能,是本次實驗的核心軟件工具。

2.USB Blaster 驅動程序

用于將編譯后的 FPGA 配置文件下載到開發板上,實現硬件與軟件的連接,進行實際的硬件測試。

(二)硬件環境

Intel DE2-115 開發板 :

搭載 Cyclone IV E 系列的 EP4CE11529C7 芯片
在這里插入圖片描述

三、實驗原理

(一) 1 位全加器原理

1 位全加器是一種基本的數字電路模塊,用于對兩個 1 位二進制數以及一個進位輸入進行相加,產生一個和輸出以及一個進位輸出。其邏輯關系可以通過真值表來描述:

輸入輸入輸入輸出輸出
abcinsumcout
00000
00110
01010
01101
10010
10101
11001
11111

從真值表中可以分析出,和輸出(sum)是三個輸入的異或運算結果,進位輸出(cout)是輸入的某些組合的或運算結果。具體邏輯表達式如下:

sum = a ⊕ b ⊕ cin

cout = (a & b) | (a & cin) | (b & cin)

為實現這個邏輯功能,可以采用兩個半加器和一個或門連接而成。半加器用于對兩個輸入位進行相加,產生和與進位輸出,全加器則在此基礎上考慮了進位輸入的影響。

verilog代碼如下:

module full_adder (input a,input b,input cin,output sum,output cout
);assign sum = a ^ b ^ cin;assign cout = (a & b) | (a & cin) | (b & cin);
endmodule

(二) 四位全加器原理

1. 四位全加器概述

四位全加器由四位全加器構成,用于進行兩個4位二進制數的相加。每個一位全加器處理一個數位,低位的進位輸出連接到高位的進位輸入。

結構圖

              ┌─────┐     ┌─────┐     ┌─────┐     ┌─────┐
A3 ──────────│ FA  │─ Sum3│ FA  │─ Sum2│ FA  │─ Sum1│ FA  │─ Sum0
B3 ──────────│     │      │     │      │     │      │     │
Cin_prev ─────│ FA  │─ Cout│ FA  │─ Cout│ FA  │─ Cout│ FA  │─ Cout_next└─────┘     └─────┘     └─────┘     └─────┘
  • 輸入:兩個 4 位加數 A3A2A1A0 和 B3B2B1B0,以及進位輸入 Cin_prev(通常初始為 0)。
  • 輸出:4 位和 S3S2S1S0 和進位輸出 Cout_next。

2. 工作原理

  • 最低位(第0位):加數 A0 和 B0 相加,初始進位 Cin_prev(通常為0)作為進位輸入。產生和 Sum0 和進位 Cout0。
  • 中間位(第1位、第2位和第3位):加數 Ai(i=1,2,3)與 Bi(i=1,2,3)相加,加上來自低位的進位輸出 Cout0,產生和 Sumi 和進位 Couti+1。
  • 最高位(第3位):加數 A3、B3 和進位 Cout2,產生和 Sum3 和進位 Cout3(作為整個加法器的進位輸出)。

verilog代碼如下:

module four_adder (  input [3:0] A, // 四位數 A  input [3:0] B, // 四位數 B  output reg [4:0] seg1
);     wire [4:0] sum;assign sum = A + B;always@(*)seg1 = sum;  
endmodule

(三) 3-8譯碼器原理

1. 基本概念

3-8 譯碼器是一種組合邏輯電路,用于將 3 位二進制輸入地址代碼轉換為8個輸出信號中的一個高電平有效信號。在數字系統中廣泛用于控制信號的譯碼。

2. 輸入與輸出

  • 輸入:3 位二進制輸入(A、B、C),通常表示地址或選擇信號。
  • 輸出:8 個輸出(Y0 到 Y7),每個對應輸入的唯一組合。例如,輸入 000 時 Y0 輸出高電平,其他輸出為低電平;輸入 111 時 Y7 輸出高電平。

3. 真值表

ABCY0Y1Y2Y3Y4Y5Y6Y7
00010000000
00101000000
01000100000
01100010000
10000001000
10100000100
11000000010
11100000001

4. 邏輯表達式

每個輸出 ( Y_i ) 是輸入 A、B、C 的組合邏輯函數。例如:

  • ( Y0 = \overline{A} \cdot \overline{B} \cdot \overline{C} )
  • ( Y1 = \overline{A} \cdot \overline{B} \cdot C )
  • ( Y2 = \overline{A} \cdot B \cdot \overline{C} )
  • ( Y3 = \overline{A} \cdot B \cdot C )
  • ( Y4 = A \cdot \overline{B} \cdot \overline{C} )
  • ( Y5 = A \cdot \overline{B} \cdot C )
  • ( Y6 = A \cdot B \cdot \overline{C} )
  • ( Y7 = A \cdot B \cdot C )

5. 電路結構

典型的設計使用門電路來實現這些邏輯表達式。例如,每個輸出可以由一個與非門構成,其輸入來自三個輸入位(A、B、C)及其反相形式,具體如下:

  • ( Y0 = (A + B + C)’ )
  • ( Y1 = (A + B + \overline{C})’ )
  • ( Y2 = (A + \overline{B} + C)’ )
  • 等等。

verilog代碼如下:

module decoder3_8 (  input [2:0] A,    // 3個按鈕的輸入  output reg [6:0] B // 7個led燈的輸出 
);  always @(*) begin  case (A)  3'b000: B = 7'b0000000; 3'b001: B = 7'b0000001; 3'b010: B = 7'b0000010; 3'b011: B = 7'b0000100; 3'b100: B = 7'b0001000; 3'b101: B = 7'b0010000;  3'b110: B = 7'b0100000; 3'b111: B = 7'b1000000; default: B = 7'b0000000; // 默認情況下,所有輸出為0  endcase  end  endmodule

四、實驗步驟

新建工程

  1. 打開 Quartus II 13.0 軟件,點擊菜單欄中的 “File”->“New Project”,進入新建工程向導界面。
    在這里插入圖片描述
  2. 在 “Project Name” 中輸入工程名稱, “4_bit_full_adder”和“decode3-8”,在 “Project Location” 中選擇工程存放路徑,如 “D:\Quartus\project1”,然后點擊 “Next”。
    在這里插入圖片描述

在這里插入圖片描述

  1. 選擇目標芯片,點擊 “Family” 下拉菜單,選擇 “Cyclone IV E” 系列,然后在芯片列表中找到并選中 “EP4CE11529C7”,點擊 “Next”。
    在這里插入圖片描述
  2. 點擊“Next”和 “Finish” 完成工程創建。

新建文件

點擊新建文件,選擇Verilog HDL File

復制上文中的Verilog代碼

將設計項目編譯仿真

點擊工具欄中的 “Compile” 按鈕進行編譯。

引腳綁定及硬件下載測試

  1. 引腳綁定 :根據 DE2-115 開發板的硬件電路連接情況,確定輸入輸出引腳與 FPGA 芯片引腳的對應關系。
    • 打開引腳綁定窗口,點擊菜單欄中的 “Assignments”->“Pin Planner”。
    • 在引腳綁定窗口中,從左側的 “Nodes” 列表中選擇要綁定的輸入輸出引腳,如 “ain”,然后在右側的 “Location” 列表中找到對應的 FPGA 引腳號,完成所有輸入輸出引腳的綁定。
    • 綁定完成后,點擊 “File”->“Save” 保存引腳綁定設置,并再次點擊 “Compile” 按鈕進行編譯,確保引腳綁定生效。
      在這里插入圖片描述

在這里插入圖片描述

  1. 硬件下載測試 :將 DE2-115 開發板接上電源,通過 USB 數據線將開發板與電腦連接。點擊 Quartus II 主界面工具欄中的 “Programmer” 按鈕,打開編程器窗口。
    • 在編程器窗口中,點擊 “Hardware Setup” 按鈕,選擇 “USB Blaster” 作為下載硬件,點擊 “OK” 進行連接。
    • 在 “File” 列表中,選擇編譯生成的 “.sof” 文件,點擊 “Start” 按鈕開始下載。下載過程中,觀察進度條,當進度條達到 100% 時,表示下載成功。
    • 下載成功后,可以通過撥動開發板上的撥碼開關輸入不同的二進制數,觀察 LED 燈的亮滅情況,驗證全加器的硬件功能是否正確。

五、實驗結果

硬件測試結果

在硬件測試過程中,通過撥動開發板上的撥碼開關輸入不同的二進制數,觀察 LED 燈的亮滅情況,結果與預期一致。

演示視頻

六、實驗總結

通過本次實驗,成功設計并實現了 1 位全加器,掌握了原理圖輸入以及 Verilog 的兩種設計方法,熟悉了 Quartus II 軟件的使用流程和 DE2-115 開發板的硬件測試過程。在實驗過程中,遇到了一些問題,如原理圖連接錯誤、引腳綁定錯誤等,通過仔細檢查和使用AI輔助分析,都得到了及時解決。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896903.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896903.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

中間件專欄之MySQL篇——MySQL事務原理、鎖機制分析

MySQL的事務性也是其重要特性之一。 什么是事務:事務的本質是并發控制的單元,是用戶定義的一個操作序列。這些操作要么都做,要么都不做,是 一個不可分割的工作單位。 目的:事務的目的在于將數據庫從一種一致性狀態轉…

機器學習的三個基本要素

機器學習的基本要素包括模型、學習準則(策略)和優化算法三個部分。機器學習方法之間的不同,主要來自其模型、學習準則(策略)、優化算法的不同。 模型 機器學習首要考慮的問題是學習什么樣的模型(Model&am…

集成方案 | Docusign 能與哪些應用程序集成?

如何實現 Docusign 與多種系統平臺之間的高效集成? 在企業跨境簽約場景中,員工常常需要在電子簽系統與辦公應用(如釘釘、企業微信)、CRM、ERP 等系統之間來回切換,手動上傳合同、下載簽署文件并同步數據。這種繁瑣的操…

2025華為OD機試真題目錄【E卷+A卷+B卷+C卷+D卷】持續收錄中...

摘要 本專欄提供2025最新最全的華為OD機試真題庫(EABCD卷),包括100分和200分題型。題目包含題目描述、輸入描述、用例、備注和解題思路、多種語言解法(Java/JS/Py/C/C)。希望小伙伴們認真學習、順利通過。 聲明 本專…

廣域互聯網關鍵技術詳解(GRE/LSTP/IPsec/NAT/SAC/SPR)

《廣域互聯網關鍵技術詳解》屬于博主的“廣域網”專欄,若想成為HCIE,對于廣域網相關的知識需要非常了解,更多關于廣域網的內容博主會更新在“廣域網”專欄里,請持續關注! 一.前言 廣域互聯技術紛雜多樣,不…

AF3 _correct_post_merged_feats函數解讀

AlphaFold3 msa_pairing 模塊的 _correct_post_merged_feats 函數用于對合并后的特征進行修正,確保它們符合預期的格式和要求。這包括可能的對特征值進行調整或進一步的格式化,確保合并后的 FeatureDict 適合于后續模型的輸入。 主要作用是: 在多鏈蛋白質 MSA(多序列比對)…

Docker 學習(三)——數據管理

容器中的管理數據主要有兩種方式: 數據卷 (Data Volumes): 容器內數據直接映射到本地主機環境; 數據 卷容器( Data Volume Containers): 使用特定容器維護數據卷 1.數據卷 數據卷…

基于SSM+Vue+uniapp的考研交流(帶商城)小程序+LW示例參考

系列文章目錄 1.基于SSM的洗衣房管理系統原生微信小程序LW參考示例 2.基于SpringBoot的寵物攝影網站管理系統LW參考示例 3.基于SpringBootVue的企業人事管理系統LW參考示例 4.基于SSM的高校實驗室管理系統LW參考示例 5.基于SpringBoot的二手數碼回收系統原生微信小程序LW參考示…

2025-03-04 學習記錄--C/C++-PTA 練習5-3 字符金字塔

合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻 一、題目描述 ?? 二、解題步驟 ?? 第1步、把字符和一個空格看作整體,即"G_"; 第2步、外…

DeepSeek集成到VScode工具,讓編程更高效

DeepSeek與VScode的強強聯合,為編程效率樹立了新標桿。 DeepSeek,一款卓越的代碼搜索引擎,以其精準的索引和高速的檢索能力,助力開發者在浩瀚的代碼海洋中迅速定位關鍵信息。 集成至VScode后,開發者無需離開熟悉的編輯…

前端-css(預編譯器sass)

1.sass(scss->sass第三代) Sass3 -> Scss(Sassy CSS),SCSS(Sassy CSS) 是 CSS 語法的擴展. 2.scss注釋 Sass 支持標準的 CSS 多行注釋 /* */,以及單行注釋 //,前者會 被完整輸出到編譯后的 CSS 文件中,而后者則不會 3.scss定義變量 …

【計算機網絡入門】初學計算機網絡(十一)重要

目錄 1. CIDR無分類編址 1.1 CIDR的子網劃分 1.1.1 定長子網劃分 1.1.2 變長子網劃分 2. 路由聚合 2.1 最長前綴匹配原則 3. 網絡地址轉換NAT 3.1 端口號 3.2 IP地址不夠用? 3.3 公網IP和內網IP 3.4 NAT作用 4. ARP協議 4.1 如何利用IP地址找到MAC地址…

Android 獲取jks的SHA1值:java.io.IOException: Invalid keystore format

命令生成 keytool -list -v -keystore 全路徑.jks -alias 別名 -storepass 密碼 -keypass 密碼 1、遇到 的問題: 通過快捷鍵 ‘win r’ 啟動的小黑框運行上面的命令會出現下面這個錯誤keytool 錯誤: java.io.IOException: Invalid keystore format 2、解決問題 …

掌握 ElasticSearch 聚合查詢:Aggregations 入門與實戰

掌握 ElasticSearch 聚合查詢:Aggregations 入門與實戰 一、引言 (Introduction)二、數據準備 (Data Preparation)2.1 創建索引 (Create Index)2.2 批量導入數據 (Bulk Import Data) 三、聚合查詢基礎 (Aggregation Basics)3.1 什么是聚合查詢?(What are…

Microsoft.Office.Interop.Excel 的簡單操作

Microsoft.Office.Interop.Excel 的簡單操作 1、安裝 Microsoft.Office.Interop.Excel2、聲明引用 Microsoft.Office.Interop.Excel3、簡單的新建 EXCEL 操作代碼4、將 DataGridView 表數據寫到 EXCEL 操作代碼5、將 EXCEL 表數據讀取到 C# 數據表 DataTable 操作代碼 1、安裝 …

LLM 對話框組件 | 字節青訓營前端開發項目

系統介紹 LLM對話框項目系統介紹 一、項目概述 選題背景隨著人工智能技術的飛速發展,自然語言處理(NLP)領域取得了顯著進展,其中對話系統(Dialog System)作為NLP的重要應用方向,正逐漸滲透到人們的日常生活中。從智能客服到語音助手,從智能家居到在線教育,對話系統以…

k8s命名空間和資源配額

在現代的云計算環境中,容器化技術已成為主流。而 Kubernetes(簡稱 k8s)作為一項開源的容器編排系統,廣泛應用于各類場景。本文將詳細介紹關于 k8s 中的命名空間和資源配額,幫助你更好地理解和管理你的集群資源。 k8s …

從統計學視角看機器學習的訓練與推理

從統計學視角看機器學習的訓練與推理 目錄 引言:統計學與機器學習的奇妙緣分訓練與推理:你得先學會“看數據”再“用數據”最大似然估計(MLE):從直覺到數學證明 3.1 伯努利分布的MLE3.2 單變量高斯分布的MLE3.3 多元…

AI賦能企業協作4-NL2Sql技術路線

1.1 對話即服務的一點思考 在數智化轉型的過程中,基于即時通信(IM)的協作平臺正悄然成為企業智能化轉型的“新基建”。協作平臺天然具備高頻交互、實時協同和場景化落地的特性,仿佛是為對話式AI量身定制的試驗場——員工在熟悉的聊…

批量提取 Word 文檔中的頁面

如何將 Word 文檔中的頁面提取出來形成一個新的文檔呢?比如將 Word 文檔中的第一頁提取出來、將 Word 文檔中的最后一頁提取出來、再或者將 Word 文檔中的中間幾頁提取出來等等。人工的處理肯定非常的麻煩,需要新建 Word 文檔,然后將內容復制…