我是靠谱客的博主 美满棒球,最近开发中收集的这篇文章主要介绍verilog使用74x283构造全加/全减器,附源代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

verilog使用74x283构造全加/全减器,附源代码!

一个数电的作业,使用74x283构造全加/全减器。

首先,编写一个74x283芯片模块:

odule my74x283(
input [3:0] A,[3:0] B,
input C0,
output C4,
output reg [3:0] S);
    reg tempC4;//用来临时保存C4
    reg [4:0] Cin;//用来保存进位
    integer i;
    always@(*)
        begin
            Cin[0] = C0;
            for(i=0;i<4;i=i+1)
                begin
                    Cin[i+1] = (A[i]&B[i])|((A[i]|B[i])&Cin[i]);//来自课本的公式
                    S[i] = (A[i]^B[i])^Cin[i];来自课本的公式
                end
            tempC4 = Cin[4];
        end
        assign C4 = tempC4;
endmodule

编写顶层模块:

module AddSub(
    input [3:0] A,[3:0] B,
    input C0,select,
    output C4,
    output wire [3:0] S);
    reg tempC0;
    reg [3:0] tempB;
    always@(*)
        begin
            tempC0 = C0^select;
            tempB[0] = B[0]^select;
            tempB[1] = B[1]^select;
            tempB[2] = B[2]^select;
            tempB[3] = B[3]^select;
        end
    my74x283 u_my74x283(
        .A(A),
        .B(tempB),
        .C0(tempC0),
        .C4(C4),
        .S(S)
    );
endmodule

下面是仿真文件的代码:

module sim_AddSub;
    reg [3:0] A;
    reg [3:0] B;
    reg C0;
    reg select;
    wire C4;
    wire [3:0] S;
    AddSub ul(A,B,C0,select,C4,S);
    initial 
    begin
        A = 4'b0000;
        B = 4'b0000;
        C0 = 0;
        select = 0;
        #100;
            A = 4'b1111;B = 4'b1111;select = 0;
        #100;
            A = 4'b1111;B = 4'b1111;select = 1;
        #100;
            A = 4'b0110;B = 4'b0011;select = 0;
        #100;
            A = 4'b0110;B = 4'b0011;select = 1;
    end
endmodule

最后

以上就是美满棒球为你收集整理的verilog使用74x283构造全加/全减器,附源代码的全部内容,希望文章能够帮你解决verilog使用74x283构造全加/全减器,附源代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部