电子发烧友网 > EDA/IC设计 > EDA技术 > 正文

使用verilogHDL实现乘法器

2018年12月19日 13:30 次阅读

本文在设计实现乘法器时,采用了4-2和5-2混合压缩器对部分积进行压缩,减少了乘法器的延时和资源占 用率;经XilinxISE和QuartusII两种集成开发环境下的综合仿真测试,与用VerilogHDL语言实现的两位阵列乘法器和传统的 Booth编码乘法器进行了性能比较,得出用这种混合压缩的器乘法器要比传统的4-2压缩器构成的乘法器速度提高了10%,硬件资源占用减少了1%。

1 引言

Verilog HDL是当今最为流行的一种硬件描述语言,完整的Verilog HDL足以对最复杂的芯片和完整的电子系统进行描述[1]。本文采用Verilog HDL语言来设计实现4-2和5-2混合压缩器构成的乘法器的设计,并与另外实现的两种乘法器从速度,面积和硬件资源占用率等方面进行了性能比较,得出用这种改进压缩器要比两位阵列乘法器和传统的4-2压缩器构成的乘法器速度提高了10%,硬件资源占用减少了2%。

2 两位阵列乘法器

阵 列乘法器基于移位与求和算法。两位阵列乘法器是对乘数以2bit进行判断,这样可以在部分积的数目上比一位判断阵列乘法器减少1倍;另外,阵列乘法器结构 比较规范,利于布局布线,但是阵列乘法器存在进位问题,运算速度比较慢,所需时钟周期长,时延大。以下是两位判断的乘法器的Verilog HDL语言部分程序:

module imult _radix_2(prod,ready,multiplicand,mulTIplier,start,clk);

……

case ( {product[1:0]} )

2‘d0: pp = {2’b0, product[31:16] };

2‘d1: pp = {2’b0, product[31:16] } + mulTIplicandX_1;

2‘d2: pp = {2’b0, product[31:16] } + mulTIplicandX_2;

2‘d3: pp = {2’b0, product[31:16] } + mulTIplicandX_3;

……

3 改进Booth编码乘法器

阵列乘法器虽然占用相对较少的硬件面积,可是运算速度非常慢,不能满足高速运算的要求。为了得到高速的乘法器,可以从两个方面来提高乘法器的计算速度:减 少部分积数目;提高部分积压缩速度。通常减少部分积数目采用二阶的Booth编码实现;可用4-2压缩器构成的Wallace树来提高部分积求和速度。本 文采用4-2压缩器和5-2压缩器的混合Wallace树来进一步提高求和速度。www.51kaifa.com

改进Booth算法通过对二进制补码数据重新编码,压缩PP(部分积)数目,以提高运算速度。其中,压缩率取决于编码方法,如果采用三位编码,可压缩 1/2的PP,再对所得的n/2个部分积进行求和运算。在电路实现中还可采用混合握手协议和管道传输方式,可以降低电路的功耗,仅占Amulet3i乘法 器的每次运算的能量消耗的50%【2】,另外,也可以采用混合逻辑乘法器设计【3】。Booth算法电路图在文献[4]中有具体介绍。

3.1 4-2压缩器

4-2压缩器使用2个CSA(Carry-save Adders保留进位加法器),将5个数据(4个实际数据和一个进位)相加产生3个数(Sun, Carry和Cout)。4-2压缩器结构图如图1所示【4】。

使用verilogHDL实现乘法器

图1 由2个CSA构成的4-2压缩器

4-2压缩器是进行部分积压缩最常用到的部件,与全加器相比,具有电路简单、连线规则的优点.传统4-2压缩器输入与输出的逻辑关系表达式[8]为:www.51kaifa.com

表达式中:In1~In4为部分积输入信号;Cin为邻近压缩器进位输入;Sum为伪和;Carry和Cout为进位输出,其权值相同。由图及表达式知, 输出进位与输入进位式相互独立的,即输出并不由输入产生,这样就能保证部分积同时且独立地相加。4-2压缩器对部分积进行压缩的图如图2【5】所示:

使用verilogHDL实现乘法器

图2 4-2压缩器组结构图

由4-2压缩器进行部分积压缩的Booth乘法器的Verilog HDL描述部分程序如下:

module Booth_radix_4(prod,ready,multiplicand,multiplier,start,clk);

……

dug dug0(PP0,mult[2:0]);

……

count count1(clock,sum0,carry0,PP0,PP1,PP2,PP3,cout0,cin0);

count count2(clock,sum1,carry1,PP4,PP5,PP6,PP7,cout1,cout0);

……

count count3(clock,sum,carry,sum0,carry0,sum1,carry1,cout,cin0);www.51kaifa.com

……

3.2 4-2和5-2混合压缩器

4-2压缩器在很大程度上减少了部分积的求和速度,但是它有一个缺点是Sum(伪和信号)比Carry(进位信号)的产生速度慢,因此,进位信号必须等待伪和信号的产生,这样又造成了压缩速度的降低和功耗的增加.可以用异或门和2-1数据选择器对电路进行变换【6】,这种结构能同时产生伪和信号和进位信号,并且关键路径的延迟也只有全加器的1.5倍【8】。为进一步压缩部分积的求和级数,加快压缩速度,本文同时采用了4-2压缩器和5-2压缩器混合逻辑设计。5-2压缩器的结构图如图3【7】所示,

使用verilogHDL实现乘法器

图3 5-2压缩器的结构图

5-2 压缩器有7个输入In1~In5(权值相同),3个进位输出(权值相同)和一个伪和(权值比进位输出低一位),这种结构的压缩器结构规整,且仅有6个异或 门的延迟。文献[8]中给出了5-2压缩器的输入与输出的逻辑关系表达式。整个压缩器结构图如图4所示:

使用verilogHDL实现乘法器

图4 本文采用的整个压缩器结构

由4-2和5-2混合压缩器实现的改进Booth乘法器的Verilog HDL描述部分程序如下:

module Booth_radix_5(prod,ready,multiplicand,multiplier,start,clk);

……

dug dug0(PP0,mult[2:0]);

dug dug1(PP1,mult[4:2]);

……

count count1(clock,sum0,carry0,PP0,PP1,PP2,PP3,cout0,cin0);

……

sum sum1(clock,sum,carry,In16,sum0,carry0,sum1,carry1,cout,cin0,cin1);

……

4逻辑仿真及性能比较

本文在Xilinx ISE和Quartus II两种集成开发环境下, 对以上3种结构的乘法器进行了编译、综合、适配、时序仿真以及功率分析,其中输入信号的字宽为32bit。有仿真工具Xilinx ISE和Quartus II进行的仿真结果报告文件,很容易做出对这3种乘法器的性能比较,如表1所示。

有性能比较表知:阵列乘法器面积最小,功耗小,但是运行速度慢;单纯使用4-2压缩器的Booth乘法器在资源占用率和速度上要比阵列乘法器提高约1倍, 功耗略大于阵列乘法器;而本文设计采用的乘法器方案有效提高了乘法器的运算能力,应用在FPGA上工作频率可达256.61MHz,要比传统的4-2压缩 器构成的乘法器在速度上提高了10%,硬件资源占用减少了约1%。

4结论

不同架构的乘法器在性能上都存在优点和缺点,在选择乘法器时,应根据应用场合的要求在速度、面积和功耗等方面综合考虑,本文采用Xilinx ISE和Quartus II两种集成开发环境对所实现的乘法器综合进行测试,更能准确显示不同结构的乘法器的性能优势,帮助用户快速选择合适的乘法器。本文设计采用的乘法器方案要比传统的4-2压缩器构成的乘法器在速度上提高了10%,硬件资源占用减少了约1%,有效提高了乘法器的运算能力。

本文作者创新点: 本文采用4-2和5-2混合压缩器对部分积进行压缩,减少了乘法器的延时和资源占用率;并用Verilog HDL语言实现了两位阵列乘法器和传统的Booth编码乘法器。同时在Xilinx ISE和Quartus II两种集成开发环境下进行综合仿真测试,这更有利于比较乘法器的性能优势,便于用户更准确地选择适合应用场合的乘法器。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

请问可以帮忙改下verilog程序吗?

发表于 2018-12-24 15:56 146次阅读
请问可以帮忙改下verilog程序吗?

AD9854 ASK矩形输出不正确

发表于 2018-12-21 09:00 90次阅读
AD9854 ASK矩形输出不正确

CPLD控制DDS更改频率无法正常输出

发表于 2018-12-14 13:55 60次阅读
CPLD控制DDS更改频率无法正常输出

UDB动态PI不能调用

发表于 2018-12-10 15:47 184次阅读
UDB动态PI不能调用

verilog的if语句问题

发表于 2018-11-28 17:45 303次阅读
verilog的if语句问题

求fpga控制flash存储的读擦写verilog源代码

发表于 2018-11-28 12:10 216次阅读
求fpga控制flash存储的读擦写verilog源代码

Modelsim XE是否支持System Verilog

发表于 2018-11-27 14:20 88次阅读
Modelsim XE是否支持System Verilog

经典电路的设计

发表于 2018-11-26 16:08 102次阅读
经典电路的设计

用于16位gpif 2设计的FPGA主verilog代码

发表于 2018-11-26 15:49 113次阅读
用于16位gpif 2设计的FPGA主verilog代码

如何利用verilog验证二分法查找的设计代码

下面是产生输出文件的过程,这里我们设置输出结果的格式是fsdb,当然我们也可以设置成vcd的格式。f...

发表于 2018-11-26 14:39 442次阅读
如何利用verilog验证二分法查找的设计代码

调用ISE的滤波器IP核,出的结果和滤波前的有偏差,求助!

发表于 2018-11-22 15:55 275次阅读
调用ISE的滤波器IP核,出的结果和滤波前的有偏差,求助!

Verilog 99题:画出CMOS三态缓冲器的...

图5,CMOS传输门,双向传输,当C=0,~C=Vdd,两个MOS管都截止,输入和输出之间呈现高阻态...

发表于 2018-11-12 14:34 517次阅读
Verilog 99题:画出CMOS三态缓冲器的...

Verilog和VHDL之间如何互转

当然阶段四纯属个人的对未来的推测,但是,近年来,FPGA也高速发展,明显有当年汇编语言开发到C高...

发表于 2018-11-12 14:23 737次阅读
Verilog和VHDL之间如何互转

FPGA中的testbench介绍

跟大家解释一点,所有testbench本质上都是串行执行,因为在CPU环境下,没有可靠并行执行的能力...

发表于 2018-10-10 16:14 687次阅读
FPGA中的testbench介绍

采用FPGA和单片机结合的等精度原理的测量频率实...

传统测量频率的方法主要有直接测量法、分频测量法、测周法等,这些方法往往只适用于测量一段频率,当被测信...

发表于 2018-09-17 08:02 551次阅读
采用FPGA和单片机结合的等精度原理的测量频率实...

FPGA学习verilog代码的经验总结

既然HDL设计是并行的,那么就只能各个击破了。我的习惯是先抓几个重要端口,比如时钟(CLK)、复...

发表于 2018-09-15 09:59 285次阅读
FPGA学习verilog代码的经验总结

不同verilog代码的RTL视图

刚开始玩CPLD/FPGA开发板的时候使用的一块基于EPM240T100的板子,alter的这块芯片...

发表于 2018-09-15 09:57 255次阅读
不同verilog代码的RTL视图

如何把二进制转换为格雷码?格雷码是如何判断读空写...

在传递读写时钟域的指针使用格雷码来传递,如何把二进制转换为格雷码,格雷码是如何判断读空写满呢?

发表于 2018-09-15 09:38 736次阅读
如何把二进制转换为格雷码?格雷码是如何判断读空写...

常见的Verilog行为级描述语法

常见的Verilog描述语句与对应的逻辑关系;熟悉语法与逻辑之间的关系

发表于 2018-09-15 08:18 988次阅读
常见的Verilog行为级描述语法

组合逻辑概述

根据狄摩根定律第二条,就可以将积之和布尔表达式转化成和之积形式;根据狄摩根定律第一条,就可以将和之积...

发表于 2018-09-10 10:49 734次阅读
组合逻辑概述

数字电路里面有什么元素需要被描述?

组合逻辑电路: 可以利用 assign 或者 always @(*) 语句描述。一般复杂的组合逻辑...

发表于 2018-09-07 14:47 862次阅读
数字电路里面有什么元素需要被描述?

使用Verilog来实现EEPROM的读写,进行...

传送器件地址ID_Address,器件地址的最后一位为数据的传输方向位,R/W,低电平0表示主机往从...

发表于 2018-08-31 17:17 1592次阅读
使用Verilog来实现EEPROM的读写,进行...

用硬件思维去理解verilog

大家也应该知道,在没有verilog这种高级语言之前都是用原理图设计,必须先构思好整个电路框架,...

发表于 2018-08-31 16:49 796次阅读
用硬件思维去理解verilog

告诉你真正的verilog执行顺序,纠正你的思路...

同时大家要明白verilog不是不能实现顺序执行,而是实现顺序执行并不像语法那么直观,最简单的顺序...

发表于 2018-08-31 16:45 2021次阅读
告诉你真正的verilog执行顺序,纠正你的思路...

简谈FPGA verilog中的function...

大家好,又到了每日学习的时间了,今天我们来聊一聊FPGA verilog中的function用法与例...

发表于 2018-08-10 13:42 2018次阅读
简谈FPGA verilog中的function...

基于verilog的FPGA中上电复位设计

在实际设计中,由于外部阻容复位时间短,可能无法使FPGA内部复位到理想的状态,所以今天介绍一下网上流...

发表于 2018-08-07 09:17 1862次阅读
基于verilog的FPGA中上电复位设计

EDA技术特点,作用及前景分析

电子电路的设计是一项非常复杂的系统工程,在设计过程中,由设计者通过对具体数据进行相应的分析,然后提出...

发表于 2018-07-15 11:56 655次阅读
EDA技术特点,作用及前景分析

PS2键盘编码Verilog源程序分享

之前探讨过PS/2键盘编解码以及数据传输协议,这次自己动手实现了利用FPGA接收键盘编码,然后通过串...

发表于 2018-07-15 09:55 781次阅读
PS2键盘编码Verilog源程序分享

Ajoy Bose:可重用IP(智能产权)才是新...

Atrenta公司主席、总裁兼首席执行官Ajoy Bose认为:“可重用IP(智能产权)才是新的抽象...

发表于 2018-07-09 15:30 166次阅读
Ajoy Bose:可重用IP(智能产权)才是新...

关于Verilog语言标准层次问题

关于Verilog语言的官方标准全称是《IEEE Std 1364-2001:IEEE Standa...

发表于 2018-07-06 09:59 391次阅读
关于Verilog语言标准层次问题

如何为 OpenCL 库将 verilog 封...

如何将自定义 verilog 打包为 OpenCL 库

发表于 2018-06-22 04:45 1122次阅读
如何为 OpenCL  库将 verilog 封...

简谈FPGA的上电复位

大家好,博主最近有事忙了几天,没有更新,今天正式回来了。那么又到了每日学习的时间了,今天咱们来聊一聊...

发表于 2018-06-18 19:24 2410次阅读
简谈FPGA的上电复位

MEMS Consulting和EDA技术领导厂...

2018年4月6日,中国首家MEMS咨询服务公司麦姆斯咨询(MEMS Consulting)和全球著...

发表于 2018-06-05 16:07 118次阅读
MEMS Consulting和EDA技术领导厂...

FPGA设计中的HLS 工具应用

在集成电路行业飞速发展的今天,缩短产品开发的周期而又不牺牲验证过程,这不可避免地成为了商业市场的一个...

发表于 2018-06-04 01:43 1070次阅读
FPGA设计中的HLS 工具应用

vivado调用IP核详细介绍

大家好,又到了每日学习的时间了,今天咱们来聊一聊vivado 调用IP核。 首先咱们来了解一下viv...

发表于 2018-05-28 11:42 4789次阅读
vivado调用IP核详细介绍

矩阵键盘的verilog代码分享

key_col, //键盘列输入 key_row, //键盘行输出 key_num, //指示哪...

发表于 2018-05-28 10:39 859次阅读
矩阵键盘的verilog代码分享

电子EDA技术的基础知识(发展历程、特点、作用、...

EDA技术是一门综合性学科,它打破了软件和硬件间的壁垒,代表了电子设计技术和应用技术的发展方向。本文...

发表于 2018-05-23 14:27 878次阅读
电子EDA技术的基础知识(发展历程、特点、作用、...

paramter和localparam有什么区别...

这是一个Verilog中有争议的问题,即Parameter即作为常数,也作为参数使用是否合理合法的问...

发表于 2018-05-18 11:05 1588次阅读
paramter和localparam有什么区别...

一个连环无敌面试题--计数器

问题1:如何用Verilog实现这个计数器?针对上述功能的计数器,应该如何用Verilog实现?

发表于 2018-05-16 15:16 1719次阅读
一个连环无敌面试题--计数器

verilog是什么_verilog的用途和特征...

本文首先介绍了verilog的概念和发展历史,其次介绍了verilog的特征与Verilog的逻辑门...

发表于 2018-05-14 14:22 1238次阅读
verilog是什么_verilog的用途和特征...

学eda技术必看的8本书_eda技术方面的书籍推...

随着EDA技术的发展,EDA技术的广泛应用,电子产品的更新日新月异,EDA技术已成为现代电子设计的核...

发表于 2018-04-27 10:49 3262次阅读
学eda技术必看的8本书_eda技术方面的书籍推...

现代eda技术的特点及作用浅谈

本文主要详谈EDA技术的特点及作用,首先介绍了EDA技术的发展历程,其次阐述了特点及作用,最后介绍了...

发表于 2018-04-27 09:44 1233次阅读
现代eda技术的特点及作用浅谈

简述什么是eda技术_eda技术好学吗_如何学习...

由于电子技术的飞速发展,使得基于EDA技术的电子系统设计方法得以广泛应用。EDA技术已成为现代系统设...

发表于 2018-04-27 09:21 3990次阅读
简述什么是eda技术_eda技术好学吗_如何学习...

通过砷化镓制程的PN结测量建模可以得出Veril...

本文中论述的是二极管的小信号模型,适用于半导体材料组成的PN结以及金属半导体组成的肖特基PN结。另外...

发表于 2018-04-22 11:51 1778次阅读
通过砷化镓制程的PN结测量建模可以得出Veril...

Verilog和SystemVerilog定义了...

在实际设计中有一种情况可能会产生这种问题:cond信号来自于memory。比如汉明码SECDED(...

发表于 2018-03-29 15:40 2225次阅读
Verilog和SystemVerilog定义了...

关于verilog的学习经验简单分享

学习verilog最重要的不是语法,“因为10%的语法就能完成90%的工作”,verilog语言常用...

发表于 2018-03-26 14:06 497次阅读
关于verilog的学习经验简单分享

vhdl和verilog的区别_vhdl和ver...

VHDL全名Very-High-Speed Integrated Circuit Hardware ...

发表于 2018-03-23 16:43 6754次阅读
vhdl和verilog的区别_vhdl和ver...

大神课堂:采用EDA技术设计一个出租车计费器的完...

随着EDA技术的飞速发展,大规模可编程逻辑器件CPLD/FPGA应用越来越广泛,不仅简化了数字系统设...

发表于 2018-03-23 14:53 886次阅读
大神课堂:采用EDA技术设计一个出租车计费器的完...

verilog编译指令_verilog编译器指示...

以`(反引号)开始的某些标识符是编译器指令。在Verilog 语言编译时,特定的编译器指令在整个编译...

发表于 2018-03-23 13:40 2115次阅读
verilog编译指令_verilog编译器指示...

verilog语言基本语句_verilog语言词...

Verilog HDL是一种硬件描述语言(HDL:Hardware Description Lang...

发表于 2018-03-23 11:46 6985次阅读
verilog语言基本语句_verilog语言词...

Verilog generate语句的类型

Generate 结构在创建可配置的RTL的时候很有用。Generate loop能够让语句...

发表于 2018-03-16 14:34 3563次阅读
Verilog generate语句的类型

基于Verilog实现的DDS任意波形发生器

DDS是从相位的概念直接合成所需波形的一种频率合成技术。不仅可以产生不同频率的正弦波,而且可以控制波...

发表于 2018-01-08 11:58 975次阅读
基于Verilog实现的DDS任意波形发生器

Verilog实现74LS194芯片设计程序

Verilog作为一种种硬件描述语言目前已经得到了普遍运用。本文主要介绍了Verilog特点、Ver...

发表于 2017-12-22 17:26 1050次阅读
Verilog实现74LS194芯片设计程序

Verilog/VHDL语法学习是掌握基本代码设...

无论是VHDL还是Verilog,建议初学者先掌握其中一门。

发表于 2017-12-19 13:09 2945次阅读
Verilog/VHDL语法学习是掌握基本代码设...

d触发器verilog描述

触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是...

发表于 2017-12-12 16:47 1076次阅读
d触发器verilog描述

verilog实现定时器函数

使用Verilog描述硬件的基本设计单元是模块(module)。构建复杂的电子电路,主要是通过模块的...

发表于 2017-12-08 17:20 1392次阅读
verilog实现定时器函数

基于Verilog的PS/2接口控制程序

通过Verilog编程实现在红色飓风II代Xilinx开发板上面实现对键盘、LCD、RS-232等接...

发表于 2017-11-22 15:03 701次阅读
基于Verilog的PS/2接口控制程序

通过编写verilog代码实现OLED驱动和内容...

本实验通过verilog代码的编写,在EGO1开发板上实现OLED的驱动和内容显示。

发表于 2017-11-11 08:22 7457次阅读
通过编写verilog代码实现OLED驱动和内容...

uart串口代码verilog

 Verilog HDL是一种硬件描述语言(HDL:Hardware Description Lan...

发表于 2017-11-09 17:34 1265次阅读
uart串口代码verilog

EDA技术特点以及进行电子电路设计的一般步骤

电子电路的设计是一项非常复杂的系统工程,在设计过程中,由设计者通过对具体数据进行相应的分析,然后提出...

发表于 2017-08-31 10:32 10329次阅读
EDA技术特点以及进行电子电路设计的一般步骤

改变数字硬件设计,实现真正工程化

与VHDL和Verilog一样,SpinalHDL可用于通过定义寄存器和门来描述硬件,SpinalH...

发表于 2017-08-10 11:27 1247次阅读
改变数字硬件设计,实现真正工程化

基于Verilog FPGA 流水灯设计

流水广告灯主要应用于LED灯光控制。通过程序控制LED的亮和灭, 多个LED灯组成一个阵列,依次逐个...

发表于 2017-08-09 15:14 3550次阅读
基于Verilog FPGA 流水灯设计

Verilog的语言要素

本章介绍Verilog HDL的基本要素,包括标识符、注释、数值、编译程序指令、系统任务和系统函数。...

发表于 2017-02-11 17:01 611次阅读
Verilog的语言要素

Verilog HDL简明教程(2)

模块是Verilog 的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。

发表于 2017-02-11 16:58 453次阅读
Verilog HDL简明教程(2)

写verilog代码要有硬件的概念

因为Verilog是一种硬件描述语言,所以在写Verilog语言时,首先要有所要写的module在硬...

发表于 2017-02-11 16:18 1255次阅读
写verilog代码要有硬件的概念

初学者学习Verilog HDL的步骤和经验技巧

Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Lang...

发表于 2017-02-11 14:00 21239次阅读
初学者学习Verilog HDL的步骤和经验技巧

一个合格FPGA 工程师的基本要求

一个合格的FPGA工程师需要掌握哪些知识?这里根据自己的一些心得总结一下,其他朋友可以补充啊。

发表于 2017-02-11 13:47 1767次阅读
一个合格FPGA 工程师的基本要求

FPGA开发与学习连载4

Verilog中,用always块设计组合逻辑电路时,在赋值表达式右端参与赋值的所有信号都必须在al...

发表于 2017-02-11 13:28 221次阅读
FPGA开发与学习连载4

FPGA开发与学习连载:Verilog设计经验谈

Verilog中,用always块设计组合逻辑电路时,在赋值表达式右端参与赋值的所有信号都必须在 a...

发表于 2017-02-11 13:17 334次阅读
FPGA开发与学习连载:Verilog设计经验谈

Verilog的两个误区

Reg类 型只在过程块中被赋值;而Net类型则在过 程块外面被赋值或者驱动.

发表于 2017-02-11 12:45 837次阅读
Verilog的两个误区