Quartus 入门 —— 加法器

这篇具有很好参考价值的文章主要介绍了Quartus 入门 —— 加法器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Quartus 入门 —— 加法器

设备与软件版本

这里使用的 intel 的 芯片为 EP4CE115F29C7 的开发板,软件使用的是 Quartus(Quartus Prime 18.1) 的版本

创建项目

首先点击新建项目:

quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发

下面我们就直接点击下一步到芯片选择部分:

quartus怎么绑定引脚,fpga开发

这里我们需要选择 Cyclone IV E 的 EP4CE115F29C7 芯片

quartus怎么绑定引脚,fpga开发

然后这里我们选择使用 ModelSim-Altera 进行仿真,然后我们直接点击下一步直接到结束即可

然后我们开始创建文件,这里我们可以创建多种类型的文件:

quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发

这里我们是主要使用图中圈出的这两种文件类型:

  • Block Diagram/Schematic File :这种文件类型就是我们平时绘制原理图需要使用的文件,后缀是 .bdf 和 .bsf

  • Verilog HDL File : 这种文件类型就是我们需要写 verilog 代码的文件类型,后缀是 .v

原理图设计

首先我们新建一个项目,我们这里将名称全部设置为 Full_adder1,首先我们需要新建一个原理图文件,由于我们的全加器是由两个半加器和一个二位或门组成的电路,所以这里我们先绘制一个半加器原理图

首先我们介绍一下如何进行原理图绘制即工具如何使用:

quartus怎么绑定引脚,fpga开发

这里再软件中种提供了很多种不同元器件,我们也可以去安装一些其他的元器件包:

quartus怎么绑定引脚,fpga开发

这里我们不尽可以使用软件自带的原件,我们也可以选择使用自己封装的元器件

我们将文件名设置为 Half_adder ,原理图如下:

quartus怎么绑定引脚,fpga开发

然后我们将半加器封装为可以调用的元器件:

quartus怎么绑定引脚,fpga开发

这里我们所绘制的原理图存储文件的类型是 .bdf ,我们封装好的元器件的文件格式为 .bsf

最后我们进行绘制一位全加器,这里我们就需要调用我们前面封装好的半加器的元器件,过程不进行演示,这里直接给出原理图:

quartus怎么绑定引脚,fpga开发

这里实现四位加法器的过程与实现一位加法器的过程相同,只需要将一位全加器设置为可调用元件,然后继续进行绘制即可,这里我们的四位全加器的原理图如下:

quartus怎么绑定引脚,fpga开发

代码设计

这里我们需要添加一个代码文件,然后使用 Verilog 语言进行编程,Verilog 语言的语法参考前面的博客:

FPGA 入门 —— 代码规范与模块结构

FPGA 入门 —— 信号类型与功能描述

这里直接给出我们设计好的代码:

半加器:

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

一位全加器:

module Full_adder1
(
	input	a,b,
	output	sum,
	output 	cout,
	input 	cin,
);
assign{cout,sum} = a+b+cin;
endmodule

四位全加器:文章来源地址https://www.toymoban.com/news/detail-718954.html

module Full_adder4
(
	input	[3:0]	a,
	input	[3:0]	b,
	input		cin,
	output	[3:0]	sum,
	output		cout
);
assign{cout,sum} = a+b+cin;
endmodule

编译仿真

这里编译仿真我们以一位全加器为例:

原理图编译仿真

这里我们直接点击编译即可:

quartus怎么绑定引脚,fpga开发

这里给出两种编译方式,如果我们只需要编译仿真,我们就直接选择 Analysis & Synthesis 编译选项即可,要是我们有烧录的需要,我们就需要选择 Compile Design 编译选项,当然,我们使用完整编译需要的时间也就更长,这里我们直接选择完整编译:

quartus怎么绑定引脚,fpga开发

这里我们已经编译成功了,下一步我们就可以开始仿真了,首先我们先生成对应的电路图:

quartus怎么绑定引脚,fpga开发

然后我们就可以看到我们生成的电路图:

半加器:

quartus怎么绑定引脚,fpga开发

一位全加器:

quartus怎么绑定引脚,fpga开发

四位全加器:

quartus怎么绑定引脚,fpga开发

然后我们以一位全加器为例,来介绍图和通过原理图进行仿真

首先我们在编译完成生成原理图之后,需要添加一个波形图文件:

quartus怎么绑定引脚,fpga开发

然后我们需要双击空白处添加波形文件:

quartus怎么绑定引脚,fpga开发

下面我们选择要输出的信号:

quartus怎么绑定引脚,fpga开发

编辑我们的输入信号:

quartus怎么绑定引脚,fpga开发

在我们将所有的输入信号都编辑完成之后,我们开始进行仿真:

quartus怎么绑定引脚,fpga开发

如果在仿真时出现如下报错:

quartus怎么绑定引脚,fpga开发

这里我们需要手动添加 Modelsim:

quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发

然后点击 start compilation 没有报错即为成功

然后我们再次运行还有可能会出现如下报错:

quartus怎么绑定引脚,fpga开发

我们需要修改设置:

quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发

这里我们要保证我们 vector_source 和 testbench_file 的文件名称要一致,都选择我们的仿真文件即可,并且一定要选择好路径

quartus怎么绑定引脚,fpga开发

同时这里我们需要经路径设置为我们刚存放仿真文件的文件夹的上级目录

注意:这里我们没有进行全部编译也有可能会进行报错,并且我们在修改仿真设置的时候,这里我们的时序和功能仿真对应的选项都要进行修改

如果再次出现如下报错:

quartus怎么绑定引脚,fpga开发

就说明刚刚我们在修改配置文件的时候有错误,直接修改下图位置即可:

quartus怎么绑定引脚,fpga开发

这里修改为我们刚存储波形图文件的位置

下面给出半加器、一位全加器、四位全加器的仿真结果:

半加器

quartus怎么绑定引脚,fpga开发

一位全加器

quartus怎么绑定引脚,fpga开发

四位全加器

quartus怎么绑定引脚,fpga开发

代码编译仿真

我们同样是创建一个新的 verilog 代码文件作为仿真文件,由于我们已经在前面的博客中介绍过如何进行代码仿真了,这里我们直接给出仿真代码:

`timescale 1ns/1ns
module TB_Full_adder1();    // 设置仿真引脚
    reg     tb_a       ;
    reg     tb_b       ;
    reg     tb_cin     ;
    wire    tb_sout    ;
    wire    tb_cout    ;

    Full_adder1 u_Full_adder1(  // 绑定引脚,绑定仿真文件与源代码文件中对应的引脚
        .a      (tb_a)      ,
        .b      (tb_b)      ,
        .cin    (tb_cin)    ,
        .cout   (tb_cout)   ,
        .sum    (tb_sout)
    );
    parameter CYCLE = 40;   // 设置周期
    always  # 5     tb_a    =   ~tb_a   ;   // 设置输入变量
    always  # 10    tb_b    =   ~tb_b   ;
    always  # 20    tb_cin  =   ~tb_cin ;

    initial begin       // 初始化变量
        tb_a        =       1'b0    ;
        tb_b        =       1'b0    ;
        tb_cin      =       1'b0    ;
        #(CYCLE * 4)                ;   // 设置到达指定周期停止
        $stop                       ;
    end
endmodule

然后我们选择进行完整编译,编译成功后,我们在进行仿真之前,我们需要绑定仿真文件,下面给出完整步骤:

quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发

成功添加 testbench 仿真文件之后重新编译,然后就可以进行仿真了:

quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发

我们可以先点击运行,然后点击右面的缩放,最后我们只需要缩放到自己需要的大小即可,我们仿真后生成的波形如下:

quartus怎么绑定引脚,fpga开发

波形与我们需要的完全相同,说明我们的代码没有问题

这里我们直接给出半加器和四位全加器的仿真代码和波形图:

半加器:

`timescale 1ns/1ns

module TB_Halfadder();
    reg     tb_a    ;
    reg     tb_b    ;
    wire    tb_cout ;
    wire    tb_sum  ;

    Halfadder u_Halfadder(
        .a      (tb_a)      ,
        .b      (tb_b)      ,
        .cout   (tb_cout)   ,
        .sum    (tb_sum)
    );

    parameter CYCLE = 20;
    always # 5      tb_a = ~tb_a    ;
    always # 10     tb_b = ~tb_b    ;

    initial begin
        tb_a = 1'b0     ;
        tb_b = 1'b0     ;
        #(CYCLE * 4)    ;
        $stop           ;
    end
endmodule
quartus怎么绑定引脚,fpga开发

四位全加器:

`timescale 1ns/1ns

module TB_Full_adder4();

    reg     [3:0]   tb_a     ;
    reg     [3:0]   tb_b     ;
    reg             tb_cin   ;
    wire    [3:0]   tb_sum   ;
    wire            tb_cout  ;

    Full_adder4 u_Full_adder4(
        .a      (tb_a)      ,
        .b      (tb_b)      ,
        .cin    (tb_cin)    ,
        .sum    (tb_sum)    ,
        .cout   (tb_cout)
    );

    parameter CYCLE = 205;

    always begin
        # 5     tb_a = tb_a+1       ;
        # 7     tb_b = tb_b+1       ;
        # 10    tb_cin = ~tb_cin    ;
    end

    initial begin
        tb_a    = 4'b0000   ;
        tb_b    = 4'b0000   ;
        tb_cin  = 0         ;
        #(CYCLE * 2)        ;
        $stop               ;
    end
endmodule
quartus怎么绑定引脚,fpga开发

烧录测试

首先我们给出对应引脚:

quartus怎么绑定引脚,fpga开发
quartus怎么绑定引脚,fpga开发

这里我们先进行引脚的绑定:

quartus怎么绑定引脚,fpga开发
在烧录的时候我们直接点击 start,当右面的进程到达 100% 就说明已经烧录成功了:
quartus怎么绑定引脚,fpga开发

下面分别给出一位全加器和四位全加器对应的引脚:

一位全加器:

quartus怎么绑定引脚,fpga开发

四位全加器:

quartus怎么绑定引脚,fpga开发

下面我们给出一位全加器与四位全加器的实验结果:

一位全加器:

quartus怎么绑定引脚,fpga开发

四位全加器:

quartus怎么绑定引脚,fpga开发

到了这里,关于Quartus 入门 —— 加法器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数字IC经典电路(1)——经典加法器的实现(加法器简介及Verilog实现)

    加法器是数字系统最基础的计算单元,用来产生两个数的和,加法器是以二进制作运算。负数可用二的补数来表示,减法器也是加法器,乘法器可以由加法器和移位器实现。加法器和乘法器由于会频繁使用,因此加法器的速度也影响着整个系统的计算速度。对加法器的设计也

    2024年02月14日
    浏览(38)
  • 【FPGA】Verilog:BCD 加法器的实现 | BCD 运算 | Single-level 16 bit 超前进位加法器 | 2-level 16-bit 超前进位加法器

    0x00 BCD 运算 在 BCD 中,使用4位值作为操作数,但由于只表示 0 到 9 的数字,因此只使用 0000 到 1001 的二进制数,而不使用 1010 到 1111 的二进制数(don\\\'t care)。 因此,不能使用常规的 2\\\'complement 运算来计算,需要额外的处理:如果 4 位二进制数的运算结果在 1010 到 1111 的范围

    2024年02月05日
    浏览(35)
  • 【FPGA】Verilog:二进制并行加法器 | 超前进位 | 实现 4 位二进制并行加法器和减法器 | MSI/LSI 运算电路

    0x00 并行加法器和减法器 如果我们要对 4 位加法器和减法器进行关于二进制并行运算功能,可以通过将加法器和减法器以 N 个并行连接的方式,创建一个执行 N 位加法和减法运算的电路。 4 位二进制并行加法器 4 位二进制并行减法器

    2024年02月05日
    浏览(43)
  • UVM实战--加法器

    这里以UVM实战(张强)第二章为基础修改原有的DUT,将DUT修改为加法器,从而修改代码以使得更加深入的了解各个组件的类型和使用。 和第二章的平台的主要区别点 (1)有两个transaction,一个为transaction_i,一个为transaction_o,由于DUT的输入输出值并不相同,输入为a,b,cin,输

    2024年02月06日
    浏览(32)
  • 加法器电路

    图3 图三中,由虚短知: V- = V+ = 0 ……a 由虚断及基尔霍夫定律知,通过R2与R1的电流之和等于通过R3的电流,故 (V1 – V-)/R1 + (V2 – V-)/R2 = (V- –Vout)/R3 ……b 代入a式,b式变为V1/R1 + V2/R2 = Vout/R3 如果取R1=R2=R3,则上式变为-Vout=V1+V2,这就是传说中的加法器了。 图4 请看图四。因为

    2024年02月14日
    浏览(22)
  • 运算放大电路(三)-加法器

    加法器 由虚短知: V- = V+ = 0 ……a 由虚断及基尔霍夫定律知,通过R2与R1的电流之和等于通过R3的电流,故 (V1 – V-)/R1 + (V2 – V-)/R2 = (Vout – V-)/R3 ……b 代入a式,b式变为 V1/R1 + V2/R2 = Vout/R3 如果取 R1=R2=R3 则上式变为 Vout=V1+V2 这就是传说中的加法器了。 因为虚断,运放同向端没

    2024年02月04日
    浏览(39)
  • Verilog实现超前进位加法器

    在CPU等对性能要求较高的电路中,一般都会采用超前进位加法器,因为超前进位加法器的延时相对来说比较小。下面讲述超前进位加法器的原理: 我们知道,一个三输入,二输出的全加器,其逻辑关系为 S = A ⊕ B ⊕ C i n S=Aoplus Boplus C_{in} S = A ⊕ B ⊕ C in ​ C o u t = ( A B ) ∣

    2023年04月08日
    浏览(26)
  • 使用FPGA实现逐级进位加法器

    逐级进位加法器就是将上一位的输出作为下一位的进位输入,依次这样相加。下面以一个8位逐级进位加法器给大家展示。 我增加了电路结构,应该很容易理解吧。 下面我也列举了一位加法器,可以看下。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; entity adder1 is

    2024年04月23日
    浏览(26)
  • 用加法器实现补码的加/减运算

    目录 1.原码的加减运算 (1)原码的加/减法运算 (2)溢出判断 (3)符号扩展 2.加法器原理 3.加法器实现补码的加减运算 1.原码的加减运算 (1)原码的加/减法运算 正+正---绝对值做加法,结果为正 负+负---绝对值做加法,结果为负 正+负---绝对值大的减绝对值小的,符号同绝

    2024年01月18日
    浏览(38)
  • 用逻辑门实现四位加法器

    一.无符号数全加器 1.无符号数四位全加器原理: 先来看一位全加器: 加数A 加数B 结果 0 0 0 0 1 1 1 0 1 1 1 0(进位1) 与 异或门 相似,用异或门记录 用与门记录A+B的进位 将进位输入与A+B结果相与再与进位相或得进位输出,将进位输入与加数相加计算结果 四位全加器则将低位

    2024年01月19日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包