FPGA学习(一)——DE2-115开发板编程入级

news/2025/3/5 22:25:20/

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.ppmy.cn/news/1576913.html

相关文章

用CLI操作MySQL 92数据库的命令

打开CLI: 输入数据库root密码: 注意:root密码在安装MySQL数据库时创建。需要记住。 查看数据库,可以参考库-表-列的顺序,先查看数据库库: show databases;再查看数据cfriends_db数据库中的数据…

HarmonyOS学习第12天:解锁表格布局的奥秘

表格布局初相识 不知不觉,我们在 HarmonyOS 的学习旅程中已经走到了第 12 天。在之前的学习里,我们逐步掌握了 HarmonyOS 开发的各种基础与核心技能,比如组件的基本使用、布局的初步搭建等,这些知识就像一块块基石,为我…

微软官宣5 月 5 日关闭 Skype,赢者通吃法则依然有效

微软官宣:5月5日关闭Skype 近日,微软公司宣布了一项重要决定:旗下广受欢迎的全球网络通话服务Skype将于2025年5月5日正式关闭。这一消息在全球范围内引发了广泛关注与讨论。 从Skype的崛起来看,它凭借免费拨打电话(尤…

shell脚本编程实践第6天

1 正则表达式 1.1 进阶知识 1.1.1 扩展符号 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 字母模式匹配[:alnum:] 字母和数字[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z[:lower:] 小写字母,示例:[[:lowe…

DRMPlaneType里有VIG, DMA,和RGB三种类型,这是不是说明DRMPlane就是代表DPU里的Pipeline

DRMPlane 代表了 DPU(Display Processing Unit) 里的 Pipeline(数据通路),不同的 DRMPlaneType 对应 DPU 内部的不同 渲染/合成管线。 📌 DRMPlaneType 与 DPU Pipeline 的关系 在 高通(Qualco…

软考中级-数据库-3.4 数据结构-图

图的定义 一个图G(Graph)是由两个集合:V和E所组成的,V是有限的非空顶点(Vertex)集合,E是用顶点表示的边(Edge)集合,图G的顶点集和边集分别记为V(G)和E(G),而将图G记作G(V,E)。可以看出,一个顶点集合与连接这…

腾讯--后台开发实习生一面的算法真题整理(2025年3月4日)

面经小记: 资料来源于网络收集。 腾讯实习基地Java后端一面准备: 算法模式:ACM模式卡码网ACM模式练习 需要独立完成完整代码,包括方法类的创建、功能函数和主函数,大致给出模板如下: public class Mai…

利用 Python 爬虫进行跨境电商数据采集

1 引言2 代理IP的优势3 获取代理IP账号4 爬取实战案例---(某电商网站爬取)4.1 网站分析4.2 编写代码4.3 优化代码 5 总结 1 引言 在数字化时代,数据作为核心资源蕴含重要价值,网络爬虫成为企业洞察市场趋势、学术研究探索未知领域…