verilog全加器和四位加法器

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

1.基于原理图设计半加器以及全加器以及四位加法器

半加器:
verilog全加器和四位加法器
verilog全加器和四位加法器

保存为half_addr.bsf之后,可以在该项目中添加半加器
verilog全加器和四位加法器
全加器:
verilog全加器和四位加法器
通过RTL-Viewer查看半加器和全加器
verilog全加器和四位加法器
verilog全加器和四位加法器
verilog全加器和四位加法器
添加全加器到项目
在process里面先后执行start fitter 和start time analyzer
verilog全加器和四位加法器

生成testbench模板
verilog全加器和四位加法器

修改testbench文件:

// Copyright (C) 2018  Intel Corporation. All rights reserved.
// Your use of Intel Corporation's design tools, logic functions 
// and other software and tools, and its AMPP partner logic 
// functions, and any output files from any of the foregoing 
// (including device programming or simulation files), and any 
// associated documentation or information are expressly subject 
// to the terms and conditions of the Intel Program License 
// Subscription Agreement, the Intel Quartus Prime License Agreement,
// the Intel FPGA IP License Agreement, or other applicable license
// agreement, including, without limitation, that your use is for
// the sole purpose of programming logic devices manufactured by
// Intel and sold by Intel or its authorized distributors.  Please
// refer to the applicable agreement for further details.

// *****************************************************************************
// This file contains a Verilog test bench template that is freely editable to  
// suit user's needs .Comments are provided in each section to help the user    
// fill out necessary details.                                                  
// *****************************************************************************
// Generated on "03/06/2023 19:31:56"
                                                                                
// Verilog Test Bench template for design : full_adder
// 
// Simulation tool : ModelSim (Verilog)
// 

`timescale 1 ns/ 1 ps
module full_addr_vlg_tst();
// constants                                           
// general purpose registers

// test vector input registers
reg a;
reg eachvec;
reg b;
reg cin;
// wires                                               
wire cout;
wire sum;

// assign statements (if any)                          
full_addr i1 (
// port map - connection between master ports and signals/registers   
	.a(a),
	.b(b),
	.cin(cin),
	.cout(cout),
	.sum(sum)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
 a=0;b=0;
 cin=0;
 #100 a=0;b=0;cin=1;
 #100 a=1;b=0;cin=1; 
 #100 a=0;b=1;cin=1;    
 #100 a=1;b=1;cin=1;     
 #100 a=1;b=0;cin=0;  
 #100 a=0;b=1;cin=0;                                            
// --> end                                             
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          
                                                       
@eachvec;                                              
// --> end                                             
end                                                    
endmodule



添加到项目
verilog全加器和四位加法器

注意在联合modelsim时让generate functinal simulation netlist值为on
zhiverilog全加器和四位加法器
执行start eda netlist writer
verilog全加器和四位加法器

选择Gate Level Simulation进行modelsim联合仿真:
verilog全加器和四位加法器
执行tcl绑定引脚:
verilog全加器和四位加法器
verilog全加器和四位加法器
verilog全加器和四位加法器
将fpga连接电脑,安装usb-blaster驱动
verilog全加器和四位加法器
注意选择驱动安装目录一般是在C:\intelFPGA\18.0\quartus\drivers\usb-blaster
点击programmer进入烧录,记得打开开发板的sw19按钮!
verilog全加器和四位加法器
hardwaresetup选择usb-balster,start开始烧录
verilog全加器和四位加法器
verilog全加器和四位加法器
烧录完成后改变对应的引脚观察输出,本次用到的DE2-115的引脚配置
verilog全加器和四位加法器
基于全加器我们马上就可以构建四位全加器:
verilog全加器和四位加法器

修改testbench文件如下:

// Copyright (C) 2018  Intel Corporation. All rights reserved.
// Your use of Intel Corporation's design tools, logic functions 
// and other software and tools, and its AMPP partner logic 
// functions, and any output files from any of the foregoing 
// (including device programming or simulation files), and any 
// associated documentation or information are expressly subject 
// to the terms and conditions of the Intel Program License 
// Subscription Agreement, the Intel Quartus Prime License Agreement,
// the Intel FPGA IP License Agreement, or other applicable license
// agreement, including, without limitation, that your use is for
// the sole purpose of programming logic devices manufactured by
// Intel and sold by Intel or its authorized distributors.  Please
// refer to the applicable agreement for further details.

// *****************************************************************************
// This file contains a Verilog test bench template that is freely editable to  
// suit user's needs .Comments are provided in each section to help the user    
// fill out necessary details.                                                  
// *****************************************************************************
// Generated on "03/20/2023 22:24:30"
                                                                                
// Verilog Test Bench template for design : 4addr
// 
// Simulation tool : ModelSim (Verilog)
// 

`timescale 1 ns/ 1 ps
module addr_4_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg a1;
reg a2;
reg a3;
reg a4;
reg b1;
reg b2;
reg b3;
reg b4;
reg cin;

// wires                                               
wire out;
wire s1;
wire s2;
wire s3;
wire s4;

// assign statements (if any)                          
 addr_4 i1 (
// port map - connection between master ports and signals/registers   
	.a1(a1),
	.a2(a2),
	.a3(a3),
	.a4(a4),
	.b1(b1),
	.b2(b2),
	.b3(b3),
	.b4(b4),
	.cin(cin),
	.out(out),
	.s1(s1),
	.s2(s2),
	.s3(s3),
	.s4(s4)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
a4=0;b4=0;a3=0;b3=0;a2=0;b2=0;a1=0;b1=0;cin=0;
#100 a4=0;b4=0;a3=0;b3=0;a2=0;b2=0;a1=1;b1=0;cin=0;
#100 a4=0;b4=0;a3=0;b3=0;a2=0;b2=0;a1=0;b1=1;cin=0;
#100 a4=0;b4=0;a3=0;b3=0;a2=0;b2=0;a1=1;b1=1;cin=0;
#100 a4=0;b4=0;a3=0;b3=0;a2=0;b2=1;a1=0;b1=1;cin=0;
#100 a4=0;b4=0;a3=0;b3=0;a2=1;b2=0;a1=0;b1=1;cin=1;
#100 a4=0;b4=0;a3=0;b3=0;a2=1;b2=1;a1=0;b1=1;cin=1;
#100 a4=0;b4=0;a3=0;b3=1;a2=0;b2=1;a1=0;b1=1;cin=1;
#100 a4=0;b4=0;a3=1;b3=0;a2=1;b2=0;a1=0;b1=1;cin=1;
#100 a4=0;b4=0;a3=1;b3=1;a2=1;b2=1;a1=0;b1=1;cin=1;                                                      
// --> end                                             
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin   

                       
                                                       
@eachvec;                                              
// --> end                                             
end                                                    
endmodule


modelsim联合仿真结果:
verilog全加器和四位加法器

2.使用verilog编写全加器和四位加法器

v_addr.v代码:

module v_addr(
	//输入信号,ain表示被加数,bin表示加数,cin表示低位向高位的进位
	input ain,bin,cin,
	//输出信号,cout表示向高位的进位,sum表示本位的相加和
	output reg cout,sum

);
reg s1,s2,s3;
always @(ain or bin or cin) begin
	sum=(ain^bin)^cin;//本位和输出表达式
	s1=ain&cin;
	s2=bin&cin;
	s3=ain&bin;
	cout=(s1|s2)|s3;//高位进位输出表达式
end
endmodule

v_addr_tb.v代码:

`timescale 1 ns/ 1 ps
module v_addr_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg ain;
reg bin;
reg cin;
// wires                                               
wire cout;
wire sum;

// assign statements (if any)                          
v_addr i1 (
// port map - connection between master ports and signals/registers   
	.ain(ain),
	.bin(bin),
	.cin(cin),
	.cout(cout),
	.sum(sum)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
   ain=0;bin=0;
 cin=0;
 #100 ain=0;bin=0;cin=1;
 #100 ain=1;bin=0;cin=1; 
 #100 ain=0;bin=1;cin=1;    
 #100 ain=1;bin=1;cin=1;     
 #100 ain=1;bin=0;cin=0;  
 #100 ain=0;bin=1;cin=0;                                                        
// --> end                                             
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          
                                                       
@eachvec;                                              
// --> end                                             
end                                                    
endmodule


仿真波形:
verilog全加器和四位加法器
四位加法器代码:

module v4_addr(a,b,cin,cout,dout);  
 
	input [3:0] a,b;   //a,b为4位输入
	input cin;   //cin为进位输入
	
	output cout; 
	output [3:0] dout;
 
	assign {cout,dout} = a+b+cin;   //a+b+cin 加法操作
	//使用拼接运算符将cout、dout拼接,dout取结果中的低四位
 
endmodule

验证代码:

`timescale 10 ns/ 1 ps
module v4_addr_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg [3:0] a;
reg [3:0] b;
reg cin;
// wires                                               
wire cout;
wire [3:0]  dout;

// assign statements (if any)                          
v4_addr i1 (
// port map - connection between master ports and signals/registers   
	.a(a),
	.b(b),
	.cin(cin),
	.cout(cout),
	.dout(dout)
);
initial                                                
begin                                                  
// code that executes only once                        
// insert code here --> begin                          
 a=4'b0000;b=4'b0001;cin=4'b0000;
#100 a=4'b0001;b=4'b0001;cin=4'b0000;
#100 a=4'b0011;b=4'b0010;cin=4'b0000;
#100 a=4'b0011;b=4'b0100;cin=4'b0001;
#100 a=4'b0100;b=4'b0111;cin=4'b0000;
#100 a=4'b1111;b=4'b0101;cin=4'b0000;
// --> end                                             
$display("Running testbench");                       
end                                                    
always                                                 
// optional sensitivity list                           
// @(event1 or event2 or .... eventn)                  
begin                                                  
// code executes for every event on sensitivity list   
// insert code here --> begin                          
                                                       
@eachvec;                                              
// --> end                                             
end                                                    
endmodule


仿真波形:
verilog全加器和四位加法器文章来源地址https://www.toymoban.com/news/detail-468559.html

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

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

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

相关文章

  • 一位全加器及四位全加器————FPGA

    环境: 1、Quartus18.0 2、vscode 3、基于Intel DE2-115的开发板 全加器简介: 全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。

    2024年02月03日
    浏览(39)
  • FPGA入门:QuartusⅡ实现半加器,全加器,四位全加器

    1、半加器是指对输入的两个一位二进制数相加,输出一个半加结果位和半加进位的组合电路,是没有进位的输入加法器电路,是一个实现一位二进制数的加法电路。 2、半加器的真值表如下; S位结果位,C为进位 3、由真值表可以推出半加器的逻辑表达式为: 4、半加器逻辑电

    2023年04月25日
    浏览(30)
  • 四位全加器的设计与实践

    通过底层逻辑,我们可以通过组建半加器到一位全加器再到四位全加器,四位全加器可以由四个一位全加器构成,加法器之间可以通过串行方式实现。通过将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相连接 每一次新建一个block文件和Verilog文件,编

    2024年02月09日
    浏览(30)
  • # Quartus实现四位全加器

    1.首先将之前做的一位全加器作为模块选择File-Create/Update-CreateSymbolFilesforCurrentFile 选择File-New-Block Diagram/Schematic File 选择元件(四个fulladder,两个input,两个output,两个gnd) 原理图如下(注意标注输入输出名和分支名) 编译成功后选择tool-Netlist Viewers-RTL Viewer得到电路图如下

    2024年02月08日
    浏览(34)
  • 四位全加器Modelsim仿真及QuartusII下查看RTL原理图

    四位全加器代码

    2023年04月08日
    浏览(24)
  • Verilog设计_全加器

    一种全加器的设计。 目录 一、全加器 二、代码实现 全加器是用门电路实现两个二进制数相加并求和的组合线路,也称为一位全加器,是一种常用的设计。全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器,例如常用的二进制四位

    2024年02月07日
    浏览(34)
  • Verilog学习二:设计一个一位全加器

    本部分将不再介绍Vivado工程的整体流程,将主要精力放在代码上面,具体的流程可参考:https://blog.csdn.net/crodemese/article/details/130438348 本部分代码也已上传到github:https://github.com/linxunxr/VerilogStudy 那么什么是全加器呢?我们都知道加法,即1+1=2,当个位数相加大于9时就需要进位。

    2024年02月08日
    浏览(35)
  • 基于Verilog与器件图的1位全加器实现

    1位二进制数全加器是一个具有三个输入端和两个输出端的,能对被加数、加数以及来自低位的进位相加得到“全加和”与“全加进位”。 它的真值表如下: Ai Bi Ci-1 Ci Si 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 它的逻辑表达式如下: 从仿真的结果来看,

    2024年02月07日
    浏览(31)
  • 用Verilog编写1位全加器,并进行波形仿真

    Quartus II+ModelSiml 全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。

    2024年02月11日
    浏览(29)
  • 【Verilog】期末复习——设计带进位输入和输出的8位全加器,包括测试模块

    数值(整数,实数,字符串)与数据类型(wire、reg、mem、parameter) 运算符 数据流建模 行为级建模 结构化建模 组合电路的设计和时序电路的设计 有限状态机的定义和分类 期末复习——数字逻辑电路分为哪两类?它们各自的特点是什么? 期末复习——VerilogHDL描述数字逻辑电

    2024年01月23日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包