当前位置:首页 > FPGA > 正文内容

全加器(层次化设计)

浩雨2年前 (2022-08-14)FPGA3680

该篇博客根据上一篇半加器的设计,再结合层次化的设计思想来实现一个全加器!


层次化设计理论部分:

数字电路中根据模块层次的不同有两种基本的结构设计方法:自底向上的设计方法 和 自顶向下的设计方法


自底向上(Bottom-Up)

        自底向上的设计是一种传统的设计方法,对设计进行逐次划分的过程是从存在的基本单元出发的,由基本单元构建高层单元,依次向上,直至构建系统,

image.png

自上而下(Top-Down)

        从系统级开始,把系统分为基本单元,然后再把每个单元划分为下一层次的基本单元,一直这样做下去,直到直接可以用EDA元件库中的原件来实现为止。

image.png

混合使用

image.png


全加器设计:

全加器模块框图:

image.png

层次化设计 -- 用两个半加器组成的全加器模块框图:

image.png

代码部分:

选择器代码:在Src文件夹中新建 full_adder.v文件

module full_adder
(
    input   wire  in_1,
    input   wire  in_2,
    input   wire  cin,
    output  wire  sum,
    output  wire  count
);
// 对变量进行重新命名,为了区分来自于哪个半加器
wire    h0_sum;
wire    h0_count;
wire    h1_count;
half_adder half_adder_inst0
(
    .in_1 (in_1),
    .in_2 (in_2),
    .sum  (h0_sum),
    .count(h0_count)
);
half_adder half_adder_inst1
(
    .in_1 (cin),
    .in_2 (h0_sum),
    .sum  (sum),
    .count(h1_count)
);
assign count = (h0_count | h1_count);
endmodule

仿真文件代码:在Sim文件夹中新建 tb_full_adder.v文件

`timescale 1ns/1ns
module tb_full_adder();
reg    in_1 ;
reg    in_2 ;
reg    cin  ;
wire   sum  ;
wire   count;
initial
    begin
        in_1    <=  1'b0 ;
        in_2    <=  1'b0 ;
        cin     <=  1'b0 ;
    end
initial
    begin
        $timeformat(-9,0,"ns",6);
        $monitor("@time %t:in_1=%b,in_2=%b,cin+%b,sum=%b,count=%b", $time, in_1, in_2, cin, sum, count);
    end
always #10 in_1 <= {$random} % 2;
always #10 in_2 <= {$random} % 2;
always #10 cin  <= {$random} % 2;
full_adder full_adder_inst
(
    .in_1 (in_1),
    .in_2 (in_2),
    .cin  (cin),
    .sum  (sum),
    .count(count)
);
endmodule

结果:

打印的日志正常

image.png

波形也正常

image.png

扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://myfpga.cn/index.php/post/258.html

分享给朋友:

“全加器(层次化设计)” 的相关文章

Xilinx_ISE_DS_Win_14.7_1015_1 安装教程(Xilinx High Speed Cable USB驱动安装)

Xilinx_ISE_DS_Win_14.7_1015_1 安装教程(Xilinx High Speed Cable USB驱动安装)

首先下载Xilinx ISE软件的安装包,以下是百度云链接,6.12G,放着一晚上就下载完了链接:https://pan.baidu.com/s/13cUoFZgbld0X4ikCLsVFNQ 提取码:53ro更建议使用win7来安装这个,win8 win10 ...

Intel FPGA初级考试模拟试题 四套含答案

Intel FPGA初级考试模拟试题 四套含答案

*1.下列对异步信号进行同步的描述错误的是(使用锁存器)。采用保持寄存器加握手信号的方法特殊的具体应用电路结构,根据应用的不同而不同使用锁存器异步 FIFO *2.FPGA 的可编程是主要基于什么结构(查找表(LUT))。查找表(LUT)ROM 可编程PAL 可编程与或阵列可编程解析:FP...

基础实验十三,DS18B20温度传感器

基础实验十三,DS18B20温度传感器

//==========================================================================// Author     : ChanRa1n// Description: Training for Intel FPGA/...

Verilog实现时钟分频(奇数分频,偶数分频)二分频 三分频 四分频 五分频

Verilog实现时钟分频(奇数分频,偶数分频)二分频 三分频 四分频 五分频

完整工程文件:clkdiv.zip//------------------------------------------------------// File Name        : clkdiv.v// Author     &nb...

Xilinx FIFO和ILA学习

Xilinx FIFO和ILA学习

`timescale 1ns / 1ps//-------------------------------------------------------//Filename       ﹕ FIFO_TOP.v//Author      ...