【连载】 FPGA Verilog HDL 系列实例--------半加器与全加器

【连载】 FPGA Verilog HDL 系列实例  

Verilog HDL 之 半加器与全加器

一、原理

  算术运算式数值系统的基本功能,更是计算机中不可缺少的组成单元。
1、半加器
  半加法和全加法是算术运算电路中的基本单元,它们是完成1位二进制相加的一种组合逻辑电路。一位加法器的真值表见表1.1;由表中可以看见,这种加法没有考虑低位来的进位,所以称为半加。半加器就是实现表1.1中逻辑关系的电路。被加数A加数B和数S进位C0000011010101101
              表1.1 一位半加法器真值表


2、全加器
  全加器能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号。根据它的功能,可以列出它的真值表,如表1.2所示。

                表1.2 一位全加法真值表

3、半减法和全减法
  半减法和全减法与加法器一样是算术运算电路中的基本单元。半减器和全减器的设计方法和设计加法器相同,但是实际上,为了简化系统结构,通常不设计减法器,而是将减法运算变为加法运算来出来,使运算器即能实现加法器运算,又能实现减法器运算。一般采用加补码的方法代替减法运算。

二、实现

在设计文件中输入Verilog代码

 1 `timescale 1 ns / 1 ps
2
3 module sum ( A ,Co ,B ,S ,Ci );
4
5 input A ;
6 wire A ;
7 input B ;
8 wire B ;
9 input Ci ;
10 wire Ci ;
11
12 output Co ;
13 reg Co ;
14 output S ;
15 reg S ;
16
17 always @ ( A or B or Ci)
18 begin
19 if ( A== 0 && B == 0 && Ci == 0 )
20 begin
21 S <= 0;
22 Co <= 0;
23 end
24 else if ( A== 1 && B == 0 && Ci == 0 )
25 begin
26 S <= 1;
27 Co <= 0;
28 end
29 else if ( A== 0 && B == 1 && Ci == 0 )
30 begin
31 S <= 1;
32 Co <= 0;
33 end
34 else if ( A==1 && B == 1 && Ci == 0 )
35 begin
36 S <= 0;
37 Co <= 1;
38 end
39 else if ( A== 0 && B == 0 && Ci == 1 )
40 begin
41 S <= 1;
42 Co <= 0;
43 end
44 else if ( A== 1 && B == 0 && Ci == 1 )
45 begin
46 S <= 0;
47 Co <= 1;
48 end
49 else if ( A== 0 && B == 1 && Ci == 1 )
50 begin
51 S <= 0;
52 Co <= 1;
53 end
54 else
55 begin
56 S <= 1;
57 Co <= 1;
58 end
59 end
60
61 endmodule

 

 

 

 

 

posted @ 2011-08-28 10:28  让linux飞一会儿  阅读(7709)  评论(0编辑  收藏  举报