加法器的实现

verilog实现加法器,从底层的门级电路级到行为级,本文对其做出了相应的阐述。

1、一位半加器

所谓半加器就是有两个输入,两个输出,不考虑进位。其真值表如下:

A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

由此,我们可以得到S=A^B,C=A&B。用相应的与门、异或门来实现半加器。
对应的Verilog代码如下:

  module half_add_1(
              A,
              B,
              S,
              C);
  input A,B;
  output S,C;
  assign S=A^B;
  assign C=A&B;

  endmodule 

2、一位全加器

全加器包含三个输入,两个输出,其中包含一个进位。

2.1 实现方式一

与半加器类似画出其真值表,进一步通过画卡诺图得到相应的函数表达式。
S=A^ B^cin,co=(A&B)|(A&cin)|(B&cin)。

2.2 实现方式二

利用两个半加器和一个或门实现全加器。其电路结构图如下:


全加器.png
  module full_add_1_gate(
                    A,
                    B,
                    cin,
                    S,
                    co);

     input A,B,cin;
     output S,co;
     wire S,co;
     wire C1,C2,S1;

  half_add_1 uut1(
            .A(A),
            .B(B),
            .S(S1),
            .C(C1)
            );
  half_add_1 uut2(
            .A(cin),
            .B(S1),
            .S(S),
            .C(C2)
            );                
assign co=C1|C2;
endmodule 

3、多位加法器的实现

在数字信号处理的快速运算电路中常常用到多位数字量的加法运算,对于多位宽加法器的处理,我们以逐位进位加法器为例。
代码和电路结构框图如下:

  module full_add_8_gate(
                    A,
                    B,
                    cin,
                    S,
                    co);

  input [7:0] A,B;
  input cin;
  output [7:0] S;
 output co;
 wire [7:0] C; 

 full_add_1_gate uut0(
            .A(A[0]),
            .B(B[0]),
            .cin(cin),
            .S(S[0]),
            .co(C[0])
            );
   full_add_1_gate uut1(
            .A(A[1]),
            .B(B[1]),
            .cin(C[0]),
            .S(S[1]),
            .co(C[1])
            );
    full_add_1_gate uut2(
            .A(A[2]),
            .B(B[2]),
            .cin(C[1]),
            .S(S[2]),
            .co(C[2])
            );
    full_add_1_gate uut3(
            .A(A[3]),
            .B(B[3]),
            .cin(C[2]),
            .S(S[3]),
            .co(C[3])
            );
    full_add_1_gate uut4(
            .A(A[4]),
            .B(B[4]),
            .cin(C[3]),
            .S(S[4]),
            .co(C[4])
            );
     full_add_1_gate uut5(
            .A(A[5]),
            .B(B[5]),
            .cin(C[4]),
            .S(S[5]),
            .co(C[5])
            );
    full_add_1_gate uut6(
            .A(A[6]),
            .B(B[6]),
            .cin(C[5]),
            .S(S[6]),
            .co(C[6])
            );
          full_add_1_gate uut7(
            .A(A[7]),
            .B(B[7]),
            .cin(C[6]),
            .S(S[7]),
            .co(C[7])
            );                                                                                                              

   assign co=C[7];
   endmodule 
8位全加器.png

串行加法器限制了运行的速度,在实际应用中,我们一般用到并行加法器。大致可以分为以下几类:进位旁路加法器、线性进位选择加法器、平方根进位选择加法器、超前进位加法器、对数超前进位加法器。并行加法器比串行加法器快得多,电路结构也不太复杂,它的原理很容易理解。

3、行为级描述加法器

用Verilog HDL来描述加法器是相当容易的,只需要将运算表达式写出就可以了。
一位全加器

  module full_add_1(
              A,
              B,
              C_in,
              S,
              C_out);

  input A,B,C_in;
  output S,C_out;

   assign {C_out, S}= A + B + C_in;

    endmodule

八位加法器

module full_add_8(
              A,
              B,
              C_in,
              S,
              C_out);

 input [7:0]A,B;
 input  C_in;
 output [7:0]S;
 output C_out;

assign {C_out, S}= A + B + C_in;

 endmodule 

这样设计的加法器在行为仿真时是没有延时的。借助综合器,可以根据以上Verilog HDL源代码将其自动综合成典型的加法器电路结构。综合器有许多选项可供设计者选择,以控制自动生成电路的性能。设计者可以考虑提高电路的速度,也可以考虑节省电路元件以减少电路占用硅片的面积。在FPGA的库中或某工艺的ASIC库中,都有参数化的加法器供设计者选用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容