verilog全加器、全减器和乘法器及溢出判断

全加器

转自:https://www.cnblogs.com/SYoong/p/5917296.html

先以一位全加器为例:Xi、Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号。列表有:

  Xi    Yi   CinSumCout
00000
00110
01010
01101
10010
10101
11001
11111

    

          由左边表格可知:

                         Sum=X’Y'Cin+X'YCin'+XY'Cin'+XYCin=X'(Y⊕Cin)+X(Y⊙Cin)=X'(Y⊕Cin)+X(Y⊕Cin)'=X⊕Y⊕Cin

                              Cout=X’YCin+XYCin'+XY'Cin+XYCin=XY+(X⊕Y)Cin

                  如果取:P=X⊕Y ;   G=XY

                     那么:Sum=P⊕Cin     Cout=PCin+G

 

 

 

图中对Cout的公式进行了,即Cout'=(AB)'(PCin)'=(AB)'((A⊕B)Cin)'

 下面是全加器的门级Verilog语言描述:

module Fadd(x,y,Cin,Cout,Sum);
  input x,y,Cin;
  output Cout,Sum;
  wire a,b,c;

xor xor1(a,x,y);
xor2(Sum,a,Cin);
and and1(b,x,y);
and2(c,Cin,a);
or or1(Cout,b,c);

endmodule

 全加器的行为描述:

1 module add(x,y,Cin,Sum,Cout);
2   input   x,y,Cin;
3   output  Sum,Cin;
4   assign Sum=x^y^Cin;
5   assign Cout=x&y+(x^y)&Cin;
6 endmodule
View Code
module add_N(x,y,Cin,Cout,Sum);
  input  x,y,Cin;
  output  Sum,Cout;
  assign  {Cout,Sum}=x+y+Cin;
endmodule

利用行为级描述的Verilog全加器可以很简单的扩展成4位或者16位等全加器:

module add_4(x,y,Cin,Cout,Sum);
  input [3:0]x,y;
  input Cin;
  output [3:0]Sum;
  output  Cout;
  assign  {Cout,Sum}=x+y+Cin;
endmodule
module add_N(x,y,Cin,Cout,Sum);
  input [N-1:0]x,y;
  input  Cin;
  output [N-1:0]Sum;
  output  Cout;
  assign  {Cout,Sum}=x+y+Cin;
endmodule

 

全减器

https://blog.csdn.net/qq_43483403/article/details/103473593
https://baike.baidu.com/item/%E5%85%A8%E5%87%8F%E5%99%A8/2084280?fr=aladdin

加法溢出判断

补码加法运算溢出判断三种方法:
(1) 两个符号相同的补码数相加,如果和的符号与加数的符号相反,或两个符号相反的补码数相减,差的符号与减数的符号相同,都属于运算结果溢出。这种判别方法比较复杂,要区别加还是减两种不同运算情况,还要检查结果的符号与其中一个操作数的符号的同异,故很少使用;
(2)** 两个补码数相加减时,若最高数值位向符号位送的进位值与符号位送向更高位的进位值不相同,也是运算结果溢出。
(3) 在采用双符号位(如定点小数的模4补码)运算时,若两个符号位的得值不同(01或10)则是溢出。01表明两个正数相加,结果大于机器所能表示的最大正数,称为"上溢";10表明两个负数相加,结果小于机器所能表示的最小负数,称为"下溢";双符号位的高位符号位,不管结果溢出否,均是运算结果正确的符号位,这个结论在乘法运算过程中是很有实际意义的。请注意,在采用双符号位的方案中,在寄存器和内存储器存储数据时,只需存一位符号,双符号位仅用在加法器线路部分。 再次强调,这三种不同说法是对同一个事实的略有区别的表述,实现时用到的线路可以有所区别,但问题的实质是完全一样的。

乘法器

https
😕/blog.csdn.net/dongdongnihao_/article/details/79583425

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Verilog全减器是一种用于计算两个二进制数相减的电路。全减器的输入包括两个被减数和一个借位输入,输出为差值和借位输出。全减器的功能类似于半减器,但是它还考虑了前一位的借位情况。通过使用逻辑门和触发器来实现全减器的功能。可以使用Verilog语言进行描述和实现全减器的功能。 引用中提到的半减器原理可以被用于实现一个全减器全减器的行为描述可以用Verilog代码来***D和Bo分别表示差值和低位向被减数的借位。在行为描述的代码中,通过计算xi-bi-yi来得到D和Bo的值。 需要注意的是,全减器是数字逻辑电路的一部分,通常在数字电子学和计算机组成原理的课程中学习。与FPGA相关的知识通常涉及更广泛的领域,如数字系统设计和硬件描述语言的使用。但是,理解和学习全减器的原理和实现对于深入研究FPGA和数字系统设计都是有帮助的。 请注意,引用提到了FPGA领域的广阔性,但是并没有直接与Verilog全减器有关的内容。因此,我们只能从引用和引用中找到相关的信息来回答这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Verilog 半减器和全减器](https://blog.csdn.net/weixin_62651190/article/details/128420396)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [全减器---Verilog实现(结构描述,数据流描述,行为描述,层次结构描述)](https://blog.csdn.net/m0_58326153/article/details/127132332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值