简单加法器

需求:实现如下所示的简单加法器


要求实现简单的加法运算,并可以关闭窗口。

分析:该加法器由 文本框 --> 标签(+)--> 文本框 --> 按钮(=)--> 文本框组成,要实现上述功能,需要

(1)选择创建合适的布局管理器

(2)对文本框中的输入信息进行转换—加法需是数字的计算,而文本框中的是字符串String

(3)等号(=)按钮的操作——需设计事件监听器,对事件(相加)进行处理【可与2合并】

(4)界面的关闭操作——设计一个窗口监听器即可

处理操作

1、选择Flow布局格式

<span style="white-space:pre">	</span>Frame f = new Frame("简单加法器");
<span style="white-space:pre">	</span>f.setLayout(new FlowLayout());
2、文本框中的数据的处理以及对按钮的操作

class Count implements ActionListener{
	public void actionPerformed(ActionEvent e){
		String str1, str2;
		str1 = TestTextField.tf1.getText();
		str2 = TestTextField.tf2.getText();
		
		int num1, num2, num3;
		num1 = Integer.parseInt(str1);
		num2 = Integer.parseInt(str2);
		
		num3 = num1+num2;
		
		Integer it = new Integer(num3);
		String str3 = it.toString(num3);
		TestTextField.tf3.setText(str3);
	}
3、关闭界面

class B extends WindowAdapter{ //用来关闭窗口
	public void windowClosing(WindowEvent e){
		System.exit(-1);
	}
}
4、启动类中需要进行对象的生成、添加等一系列操作

<span style="white-space:pre">	</span>f.add(tf1);
	f.add(la);
	f.add(tf2);
	f.add(bu);
	f.add(tf3);
	
	bu.addActionListener(new Count());
		
	f.pack();
	f.addWindowListener(new B());
	f.setVisible(true);

通过上述操作,就基本上实现了一个简单的加法器。这个加法器还是很“简陋”的,没有对小数、非法输入等进行处理,健壮性不够,不过重在理解布局管理器的一些基本操作和应用。

注意:在关闭窗口操作的程序编写上卡了好久,最后发现竟然是没有把包导入,看样子上次对eclipse自动导入包的功能有些理解错了,它是在你设置了自动提示功能并采取了它的提示之后才会自动导入包的。如果输入错误,是不会导入正确的包的。另外,字符串和数字之间的转换比较重要,方法也有很多,另开一贴总结一下。
### 如何在Vivado中实现简单加法器 #### 创建新项目 启动 Vivado 后,创建一个新的工程,在设置过程中指定目标设备并选择 RTL 项目类型。 #### 编写 Verilog 或 VHDL 加法器模块 对于一位全加器的设计可以采用如下方式定义输入输出端口以及逻辑运算过程[^2]: ```verilog module full_adder ( input a, input b, input cin, // 进位输入 output sum, output cout // 进位输出 ); assign {cout,sum} = a + b + cin; endmodule ``` 此段代码展示了如何通过硬件描述语言来表达基本算术单元的功能。这里使用了Verilog中的`assign`语句直接计算两个输入信号加上进位后的结果,并将其分配给内部线网`sum`和`cout`。 #### 实现多位加法器 为了构建一个多比特宽度的加法器,可以通过实例化多个上述的一位全加器并将它们级联起来形成所需长度的数据路径。下面是一个四位二进制数相加的例子: ```verilog module four_bit_adder( input [3:0] A, B, input Cin, output [3:0] Sum, output Cout ); wire c1,c2,c3; full_adder fa_0 (.a(A[0]), .b(B[0]), .cin(Cin), .sum(Sum[0]), .cout(c1)); full_adder fa_1 (.a(A[1]), .b(B[1]), .cin(c1), .sum(Sum[1]), .cout(c2)); full_adder fa_2 (.a(A[2]), .b(B[2]), .cin(c2), .sum(Sum[2]), .cout(c3)); full_adder fa_3 (.a(A[3]), .b(B[3]), .cin(c3), .sum(Sum[3]), .cout(Cout)); endmodule ``` 这段程序说明了一个由四个独立的一位全加器组成的四比特宽的加法器结构。每个全加器接收来自前一级别的进位作为自己的低位进位输入,并传递自身的高位进位至下一级别直到最终产生总的进位输出Cout。 #### 综合与仿真验证 完成编码之后,可以在 Vivado 中运行综合工具检查是否有任何语法错误或其他潜在问题。接着编写测试平台文件来进行行为模拟以确认设计的行为是否符合预期。 #### 物理实现与下载到板卡 最后一步是在选定的目标器件上布局布线该电路,并生成相应的配置文件以便加载到实际物理芯片当中去执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值