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 位二進制數以及一個進位輸入進行相加,產生一個和輸出以及一個進位輸出。其邏輯關系可以通過真值表來描述:
輸入 | 輸入 | 輸入 | 輸出 | 輸出 |
---|---|---|---|---|
a | b | cin | sum | cout |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
從真值表中可以分析出,和輸出(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. 真值表
A | B | C | Y0 | Y1 | Y2 | Y3 | Y4 | Y5 | Y6 | Y7 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
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
四、實驗步驟
新建工程
- 打開 Quartus II 13.0 軟件,點擊菜單欄中的 “File”->“New Project”,進入新建工程向導界面。
- 在 “Project Name” 中輸入工程名稱, “4_bit_full_adder”和“decode3-8”,在 “Project Location” 中選擇工程存放路徑,如 “D:\Quartus\project1”,然后點擊 “Next”。
- 選擇目標芯片,點擊 “Family” 下拉菜單,選擇 “Cyclone IV E” 系列,然后在芯片列表中找到并選中 “EP4CE11529C7”,點擊 “Next”。
- 點擊“Next”和 “Finish” 完成工程創建。
新建文件
點擊新建文件,選擇Verilog HDL File
復制上文中的Verilog代碼
將設計項目編譯仿真
點擊工具欄中的 “Compile” 按鈕進行編譯。
引腳綁定及硬件下載測試
- 引腳綁定 :根據 DE2-115 開發板的硬件電路連接情況,確定輸入輸出引腳與 FPGA 芯片引腳的對應關系。
- 打開引腳綁定窗口,點擊菜單欄中的 “Assignments”->“Pin Planner”。
- 在引腳綁定窗口中,從左側的 “Nodes” 列表中選擇要綁定的輸入輸出引腳,如 “ain”,然后在右側的 “Location” 列表中找到對應的 FPGA 引腳號,完成所有輸入輸出引腳的綁定。
- 綁定完成后,點擊 “File”->“Save” 保存引腳綁定設置,并再次點擊 “Compile” 按鈕進行編譯,確保引腳綁定生效。
- 硬件下載測試 :將 DE2-115 開發板接上電源,通過 USB 數據線將開發板與電腦連接。點擊 Quartus II 主界面工具欄中的 “Programmer” 按鈕,打開編程器窗口。
- 在編程器窗口中,點擊 “Hardware Setup” 按鈕,選擇 “USB Blaster” 作為下載硬件,點擊 “OK” 進行連接。
- 在 “File” 列表中,選擇編譯生成的 “.sof” 文件,點擊 “Start” 按鈕開始下載。下載過程中,觀察進度條,當進度條達到 100% 時,表示下載成功。
- 下載成功后,可以通過撥動開發板上的撥碼開關輸入不同的二進制數,觀察 LED 燈的亮滅情況,驗證全加器的硬件功能是否正確。
五、實驗結果
硬件測試結果
在硬件測試過程中,通過撥動開發板上的撥碼開關輸入不同的二進制數,觀察 LED 燈的亮滅情況,結果與預期一致。
演示視頻
六、實驗總結
通過本次實驗,成功設計并實現了 1 位全加器,掌握了原理圖輸入以及 Verilog 的兩種設計方法,熟悉了 Quartus II 軟件的使用流程和 DE2-115 開發板的硬件測試過程。在實驗過程中,遇到了一些問題,如原理圖連接錯誤、引腳綁定錯誤等,通過仔細檢查和使用AI輔助分析,都得到了及時解決。