打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
verilog全加器和乘法器设计

如何用与非门设计全加器?其实这些都是很基础的东西但是往往被大家忽略。

首先我们来看全加器的真值表:

需要明确的是:

input  Xi ,Yi,Ci;//Ci表示来自低位的进位

output  sum,Cout;//Cout表示向高位的进位

而通过真值表我们可以看出来:

Cout=Xi*Yi +Yi*Ci +Xi*Ci;

sum = X^Y^Ci;

那这就比较容易了,下面是门级描述。

module();

input x, y, ci;

output sum,Cout;

wire a, b, c,e,f,g;

    xor u1(a, x, y);

    xor u2(sum, a,ci);

    and u3( c, x, y );

    and u4( e, y ,ci );

    and u5 ( f, x, ci);

    or u6 ( g ,c, e );

    or u7 ( Cout, g , f );

endmodule

ps:在程序模块中出现的 and or xor 都是verilog的保留字,由verilog的原语(primitive)规定了他们的接口顺序和用法

在数字信号处理的快速运算电路中常常用到多位数字量的加法运算,这时需要用到并行加法器。下图表示了一个4位二进制超前进位加法电路。

在实现算法时,如(卷积运算和快速傅里叶变换)常常会用到加法运算,多位并行加法器是由多层组合逻辑构成,加上超前进位形成逻辑减少了延迟,但还是有多级门和布线延迟,由于加法器的延迟使加法器的使用频率受到限制,如果设计的是32位或者64位,延迟会更大,为了加快计算的节拍,可以在运算电路的组合逻辑层中加入多个寄存器组来暂存中间结果,也就是采用数字电路中的流水线办法,来提高运算速度。

行为级描述就更加简单了,

来一个四位的:

  1. module adder_code(  
  2.     input [3:0] num_1,  
  3.     input [3:0] num_2,  
  4.     output [3:0] out_num,  
  5.     output C 
  6.     );  
  7.        
  8. assign {C,out_num} = num_1+ num_2;  
  9.   
  10. endmodule

这样设计的加法器在行为仿真时是没有延时的,借助综合器,可以根据代码综合成典型的加法器电路。

乘法器:

 设两个n位二进制正数X和Y,即:

                                                    X:Xn-1.....X0;

                                                    Y:Yn-1.....Y0;

则X和Y的乘积有2n位,并且试中的YiXi称为部分积,记为Pi,显然,两个一位二进制数相乘遵循如下规律。

0*0=0 , 0*1=0 ,1*0=0 ,1*1=1;

因此YiXi可用一个与门实现,记为Pij=YiXi;

例如:两个4位二进制数X和Y相乘。

乘法器单元逻辑图:

则例子中的运算可以表示为:

即乘法器可以由与门和加法器组成。

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
对特权同学的16位乘法器代码的理解与修正
可编程逻辑在数字信号处理系统中的应用
对比ARM与DSP,认清FPGA
【学术论文】基于FPGA的图像自适应加权均值滤波设计
C语言汇编语言机器指令CPU之间是怎么联系起来的(假设加法器和乘法器都具有使能端两个使能端为01就是加法器工作是10就是乘法器工作为了便于记忆于是你给01起了个名字叫add10起名叫mul你的这组运算
基于FPGA的RS编码器的设计与实现 - 21IC中国电子网
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服