首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» Spartan3硬件乘法器使用详解(1)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
Spartan3硬件乘法器使用详解(1)
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-12-2 22:19
|
只看该作者
Spartan3硬件乘法器使用详解(1)
初学者
,
硬件
,
博客
,
如何
,
软件
前几天一直在忙,也没有来得及上来看看。博客大赛真是越来越热闹了,咱也来添砖加瓦让它越来越红火。这次的博文对Spartan3/3E里面的硬件乘法器进行研究。
自从开始学FPGA起,关于硬件乘法器与软件乘法器的概念就一直有点困惑。明明FPGA已经自带了18*18位的硬件乘法器(大概总结了一下,Spartan6系列的硬件乘法器数量如图1所示,Spartan3的如图2所示),好多书籍却要花费较多经历来讲如何用HDL语言来实现乘法;这是一个非常复杂的过程,感觉会让初学者不知所措(感觉使用Core Generator来产生乘法器要比用HDL语言要容易一些)。在硬件乘法器足够使用的情况下,为什么不直接使用硬件乘法器,来简化设计、提高性能呢?仔细阅读了Xilinx关于硬件乘法器的资料,没想到它的用法、用途还是这么丰富。于是在此和大家分享一下心得。
图1 Spartan6系列的硬件乘法器
图2 Spartan3系列的硬件乘法器
1. 简介
Xilinx FPGA一般都带有多个18*18的硬件乘法器(一般用MULT18*18原语来指代,在高端器件里面乘法器、加法器和累加器集成为DSP48、DSP48E等模块),一般我们都用它们来完成有符号或者无符号的乘法运算。其实,使用Xilinx FGPA自带的硬件乘法器,不光可以完成这些基本的操作,还可以被用来进行移位、产生一个数值的二进制补码等(如Xilinx Application Note 467)。另外,硬件乘法器还可以互相进行级联或者与CLB逻辑进行级联以进行更为复杂的功能求解。下面就具体问题具体分析,来展示一下Xilinx FPGA硬件乘法器的强大功能。
Xilinx FPGA硬件乘法器是独立于逻辑资源之外的,所以它不占用逻辑资源,可以以最小的硬件代价实现较为复杂的算术运算(当然布线资源还是要占用的)。总结了一下,包括有符号*有符号,有符号*无符号,逻辑运算与算术运算、二进制补码、幅值返回等都可以使用MULT18*18来实现。
2. 基于二的补码的有符号乘法器
图3嵌入式乘法器示例
一个基本的MULT18*18有两个独立的动态输入端口:18位的有符号数或者17位的无符号数。而把四个MULT18*18、一个36位的加法器和进行一个53位的加法器级联,就可以得到35*35位的乘法器,它的基本原理框图如图4所示。
图4 35*35位的有符号乘法器
二进制乘法与常规的乘法在本质上是一样的,它就像是只有0和1的十进制乘法(简直太简单了,可以参考《编程卓越之道第一卷:深入理解计算机》这本书,讲的很深刻)。以下是掌握二进制乘法需要知道的规则:
0 × 0 = 0
0 × 1 = 0
1 × 0 = 0
1 × 1 = 1
使用这四条规则,二进制乘法按照与十进制乘法相同的方式工作(事实上,如果按照十进制乘法的规则来对二进制数进行操作,结果完全正确,因为在十进制乘法中,与数字0和1相关的规则与二进制乘法是一样的,只是进位的数不一样而已,十进制的是到十才进位这里是到2就进了)。
3.时序考虑
在乘法器的计算中,LSB的产生要比MSB快,因为MSB需要更多层的加法,所欲时序考虑与36位输出的乘法器是不一样的。举个例子来说,如果两个无符号的的数其乘积永远不超过2的35次方,则输出结果的 P[35]将永远是0。对于其中任意有符号的n位相乘,如果不出现(-2^(n-1))* (-2^(n-1))的情况,则MSB永远与下一个低bit位相同(即p[2n-1]=p[2n-2])。同时考虑到,如果某些情况下要求输出没有位之间相对的布线延迟,则应增加LSB的延时以便和MSB的延时进行平衡。
因为器件制造等原因,在流水线式的MULT上,输入数据的建立时间中MSB的往往比LSB的要短,但是器件的管脚延时却没有区别。为了保证设计中的额外的安全裕量,MSB应该接受一个相对较慢的输入。复位与时钟使能必须比所有的输入数据的建立时间都快,并且等待时间必须为零。时序约束中的参数tmulidck(乘法器输入数据到时钟)用来同时约束数据与控制输入,但是对它们两种类型却具有不同的数值。
4.库中的原语
表1 MULT18*18和MULT18*18S的原语
经常用原语的朋友对此应该不陌生了,MULT18*18是普通的乘法器,MULT18*18S是带有控制端的(如时钟使能C、复位信号等)。使用库中的原语与使用Xilinx的实现工具,如FPGA Editor时,管脚的定义是一样的。乘法器原语的示意图如图5所示。
图5 乘法器原语的示意图
在ISE中打开Language-template,verilog— device primitive--- Spartan3--- Arithmetic functions, 就可以看到MULT18*18和MULT18*18S的原语调用代码了。例如MULT18*18的就是
// MULT18X18 : In order to incorporate this function into the design,
// Verilog : the following instance declaration needs to be placed
// instance : in the body of the design code. The instance name
// declaration : (MULT18X18_inst) and/or the port declarations within the
// code : parenthesis may be changed to properly reference and
// : connect this function to the design. All inputs
// : and outputs must be connected.
// <-----Cut code below this line---->
// MULT18X18: 18 x 18 signed asynchronous multiplier
// Spartan-3
// Xilinx HDL Language Template, version 12.1
MULT18X18 MULT18X18_inst (
.P(P), // 36-bit multiplier output
.A(A), // 18-bit multiplier input
.B(B) // 18-bit multiplier input
);
// End of MULT18X18_inst instantiation
Xilinx的硬件乘法器很强大,所以心得比较多,要多写几次才能写完了。就在撰写本博文的时候,邮箱里面弹出了Xilinx发来的邮件,7系列的FPGA已经发布了;大概浏览一下,有
Artix-7 FPGA 系列 — 针对最低功耗和最低成本而优化
Kintex-7 FPGA 系列 — 针对更低功耗的经济型信号处理而优化
Virtex-7 FPGA 系列 — 为低功耗和最高系统性能而优化
Spartan系列看来就此消失,被Artix和Kintex来取代了。FPGA的发展速度真是远胜于摩尔定律啊!
附件大小
Biao_1_Cheng_Fa_Qi_Yuan_Yu_.jpg
34.49 KB
Tu_1_Spartan6De_Ying_Jian_Cheng_Fa_Qi_.JPG
24.46 KB
Tu_2_Spartan3De_Ying_Jian_Cheng_Fa_Qi_.JPG
7.46 KB
Tu_3_Qian_Ru_Shi_Cheng_Fa_Qi_Shi_Li_.jpg
6.27 KB
Tu_4_3535You_Fu_Hao_Cheng_Fa_Qi_.jpg
33.31 KB
Tu_5_Cheng_Fa_Qi_Yuan_Yu_.jpg
13.96 KB
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
嵌入式技术
测试测量
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议