Quartus II实现四位累加器原理图设计

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本工程介绍如何使用Altera公司开发的Quartus II软件设计一个四位二进制累加器。累加器作为数字电路的基本组件,能够接收两个四位二进制数进行加法运算并处理进位。我们将通过概念设计、逻辑门级设计、原理图绘制、逻辑综合、仿真测试、适配编程和验证调试等步骤,完整实现累加器的设计流程。本工程不仅是对二进制加法硬件实现的深入理解,也是对Quartus II软件操作流程的熟练掌握,对学习数字逻辑设计和FPGA设计至关重要。 quartus ii

1. Quartus II软件介绍

1.1 Quartus II概述

Quartus II是Altera公司开发的一款先进的FPGA/CPLD设计软件,广泛应用于数字电路设计领域。该软件支持从设计输入、综合、仿真到设备编程的全过程,提供一个集成的开发环境。Quartus II具有友好的用户界面,强大的综合能力和丰富的库资源,使得设计者能够高效地完成复杂的设计工作。

1.2 设计流程概览

在使用Quartus II进行设计时,首先需要进行项目设置,包括定义项目名称、选定目标FPGA/CPLD设备、配置编译选项等。接下来是设计输入,可以采用原理图、VHDL、Verilog或混合输入方式。设计完成之后,使用Quartus II自带的综合器对设计进行综合优化。综合后,通过内置的仿真工具进行功能验证,确保设计逻辑正确无误。最后,生成编程文件,并下载到目标FPGA/CPLD设备中进行硬件验证。

1.3 版本和硬件支持

Quartus II软件支持Altera(现为英特尔旗下公司)的多种FPGA和CPLD系列,包括MAX、Cyclone、Arria和Stratix等。随着硬件技术的不断更新,Quartus II软件也会定期发布新版本,以支持最新的器件和提供新的设计功能。此外,Quartus II软件也支持第三方EDA工具的集成,比如ModelSim用于仿真,以及SignalTap II用于逻辑分析和调试。

通过以上介绍,读者将对Quartus II有一个基本的认识,为后续的深入学习和使用该软件进行数字逻辑设计打下坚实的基础。在后续章节中,我们将深入探讨Quartus II在四位累加器设计中的应用,包括原理图设计、仿真测试、优化以及FPGA适配等。

2. 四位累加器概念设计

2.1 累加器的工作原理

2.1.1 二进制加法基础

在数字逻辑设计中,二进制加法是构建更复杂算术电路的基础。不同于我们日常使用的十进制加法,二进制加法涉及到只有两个数字的系统,即0和1。二进制加法有四个基本规则,也称为全加器的逻辑关系:

  1. 0 + 0 = 0
  2. 0 + 1 = 1
  3. 1 + 0 = 1
  4. 1 + 1 = 10(这里产生了一个进位)

二进制加法使用了进位的概念。当两个数字相加等于二进制的“10”时,我们将“1”进位到下一个加数位上,而余下的“0”被留在当前位上。

2.1.2 累加器的基本功能和特点

累加器是一种数字电路,它用于累积二进制数的总和。它通常包含几个触发器(Flip-Flops),用于存储中间结果和进位。在最简单的形式中,一个累加器可以由一个全加器和一个寄存器组成。当输入一个值(加数)并与寄存器中的内容(累加值)相加时,它会输出一个新的总和和任何进位。

四个重要的特点定义了累加器的行为:

  • 输入 :通常包含两个二进制数(一个加数和一个累加数)以及任何必要的进位输入。
  • 输出 :包括一个二进制总和以及一个进位输出。
  • 存储 :一个或多个触发器用于存储中间总和或最终结果。
  • 进位 :一位用于表示一个加法运算中的进位情况。

2.2 设计需求分析

2.2.1 设计目标和约束条件

在设计一个四位累加器时,首先需要确定设计的目标和可能存在的约束条件。目标是创建一个能够接受两个四位二进制数作为输入,并输出它们的和(一个四位二进制数),同时处理任何可能的进位。

约束条件可能包括:

  • 使用特定的硬件,比如一个特定型号的FPGA。
  • 限制资源使用,比如逻辑单元的数量。
  • 设计的时序要求,例如,必须满足一定的操作频率或具有足够的时钟周期余量。

2.2.2 设计的复杂度评估

设计一个四位累加器看起来相对简单,但它涉及到多个组件的集成,如全加器的级联、进位链的设计和优化,以及可能的测试向量准备。复杂度评估需要考虑以下几点:

  • 组件数量 :累加器会需要四个全加器组件,以及用于存储的触发器。
  • 布局和布线 :这些组件之间需要正确的连接,并需要有效率地布局以避免过大的布线延迟。
  • 逻辑优化 :为了确保累加器能够以最大速度运行,可能需要对设计进行优化。
  • 测试和验证 :需要准备合适的测试向量以验证累加器的功能正确性。

累加器设计的复杂度可能会影响设计周期、资源需求、时序性能和成本。这些都是在设计的初步阶段需要评估和考虑的重要因素。

3. 逻辑门级设计原理

在现代数字系统设计中,逻辑门是构建复杂逻辑功能的基石。逻辑门级设计是数字逻辑设计中的基础部分,它涉及到使用标准逻辑门电路来实现所需的逻辑功能。理解逻辑门的工作原理和组合方式对于电子工程师和计算机科学家至关重要。

3.1 逻辑门基础知识

3.1.1 逻辑门的种类和功能

逻辑门是最基本的数字电路单元,它根据输入的逻辑状态(通常是高电平和低电平)产生一个逻辑输出。最基础的逻辑门包括AND、OR、NOT、NAND、NOR、XOR和XNOR门。每种逻辑门都有其特定的逻辑行为,这些行为可以用真值表来描述。

  • AND门 :当所有输入为1时,输出为1;否则,输出为0。
  • OR门 :当任意输入为1时,输出为1;所有输入为0时,输出为0。
  • NOT门 :是单输入单输出的逻辑门,对输入信号进行逻辑取反。
  • NAND门 :是AND门的反转,当所有输入为1时,输出为0;其他情况输出为1。
  • NOR门 :是OR门的反转,当任意输入为1时,输出为0;所有输入为0时,输出为1。
  • XOR门 :当输入不同时,输出为1;相同时输出为0。
  • XNOR门 :是XOR门的反转,当输入相同时,输出为1;不同时输出为0。

这些基本逻辑门可以单独使用,也可以组合使用,以实现更复杂的逻辑功能。

3.1.2 逻辑门的符号表示和真值表

在数字电路设计中,逻辑门的表示有标准符号,这些符号在电路图中易于识别。例如,AND门的符号通常是一个梯形,OR门符号则像一个环形,NOT门是一个三角形。为了完整地描述一个逻辑门的行为,真值表是一个不可或缺的工具。它列出了所有的输入组合及其对应输出。例如,AND门的真值表如下:

| 输入A | 输入B | 输出 | |-------|-------|------| | 0 | 0 | 0 | | 0 | 1 | 0 | | 1 | 0 | 0 | | 1 | 1 | 1 |

真值表为电路设计提供了直观的理解和验证方法,是逻辑门分析的基础。

3.2 组合逻辑电路设计

3.2.1 组合逻辑电路的基本理论

组合逻辑电路是由多个逻辑门组成的电路,其输出仅取决于当前的输入值,而与之前的输入或输出状态无关。这种电路没有存储元件,如触发器或寄存器。

组合逻辑电路设计遵循几个基本理论原则:

  1. 最小化门数量 :在满足功能要求的同时,尽量减少所需的逻辑门数量,以降低电路的复杂性及成本。
  2. 最小化延迟 :在保证正确性的前提下,设计时应尽量减少信号通过电路的时间,提高电路的工作速度。
  3. 避免竞争-冒险 :设计组合逻辑电路时,要注意输入信号变化时可能引起的输出不确定状态(竞争)和瞬间错误(冒险)。

3.2.2 设计组合逻辑电路的方法

设计组合逻辑电路通常遵循以下步骤:

  1. 需求分析 :明确电路需要实现的逻辑功能。
  2. 真值表构建 :根据需求列出所有可能的输入组合及其期望输出。
  3. 逻辑表达式推导 :从真值表中推导出输出与输入之间的逻辑表达式。
  4. 逻辑简化 :应用布尔代数简化逻辑表达式,以便减少所需的逻辑门数量。
  5. 电路图绘制 :根据简化后的逻辑表达式绘制电路图。
  6. 仿真验证 :使用仿真工具验证电路图的功能是否符合设计要求。

逻辑门级设计原理是数字逻辑设计和FPGA设计的基础。通过对这些基本元素和原理的深入理解,工程师可以构建出从简单的门电路到复杂的微处理器的任何数字系统。在下一章节中,我们将探讨如何在Quartus II软件中使用图形界面创建项目和绘制原理图,这是从设计逻辑到物理实现的关键步骤。

4. ```

第四章:使用Quartus II创建工程和绘制原理图

4.1 Quartus II工程管理

4.1.1 创建新工程和工程文件结构

在 Quartus II 中创建一个新的工程是进行 FPGA 设计的第一步。这涉及到一系列的步骤,这些步骤为工程提供了必要的基础设施。打开 Quartus II 软件后,可以通过点击 "File" -> "New Project Wizard" 来启动新工程向导。

  1. 输入工程名称和位置 :在向导的第一步中,用户需要输入工程的名称,并选择一个保存工程的文件夹位置。
  2. 添加工程文件 :接下来,可以将之前设计好的 VHDL、Verilog 或其他支持的语言的源文件添加到工程中。
  3. 选择目标设备 :用户需要根据设计的需求选择合适的 FPGA 或 CPLD 设备型号。这个步骤对后续的工程编译和硬件适配有重要影响。
  4. 添加向导文件 :如果需要,用户可以添加一个或多个向导文件,例如 RAM 初始化文件,用于在编译时初始化存储资源。

创建工程后,Quartus II 会生成一个基本的工程文件结构。默认情况下,这个结构包括:

  • 项目目录 :存放工程文件的目录。
  • 源文件 :存放 VHDL 或 Verilog 设计文件的位置。
  • 输出文件 :用于存放编译过程中生成的中间文件和结果文件,如网表文件(.qxp)。
  • 仿真文件 :如果使用了 Quartus II 的仿真功能,仿真相关的文件会放在这里。

4.1.2 工程设置和配置选项

工程设置是定义工程特性和配置参数的地方,这些设置对设计的编译和优化有直接影响。在 Quartus II 中,工程设置可以通过 "Project" -> "Settings" 菜单来访问和修改。

在 "Settings" 对话框中,可以进行以下一些关键设置:

  • General :工程的基本信息,如工程名和目标设备。
  • Analysis & Synthesis :逻辑综合过程的参数设置,包括综合策略和优化目标。
  • Fitter :布局布线(fit)阶段的参数设置,这关系到资源分配和时序。
  • EDA Tool Settings :与第三方 EDA 工具接口相关的设置,例如仿真工具。
  • Files :可以添加或移除源文件和其它相关文件到工程中。 为了优化设计流程,用户可以根据设计的具体需求调整这些参数。例如,如果设计对时序有严格要求,则可以通过调整 Fitter 设置来改善时序性能。

4.2 原理图设计和编辑技巧

4.2.1 原理图符号和图件的使用

在 Quartus II 中,原理图编辑器允许设计者通过图形化的方式来设计电路,这种方式对初学者来说比较直观。原理图符号和图件是构成原理图设计的基本元素,包括逻辑门、触发器、算术逻辑单元(ALU)等多种功能部件。

  1. 放置符号 :在原理图编辑器中,设计者可以通过 "Library" 面板找到需要的符号,并将其拖放到工作区。
  2. 编辑属性 :每个符号都有其属性,设计者可以通过双击符号来修改其属性,例如端口名称、逻辑电平等。
  3. 连线 :使用连线工具来连接各个符号的端口,创建逻辑电路。
  4. 分层次设计 :通过创建模块和子模块来管理复杂设计,这有助于提高设计的可读性和可维护性。

4.2.2 连线和层次化设计原则

在原理图设计中,连线的合理性和层次化设计的有效性是保证设计质量和便于调试的关键因素。

连线的注意事项

  • 避免交叉 :尽量不要使连线交叉,以降低电路的复杂度和提高可读性。
  • 正确使用线型 :根据信号的性质选用不同的线型,例如时钟信号线应使用时钟专用线型。
  • 注释关键信号 :对于电路中的关键信号,如复位信号,可以添加注释以方便他人阅读理解。

层次化设计原则

  • 模块化 :将设计分成若干模块,每个模块完成特定功能。这样设计的好处在于提高代码复用性,便于团队协作。
  • 接口定义 :在模块之间定义清晰的接口,可以是端口列表,也可以是信号列表。明确的接口有助于减少模块间的耦合。
  • 层次化封装 :将小模块封装成更大模块,形成层次结构。这样不仅使得设计层次清晰,也便于电路的逐步调试。

通过遵循这些连线和层次化设计的原则,设计者可以创建出清晰、高效且易于维护的原理图设计。



# 5. 逻辑综合和优化过程

## 5.1 逻辑综合的步骤和方法

### 5.1.1 逻辑综合的定义和重要性

逻辑综合是将硬件描述语言(HDL)编写的高层次设计转换成门级网表的过程。这一过程至关重要,因为它将抽象的设计转换为可以在FPGA或ASIC上实现的物理表示。通过逻辑综合,设计师可以验证其设计是否满足功能和性能要求,并且可以在综合工具的约束下进行优化。没有有效的逻辑综合,一个设计无法进行到物理设计阶段,也就无法实现最终产品。

### 5.1.2 逻辑综合工具的使用

在使用Quartus II进行逻辑综合时,开发者会遵循以下步骤:

1. **创建综合项目**:首先,需要确保 Quartus II 工程中包含了所有必要的设计文件,如 VHDL 或 Verilog 源代码。

2. **编写综合脚本**:在 Quartus II 中,综合可以通过图形用户界面进行,也可以通过编写一个综合脚本(例如使用Tcl语言)来自动执行综合过程。

3. **设置综合约束**:为满足时序要求和面积优化目标,需要在综合过程中应用适当的约束。约束可以包括时钟频率、输入输出延迟等。

4. **执行综合**:运行综合过程,软件会分析代码并尝试生成满足所有约束条件的门级网表。

5. **综合结果分析**:综合完成后,Quartus II 提供报告和视图(如资源使用情况、时序分析等),设计师需要检查这些结果来确认综合是否成功。

下面是一个简单的 VHDL 代码块示例,展示了综合工具如何处理输入代码:

```vhdl
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity my_entity is
    Port ( A : in STD_LOGIC;
           B : in STD_LOGIC;
           C : out STD_LOGIC);
end my_entity;

architecture Behavioral of my_entity is
begin
    C <= A AND B;
end Behavioral;

逻辑综合过程将此 VHDL 代码转换成门级网表,具体转换成的门级结构取决于综合策略和目标FPGA设备。

5.2 逻辑优化技术

5.2.1 优化的基本概念和目标

逻辑优化的核心目标是在满足设计约束的前提下,减少所需的逻辑资源、降低延迟和功耗。这涉及到多个层面,包括逻辑级别的优化(如消除冗余逻辑),以及物理级别的优化(如逻辑重组以减少关键路径延迟)。

优化策略包括但不限于:

  • 技术映射 :将HDL代码中的操作映射到FPGA或ASIC可用的标准单元。
  • 逻辑简化 :如布尔代数优化,逻辑合并,以及常数传播。
  • 时序优化 :调整逻辑以满足时序要求,如关键路径的优化。
  • 资源优化 :减少占用的逻辑单元数目,改善功耗和成本。

5.2.2 常见的逻辑优化策略

资源优化策略:

  1. 逻辑压缩 :减少逻辑门的使用,例如通过合并可以共享逻辑的条件。
  2. 逻辑重映射 :选择具有更少逻辑级别的逻辑组合,减少整体逻辑深度。

时序优化策略:

  1. 重定时 :改变逻辑元素的位置(通过增加寄存器)来缩短关键路径。
  2. 管道化 :在数据路径中增加寄存器,分割长的组合逻辑链,以减小关键路径的延迟。

功耗优化策略:

  1. 减少开关活动 :减少逻辑变化的频率,例如通过简化逻辑表达式。
  2. 电源门控 :关闭未使用的电路部分的电源。

这里是一个优化后的 VHDL 代码段,展示了通过逻辑简化减少逻辑门的使用:

architecture optimized of my_entity is
begin
    C <= A and B;
end optimized;

在优化后,原本的 AND 门可以被直接在实例化时硬编码实现,从而减少了一个逻辑元素。

优化后的结果应该在 Quartus II 中用报表查看器(Resource Section)查看资源使用情况,并在时序分析器(TimeQuest Timing Analyzer)中检查时序是否满足要求。这样的分析与优化过程将确保最终设计既满足性能要求,又具有较高的效率和可靠性。

6. 内置仿真工具的测试验证

6.1 仿真工具的原理和功能

6.1.1 仿真的重要性和分类

仿真是数字逻辑设计过程中一个不可或缺的步骤,它能够在实际硬件实现之前验证设计的正确性和功能。通过仿真实验,设计者能够在没有物理硬件的情况下测试和验证他们的设计,从而节省时间和资源。仿真工具可以模拟数字逻辑电路的行为,提供一个虚拟的环境来观察电路对输入信号的反应。

仿真通常分为两种类型:功能仿真(Functional Simulation)和时序仿真(Timing Simulation)。功能仿真关注于逻辑功能的正确性,它忽略了电路的时序特性,因此速度较快。时序仿真则考虑了信号传播延迟和设备的时序特性,更接近于实际的硬件运行情况,因此速度较慢,但更为精确。

6.1.2 Quartus II内置仿真工具介绍

Quartus II提供了功能强大的内置仿真工具,称为“ModelSim”。ModelSim是一个行业标准的硬件描述语言(HDL)仿真环境,支持多种硬件描述语言,如VHDL和Verilog。它允许设计者进行高层次的行为级仿真,以及详细到门级别的仿真。

ModelSim允许设计者编写测试台(Testbench)来模拟激励信号,并观察波形输出来验证设计是否按照预期工作。这个工具还支持代码覆盖分析、断言检查等高级仿真功能,帮助设计者深入分析设计的正确性和完备性。

6.2 测试向量的设计和应用

6.2.1 测试向量的作用和编写方法

测试向量是仿真过程中用来提供输入值的一组数据集合,它们定义了仿真的不同测试情况。在数字逻辑设计中,测试向量非常重要,因为它们帮助验证设计在不同输入条件下的行为。编写有效的测试向量意味着覆盖所有可能的操作情况,包括边界条件和异常情况,确保设计的鲁棒性和正确性。

在编写测试向量时,设计者首先需要理解设计的规格要求,然后创建一组能够测试这些要求的输入序列。测试向量的编写通常遵循一定的原则,比如从简单到复杂,从正常操作到异常操作。测试向量可以通过文本文件输入,也可以在仿真软件中直接编写。

6.2.2 测试案例的执行和结果分析

一旦测试向量被设计并准备好,接下来就是执行测试案例并观察结果。ModelSim提供了波形查看器来直观地显示仿真的结果,包括输入信号的变化和输出信号的响应。设计者可以使用波形查看器来比较预期输出和实际输出,验证设计是否满足规格要求。

在观察波形时,可能需要使用特定的仿真时间点来定位问题,或者利用ModelSim的断点和步进功能来逐步执行仿真,这样可以更细致地检查内部信号的行为。在执行仿真后,如果发现不一致或错误,设计者需要回到设计阶段修正错误,并重新进行仿真验证。

以下是一个简单的Verilog测试台示例代码,用于验证一个简单的四位加法器模块:

`timescale 1ns / 1ps

module adder_tb;

// Inputs
reg [3:0] A;
reg [3:0] B;
reg Cin;

// Outputs
wire [4:0] Sum;

// 实例化加法器模块
adder uut (
    .A(A), 
    .B(B), 
    .Cin(Cin), 
    .Sum(Sum)
);

initial begin
    // 初始化输入
    A = 0; B = 0; Cin = 0;

    // 等待2个时间单位后,开始测试
    #2;

    // 测试案例1
    A = 4'b0101; B = 4'b0011; Cin = 0;
    #10;
    // 测试案例2
    A = 4'b1010; B = 4'b1101; Cin = 1;
    #10;
    // 测试案例结束
    $finish;
end

// 监视所有信号的变化
initial begin
    $monitor("At time %t, A = %b, B = %b, Cin = %b, Sum = %b", $time, A, B, Cin, Sum);
end

endmodule

在上述代码中,我们定义了测试台模块 adder_tb ,它实例化了需要测试的加法器模块 adder ,并定义了输入和输出信号。通过 initial 块中的代码,我们设置了不同的输入组合(测试案例),并通过 $monitor 动态显示信号的变化,以验证加法器的行为是否符合预期。在ModelSim仿真环境中执行这段代码后,可以通过波形查看器观察 Sum 的输出,确保其正确反映了 A B 以及进位输入 Cin 的加法结果。

通过上述过程,设计者可以确保设计在仿真阶段通过了测试,从而提高了在实际硬件上部署的信心。测试验证是确保设计质量的关键环节,因此,对测试向量的设计和分析需要给予足够的重视。

7. FPGA适配、编程及硬件验证

随着数字逻辑设计的复杂度增加,FPGA的使用变得越来越普遍。适配、编程和硬件验证是将设计实现到硬件上的关键步骤。本章我们将详细探讨FPGA适配流程和步骤、硬件验证的方法和技巧。

7.1 FPGA适配流程和步骤

7.1.1 设备选择和引脚分配

在FPGA适配之前,首先需要根据设计的需求选择合适的FPGA设备。Quartus II提供了丰富的FPGA系列,从低密度的Cyclone系列到高密度的Stratix系列,用户可以根据实际需要进行选择。

引脚分配是指在设计中定义逻辑信号与FPGA物理引脚之间的对应关系。正确合理的引脚分配有助于避免信号冲突,提高电路的稳定性和性能。Quartus II提供了引脚规划工具,允许用户在图形化界面中进行引脚的分配和管理。

7.1.2 编程文件的生成和下载

在完成设计的逻辑综合、适配和仿真测试后,下一步是生成编程文件。Quartus II支持多种编程文件格式,如 .sof (SRAM Object File) 用于加载到FPGA的SRAM中,或者 .pof (Programmable Object File) 用于烧录到FPGA的闪存中。可以通过Quartus II的"Programmer"工具来生成和管理这些文件。

在硬件验证之前,需要将生成的编程文件下载到目标FPGA设备。这一过程通常通过USB Blaster下载线或JTAG接口完成。Quartus II的"Programmer"工具支持这些操作,且可以对下载过程中可能出现的错误进行诊断。

7.2 硬件验证的方法和技巧

7.2.1 实验板的配置和使用

硬件验证通常在FPGA开发板或实验板上进行。配置实验板包括设置电源、配置所需的外围设备以及根据需要加载测试电路。

一些FPGA开发板配备了多种输入输出设备,如LED灯、开关、七段显示器和按键等。合理利用这些设备可以方便地进行设计的功能验证。

7.2.2 硬件测试和故障排除

硬件测试是验证设计是否正确实现的重要步骤。测试包括检查设备工作是否正常,以及设计的每个功能模块是否按预期运行。故障排除时,可以利用Quartus II内置的逻辑分析仪功能或者外部逻辑分析仪进行信号的监测。

为了便于故障排查,设计者应该在设计中预埋一些测试点,比如用JTAG控制信号,以便于硬件调试。在实际测试中,要确保测试覆盖了所有设计路径,对异常情况也要进行测试以验证设计的鲁棒性。

验证完硬件后,如果发现设计有错误或者优化空间,可以将修改后的设计重新适配、编程,并在硬件上进行重新验证,直到满足设计要求。

// 以下是一个简单的FPGA编程文件生成的代码示例。
quartus_pgm -c <Chain> -m JTAG -o p;"<Project_Name>.sof"

在上述代码中, quartus_pgm 是Quartus II软件中的编程工具, -c 用于指定目标设备链, -m 指定操作模式为JTAG, -o 后跟的是输出操作和文件名。

通过以上的步骤,我们可以实现从设计到硬件的完整适配和验证流程。在这一过程中,每一步骤都紧密相连,确保设计能够准确无误地在硬件上实现预期功能。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本工程介绍如何使用Altera公司开发的Quartus II软件设计一个四位二进制累加器。累加器作为数字电路的基本组件,能够接收两个四位二进制数进行加法运算并处理进位。我们将通过概念设计、逻辑门级设计、原理图绘制、逻辑综合、仿真测试、适配编程和验证调试等步骤,完整实现累加器的设计流程。本工程不仅是对二进制加法硬件实现的深入理解,也是对Quartus II软件操作流程的熟练掌握,对学习数字逻辑设计和FPGA设计至关重要。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值