`
chrisongs
  • 浏览: 26011 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

4位串行进位加法器 与 4位串行借位减法器

    博客分类:
  • FPGA
阅读更多
4位串行进位加法器:
  全加器的算法为:
    S = X ^ Y ^ C_in ;
   C_out = X*Y + X*C_in + Y*C_in ;
对应的verilog代码为:
module adder_4bits(A, B, C_in, S_out, C_out);
    input [3:0] A;
    input [3:0] B;
    input C_in;
    output [3:0] S_out;
    output C_out;
	 
	 reg [3:0] S_out;
	 reg C_out;
	 reg [1:0] T1, T2, T3, T0;
	 
	 task ADD;
		
		input A, B, C_in;
		output [1:0] T;
		
		reg [1:0] T;
		reg S_out, C_out;
		
		begin
			S_out = A ^ B ^ C_in;
			C_out = (A&B) | (A&C_in) | (B&C_in);
			
			T = {C_out, S_out};
		end
	 endtask

	always @(A or B or C_in) begin
		 ADD (A[0], B[0], C_in, T0);
		 ADD (A[1], B[1], T0[1], T1);
		 ADD (A[2], B[2], T1[1], T2);
		 ADD (A[3], B[3], T2[1], T3);
		 
		 S_out = {T3[0], T2[0], T1[0], T0[0]};
		 C_out = T3[1];
	end

endmodule

得到的功能仿真图为:



总结:任何n位加法器电路都可以用作减法器,方法是将减数取反,将进位输入和进位输出处理成具有相反有效电平的借位信号。
4位串行借位减法器的verilog代码如下:
module subtractor_4bits(A, B, C_in, S_out, C_out);
    input [3:0] A;
    input [3:0] B;
    input C_in;
    output [3:0] S_out;
    output C_out;
	 
	 reg [3:0] S_out;
	 reg C_out;
	 reg [1:0] T1, T2, T3, T0;
	 
	 task SUB;
		
		input A, B, C_in;
		output [1:0] T;
		
		reg B_n, C_in_n, C_out_n;
		
		reg [1:0] T;
		reg S_out, C_out;
		
		
		begin
			B_n = ~B;
			C_in_n = ~C_in;
			S_out = A ^ B_n ^ C_in_n;
			C_out = (A&B_n) | (A&C_in_n) | (B_n&C_in_n);
			C_out_n = ~C_out;
			T = {C_out_n, S_out};
		end
		

		
	 endtask

	always @(A or B or C_in) begin
		 SUB (A[0], B[0], C_in, T0);
		 SUB (A[1], B[1], T0[1], T1);
		 SUB (A[2], B[2], T1[1], T2);
		 SUB (A[3], B[3], T2[1], T3);
		 
		 S_out = {T3[0], T2[0], T1[0], T0[0]};
		 C_out = T3[1];
	end

endmodule


得到的功能仿真图为:


注意:当被减数小于减数是,得到的波形结果是以补码显示为准,这时,应借助C_out值可算出真实的负数值。
  • 大小: 5 KB
  • 大小: 5.6 KB
分享到:
评论

相关推荐

    VERILOG实现的 超前进位加减法器

    VERILOG实现的 超前进位加减法器 速度较快

    计算机组成原理 练习题与答案 本科

    四、(9分)某加法器进位链小组信号为C4C3C2C1,低位来的进位信号为C0,请 分别按下述两种方式写出C4C3C2C1的逻辑表达式。 (1)串行进位方式 (2)并行进位方式 五、(9分)一台处理机具有如下指令格式:。 6位 2...

    小学数学进位借位算法python代码

    小学数学进位借位算法python代码

    8位ALU运算器(VHDL语言)

    (1)按照实验要求设计简单ALU,能执行8种操作,分别为: 1)加、减、增1、减1等4种8位...也可以先构造4位加法器,再进一步实现8位加减运算。 注意:算术运算的两个操作数要求都是带符号数,即1位符号位和7位数据位。

    四年级数学下册动画 小数的加法和减法互动练习

    四年级数学下册动画 小数的加法和减法互动练习 .swf

    四位全加全减器

    --四位全加全减器(复用加法器) use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all;--要用信号加法,要加此句 entity AM is port( Flag:in std_logic;--1为减法 0为加法 Cin :in std_logic;--进位...

    以内借位减法讲解PPT学习教案.pptx

    以内借位减法讲解PPT学习教案.pptx

    myboothmul.zip_16位ALU_ALU有三种_Always_alu运算器设计_vhdl

    三种16位整数运算器的ALU设计方法,调用库函数74181(4位ALU),组成串行16位运算器。(用74181的正逻辑) B.调用库函数74181和74182,组成提前进位16位运算器。(用74181的正逻辑) 注意:调74181库设计,加进位是“0...

    基于FPGA的加减法

    设计带借位、进位的4位二进制减法、加法器,分别赋给A和B固定的值,然后进行加减法运算,得到正确的结果。

    1位全减器设计

    一个一位全减器的VHDL设计的程序代码 在eda设计的

    java实现小学数学100以内较难加减法

    java实现小学数学100以内较难加减法,有进位和借位,题目答案分离。

    4 位二进制计数器:使用 JK 触发器的 4 位同步计数器-matlab开发

    该计数器是使用 Simulink Extras Flip Flops Library 中的四个 JK Flip-Flops 实现的。 作为输入,有一个恒定的 Count Enable。 如果它设置为 1,则计数器将工作,否则(在 0 上)不工作。 在第 16 个时钟节拍时,将...

    汇编语言知识点总结.docx

    AF:辅助进位标志(运算结果的第3位<从右往左数4位>是否产生进位或借位) DF:方向标志 标志寄存器的第10位是DF(从右往左数第11位)。在串处理命令中,控制每次操作后源、目的寄存器ESI、EDI的调整方向:DF=0 每次...

    python 编写的音标加减学习.zip

    python编写的加法 减法 音标 幼儿 学习软件,加法和减法列式学习,掌握进位与借位,自动出题。音标提供字母音标及1-48个音标展示

    CRC_16校验的FPGA实现

    基于字节的CRC校验实现,经...加法不考虑进位,减法不考虑借位,即运算结果为亦或关系。而对于除法,商由余数首位与除数首位的模2除法运算结果确定(0/1=0,1/1=1)。在接收端,可有两种方式检验传输是否发生错误:

    [详细完整版]4单片机.txt

    AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位); F0:用户标志位,由用户自己定义; RS1、RS0:当前工作寄存器组选择位; OV:溢出标志位。有溢出时OV=1,否则OV=0; P:奇偶标志位。存于ACC中的...

    51单片机常用寄存器总结

    51单片机常用寄存器总结 程序状态寄存器PSW D7 D6 D5 D4 D3 D2 D1 D0 ...低4 位向高四位有进借位时,AC被置“1”,否则置“0”。 F0:用户标志位。 RS1、RS0:工作寄存器选择为。 RS1 RS0 寄存器组

    PTA_基础编程答案_整章.zip

    7-3 逆序的三位数 10 24732 62644 0.39 7-4 BCD解密 10 14066 23357 0.60 7-5 表格输出 5 15169 36439 0.42 7-6 混合类型数据格式化输入 5 15719 36076 0.44 7-7 12-24小时制 15 14687 51855 0.28 7-8 超速判断 10 ...

    51汇编指令

    4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器 5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器 6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器 7....

    双向循环链表来实现长整数四则运算

    需要对长整数进行存储,所以选择用链表对长整数存储,又由于存储的顺序是从左到右,而运算的顺序则是从右到左,这样位了操作方便选择循环链表,在运算过程中有进位和借位的操作,所以最终选择双向循环链表的数据结构

Global site tag (gtag.js) - Google Analytics