设为首页 加入收藏

TOP

Verilog学习笔记简单功能实现(二)...............全加器
2017-10-10 12:20:42 】 浏览:6051
Tags:Verilog 学习 笔记 简单 功能 实现 ............... 全加器

先以一位全加器为例:Xi、Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号。列表有:

  Xi     Yi    Cin Sum Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

    

          由左边表格可知:

                         Sum=X’Y'Cin+X'YCin'+XY'Cin'+XYCin=X'(Y?Cin)+X(Y⊙Cin)=X'(Y?Cin)+X(Y?Cin)'=X?Y?Cin

                              Cout=X’YCin+XYCin'+XY'Cin+XYCin=XY+(X?Y)Cin

                  如果取:P=X?Y ;   G=XY

                     那么:Sum=P?Cin     Cout=PCin+G

 

 

 

图中对Cout的公式进行了,即Cout'=(AB)'(PCin)'=(AB)'((A?B)Cin)'

 下面是全加器的门级Verilog语言描述:

module Fadd(x,y,Cin,Cout,Sum);
  input x,y,Cin;
  output Cout,Sum;
  wire a,b,c;

  xor xor1(a,x,y);
        xor2(Sum,a,Cin);
  and  and1(b,x,y);
          and2(c,Cin,a);
  or    or1(Cout,b,c);

endmodule

 全加器的行为描述:

1 module add(x,y,Cin,Sum,Cout);
2   input   x,y,Cin;
3   output  Sum,Cin;
4   assign Sum=x^y^Cin;
5   assign Cout=x&y+(x^y)&Cin;
6 endmodule
View Code
module add_N(x,y,Cin,Cout,Sum);
  input  x,y,Cin;
  output  Sum,Cout;
  assign  {Cout,Sum}=x+y+Cin;
endmodule

利用行为级描述的Verilog全加器可以很简单的扩展成4位或者16位等全加器:

module add_4(x,y,Cin,Cout,Sum);
  input [3:0]x,y;
  input Cin;
  output [3:0]Sum;
  output  Cout;
  assign  {Cout,Sum}=x+y+Cin;
endmodule
module add_N(x,y,Cin,Cout,Sum);
  input [N-1:0]x,y;
  input  Cin;
  output [N-1:0]Sum;
  output  Cout;
  assign  {Cout,Sum}=x+y+Cin;
endmodule

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Verilog HDL模型的不同抽象级别 下一篇Verilog学习笔记设计和验证篇(一..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目