16位计数器之元件例化的学习

简介: 16位全加器          通过该实验,学习元件例化。 1个16位全加器由4个4位全加器构成; 1个4位全加器由4个1位全加器构成; 1位全加器由两个半加器加上一个或门构成; 一个半加器由门级电路构成。 如下图: 顶层文件: 第二层:1个16位全加器由4个4位全加器构成; 第三层:1个4位全加器由4个1位全加器构成; 第四层:1位全加器由两个半加

16位全加器

         通过该实验,学习元件例化

1个16位全加器由4个4位全加器构成;

1个4位全加器由4个1位全加器构成;

1位全加器由两个半加器加上一个或门构成;

一个半加器由门级电路构成。

如下图:


顶层文件:


第二层:1个16位全加器由4个4位全加器构成;


第三层:1个4位全加器由4个1位全加器构成;


第四层:1位全加器由两个半加器加上一个或门构成;


第五层:一个半加器由门级电路构成

A

B

Sum

C_out

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

门级电路如下:

代码部分:

顶层文件:

//16为全加器

//顶层文件为16为全加器

module add_full_16(a,b,c_in,sum,c_out);

 

    input [15:0]a,b;

    input c_in;

    output [15:0]sum;

    output c_out;

   

    wire M0_c_out,M1_c_out,M2_c_out;

   

    add_full_4 M0(.a(a[3:0]),.b(b[3:0]),.c_in(c_in),.sum(sum[3:0]),.c_out(M0_c_out));

    add_full_4 M1(.a(a[7:4]),.b(b[7:4]),.c_in(M0_c_out),.sum(sum[7:4]),.c_out(M1_c_out));

    add_full_4 M2(.a(a[11:8]),.b(b[11:8]),.c_in(M1_c_out),.sum(sum[11:8]),.c_out(M2_c_out));

    add_full_4 M3(.a(a[15:12]),.b(b[15:12]),.c_in(M2_c_out),.sum(sum[15:12]),.c_out(c_out));

 

endmodule

 

第二层:

 

//4位全加器,44为全加器构成一个16位的全加器

module add_full_4(a,b,c_in,sum,c_out);

 

    input [3:0]a,b;

    input c_in;

    output [3:0]sum;

    output c_out;

   

    wire B0_c_out,B1_c_out,B2_c_out;

   

    add_full B0(.a(a[0]),.b(b[0]),.c_in(c_in),.sum(sum[0]),.c_out(B0_c_out));

    add_full B1(.a(a[1]),.b(b[1]),.c_in(B0_c_out),.sum(sum[1]),.c_out(B1_c_out));

    add_full B2(.a(a[2]),.b(b[2]),.c_in(B1_c_out),.sum(sum[2]),.c_out(B2_c_out));

    add_full B3(.a(a[3]),.b(b[3]),.c_in(B2_c_out),.sum(sum[3]),.c_out(c_out));

 

endmodule

 

第三层:

//1位全加器

//41位全加器构成一个4位全加器

 

module add_full(a,b,c_in,sum,c_out);

 

    input a,b;

    input c_in;

    output sum;

    output c_out;

   

    wire h0_sum,h0_c_out,h1_c_out;

   

    add_half h0(.a(a),.b(b),.sum(h0_sum),.c_out(h0_c_out));

    add_half h1(.a(c_in),.b(h0_sum),.sum(sum),.c_out(h1_c_out));

   

    assign c_out = h0_c_out | h1_c_out;

   

endmodule

 

 

第四层:

//半加器

//两个半加器加上一个或门构成1位全加器

 

module add_half(a,b,sum,c_out);

 

    input a,b;

    output sum;

    output c_out;

   

    and u0(c_out ,a ,b);

    xor u1(sum ,a ,b);

   

endmodule

 

前仿真代码:

`timescale 1ns/1ns

 

module add_full_16_tb;

   

    reg [15:0]a,b;

    reg c_in;

    wire [15:0]sum;

    wire c_out;

 

    add_full_16 add_full_16(.a(a),.b(b),.sum(sum),.c_in(c_in),.c_out(c_out));

   

    integer i;

   

    initial begin

        a = 0;b =0;c_in =0;

        forever begin

            for(i=0;i<65536;i=i+1)begin

                #10 a = i;b = i;c_in = 0;

                #10 a = i;b = i;c_in = 1;

            end

        end

    end

 

endmodule

 

仿真图:


目录
相关文章
|
传感器 芯片
数码管显示原理及应用实现介绍1
数码管是一种能够显示数字和简单的字母的显示设备,它由LED(Light Emitting Diode,发光二极管)组成。LED是一种半导体器件,当电流通过它时,会产生光。数码管的每个LED都对应一个数字或字母的形状,通过开启或关闭LED,可以显示所需的数字或字母。 数码管可以分为共阳极和共阴极两种类型。共阳极数码管的所有LED的阳极连接在一起,通过控制每个LED的阴极点亮或熄灭来显示不同的数字或字母。共阴极数码管则相反,将所有LED的阴极连接在一起,通过控制每个LED的阳极点亮或熄灭来显示不同的数字或字母。在实际应用中,常用的是共阳极数码管。 数码管的控制是通过给定不同的输入信号来实现的。
402 0
蓝桥杯之单片机学习(十八)——555定时器与频率测量
蓝桥杯之单片机学习(十八)——555定时器与频率测量
882 0
蓝桥杯之单片机学习(十八)——555定时器与频率测量
|
6月前
51开发板同一程序实现数码管实现时钟显示、秒表计时。通过独立按键选择模式(时钟/秒表)、时间的重定义
51开发板同一程序实现数码管实现时钟显示、秒表计时。通过独立按键选择模式(时钟/秒表)、时间的重定义
206 3
|
9月前
|
编译器
proteus计数器8253的应用
proteus计数器8253的应用
132 1
|
9月前
|
存储 算法 异构计算
m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,初始相位等
使用Vivado 2019.2仿真的DDS信号发生器展示了正弦、方波、锯齿波和三角波的输出,并能调整幅度和频率。DDS技术基于高速累加器、查找表和DAC,通过频率控制字和初始相位调整产生各种波形。Verilog程序提供了一个TEST模块,包含时钟、复位、信号选择、幅度和频率控制输入,以生成不同波形。
251 18
|
存储 编译器
单片机原理及其应用——单片机外部中断实验(八段数码管通过按键依次显示0~9数字)
单片机原理及其应用——单片机外部中断实验(八段数码管通过按键依次显示0~9数字)
单片机原理及其应用——单片机外部中断实验(八段数码管通过按键依次显示0~9数字)
|
传感器 芯片
数码管显示原理及应用实现介绍2
继续介绍数码管的应用实现。 7. 数字测量仪表:数码管可以用来显示各种物理量的测量结果,如电压、电流、功率等。传感器可以将被测量的物理量转换为电信号,并通过微控制器进行处理,并将结果显示在数码管上。 8. 运动计时器:数码管可以用来显示比赛或训练的时间、轮次、分数等信息。通过微控制器或计时器芯片,可以精确地控制和显示各项计时数据。 9. 信号状态指示:数码管可以用来显示开关、按钮或传感器等的状态。通过微控制器或逻辑电路,可以将不同的输入状态映射到数码管的显示状态,方便用户了解和判断设备的工作状态。 10. 售货机显示:数码管可以用来显示售货机的产品信息、价格和投币金额等。通过微控制器进
136 0
labview图形显示正弦曲线信号发生器频率幅值相位数字示波器滤波器频谱分析
labview图形显示正弦曲线信号发生器频率幅值相位数字示波器滤波器频谱分析
508 0
|
芯片 异构计算
数电FPGA实验:实验一 基于FPGA的计数器设计 (基本任务:采用原理图法设计一个十进制计数器,完成波形功能仿真和时序仿真。拓展任务1:采用原理图法设计一个六进制计数器,完成波形功能仿真和时序仿真)
数电FPGA实验:实验一 基于FPGA的计数器设计 (基本任务:采用原理图法设计一个十进制计数器,完成波形功能仿真和时序仿真。拓展任务1:采用原理图法设计一个六进制计数器,完成波形功能仿真和时序仿真)
690 0
数电FPGA实验:实验一 基于FPGA的计数器设计 (基本任务:采用原理图法设计一个十进制计数器,完成波形功能仿真和时序仿真。拓展任务1:采用原理图法设计一个六进制计数器,完成波形功能仿真和时序仿真)