博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【 FPGA/IC 】addsub 的实现
阅读量:2028 次
发布时间:2019-04-28

本文共 940 字,大约阅读时间需要 3 分钟。

要实现一个32位的加减器,加减由变量sub来决定,sub为0时,实现add,否则,实现sub。

输入输出变量有:

input [31:0] a,

input [31:0] b,

input sub,

input cin,

output cout,

output [31:0] out;

要实现相加,则a和b相加;要实现相减,则a加上-b的补码。

相减,在数字电路中,可以用加法器实现,也即a加上-b的补码,-b的补码等于b取反加1;

具体实现方法参考:

具体的Verilog实现为:

module top_module(	input [31:0] a,	input [31:0] b,	input sub,	output [31:0] result);	wire [31:0] sub1, sub2;	wire [31:0] b1;	//assign sub1 = 32'b0;	//assign sub2 = 32'b1;	//assign b1 = sub ? b^sub2 : b^sub1;    assign b1 = sub ? ( b^( {32{sub}} ) ) : ( b^( {32{sub}} ) );    wire [15:0] sum1, sum2;	wire cout1;	add16 inst1(		.cin(sub),		.a(a[15:0]),		.b(b1[15:0]),		.cout(cout1),		.sum(sum1)		);	add16 inst2(		.cin(cout1),		.a(a[31:16]),		.b(b1[31:16]),		.cout(),		.sum(sum2)		);	assign result = {sum2, sum1};endmodule

其中16位的数据加法为:

module add16(	input [15:0] a,	input [15:0] b,	input cin,	output cout,	output [15:0] sum	);		assign {cout, sum} = a + b + cin;endmodule

当然,可以采用先进进位加法器,怎么实现可以参考:

仿真结果为:

 

 

转载地址:http://emjaf.baihongyu.com/

你可能感兴趣的文章
浅析bootstrap原理及优缺点
查看>>
一句话概括下spring框架及spring cloud框架主要组件
查看>>
java开发设计六大基本原则
查看>>
Java程序员应该了解的10个面向对象设计原则
查看>>
JVM 优化经验总结
查看>>
JVM初探- 使用堆外内存减少Full GC
查看>>
MVVM模式中ViewModel和View、Model有什么区别
查看>>
MVVM模式--Model,View,ViewModel三者平衡
查看>>
MVVM模式通过ViewModel实现view和model的低耦合
查看>>
面向切面编程的应用场景
查看>>
面向切面编程的两种实现
查看>>
使用Spring进行面向切面编程(AOP
查看>>
面向切面编程(AOP)
查看>>
Java实现AOP面向切面编程的实例教程
查看>>
Java笔记——面向切面编程(AOP模式)
查看>>
面向切面编程的作用与实现简介
查看>>
Spring----AOP面向切面编程例子解析(附源码)
查看>>
算法----五大算法之分支限界法
查看>>
算法----五大算法之回溯法
查看>>
算法----五大算法之贪心法
查看>>