您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Verilog HDL的故事 之 整数乘法器
他和它的故事之VerilogHDL整数乘法器他和它的故事之VerilogHDL整数乘法器前言笔者常说的“建模很重要”!自从写完一本大长篇的笔记以后(VerilogHDL那些事儿),虽然这本笔记把低级建模(笔者的建模习惯|技巧)很好的描述一篇,但是建模以外的东西都给笔者留下许多问号。用了一段时间的思考方才看到问号大概的轮廓。这个问题就是:低级建模中的“步骤i”除了“仿顺序操作的概念以外”,它又和时序连上什么关系?这一本“整数乘法器”笔记,说是用来总结上述的问题也好,还是另一个新的学习开端也好,笔者带着如同哥伦布航海的心情编辑这本笔记。这本笔记所围绕的故事除了为了解开疑问之外,自然而然和“硬件乘法器”有关...说道硬件硬件乘法器,大众的第一印象就会联想到由组合逻辑组合的乘法器。当然这不是该笔记要讨论的东西,笔者主要的目的是由VerilogHDL语言建立的乘法器。坏话当前,由组合逻辑建立而成的乘法器的效率远远领先由VerilogHDL语言描述而成的乘法器(虽然VerilogHDL语言也可以描述由组合逻辑建立而成的乘法器)。在浏览鸟文网站之际,笔者晓得“硬件乘法器”都是跟集成电路有莫大的关系,显然这些信息不是笔者所要的,但是里边所涉及的硬件算法器的理论和原理都给笔者打开眼界。使用集成电路建立的硬件乘法器,在许多方面都比VerilogHDL语言描述的硬件乘法器来得强。话长了...话说在寻找资料之际,笔者不得不感谢那些无私的博客和博文,国内那些打着“专业”的网站,许多文章的内容都是要吐不吐的,看着也苦,哎!真是没有一个有用。果然还是维基百科,鸟文网站最情切。akuei225-11-2010上他和它的故事之VerilogHDL整数乘法器目录前言....................................................................................................................................02目录....................................................................................................................................03第一章整数乘法器........................................................................................................041.01整数的概念....................................................................................................041.02传统乘法的概念............................................................................................06实验一:传统乘法器....................................................................................071.03传统乘法器的改进........................................................................................11实验二:传统乘法器改进............................................................................111.04补码君存在的意义........................................................................................141.05BOOTH算法乘法器.........................................................................................15实验三:传统乘法器改进............................................................................171.06笔者情有独钟的步骤I................................................................................211.07BOOTH算法乘法器的改进..........................................................................25实验四:BOOTH算法乘法器改进..............................................................261.08LUT乘法器..................................................................................................30实验五:基于QUARTERSQUARE的查表乘法器.......................................331.09MODIFIEDBOOTH算法乘法器..................................................................43实验六:MODIFIEDBOOTH乘法器.............................................................441.10MODIFIEDBOOTH乘法器·改...................................................................49实验七:MODIFIEDBOOTH乘法器·改...................................................50总结....................................................................................................................................55他和它的故事之VerilogHDL整数乘法器第一章整数乘法器1.1整数的概念整数在IEEE的规定上有,短整数shortinteger,中整数integer和长整数longinteger,它们之间的关系如下:整数字节空间取值范围短整数一个字节-127~127中整数两个字节-32767~32767长整数和四个字节-2147483647~2147483647在这里笔者以短整数为笔记的主角。短整数的最高位是符号位,符号位的正负表示了该值是“正还是负”?。正值的表示方法很简单,反之负值的表示方法是以补码来表示。+127亦即8'b0111_1111;+4亦即8'b0000_0100;-127亦即8'b1000_0001;-4亦即8'b1111_1100;补码在英文又叫2ndimplementation,其实是“正值的求反又加一”的操作。(哎~年轻时的笔者曾经这个东西头疼过)。一个负值表示如-4,是由+4求反由加一后而成。8'b0000_0100;//正值48'b1111_1011;//求反8'b1111_1100;//加1,负值4那么符号位和正值,负值,补码,取值由有什么关系呢?举个例子:A=8'b0111_1111(+127)和B=8'b1000_0001(-127)。当我们在进行判断一个短整数是正值还是负值的时候,我们可以这样表示:if(!A[7])...//A是正值if(B[7])...//B是负值在事实的事实上。我们知道短整数28,亦即取值范围是0~255,但是符号位的出现吃掉了最高位,所以造成由28的取值范围变成27=0~171。他和它的故事之VerilogHDL整数乘法器你知道吗?在短整数家族里面永远存在一个幽灵成员。该成员很神秘,它不是正值,即不是负值或者0值。而且它的能力也不可忽视,它划分了正值和负值的边界,它就是8'b1000_0000。+1278'b0111_1111;划分8'b1000_0000;-1278'b1000_0001;换句话说,在8'b1000_0000之前的都是正值,然而在8'b1000_0000之后是负值。如果读者硬是要说8'b1000_0000是“负0”,笔记也无话可说......从上述的内容,我们可以知道:正值可以进行求反又加一之后成为负值。那么负值如何变成正值?同样的一个道理“负值求反又加一后,成为正值”。8'b1111_1100;//负48'b0000_0011;//求反8'b0000_0100;//加1,正4他和它的故事之VerilogHDL整数乘法器传统乘法的概念笔者还记得笔者在上小学三年级的时候,老师在黑板上写上3x4=12。笔者对这神秘的数学公式迷糊了头脑。后来老师解释道:3粒苹果重复加上4次等于12粒苹果,小时的笔者顿时恍然大悟!当笔者上了初中,老师在黑板上写上3+-4=-1。大伙们都明白那是整数,但是初中的笔者,脑袋过很迟钝。因为在现实中,初中的笔者认为没有“-3粒苹果”类似实体的概念纯在,后来老师解释道:“小明欠小黄4粒苹果,后来小明还了小黄1粒苹果,结果小明还欠小黄一粒苹果”,初中的笔者又恍然大悟。又在初中,当老师又在黑板上写上如下的内容。那时候的笔者,嘴巴长得大大,有好一段时间说不出话来。好一段时间笔者都是自己在嘀咕....3x4=12;3粒苹果重复叠加4次,等于12粒苹果-3x4=-12;欠3粒苹果,重复欠4次,等于欠12粒苹果3x-4=-12;欠4粒苹果,重复欠3次,等于欠12粒苹果-3x-4=12;@#¥%#¥*!%……(嘀咕中...)读者们不要笑,上述的故事确实是笔者的真实故事。那时候的笔者,真的拿不到整数的乘法的门儿,考试还常常满江红,真的悲剧的初衷时代......在传统的概念上乘法等价于“重复几次”。打个比方:B=4;AxB亦即A要重复加四次才能得到答案。然而在乘法中“负值正值的关系”就是“异或的关系”。A值B值结果正(0)正(0)正(0)正(0)负(1)负(1)负(1)正(0)负(1)负(1)负(1)正(0)AxB=C;3x4=12;-3x4=-12;3x-4=-12;-3x-4=12;从上面的内容看来,无论A值和B值是什么样的“正值和负值的关系”,结果C都是一样。他和它的故事之VerilogHDL整数乘法器那么我们可以换一个想法:“在作乘法的时候只是我们只要对正值进行操作。然而“负值和正值的结果”,我们用“异或”关系来判断...”实验一:传统的乘法器该乘法器的大致操作如下:(一)在初始化之际,取乘数和被乘数的正负关系,然后取被乘数和乘数的正值。(二)每一次累加操作,递减一次乘数。直到乘数的值为零,表示操作结束。(三)输出结果根据正负关系取得。mult
本文标题:Verilog HDL的故事 之 整数乘法器
链接地址:https://www.777doc.com/doc-5471767 .html