Parallel Prefix Adder 简介

本文介绍了Parallel Prefix Adder(PPA),它在电路设计中用于高效计算布尔状态下的加法,尤其在安全多方计算中减少AND门深度。首先,文章概述了Full Adder(FA)和Reduced Carry Factor Adder(RCFA)。接着,讨论了Prefix Sum的概念,以及如何通过并行计算优化电路深度。然后,解释了Carry Look Ahead Adder(CLA)和PPA的工作原理,PPA通过并行优化进一步减少了AND门的数量。最后,文章指出PPA在安全多方计算中的应用,如ABY3协议中的A2B过程,用于减少通信轮数。
摘要由CSDN通过智能技术生成

Parallel Prefix Adder 简介


本次介绍电路设计中的PPA (Parallel Prefix Adder),该技术可以高效求布尔状态下的2-输入加法,用于安全多方计算中算术分享对布尔分享的转化。接下来首先介绍Full Adder (FA) 和基于 FA 构造的RCFA。进一步介绍PPA的构造。

0. 入门

0.1 Full Adder

 

下图中,half adder表示对于两输入的加法电路求 S 和 C ,而右图则表示FA具体利用AND、 XOR 和 OR 门构造方法:

从上图可以看出,half adder 需要1层AND门,而FA则包含了2层AND门(OR中包含AND)。

0.2 RCFA

 

Verilog是一种硬件描述语言(HDL),广泛用于电子系统的设计和描述。一个2位并行加法器(2-bit parallel adder)是一个简单的数字电路,它可以同时加两个2位的二进制数,并产生一个2位的和以及一个进位输出。在Verilog中,我们可以使用结构化设计或行为级描述来实现这样的加法器。 一个简单的2位并行加法器的Verilog代码可能如下所示: ```verilog module two_bit_adder( input [1:0] a, // 2位输入a input [1:0] b, // 2位输入b input cin, // 输入进位 output [1:0] sum, // 2位和输出 output cout // 输出进位 ); // 内部信号,用于存储每一位的和以及进位 wire [1:0] internal_sum; wire carry0, carry1; // 实例化两个全加器 full_adder fa0( .a(a[0]), .b(b[0]), .cin(cin), .sum(internal_sum[0]), .cout(carry0) ); full_adder fa1( .a(a[1]), .b(b[1]), .cin(carry0), .sum(internal_sum[1]), .cout(carry1) ); // 计算最终的和以及进位输出 assign sum = internal_sum; assign cout = carry1; endmodule // 全加器模块定义 module full_adder( input a, input b, input cin, output sum, output cout ); assign sum = a ^ b ^ cin; // 异或操作实现加法 assign cout = (a & b) | (b & cin) | (a & cin); // 与操作和或操作实现进位 endmodule ``` 在这段代码中,`two_bit_adder`模块接收两个2位的输入`a`和`b`,以及一个进位输入`cin`。它通过调用两个`full_adder`模块来计算每一位的和和进位,最后输出总和`sum`和进位`cout`。 `full_adder`模块是一个全加器,它能够处理三个一位的输入(两个加数和一个进位输入),并输出一位的和以及进位输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值