版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前笔者常说的“建模从写完一本大长篇的笔记以后(VerilogHDL那些事儿低级建模中的“步骤i”除了“仿顺序操作的概和时序连上什么解开疑问之外,自然而然和“硬件乘法器”有关...器(虽然VerilogHDL语言也可以描述由组合逻辑建立而成的乘法器。在浏览鸟文之际,笔者晓得“硬件乘法器”都是跟集成电路有莫大的关系,显然这些信息不是笔者所要的,但是里边所涉及的硬件算法器的理论和原理都给笔者打开眼界。使用集成电路建立的硬件乘法器,在许多方面都比logHDL语言描述的硬件乘法器来得强。...话说在寻找资料之际,笔者不得不感谢那些无私的博客和博文,国内那些打着“专业”的,许多文章的内容都是要吐不吐的,也苦,哎!真是没有一个有用。果然还是百科,鸟文最情切。akuei225-11-2010前 第一章整数乘法 整数的概 传统乘法的概 实验一:传统乘法 传统乘法器的改 实验二:传统乘法器改 补码君存在的意 BOOTH算法乘法 实验三:传统乘法器改 笔者情有独钟的步骤 Booth算法乘法器的改 实验四:Booth算法乘法器改 LUT乘法 实验五:基于Quartersquare的查表乘法 ModifiedBooth算法乘法 实验六:ModifiedBooth乘法 1.10ModifiedBooth乘法器· 实验七:ModifiedBooth乘法器· 总 整数在IEEE的规定上有,短整数shortinteger,中整数integer和长整数longinteger,它们之间的关系如下:整字节空取值范短整一个字-127~中整两个字长整 在这里笔者以短整数为笔记短整数的最是符号位,符号位的正负表示了该值是“正还是负。正值的表示方+127+127+4-127亦即-4亦即,时的笔者曾经这个东西头疼过-4+4 // // //1A8'b0111_1111(+127)和B=8'b1000_0001(-127)。当在进行判断一个短整数是正值还是负值的时候,可以这样表示ififA[7] AifB[7] B是负在事实的事实上。知道短整数28,亦即取值范围是0~255,但是符号位的出现吃掉了最,所以造成由28的取值范围变成27=0~171。不是负值或者0值。而且它的能力也不可忽视,它划分了正值和负值的边界,它就是 划 8'b1000_00008'b1000_0000之后是负值。如果读者硬是要说8'b1000_00000”,笔记也无话可说...... // // //1笔者还记得笔者在上小学三年级的时候,老师在黑板上写上3x412的数学公式迷糊了头脑。后来老师解释道:"3粒苹果重复加上4次等于12粒苹果",小时的笔者顿时然大悟!34=-1。大伙们都明白那是整数,但是初中的念纯在,后来老师解释道:“欠小黄4粒苹果,后来还了小黄1粒苹果,结果还欠小黄一粒苹果”,初中的笔者又然大悟。一段时间说不出话来。好一段时间笔者都是自己在嘀咕....33x4=-3x4=-3x-4=--3x-4=3412粒苹果"3412粒苹果"4312""@#¥%#¥*!%……"(嘀咕中...)乘法的门儿,考试还常常满江红,真的悲剧的初衷时代......B4;AxBA要重复加四然而在乘法中“负值正值的关系”就是“异或AB结正正正负负负负正AAxB=C;3x4=12;-3x4=-3x-4=--3x-4=从上面的内容看来,无论A值和B值是什么样的“正值和负值的关系结果C都是一那么可以换一个想法,“在作乘法的时候只是只要对正值进行操作。然而“负值和正值的结果”用“异或”关系来判断...”,实验一:传统的乘法器该乘法器的大致操(一)在初始化之际,取乘数和被乘数的正负关系,然后取被乘数和乘数的正值。(二)每一次累加操作,递减一次乘数。直到乘数的值为零,表示操作结束。(三)输出结果根据正负关3~11Start_SigDone_Sig是仿顺序操作的标志性结构,不明白的去看笔者之前写的笔记。MultiplicandMultiplier(被乘数和乘数),都是8位位宽,所以输出Product16位位宽。第16~21行是该模块所使用的寄存器iMcandMultiplicand的正值,Mer用来暂存Multiplier的正值,Temp寄存器是操作空间。然而isNeg标志寄存器是用来寄存Multiplicand和Multiplier之间的正负关系。0(36~45行)39行isNeg寄存“乘数和被乘数之间的正负40行,McandMultiplicand的正值,该行表示:如果被乘数的符号位是1的话,就将负值转换为正值,然后Mcand寄存该值,否则Mcand直接寄存Multiplicand41行是用来寄存Multiplier40行很相识。寄存就递减(49行Mer0(48行2~3是62行,Product输出信号isNeg寄存器作决定isNeg1,么Temp的结果从负值转换为正值。否则直接输出Temp的值。第39行以下和普通的仿顺序操作的写法一样,不明白的话请看笔者以往写过的笔记。步骤0~3,会输入不同的乘数和被乘数来激励multiplier_module.v。仿真结果实验说明实验结论体的原因在下一章节解释......VerilogHDL语言所描述的乘法器的消耗是以“时钟”作为时间单位。反之,组合逻辑所建立的乘法器是以“广播时间”作为时间单位。说简单点就是,VerilogHDL语言所假设A=10,B= AxB,那么时钟的消耗至少需要20个,因为A值需要累加次才能得到结果。到底有没有什么办法,改进这个缺点呢?A(B)=B(A)。如果以实验一的乘法器作为基础,那么A(B)和B(A)所消耗的时间就不一样了。所以可以这样改进:如果被乘数小于乘数,那么被乘数和乘数互换。{{Multiplier,Multiplicand}=Multiplicand<Multiplier?{Multiplicand,Multiplier}{Multiplier,Multiplicand举个例子:Multiplicand2,Multiplicand1021010实验二:和实验一相比,在进行累加操作之间,多了一个被乘数和乘数比较的步骤。(一)在初始化之际,取乘数和被乘数的正负关系,然后取被乘数和乘数的正值。(二)乘数和被乘数比较,如果被乘数小于乘数,结果乘数和被乘数互换。(三)每一次累加操作,递减一次乘数。直到乘数的值为零,表示操作结束。(四)输出结果根据正负关和实验一先比,添加了一个比较的步骤 行仿真结果.vt在仿真的结果上,10x22x10实验说明与实验一的乘法器比较,关于时钟的消耗多少都有改进。实验结论127x127的乘数和被乘数,咋也看不出什么优化......过生活的大反转,看到了自己存在意义,有的人则...当然补码也有存在的意 -3 -38-30011=>110181000相加就会得到5,亦即0101。至于溢出的最可以无视掉。 -3 -2 -5其实,如QuartusII综合器,当使用“-”算术操作符的时候,其实就AA=B=ABA~B1'b1在实际的操作中,综合器都会如上优化。:Booth常常撞到许多稀奇古怪的位操作乘法器。但是有一种位操作乘法器,吸引了笔者的眼球,它就是Booth算法乘法器。实际上Booth算法是一种“加码”乘法运算。Booth算法的概念也很简单,先从数学的角度去理解看看B[-加码000(无操作011(+被乘数101(-被乘数110(无操作B[-1]是什么?先假设B2然而B的最低位的右边后一负一位那就是B[-1]0010 //LSB右边出现的就是-1 2,那么乘数2的加码过程会是如下。一开始的时候在乘数2的“负一位”加上一个默认00010先判断[0:-1],结果是2'b00,表示“0”亦即没0010判断[2:1],结果是2'b01,表示“1”亦即“-被乘数”操0010判断[1:0],结果是2'b10,表示“1”亦即“+被乘数”操0010判断[3:2],结果是2'b00,表示“0”亦即没有0010举个例子,被乘数为 乘数为2,0010;结果会是什么AB-乘数加01(-10操作的结果 从数学的角度看来,确实Booth算法是麻烦的存在,但是在位操作的角度来看就不是这么一回事。实际上在千奇百怪的位操作乘法中,Booth算法其中可以容纳“补码”亦即B[-加码00无操作01+被乘数,右10-被乘数,右11无操作Booth算法。Booth算法在位操作的时候,它使用一个很有个性的空间,就是P空间。A70111)B2(0010)n4P空间的容量是nx2+1,亦即9位。________ //P空间 那么P空间如何实现乘法的位操作呢?-1被乘数P空间,P=00000000P[4..1]P=00000010判断P[1:0],是2'b00亦即“无操作P=00000010判断P[8],如果是逻辑0右移一位补0,反之补1P=00000001判断P[1:0],是2'b10亦即“-被乘数P=00000001P空间的[8..5]AP=00000001 P=10010001判断P[8],如果是逻辑0右移一位,补0,反P=11001000判断P[1:0],是2'b01亦即“+被乘数P=11001000P空间的[8..5]Ap=11001000 P=001110001无视 溢判断P[8],如果是逻辑0右移一位补0,反之补P=00011100判断P[1:0],是2'b00亦即“无操作P=00011100判断P[8],如果是逻辑0右移一位,补0,反P=00001110P空间的[8..1]P=00001110从上面的操作看来,由于乘数和被乘数均为n位所以“判断P[1:0],后操作,之后移位”实验三:Booth
如左边的循环图。A为被乘数,A为乘数n为乘数和被乘数的位宽,P为操作空间。一开始P空间的位会填入B。然后进P[1:0]的判导致P空间右移一次,至于右移过后的最是补0还是补1,是由当时P[8]说了算。当循环nP[8:1]实验中建Booth算法乘法器大致的步骤正如1.5章节所描述的13~15行是仿真的输出(SSimulationQOutput20~25行定义了该模块所使用的寄存器。aA值,s-1(A)的值,p寄存器是P空间。输入AB8位位宽p寄存器17位位宽。至X寄存器是用来表示n位,用来指示n次循环。步骤0(40~41行初始化了a,s寄存器。p[8:1]填入B值,亦即乘数,其余的01(43~51行)p[1:0]2(53~55行)是执行右移一位,0还是1,完全取决p[16]。步1~2会重复交替执行,直到X的值达8次,步骤3~(57~61行是用来产生完成信号。第68行输出信号product是由p空间的[16..1]来驱动。第72~74 在仿真中,从步骤0~3(59~73行,激励了不同A和B的值(被乘和数乘数仿真结果P空间的详细操作过程,自己看吧,界面有限的关系。从仿真结果上可以看到,4-127x-127的情形,不像传统乘空间的[Width*2:Width+1]是用来执行和被乘数A的操作)实验结论按常理8位的乘数和被操作会是使8个时钟而3的乘法器,需要先操作后移位的关系,所以多出8个时钟的消耗......在笔者初学VerilogHDLVerilogHDL语言和时序的关系,吃了不少苦头。世界就是很巧妙,脑子里就忽然间冒出步骤i。步骤i有关《VerilogHDL那些事儿》那本笔记,虽然笔者的实例都和“它”有关。但是在笔记中,笔者只是微微的带过“步骤i...iVerilogHDL的任务。步骤i的用法很简单,从概念上和“顺序操i,低级建模里面有一个准则,就是“一个模块一个i好比这个准则的支持者。i0开始,表示了这个模块开始工作,直到i被清理,这也表示了这个模块已经结束工作。或者可以这样说“一个模块不会出现两个步骤i。具体上,步骤iVerilogHDL语言里的C语言里的“步骤”是不一样。C语言里的“步骤”就好比“把大象放进冰如上面的示意图所示,在这个时间点里所发生的“决定”会产生不一样的未来。然而在这个时间点里“可以允许不同的决定在这一刻存在”。举一个例子:A的初值是4,B的0。case(case(ibeginA<=A+2'd2;B<=B+2'd3;i<=i+1'b1;if(A>3)beginB<=A;A=0;i<=i+1'b1;endelseifi<=i+1'b1;咋看是一个简单的代码,但是你知道里边包含的吗i=0的时候,A2,B3在i=1的时候,如果A大于 就B寄存A的值将A清零在时间点1的时候,这个模块判断A是否大于3。那么,问题来了“这个模块是以什么A大于310上图完全将上述的内容表达了出来。在这里笔者有一个很在意的问题,那就是"<=" 者初学的时候的,完全不知道它是虾米... 如果换做时间点的概念来说“<=”的操作符,表示了“在这个时间点下决定”的赋值操作符。与“=”赋值操作符不一样,它是没有时间点的概念的赋值操作符。所以 alwaysposedgeCLK的人生,下错了决定只要知错,吸取教训还有从来的机会。但是模块下错了决定,就影响它的一生,所以在编辑的时候要特别,不然会可能因的疏忽,导致了这个模块的一生悲剧。,就连三思的机会也没有吗?这是一个很好的问题......A,B和Ccase(case(ibeginA<=3;B<=4;C<=0;i<=i+1'b1;C<=A+if(C>0)beginA<=0;B<=0;endelsebeginA<=1;B<=1;endi<=i+从上面的代码,可以知道。在时间点0,该模块决定了A等于3,B等于4,C等01,1C的1过去的C值,还是在这一个瞬间A+B所产生的值?”。时间点过去的值,作为当前时间点下决定的参考......(写到这里,笔者流泪了实际上“=”不是不可以在always@(posedgeCLK...)里出现,只不过它比较case(case(ibeginA<=3;B<=4;C<=0;i<=i+1'b1;C=A+if(C>0)beginA<=0;B<=0;endelsebeginA<=1;B<=1;endi<=i+1CAB如果把步骤i按照“时间点”的概念,结果会是如上图。在时间点1,“=”造成了一个C在某种程度上,它的存在会破坏和谐,如果没有步骤i的控制,它很容易暴走。笔者在设计模块中,除非出现“不得已”的情况,否则笔者在always@(posedgeCLK...)区Booth在实验三中所建立的Booth算法乘法器,要完成一次乘法计算,至少要消耗16个时钟,8Booth1.6iBooth乘法器:casecase(i0:...if(p[1:0]==2'b01)p<={p[16],p[16:9]+a,p[8:1]elseif(p[1:0]==2'b10)p<={p[16],p[16:9]+s,elsep<={p[16],i<=i+从上面的代码,读者能看出什么破绽吗?尝试回忆Booth算法的流程图,先判p[1:0]的操作然后右移一位最补0还是补1,是取决与经p[1:0]操作之后的p[16]那么问题来了,从上面的代码看来pp[16p[16:9]+ap[8:1]};p[16]是以当前时间点的过去值作为基础,而不是p[1:0]操作过后的值,case(case(i0:...Diff1=p[16:9]+ Diff2=p[16:9]if(p[1:0]==2'b01)p<={Diff1[7],Diff1,elseif(p[1:0]==2'b10)p<={Diff2[7],Diff2,p[8:1]};elsep<={p[16],p[16:1]};i<=i+1~8Diff1p[16:9]+a的结果,反之Diff2寄存p[16:9]+sp[1:0]pDiff1,Diff2或者其他。和第一段的代码不同,第二段代码的p输出值是一致的。在这里有一个重点是,Diff1Diff2没有使用“<=”而是使用”,换一句话说,Diff1Diff2结果的产实验四:Booth基于实验三的Booth168个Booth55~671~8的循环操作。不再使用X855~67行,这样的写法有一个好处,就是可p的值输出一致,因此可以减少8个时钟。仿真结果.vt从仿真结果看来,一次的乘法操作只消耗8个时钟而已(步骤0初始化,和步骤完成信号产生除外。现在把上面的仿真结果切成一块一块的来看00000000100000010i0,亦即步骤0。步骤0之后就是初始化的结果。S是取反过后的a值,并且填充在p空间的[8:1]00000000100000010值右边的上升沿,亦即步骤1。此时:Diff1寄存过去的p[16:9]a,亦即0000000010000001,结果为10000001。Diff2寄存过去的p[16:9]+s,亦即00000000+01111111,011111111p[1:0]2'b10,所以p值的未来是Diff2[7Diff2p过去[8:1]},亦0011111111000000100111111110000001值右边的上升沿,亦即步骤2。此时:Diff1寄存过去的p[16:9a0011111110000001,结果为11000000。Diff2寄存过去的p[16:9]+s,亦即00111111+01111111,结果为10111110。经步2的“决定p[1:0]是2'b01,所以p值的未来是Diff1[7Diff1p过去[8:1]},亦111000000110000003。此时:Diff1寄存过去的p[16:9]a,亦即1110000010000001,结果01100001。Diff2寄存过去的p[16:9]+s,亦即11100000+01111111,结果为01011111。经步3的p[1:0]是2'b00,所以p值的未来是p过去[16]p过去[16:1]},亦111100000011000004。此时:Diff1寄存过去的p[16:9a,亦即1111000010000001,结果为01110001。Diff2寄存过去的p[16:9]+s,亦即11110000+01111111,结果为01101111。经步4的p[1:0]是2'b00,所以p值的未来是p过去[16]p过去[16:1]},亦111110000001100005。此时:Diff1寄存过去的p[16:9]a,亦即1111100010000001,结果01111001。Diff2寄存过去的p[16:9]s,亦即11111000+01111111,结果为01110111。经步5的p[1:0]是2'b00,所以p值的未来是p过去[16]p过去[16:1]},亦11111100000011000值右边的上升沿,亦即步骤6。此时:Diff1寄存过去的p[16:9a1111110010000001,结果为01111101。Diff2寄存过去p[16:9]s,亦即11111100+01111111,结果为01111011。经步6的p[1:0]是2'b00,所以p值的未来是p过去[16]p过去[16:1]},亦1111111000000110007。此时:Diff1寄存过去的p[16:9a1111111010000001,结果01111111。Diff2寄存过去的p[16:9]+s,亦即11111110+01111111,结果为01111101。经步7的p[1:0]是2'b00,所以p值的未来是p过去[16]p过去[16:1]},亦1111111100000011011111111000000110值右边的上升沿,亦即步骤8。此时:Diff1寄存过去的p[16:9]a,亦即1111111110000001,结果为10000000。Diff2寄存过去的p[16:9]+s,亦即11111111+01111111,结果为01111110。经步8的“决定p[1:0]是2'b10,所以p值的未来是{Diff2[7Diff2,p过去[8:1]},亦p[16:1],001111110000000116129实验说明i,在实验四中可能会产生许多思考逻辑上的。换一个想法,如果以“时间点”的概念去理解步骤i的话,从仿真图看来(再唠叨的补充一下,p空间的Width:1]Bp空间的[Width*2:Width+1]是用来执行和被乘数A的操作)实验结论LUT从1.8章节以前的乘法器都可以归纳为“慢速乘法器当然它们不是真正意义上的慢,只 而已。LUT乘法器,又成为查表乘法器。用傻瓜的 16x16012345678900000000000010123456789830369404850560670780890900假设AxB4位,A10,B220。查表乘法器之所以被称为快速乘法器,就是上面的原因(实际上许多硬件乘法器都是使用查表的方式)。AxB8256x256不知道读者有没有听过Quartersquareabab2/4ab)2/4ab2/4ab2/4,经过幂运算后,得到的结假设ab8127127)24127127)24可以得到一个结论“(a+b)2/4或者(a-b)2/4使用同样的(C)2/4那么建立一个C=0~255,并且内容是(C)2/4的查表最大值相加仅有-127+-127=-254或者127+127=254。那么问题来了,-127~127-254~254呢?这里就涉及了“不同容量空间的相互赋值。假设C是9位位宽的不正规整数AB8CABC=A+ 等价 C={A[7],A}+{B[7],BA=127(0111 A=127(00111B=127(0111 B=127(00111等价 0111 0111
00111 00111 01111 01111A=-127(1000B=-127(1000 1000 1000
等价
A=-127(11000B=-127(11000 10000 10000接下来,来看一看下面的代码regregcase(iI1<={A[7],A}+{B[7],B//C=A+I2<={A[7],A}+{~B[7],(~B+1'b1)}; //C=A-B;i<=i+1'b1; //I1<=I1[8]?(~I1+1'b1):I2<=I2[8]?(~I2+1'b1):I2;i<=i+1'b1;I1I290,I1CABI2假设A=-1(11111111B=-3(11111101),0的操作:I1I11111111111111111011111111004I113I21111111110000000110000000102)I213)131I1I2I1411111100),I22000000010),1I1I1=000000011+1=00000I2=00000为什么在步骤1要特意将负值转换为正值呢?笔者面已经无论是(-C)2还是(C)2取得的结果都是一至。为了两者I1和I2共用相同的查表这是必须的步骤。I1和I2Quartersquare(|I1|2/4)-(|I2|2/4 实验五:基于Quartersquare0~255(C)2/4lut_module.v,因为用QuartusIIrom仿真不给力,很别扭.vI1AB,I2AB,然后I1I2都正值值,将I1和I2送至各自的查表,然后将得出的结果Q1_Sig(I1的结果)和Q2_Sig(I2的结果),执行相减。实际上是补码形式的相加,Q1_Sig~Q2_Sig1'b1),以致符合Quartersquare的公式:((ab2/4ab)2/4|I1|)2/4|I2|)2/4]第15~18行是仿真的输出。第26~27行建立Q1_Sig和Q2_Sig,实际上这两个线型数据是U1(81~87行)和U2(91~97行)实例前申明的, 行)是I1和I22(63~64行)是延迟一个时钟,给予足够的时间从lut_module.v3(66~67行Quartersquare公式操作的最后一步。89~99行是lut_module.v的实例化U1I1U2是给I2使用,它们的输出Q1_SigQ2_Sig。102Product输出信号由Data寄存器驱动。然106~109行是仿真输出的驱动,分别有I1,I2,Q1_Sig和Q2_Sig的仿真输出。.vt文件的写法和之前的实验都一样,如果真的不知道笔者在写什么,就得好好看笔者仿真结果4个时钟的而已。比起改进的Booth算法减少了一半的时钟实验结论?传统查表的乘法器都有一个僵局,假设A(B),那么其中一个变量需要是“恒数”,否则建立查表的工作是非常的劳动。Quartersquare公式的出现把这个僵局给打破。感谢前人的努力吧,后人才能乘凉......ModifiedBooth事先modifiedbooth算法和改进的booth算法乘法器(实验四)是没有任何关系的。如字面上的意思modifiedbooth算法是booth算法的升级版。稍微来回味一下booth算法。假设B是4位位宽的乘数,那么booth算对B[0:-1],B[1:0],B[2:1],B[3:2]加码,而使得乘法运算得到简化。booth算法有典型数学做法,也有位操作的做法。Modifiedboothbooth4Bn/2乘法运算的优化。再假设B是4微微款的倍数,那么modifiedbooth算对B[1:-1],B[3:1]如果站在位操作的B[-操作000无操作001+被乘数,右010+被乘数,右011右移一位,+被乘数100右移一位,-被乘数,右移一位101-被乘数,右移110-被乘数,右移111无操作ModifiedboothpA,和被乘数B4pnx219位。乘数A7(0111),被乘数B20010)+AAA=0111,A=P0,然后P空间的[4..1填入乘数亦即B。P=00000000P=00000010先判断p[2:0]亦即“右移一位,-被乘数,右移一P=00000010右移P=00000001p[8:5]加上P=00000001 P=10010001右移p=11001000判断p[2:0]亦即“+被乘数,右移p=11001000p[8:5]加上P=11001000 P=00111000右移P=00001110最终取出p[8:1]14P=000011104说实话modifiedboothp[2:0]操作都有“不同的步骤次这也使得它非常不适合作为运实验六:ModifiedBooth这个模块大致的操作如上述的流程15~17行是仿真输出。43~94行是该模块的主功能。在步骤0(45~51行)取得被乘数Aa-1(被乘数A)并且寄存在sp空间的同时,将乘数B填入p[8:1]。(由于被乘数AB8pnx2+19。我知道我很长[Width*2:Width+1]是用来执行和被乘数A的操作。12(53~62行)p[2:0]3'b000|111|001|010|101|110的操作。相反modifiedboothp[2:0]3'b0113'b100所执行的步骤次数是不一样(56~57行。3~5(66~73行)p[2:0]3'b011的操作(56行6~8(77~84行)针对p[2:0]3'b100的操作(57行。9~10产生完成102行的product输出信号是由p[16:1]来驱a,s和p这是激励文件,在写这个文件的时候,笔者心情很糟糕,所以在步骤5加入了类似嵌套循环的东西。其他的和之前的.vt文件都是大同小异~自己吧仿真结果2(4)127(-127)实验结论Modifiedbooth耗......ModifiedBooth乘法器·如果要把Modified 乘法器别扭的性格去掉,不得站在“数学的角度”去modifiedboothmodifiedbooth针对乘数B操作000001+010+011+2(被乘数100-2(被乘数101-被110-被111A=7(0111,B=2(0010在这里须注意一下当B[1:-1]等于011或者100的时候,4位的被乘数A的取-7~7然而,+2(被乘数)2(被乘数)A的最大值突破取值范围。所以需要从4位位宽的空间向更大的位位宽哦空间转换。这里就选择向8位位BB[1:-1]3'b1002(被乘数)B[3:1]3'b100+AAB01
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版跨境电商平台佣金比例调整合同3篇
- 二零二五版个人教育贷款担保合同模板3篇
- 二零二五年建筑装修帮工雇佣合同2篇
- 二零二五版寄卖合同范本:艺术品寄售代理中介服务协议2篇
- 二零二五版办公设备智能化升级改造合同5篇
- 二零二五版桥梁工程劳务分包合同模板6篇
- 二零二五版职工住房借款与社区文化活动支持合同3篇
- 二零二五年度黄牛养殖与屠宰行业购销法律法规遵守合同3篇
- 二零二五年铝艺门安装与外观设计承包合同3篇
- 二零二五年度电商代发货及品牌授权合同2篇
- 大型活动LED屏幕安全应急预案
- 舞蹈课家长会
- 2024年内蒙古包头市中考道德与法治试卷
- 湖南省长沙市2024-2025学年高二上学期期中考试地理试卷(含答案)
- 自来水质量提升技术方案
- 金色简约蛇年年终总结汇报模板
- 农用地土壤环境质量类别划分技术指南(试行)(环办土壤2017第97号)
- 反向开票政策解读课件
- 工程周工作计划
- 房地产销售任务及激励制度
- 六年级语文下册14文言文二则《学弈》课件
评论
0/150
提交评论