湘潭大学计算机原理 实验一 算术逻辑单元ALU实验报告

合集下载

ALU实验报告

ALU实验报告

算术逻辑部件ALU实验报告一、实验目的(1)熟悉硬件描述语言及开发环境,了解硬件系统开发的基本过程。

(2)掌握 ALU基本设计方法和简单运算器的数据传送通路。

(3)验证 ALU的功能。

二、实验环境( 1)硬件环境:安装有 Windows7 或以上操作系统的PC,THINPAD教学计算机。

( 2)软件开发: FPGA开发工具软件 Xilinx ISE 12.3或以上。

三、实验内容(1)根据实验原理中的要求,用 VHDL语言实现一个简单的 ALU。

(2)在教学计算机 THINPAD上验证实现的 ALU的功能。

四、实验原理算术逻辑部件 ALU的主要功能是对二进制数据进行定点算术运算、逻辑运算和各种移位操作等。

算术运算包括定点加减乘除运算,逻辑运算主要用逻辑与、逻辑或、逻辑异或和逻辑非等操作。

ALU通常有两个数据输入端A 和B 输出操作数,一个数据输出端Y 以及标志位输出结果,通过输入操作码op 来确定所要进行的操作,本实验通过实现一个状态机,根据状态机状态的变化来输人操作数及操作码,并最终实现不同的运算,将结果和标志位呈现出来。

本实验中的 ALU要求实现基本的算术运算、逻辑运算、移位运算等,具体功能如下:操作码功能描述ADD A+B加法SUB A-B减法AND A and B与OR A or B或XOR A xor B异或NOT not A取非SLL A sll B逻辑左移 B 位SRL A srl B逻辑右移 B 位SRA A sra B算术右移 B 位ROL A rol B循环左移 B 位ALU的输入数据为 16 位,操作码 op 为 4 位,算术运算时数据用补码表示。

五、实验步骤本实验通过 VHDL语言实现一个比较简单的ALU模块。

(1)用 VHDL语言编写 ALU 功能代码,并用状态机对其进行控制,使其完成实验要求的操作。

操作码和操作数的输入用微型开关 SW0~SW15,计算结果的输出用数字机上的 LED灯来展示。

ALU实验报告

ALU实验报告

算术逻辑单元实验报告一、实验目的1、掌握运算器的工作原理。

2、验证运算器的功能。

二、实验原理算术逻辑单元的主要功能是对二进制数据进行定点算术运算、逻辑运算和各种移位操作。

算术运算包括定点加减乘除运算;逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作。

ALU通常有两个数据输入端A和B,一个数据输出端Y 以及标志位等。

三、实验要求1、实验设计目标设计一个16位算术逻辑单元,满足以下要求。

(1)16位算术逻辑单元能够进行下列运算:加法、减法、加1、减1、与、或、非和传送。

用3位运算操作码OP[2..0]进行运算,控制方式如下表所示。

(2)设立两个标志寄存器Z和C。

当复位信号reset为低电平时,将这两个标志寄存器清零。

当运算结束后,在时钟clk的上升沿改变标志寄存器Z和C的值。

运算结果改变标志寄存器C、Z的情况如下:加法、减法、加1、减1运算改变Z、C;与、或、非运算改变Z,C保不变;传送操作保持Z、C不变。

因此在运算结束Z、C需要两个D触发器保存。

(3)为了保存操作数A和B,设计两个16位寄存器A和B。

当寄存器选择信号sel=0时,如果允许写信号write=1.,则在诗中clk的上升沿将数据输入dinput送入A 寄存器;当寄存器选择信号sel=1时,如果允许写信号write=1.,则在诗中clk的上升沿将数据输入dinput送入B寄存器。

(4)算术逻辑单元用一个设计实体完成。

2.顶层设计实体的引脚要求(1)clk对应试验台上的时钟(单脉冲)。

(2)reset对应实验台上的CPU复位信号CPU-RST。

(3)数据输入dinput对应试验台开关SD15~SD0。

(4)允许写信号write对应试验台开关SA5.(5)OP[2..0]对应试验台开关SA2~SA0.(6)寄存器选择信号sel对应试验台开关SA4.(7)16为运算结果result对应实验台上的指示灯A15~A0.(8)Z、C标志位对应试验台上的Z、C指示灯。

计算机组成原理实验报告_32位ALU设计实验

计算机组成原理实验报告_32位ALU设计实验

实验三32位ALU设计实验一、实验目的学生理解算术逻辑运算单元(ALU)的基本构成,掌握Logisim 中各种运算组件的使用方法,熟悉多路选择器的使用,能利用前述实验完成的32位加法器、Logisim 中的运算组件构造指定规格的ALU 单元。

二、实验原理、内容与步骤实验原理、实验内容参考:1、32位加法功能的原理与设计1)设计原理1,被加数A(32位),2,被加数B(32位),3,前一位的进位CIN(1位),4,此位二数相加的和S(32位),5,此位二数相加产生的进位COUT(1位)。

要实现32位的二进制加法,一种自然的想法就是将1位的二进制加法重复32次(即逐位进位加法器)。

这样做无疑是可行且易行的,但由于每一位的CIN都是由前一位的COUT提供的,所以第2位必须在第1位计算出结果后,才能开始计算;第3位必须在第2位计算出结果后,才能开始计算,等等。

而最后的第32位必须在前31位全部计算出结果后,才能开始计算。

这样的方法,使得实现32位的二进制加法所需的时间是实现1位的二进制加法的时间的32倍。

2)电路设计32位加法功能2、32位减法功能的原理与实现1)变减法为加法的原理1.在Y引脚处使用求补器(32位),即可变减法为加法2.用构造好的32位加法器。

Y各位取反,C0取1,即可达到减法变加法。

无符号数的减法溢出,带加减功能的ALU的进位取反后表示,有符号数的减法溢出,仍然用最高位和符号位是否相等来判断2)电路设计32位减法功能3、加减溢出检测的设计(不考虑乘除法)1)有符号数溢出的设计有符号数溢出的设计2)无符号数溢出的设计无符号数溢出的设计4、移位的原理与设计1)逻辑移位逻辑移位2)算术移位算术移位5、逻辑运算功能的原理与设计2)与、或、异或、或非逻辑6、大于、等于、小于功能设计大于、等于、小于功能设计7、AluOP的控制原理与设计1)原理:AluOP的控制原理与设计8、总电路设计图算术逻辑运算单元ALU三、实验结论及分析(实验完成功能情况、存在问题分析或改进思路、自己的心得体会等。

计算机组成原理第一次实验

计算机组成原理第一次实验
F ( A B )加AB 加 1
FB F AB F 1 F A B F A B FA
F AB
F A加A
*
F AB减1
F A加A加1
F A B)加A 加 1 ( F A B )加A 加 1 (
F A B)加A ( F A B )加A (
2
网络工程系·2009 年编制
实验仿真:
管脚配置:
3
网络工程系·2009 年编制
ALU 实验数据表:
Hale Waihona Puke 选择端 M=H S3 S2 S1 S0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 逻辑功能
FB F A B F AB F AB
F A B
F ( A B) 加 AB
F A减B
F ( A B) 加 AB +1
F A减B减1
F ( A B )减1
F A B
F A加AB F A加B F A B )加AB (
F A加AB 加 1 F A加B 加 1
《计算机组成原理》课程实验报告
实验名称 姓 名
算术逻辑单元(ALU)
实验序号 级 学 成 号 绩
1
系院专业
网络工程 指导教师

实验日期
一、实验目的 1、认识算术逻辑单元(ALU)是计算机的核心部件之一,它能执行加法和减法等算术运算, 也能执行“与”“或”“非”等逻辑运算。 、 、 2、了解算术逻辑运算的结构组成和工作原理。 3、了解运算器的数据传输通路; 4、验证运算器的组合功能; 5、掌握算术逻辑运算加、减工作原理; 6、验证实验台运算的 8 位加、减、与、直通功能;5、按给定数据,完成几种指定的算术和 逻辑运算。 二、实验内容与要求 1、设计 ALU 元件。在 Quartus II 环境下,用文本输入编辑器 Text Editor 输入 ALU181.VHD 算 术逻辑单元文件,编译 VHDL 文件,并将 ALU181.VHD 文件(例 4-1)制作成一个可调用的原理图 元件。 2、以原理图方式建立顶层文件工程。选择图形方式。根据图 4-50 输入实验电路图,从 Quartus II 的基本元件库中将各元件调入图形编辑窗口、连线,添加输入输出引脚。 将所设计的原理图图形文件 ALU.bdf 保存到原先建立的文件夹中, 将当前文件设置成工程文件, 以后的操作就都是对当前工程文件进行的。 3、器件选择。选择 Cyclone 系列,在 Devices 中选择器件 EP1C6QC240C8。编译,引脚锁定, 再编译。引脚锁定后需要再次进行编译,才能将锁定信息确定下来,同时生成芯片编程/配置所需要 的各种文件。 4、 芯片编程 Programming (也可以直接选择光盘中的示例) 打开编程窗口。 。 将配置文件 ALU.sof 下载进 GW48 系列现代计算机组成原理系统中的 FPGA 中。 5、选择实验系统的电路模式是 NO.0,验证 ALU 的运算器的算术运算和逻辑运算功能。根据表 4-1,用按键输入数据 A[7..0]和 B[7..0],并设置 S[3..0]、M、CN,验证 ALU 运算器的算术运算和逻 辑运算功能,记录实验数据。 实验原理图:

计算机组成原理实验一实验报告

计算机组成原理实验一实验报告

实验一运算器实验(一)算术逻辑运算器一、实验目的:1.掌握算术逻辑运算器单元ALU(74LS181)的工作原理2.掌握简单运算器的数据传送通道3.验算由74LS181等组合逻辑电路组成的运算功能发生器运算功能4.按给定数据,完成实验指定的算术/逻辑运算二、实验设备计算机组成原理实验仪一台,排线若干条。

三、实验原理运算器实验电路说明:(1)两片74LS181(每片4位)以并/串联形式构成字长为8位的运算器。

(2)8位运算器的输出经过一个输入双向三态门(74LS245)与数据总线相连,运算器的两个数据输入端分别与两个8位寄存器(74LS273)DR1和DR2的输出端相连,DR1和DR2寄存器是用于保存参加运算的数据和运算的结果.寄存器的输入端与数据总线相连。

(3)8位数据开关D7~D0(在“INPUT DEVICE”中)用来产生参与运算的数据,经过一个输出三态门(74LS245)与数据总线相连,数据显示灯(BUS UNIT)已与数据总线相连,用来显示数据总线上的内容。

(4)S3、S2、S1、S0是运算选择控制端,有它们决定运算器执行哪一种运算(16种算术运算或16种逻辑运算)。

(5)M是算术/逻辑运算选择,M=0时,执行算术运算,M=1时,执行逻辑运算。

(6)Cn是算术运算的进位控制端,Cn=0(低电平),表示有进位,运算时相当于在最低位上加进位1,Cn=1(高电平),表示无进位。

逻辑运算与进位无关。

(7)ALU-B是输出三态门的控制端,控制运算器的运算结果是否送到数据总线BUS上。

低电平有效。

(8)SW-B是输入三态门的控制端,控制“INPUT DEVICE”中的8位数据开关D7~D0的数据是否送到数据总线BUS上。

低电平有效。

(9)LDDR1是寄存器DR1存数控制信号,LDDR2是寄存器DR2存数控制信号。

它们都是高电平有效。

(10)A0~A3是4位数据输入通道A,B0~B3是4位数据输入通道B。

实验报告算术逻辑单元

实验报告算术逻辑单元

一、实验目的1. 理解算术逻辑单元(ALU)的基本原理和功能。

2. 掌握ALU的设计方法和实现过程。

3. 通过实验加深对计算机组成原理的理解。

二、实验原理算术逻辑单元(ALU)是计算机中执行算术运算和逻辑运算的核心部件。

它主要完成加、减、乘、除等算术运算以及与、或、非、异或等逻辑运算。

ALU的设计和实现是计算机组成原理中的基础内容。

三、实验内容1. 设计一个8位ALU,能够完成加、减、乘、除、与、或、非、异或等运算。

2. 使用Verilog HDL语言实现该ALU。

3. 在FPGA平台上进行测试,验证ALU的功能。

四、实验步骤1. 分析ALU的功能需求,确定输入和输出信号。

2. 设计ALU的内部结构,包括运算单元、控制单元和寄存器。

3. 使用Verilog HDL语言编写ALU的代码。

4. 在FPGA平台上进行测试,验证ALU的功能。

五、实验结果与分析1. 实验结果根据实验要求,我们设计了一个8位ALU,能够完成加、减、乘、除、与、或、非、异或等运算。

以下是部分实验结果:(1)加法运算输入:A = 10101010,B = 11001100输出:10111010(2)减法运算输入:A = 11001100,B = 10101010输出:01010100(3)乘法运算输入:A = 10101010,B = 11001100输出:1111100000(4)除法运算输入:A = 11111111,B = 10000000输出:11111111(5)与运算输入:A = 10101010,B = 11001100输出:10001000(6)或运算输入:A = 10101010,B = 11001100输出:11101110(7)非运算输入:A = 10101010输出:01010101(8)异或运算输入:A = 10101010,B = 11001100输出:011001102. 实验分析通过实验,我们成功设计并实现了8位ALU。

计算机组成原理实验报告算术逻辑单元ALU实验(源代码全)

计算机组成原理实验报告算术逻辑单元ALU实验(源代码全)

计算机组成原理实验报告算术逻辑单元ALU实验(源代码全)算术逻辑单元ALU实验⼀. 实验⽬的1、理解算术逻辑单元ALU的⼯作原理。

2、掌握算术逻辑单元ALU的设计⽅法。

3、验证32位算术逻辑单元ALU的加、减、与、移位等基本功能。

4、选定⼏组数据,完成⼏种算术/逻辑运算。

⼆. 实验设备1、 装有Xilinx Vivado的计算机⼀台。

2、LS-CPU-EXB-002教学系统实验箱⼀套。

三. 实验任务1、学习MIPS指令集,熟知指令类型,了解指令功能和编码,归纳基础的ALU运算指令。

2、归纳确定⾃⼰本次实验中准备实现的ALU运算,要求要求⾄少实现5种ALU运算,包含加减运算,其中减法在内部要转换为加法,见表1-1。

表1-1 ALU的控制信号选择端aluc ALU功能3 2 1 00 0 00 0 10 1 00 1 11 0 01 0 11 1 00 1 1 11 1 1 13、根据如图1-1所⽰的结构框图,设计实验⽅案,并⽤Verilog编写相应代码。

4、 对编写的代码进⾏仿真,得到正确的波形图。

5、将以上设计作为⼀个单独的模块,设计⼀个外围模块去调⽤该模块,如图1-2。

外围模块中需调⽤封装好的LCD触摸屏模块,显⽰ALU 的两个源操作数、操作码和运算结果,并且需要利⽤触摸功能输⼊源操作数。

操作码可以考虑⽤LCD触摸屏输⼊,也可⽤拨码开关输⼊。

6、将编写的代码进⾏综合布局布线,并下载到试验箱中的FPGA板⼦上进⾏演⽰。

四. 实验步骤这⾥给出实验代码,具体的实验步骤请看书alu.vmodule alu(a,b,aluc,r,z);input [31:0] a,b;input [3:0] aluc;output [31:0] r;output z;assign r = cal (a,b,aluc);assign z =~|r;function [31:0] cal;input [31:0] a,b;input [3:0] aluc;casex(aluc)4'b0000: cal = a + b;//加4'b0001: cal = a&b;4'b0010: cal = a^b;4'b0011: cal = b<<a[4:0];4'b0100: cal = a-b;4'b0101: cal = a|b;4'b0110: cal ={b[15:0],16'h0};4'b0111: cal = b>>a[4:0];4'b1111: cal = $signed(b)>>> a[4:0];//算术右移endcaseendfunctionendmodulealu-display.v//************************************************************************* // > ⽂件名: alu_display.v// > 描述:ALU显⽰模块,调⽤FPGA板上的IO接⼝和触摸屏// > 作者 : LOONGSON// > ⽇期 : 2016-04-14//************************************************************************* module alu_display(//时钟与复位信号input clk,input resetn,//后缀"n"代表低电平有效//拨码开关,⽤于选择输⼊数input [1:0] input_sel,//00:输⼊为控制信号(alu_control)//10:输⼊为源操作数1(alu_src1)//11:输⼊为源操作数2(alu_src2)//触摸屏相关接⼝,不需要更改output lcd_rst,output lcd_cs,output lcd_rs,output lcd_wr,output lcd_rd,inout[15:0] lcd_data_io,output lcd_bl_ctr,inout ct_int,inout ct_sda,output ct_scl,output ct_rstn);//-----{调⽤ALU模块}beginreg [3:0] alu_control;// ALU控制信号reg [31:0] alu_src1;// ALU操作数1reg [31:0] alu_src2;// ALU操作数2wire [31:0] alu_result;// ALU结果wire alu_z;alu alu_module(alu alu_module(.aluc(alu_control),.a(alu_src1 ),.b(alu_src2 ),.r(alu_result ),.z(alu_z));//-----{调⽤ALU模块}end//---------------------{调⽤触摸屏模块}begin--------------------// //-----{实例化触摸屏}begin//此⼩节不需要更改reg display_valid;reg [39:0] display_name;reg [31:0] display_value;wire [5:0] display_number;wire input_valid;wire [31:0] input_value;lcd_module lcd_module(.clk(clk ),//10Mhz.resetn(resetn ),//调⽤触摸屏的接⼝.display_valid(display_valid ),.display_name(display_name ),.display_value(display_value ),.display_number(display_number),.input_valid(input_valid ),.input_value(input_value ),//lcd触摸屏相关接⼝,不需要更改.lcd_rst(lcd_rst ),.lcd_cs(lcd_cs ),.lcd_rs(lcd_rs ),.lcd_wr(lcd_wr ),.lcd_rd(lcd_rd ),.lcd_data_io(lcd_data_io ),.lcd_bl_ctr(lcd_bl_ctr ),.ct_int(ct_int ),.ct_sda(ct_sda ),.ct_scl(ct_scl ),.ct_rstn(ct_rstn ));//-----{实例化触摸屏}end//-----{从触摸屏获取输⼊}begin//根据实际需要输⼊的数修改此⼩节,//建议对每⼀个数的输⼊,编写单独⼀个always块//当input_sel为00时,表⽰输⼊数控制信号,即alu_control always @(posedge clk)beginif(!resetn)beginalu_control <=12'd0;endelse if(input_valid && input_sel==2'b00)beginalu_control <= input_value[11:0];endend//当input_sel为10时,表⽰输⼊数为源操作数1,即alu_src1 always @(posedge clk)beginif(!resetn)if(!resetn)beginalu_src1 <=32'd0;endelse if(input_valid && input_sel==2'b10)beginalu_src1 <= input_value;endend//当input_sel为11时,表⽰输⼊数为源操作数2,即alu_src2 always @(posedge clk)beginif(!resetn)beginalu_src2 <=32'd0;endelse if(input_valid && input_sel==2'b11)beginalu_src2 <= input_value;endend//-----{从触摸屏获取输⼊}end//-----{输出到触摸屏显⽰}begin//根据需要显⽰的数修改此⼩节,//触摸屏上共有44块显⽰区域,可显⽰44组32位数据//44块显⽰区域从1开始编号,编号为1~44,always @(posedge clk)begincase(display_number)6'd1 :begindisplay_valid <=1'b1;display_name <="SRC_1";display_value <= alu_src1;end6'd2 :begindisplay_valid <=1'b1;display_name <="SRC_2";display_value <= alu_src2;end6'd3 :begindisplay_valid <=1'b1;display_name <="CONTR";display_value <={20'd0, alu_control};end6'd4 :begindisplay_valid <=1'b1;display_name <="RESUL";display_value <= alu_result;end6'd5 :begindisplay_valid <=1'b1;display_name <="ZF";display_value <= alu_z;enddefault:begindisplay_valid <=1'b0;display_name <=40'd0;display_value <=32'd0;endendcaseend//-----{输出到触摸屏显⽰}end//----------------------{调⽤触摸屏模块}end---------------------//endmodulealu_tb.v代码如下:module testbench;// Inputsreg [31:0] a;reg [31:0] b;reg [3:0] aluc;//outputwire [31:0] r;wire z;//Instantiate the Unit Under Test(UUT)alu uut(.a(a),.b(b),.r(r),.aluc(aluc),.z(z));initial begin// Initialize Inputsa=0;b=0;aluc=0;//Wait 100ns for global reset to finish#100;//Add stimulus hereendalways #10 a=$random;//$random为系统任务,产⽣⼀个随机的32位数always #10 b=$random;//#10表⽰等待10个单位时间(10ns),即每过10ns,赋值⼀个随机的32位数 always #10 aluc={$random}%2;//加了拼接符,{$random}产⽣⼀个⾮负数,除2取余得到0或1 endmodulealu.xdc⽂件如下:set_property PACKAGE_PIN AC19 [get_ports clk]set_property PACKAGE_PIN Y3 [get_ports resetn]set_property PACKAGE_PIN AC22 [get_ports input_sel[0]]set_property PACKAGE_PIN AD24 [get_ports input_sel[1]]set_property IOSTANDARD LVCMOS33 [get_ports clk]set_property IOSTANDARD LVCMOS33 [get_ports resetn]set_property IOSTANDARD LVCMOS33 [get_ports input_sel[1]]set_property IOSTANDARD LVCMOS33 [get_ports input_sel[0]]set_property PACKAGE_PIN J25 [get_ports lcd_rst]set_property PACKAGE_PIN H18 [get_ports lcd_cs]set_property PACKAGE_PIN K16 [get_ports lcd_rs]set_property PACKAGE_PIN L8 [get_ports lcd_wr]set_property PACKAGE_PIN K8 [get_ports lcd_rd]set_property PACKAGE_PIN J15 [get_ports lcd_bl_ctr]set_property PACKAGE_PIN H9 [get_ports {lcd_data_io[0]}]set_property PACKAGE_PIN K17 [get_ports {lcd_data_io[1]}]set_property PACKAGE_PIN J20 [get_ports {lcd_data_io[2]}]set_property PACKAGE_PIN M17 [get_ports {lcd_data_io[3]}]set_property PACKAGE_PIN L17 [get_ports {lcd_data_io[4]}]set_property PACKAGE_PIN L17 [get_ports {lcd_data_io[4]}]set_property PACKAGE_PIN L18 [get_ports {lcd_data_io[5]}]set_property PACKAGE_PIN L15 [get_ports {lcd_data_io[6]}]set_property PACKAGE_PIN M15 [get_ports {lcd_data_io[7]}]set_property PACKAGE_PIN M16 [get_ports {lcd_data_io[8]}]set_property PACKAGE_PIN L14 [get_ports {lcd_data_io[9]}]set_property PACKAGE_PIN M14 [get_ports {lcd_data_io[10]}]set_property PACKAGE_PIN F22 [get_ports {lcd_data_io[11]}]set_property PACKAGE_PIN G22 [get_ports {lcd_data_io[12]}]set_property PACKAGE_PIN G21 [get_ports {lcd_data_io[13]}]set_property PACKAGE_PIN H24 [get_ports {lcd_data_io[14]}]set_property PACKAGE_PIN J16 [get_ports {lcd_data_io[15]}]set_property PACKAGE_PIN L19 [get_ports ct_int]set_property PACKAGE_PIN J24 [get_ports ct_sda]set_property PACKAGE_PIN H21 [get_ports ct_scl]set_property PACKAGE_PIN G24 [get_ports ct_rstn]set_property IOSTANDARD LVCMOS33 [get_ports lcd_rst]set_property IOSTANDARD LVCMOS33 [get_ports lcd_cs]set_property IOSTANDARD LVCMOS33 [get_ports lcd_rs]set_property IOSTANDARD LVCMOS33 [get_ports lcd_wr]set_property IOSTANDARD LVCMOS33 [get_ports lcd_rd]set_property IOSTANDARD LVCMOS33 [get_ports lcd_bl_ctr]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[0]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[1]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[2]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[3]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[4]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[5]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[6]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[7]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[8]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[9]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[10]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[11]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[12]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[13]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[14]}]set_property IOSTANDARD LVCMOS33 [get_ports {lcd_data_io[15]}]set_property IOSTANDARD LVCMOS33 [get_ports ct_int]set_property IOSTANDARD LVCMOS33 [get_ports ct_sda]set_property IOSTANDARD LVCMOS33 [get_ports ct_scl]set_property IOSTANDARD LVCMOS33 [get_ports ct_rstn]拨码开关的连接,通过AC22、AD24拨码开关来控制输⼊SRC_1,SRC_2,CONTR的值五.结果记录及分析(1) 仿真波形。

计算机组成原理运算器实验报告

计算机组成原理运算器实验报告

计算机组成原理运算器实验报告本次实验的主题为计算机组成原理运算器实验。

在本次实验中,我们通过对运算器的实验进行研究和探究,了解了计算机组成原理方面的相关知识,更加深入地认识了计算机的运作原理。

一、实验目的本次实验的目的是使学生掌握运算器的组成和运算过程,并且了解运算器在计算机中的位置和给计算机的工作。

二、实验原理1、硬件部分运算器是一种计算机硬件,可以进行算术和逻辑运算。

运算器包含一个算术逻辑单元(ALU),一个累加器和一些寄存器。

运算器可以在CPU 中实现简单的算术操作。

运算器由三部分组成:算术逻辑单元(ALU)、寄存器和累加器。

ALU 是计算机CPU中负责完成算术和逻辑运算的部分;寄存器是计算机中用来暂时存放数据的小型存储器,它是CPU中数据存储的主要形式;累加器是CPU中的一种特殊寄存器,在运算过程中用于存储运算结果。

2、软件部分计算机编程中常常涉及到算术和逻辑运算,进行这些运算的方法是在程序中调用运算器中的算术逻辑单元(ALU)。

ALU是计算机CPU中负责完成算术和逻辑运算的部分,用于进行各种算术和逻辑运算,如加、减、乘、除、与、或、非、移位等。

三、实验过程— 1 —本次实验的实验步骤如下:1、打开实验设备,将电源线插进插座,将设备的开关打开,在设备前方的显示器上能够看见下划线。

2、按下NORM键,增益调整。

将x的值设置为“0011”,将y的值设置为“1101”。

3、操作者可以选择不同的操作符。

例如选择ADD操作,将其输入。

4、按下RUN键,运算器开始计算。

5、运算结束后,在屏幕上将显示运算结果。

本例中,结果为“1000”。

四、实验结果与分析在本次实验中,我们利用运算器实现了不同运算的计算过程,并且也成功地输出了运算结果。

这一过程与计算机组成原理中的运算器的定义、作用及组成都有密切的关系。

在本次实验中,我们也进一步加深了对计算机组成原理中该重要部分的理解。

五、实验总结通过本次实验,我们深入了解了运算器在计算机中的作用及其实现方法。

计算机组成原理实验报告一 算术逻辑运算器

计算机组成原理实验报告一 算术逻辑运算器

算术逻辑运算器一.实验目的与要求1、掌握算术运算器单元ALU(74LS181)的工作原理。

:试验目的2、掌握简单运算器的数据传送通道。

3、验算由74LS181等组合逻辑电路组成的运算功能发生器运算功能。

4、能够按给定数据,完成实验指定的算术/逻辑运算。

按练习的要求输入数据和完成相应的操作,将实验结果填入表格:试验要求二.实验方案1、按实验连线图接好线,仔细检查正确与否,无误后才接通电源。

2、用二进制数据开关分别向DR1寄存器和DR2寄存器置数。

3、通过总线输出DR1寄存器和DR2寄存器的内容。

4、比较实验结果和理论值是否一致,如果不一致,就分析原因,然后重做。

三.实验结果练习一表1.1.2练习二表1.1.311.1.4表练习四实验结果分析1.实验结果和理论值一致,讲明实验操作过程正确,实验结果准确无误。

?结论2.要有理论基础才可以做好实验的每一步,所以,平时一定要学好理论知识。

?问题与讨论3.就是我们我无论输入什么显示灯在做第二个实验时就遇到了很多问题,我们这个小组,但是还是没办法解决,后来问了老师才知道我们插错线。

都不变,然后我们就互相讨论,实验总结 4.)以前没有做过这种实验,所以实验前我做了充分的预习。

但预习毕竟不是实际操1( 2作,经常会在想实际情况会是什么样,在实际操作过程中我遇到了不少的困难,例如我做第二个实验时就插错线,幸好在老师的帮助下还加上自己的思考,终于把问题解决掉了。

我觉得,实验前老师应该做些示范给我们看,这样我们会学得更快。

(2)在做表1.1.4的实验时,不知道怎样查出S3、S2、S1、S0、M、Cn的值,问周围的同学,他们也不知道。

因为这个很重要,直接影响到后面的实验,所以请教了老师。

经过老师的解释后,我顺利地完成了后面的实验。

5.思考题1)写出本实验中的各控制端的作用。

答:S0 S1 S2 S3(它们共同决定运算器执行哪一种运算)M(决定是算术运算还是逻辑运算). CN(表示有无进位) SW-B(输入三态门控制“INPUT DEVICE”中的八位数据开关D7-D0的数据是否送到数据总线BUS上) ALU-B(输出三态门,控制运算器的运算结果是否送到数据总线BUS)LDDR1 LDDR2 (寄存器,寄存数据)2)在实验中哪些控制端高电平有效,哪些低电平有效?答:高电平有效(LDDR1 LDDR2)低电平有效(CN ALU-B SW-B)3)在实验正常的输入和输出操作中,SW-B和ALU-B为什么不能同时为0的状态?答:ALU-B SW-B都是低电平有效,如果同时为低电平,这将导致数据一边输入一边输出。

ALU运算器实验报告

ALU运算器实验报告

计算机组成与系统结构算术逻辑部件实验报告姓名:同组成员:指导老师:实验时间:2012年3月28日一、实验名称:算术逻辑部件的设计二、实验设备:DE2-70仿真实验板三、实验原理:输入为两个4位操作数A和B,其中,核心部件是能够进行加减运算的加法器,加法器的输出除了和、差的结果Add-Result以外,还有进位标志外,还有进位标志Add-carry、零标志Zero、溢出标志Add-Overflow和标志符号Add-Sign。

在操作控制端ALUctr的控制下,在ALU中执行“加法”、“减法”、“按位或”、“带符号整数比较小于置1”和“无符号数比较小于置1”等运算,Result作为ALU运算的结果被输出,同时,零标志Zero和溢出标志Overflow也被作为ALU的结果标志信息输出。

ALU的操作由一个ALU操作控制信号生成部件产生的控制信号来控制,该控制信号逻辑的输入是ALUctr信号,,输出有4个控制信号:1、SUBctr用来控制ALU执行加法还是减法运算,当SUBctr=1时做减法,当SUBctr=0时做加法;2、OPctr用来控制选择哪种运算的结果作为Result的输出,因为11条目标指令中只有三种运算结果可能:加减,按位或和小于置1,所以OPctr需要两位;3、OVctr用来控制是否要进行溢出判断,当OVctr=1时,需要判断溢出,此时,若结果发生溢出,则溢出标志Overflow为1;当OVctr=0时,无须判断溢出,此时,即使结果发生溢出,溢出标志Overflow也不为1;4、SIGctr信号控制ALU是执行“带符号整数比较小于置于1”还是“无符号数比较小于置1”功能,当SIGctr=0,则执行“无符号数比较小于置1”,当SIGctr=1,则执行“带符号整数比较小于置1”。

ALUctr的三位编码及其对应的操作类型和ALU控制信号ALUctr<2:0> 操作类型SUBctr OVctr SIGctr OPctr<1:0> OPctr的含义0 0 0 addu 0 0 ×0 0 选择加法器的输出结果0 0 1 add 0 1 ×0 0 选择加法器的输出结果0 1 0 or ×0 ×0 1 选择”按位或”结果输出0 1 1 (未用)1 0 0 subu 1 0 ×0 0 选择加法器的输出结果1 0 1 sub 1 1 ×0 0 选择加法器的输出结果1 1 0 sltu 1 0 0 1 0 选择小于置位结果输出1 1 1 slt 1 0 1 1 0 选择小于置位结果输出四、实验结果:通过控制ALUctr、SUBctr、OVctr、SIGctr以及OPctr等控制端来选择需要进行的操作,通过拨动开关来设置我所需要的操作数,通过二极管的发光情况来记录对操作数计算后得到的结果,然后将实际结果与预期结果相匹配,将所有的操作进行过后,比较后发现实际结果均与预期结果全部一致,实验验证成功。

算术逻辑运算器实验

算术逻辑运算器实验

一、算术逻辑运算器1.实验目的与要求:(1)掌握算术逻辑运算单元ALU(74LS181)的工作原理。

(2)掌握简单运算器的数据传送通道。

(3)验算有74LS1818等组合逻辑电路组成的运算功能发生器运输功能。

(4)能够按给定的数据,完成试验指定的算术运算/逻辑运算。

2.实验方案:(1)理解本次试验的原理:8位数据开关D7-00用来输入数据,数据在SW-B输入三态门控制和LDDR1和LDDR2控制下,通过总线存储到DR1和DR2,SW-B是低电平时有效,LDDR1和LDDR2高电平时有效;S1、S2、S3、S4、M、CN、为ALU运算选择控制端,具体决定ALU做哪种运算(参照书中表格);ALU-B为输出三态门控制端,控制运算器的数据是否输送到总线上,低电平时有效。

(2)试验方法和步骤:按照算术逻辑运算实验连线图在仪器上接好线,注意应先接好线在打开电源开关。

根据书本完成试验的测试,并熟悉ALU的特性、SW-B、LDDR1和LDDR2在输入端的控制作用,ALU-B在输出端的控制作用,会设置S1、S2、S3、S4、M、CN控制状态完成书中给出的练习练习一:将不同的数据存到不同的寄存器中练习二:验证表格中给出的结果的正误练习三:验证不同的算术运算操作的正误练习四:设计求补指令3.实验结果和数据处理:4.结论(1)S1、S2、S3、S4、M、CN控制了ALU实现的运算功能/逻辑功能。

00001任意时实现了对DR1逻辑非的功能,而01011时则实现了对DR2的逻辑非的功能。

(2)当M为高电位时实现逻辑运算,M为低电位时实现算术运算。

(3)通过不同电路的配合,ALU能实现原来没有的功能。

比如求原码的补码等。

5.问题与讨论及实验总结问题:ALU(74LS181)的算术操作都是无符号的运算,对于带符号的操作,应该怎样实现通过做本次试验,我了解到ALU有了的工作原理及其基本操作,会用ALU实现一些不同的功能,并且了解了一些数据传送通道的知识,基本达到了本次试验目的。

计算机组成原理实验报告

计算机组成原理实验报告

计算机组成原理实验报告一、实验目的本次计算机组成原理实验的主要目的是深入理解计算机的内部结构和工作原理,通过实际操作和观察,巩固和拓展课堂上学到的理论知识,培养实践动手能力和解决问题的能力。

二、实验设备本次实验所使用的设备包括计算机主机、逻辑分析仪、示波器、面包板、各种芯片(如 74LS 系列、8255 芯片等)、导线若干。

三、实验内容1、算术逻辑运算单元(ALU)实验通过使用芯片搭建一个简单的算术逻辑运算单元,实现加法、减法、与、或等基本运算,并观察运算结果。

2、存储单元实验构建一个存储单元,了解存储器的读写操作和存储原理,包括随机存储器(RAM)和只读存储器(ROM)。

3、控制器实验设计一个简单的控制器,实现指令的译码和执行,理解计算机如何按照指令序列进行工作。

4、总线结构实验研究计算机内部的总线结构,包括数据总线、地址总线和控制总线,了解它们在信息传输中的作用。

四、实验原理1、算术逻辑运算单元算术逻辑运算单元是计算机中进行算术和逻辑运算的核心部件。

它通常由加法器、减法器、逻辑门等组成。

通过对输入的操作数进行相应的运算操作,产生输出结果。

2、存储单元存储器用于存储程序和数据。

随机存储器(RAM)可以随时读写,但其数据在断电后会丢失;只读存储器(ROM)中的数据在制造时就已确定,只能读取不能修改,且断电后数据不会丢失。

3、控制器控制器是计算机的指挥中心,负责从存储器中取出指令,对指令进行译码,并产生控制信号,控制各个部件的操作。

4、总线结构总线是计算机内部各个部件之间传输信息的公共通道。

数据总线用于传输数据,地址总线用于传输地址信息,控制总线用于传输控制信号。

五、实验步骤(1)按照实验电路图,在面包板上正确连接 74LS 系列芯片,如74LS181 等,构建加法器和逻辑运算电路。

(2)通过改变输入信号的值,使用逻辑分析仪观察输出结果,验证运算的正确性。

2、存储单元实验(1)使用芯片搭建随机存储器(RAM)和只读存储器(ROM)电路。

计算机组成原理实验报告

计算机组成原理实验报告
计算机组成原理实验报告 LAB01
题目: 运算器部件 ALU
姓名:
林祥
学号: PB16020923
实验目的
1、复习 Verilog 语法 2、知道如何用 Verilog 实现运算器部件 ALU
实验内容
1、设计一个算术运算单元 ALU 2、采用纯组合逻辑设计 3、32bit 宽 4、完成 7 种运算功能
输入操作码 op=0 时,out=0 op=1 时,out=15(=32’b00000000000000000000000000001111)
op=2 时,out=5(=32’b00000000000000000000000000000101) op=3 时,out=32’b00000000000000000000000000000000
endmodule
module toptest;
toptest.v
// Inputs reg [31:0] a; reg [31:0] b;
// Outputs wire [31:0] result;
// Instantiate the Unit Under Test (UUT) top uut (
<2>输入 a=1,b=3 得结果为 result=18(=32’b00000000000000000000000000010010)。 (过程为 1 3 4 7 11 18)
附录:
一、 模块源代码
top.v
module top( input [31:0] a, input [31:0] b, output [31:0] result ); wire [31:0] tmp[0:4]; assign tmp[0]=a; assign tmp[1]=b; alu alu1(tmp[0],tmp[1],5'h01,tmp[2]); alu alu2(tmp[1],tmp[2],5'h01,tmp[3]); alu alu3(tmp[2],tmp[3],5'h01,tmp[4]); alu alu4(tmp[3],tmp[4],5'h01,result);

计算机组成原理带进位算术逻辑运算单元alu设计实验

计算机组成原理带进位算术逻辑运算单元alu设计实验

《计算机组成原理》课程实验报告实验名称带进位算术逻辑运算单元ALU设计实验实验序号 2姓名系院专业班级学号实验日期指导教师成绩一、实验目的1、验证带进位控制的算术运算功能发生器的功能;2、按指定数据完成几种指定的算术运算。

二、实验内容与要求在实验4-1的基础上增加进位控制电路,将运算器ALU181的进位位送入D锁存器,由T4和CN控制其写入,在此,T4是由键5产生的脉冲信号,这时,CN的功能是电平控制信号(高电平时,CN有效),控制是否允许将进位信号co加入下一加法周期的最低进位位,从而可实现带进位控制运算。

三、实验设备地点:实验实训中心硬件环境:windows软件环境:quartus四、实验步骤1、根据电路图图4-51和波形图图4-52,首先使键5(控制T4)和键7(控制CN)=0;键8(控制M)和键3(控制A0_B1)=1;连续按键6,使产生9个脉冲,这时数码管8显示9(作加法运算);再用键2,键1输入加数9DH(数码管4/3显示9D);2、按键3=0,再用键2,键1输入被加数E5H(数码管4、3、2、1分别显示加数和被加数);再将键8(M)置0,使ALU作算术运算,这时可以从数码管6,5上看到9DH+E5H=82H(低8位和);③先将键7(CN)置为1(允许锁存ALU的进位),再用键5(T4)产生一个正脉冲,就能将进位锁入D触发器中:数码管7将显示1,表示加法有进位,并被锁;同时可以看到此进位被累加,使数码管6,5=83H。

④置键8=1,在实验系统上作逻辑运算方面的实验,给出相应的仿真波形图;⑤利用带进位控制,控制T4,分别由低到高输入3个8位加数和被加数,计算24位加法:7AC5E9 H+ BD5AF8H = ?最后按照表4-6完成实验,记录实验数据,给出对应仿真波形图。

实验原理图:五、实验结果与分析1.测试数据及结果带进位的控制的ALU 的仿真波形:带进位ALU 实验数据表:选择端 高电平作用数据S3 S2 S1 S0 M=H M=L 算术操作逻辑功能Cn=L (无进位)Cn=H (有进位)0 0 0 0 A F =A F = 1加A F =0 0 0 1 B A F +=B A F += )(B A F +=加10 0 1 0 B A F = B A F +=B A F +=+10 0 1 1 0=F=F 减1(2的补码)0=F0 1 0 0 AB F =B A A F 加=B A A F 加=加10 1 0 1 B F = )(B A F +=加B A)(B A F +=加B A +10 1 1 0 B A F ⊕= B A F 减=1减减B A F =0 1 1 1 B A F = B A F +=1)(减B A F +=1 0 0 0 B A F +=AB A F 加= AB A F 加=加1 1 0 0 1B A F ⊕=B A F 加=B A F 加=加11 0 1 0 B F = AB B A F )加(+=AB B A F 加)(+=加11 0 1 1 AB F = AB F =1减AB F =1 1 0 0 1=F A A F 加=*1加加A A F = 1 1 0 1 B A F += A B A F )加(+= A B A F )加(+=加1 1 1 1 0 B A F += A B A F )加(+=A B A F )加(+=加11 1 1 1A F =A F = 1减A F =移位逻辑运算实验原理图:2.实验中遇到的问题及解决办法 无3.实验中尚未解决的问题,不足之处以及改进设想等 无六、实验成绩。

计算机组成原理实验报告一 算术逻辑运算器

计算机组成原理实验报告一  算术逻辑运算器

算术逻辑运算器一.实验目的与要求试验目的:1、掌握算术运算器单元ALU(74LS181)的工作原理。

2、掌握简单运算器的数据传送通道。

3、验算由74LS181等组合逻辑电路组成的运算功能发生器运算功能。

4、能够按给定数据,完成实验指定的算术/逻辑运算。

试验要求:按练习的要求输入数据和完成相应的操作,将实验结果填入表格二.实验方案1、按实验连线图接好线,仔细检查正确与否,无误后才接通电源。

2、用二进制数据开关分别向DR1寄存器和DR2寄存器置数。

3、通过总线输出DR1寄存器和DR2寄存器的内容。

4、比较实验结果和理论值是否一致,如果不一致,就分析原因,然后重做。

三.实验结果练习一表1.1.2练习二表1.1.31.实验结果分析●实验结果和理论值一致,讲明实验操作过程正确,实验结果准确无误。

2.结论●要有理论基础才可以做好实验的每一步,所以,平时一定要学好理论知识。

3.问题与讨论我们这个小组,在做第二个实验时就遇到了很多问题,就是我们我无论输入什么显示灯都不变,然后我们就互相讨论,但是还是没办法解决,后来问了老师才知道我们插错线。

4.实验总结(1)以前没有做过这种实验,所以实验前我做了充分的预习。

但预习毕竟不是实际操作,经常会在想实际情况会是什么样,在实际操作过程中我遇到了不少的困难,例如我做第二个实验时就插错线,幸好在老师的帮助下还加上自己的思考,终于把问题解决掉了。

我觉得,实验前老师应该做些示范给我们看,这样我们会学得更快。

(2)在做表1.1.4的实验时,不知道怎样查出S3、S2、S1、S0、M、Cn的值,问周围的同学,他们也不知道。

因为这个很重要,直接影响到后面的实验,所以请教了老师。

经过老师的解释后,我顺利地完成了后面的实验。

5.思考题1)写出本实验中的各控制端的作用。

答:S0 S1 S2 S3(它们共同决定运算器执行哪一种运算)M(决定是算术运算还是逻辑运算). CN(表示有无进位) SW-B(输入三态门控制“INPUT DEVICE”中的八位数据开关D7-D0的数据是否送到数据总线BUS上) ALU-B(输出三态门,控制运算器的运算结果是否送到数据总线BUS)LDDR1 LDDR2 (寄存器,寄存数据)2)在实验中哪些控制端高电平有效,哪些低电平有效?答:高电平有效(LDDR1 LDDR2)低电平有效(CN ALU-B SW-B)3)在实验正常的输入和输出操作中,SW-B和ALU-B为什么不能同时为0的状态?答:ALU-B SW-B都是低电平有效,如果同时为低电平,这将导致数据一边输入一边输出。

计算机组成原理实验一报告

计算机组成原理实验一报告

计算机组成原理实验一报告实验报告一课程实验项目指导教师计算机组成原理姓名学号学号2021-5-23 运算器实验(算术运算)同组姓名专业班级计算机科学与技术09 实验时间实验一运算器实验(算术运算)一、实验目的1.掌握算术逻辑运算单元(ALU)的工作原理2.熟悉运算器的数据传送通路和数据传输方式3.验证运算功能发生器(74LS181)的算术运算功能 4.按给定数据,完成指定的算术运算二、实验原理实验中所用的运算器数据通路如图1-1所示。

图1-1 运算器电原理图三、实验设备1.Dais-CMH计算机组成原理实验系统一套 2.若干导线和排线四、实验内容1. 写操作(置数操作)拨动二进制数据开关向DR1和DR2寄存器置数,具体操作步骤如下:注:【单步】键的功能是启动时序电路产生T1~T4四拍单周期脉冲2. 读操作(运算寄存器内容送总线)首先关闭二进制数据开关(数据输入)三态控制端(SW-B=0),存储器控制端CE保持为0,令LDDR1=0、LDDR2=0,然后打开ALU输出三态门(CBA=010),置M、S0、S1、S2、S3为11111,再按【单步】键,数据总线单元显示DR1的内容为___65__H,若把M、S0、S1、S2、S3置为10101,再按【单步】键,数据总线单元显示DR2的内容为__A7___H。

3. 算术运算(验证74LS181的算术运算功能)在给定DR1、DR2的情况下,改变运算器的功能设置即CN、M、S0、S1、S2、S3状态,置CBA=010,按【单步】键,观察运算器的输出,填入下页表格中,并和理论分析进行比较、验证。

表1-1 M=0(算术运算) CN=1无进位 CN=0有进位 DR1 DR2 S3 S2 S1 S0 F理论值F实测值 F理论值 F实测值 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H 65H65H 65HA7H A7H A7H A7H A7H A7H A7H A7H A7H A7H A7H A7H A7H A7H A7H 0 0 0 0 0 0 01 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 10 0 1 1 0 1 1 1 1 0 1 1 1 1 65H E7H 7DH A5H 27H BDH 3FH 8AH 0CH A2H 24H CAH4CH E2H 64H 65H E7H 7DH A5H 27H BDH 3FH 8AH 0CH A2H 24H CAH 4CH E2H 64H 66HE8H 7EH A6H 28H BEH 40H 8BH 0DH A3H 25H CBH 4DH E3H 65H 66H E8H 7EH A6H 28H BEH 40H 8BH 0DH A3H 25H CBH 4DH E3H 65H 4. 完成指定算术运算表达式为完成下面指定运算关系(算术运算表达式),请选择所需操作步骤,并正确控制参数S3S2S1S0M、选择运算器数据通路,将每次操作的结果值填入DR1和DR2。

湘潭大学计算机原理 实验一 算术逻辑单元ALU实验报告

湘潭大学计算机原理 实验一 算术逻辑单元ALU实验报告

计算机原理与设计实验报告实验一算术逻辑单元ALU姓名: XXX学号: 2013551728班级: 13级软件工程2班实验日期: 2014年 10 月22 日一.实验目的1.理解算术逻辑单元ALU的工作原理。

2.掌握算术逻辑单元ALU的设计方法。

3.验证32位算术逻辑单元ALU的加、减、与、移位功能。

4.按给定数据,完成几种指定的算术和逻辑运算。

二.实验内容算术逻辑单元ALU的设计如图1-1所示。

其中运算器addsub32能实现32位的加减运算。

参加运算的两个32位数据分别为A[31..0]和B[31..0],运算模式由aluc[3..0]的16种组合决定,而aluc[3..0]的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图1-1);r[31..0]为输出结果,Z为运算后的零标志位。

ALU功能如表1-1所示。

表1-1 ALU的运算功能注1、* 表示每一位都移至下一更高有效位, “+”是逻辑或,“加”是算术加三.实验步骤(1)设计ALU元件ALU元件设计代码:module alu (a,b,aluc,r,z);input [31:0] a,b;input [3:0] aluc;output [31:0] r;output z;assign r = cal(a,b,aluc);assign z = ~|r;function [31:0] cal;input [31:0] a,b;input [3:0] aluc;casex (aluc)4'bx000: cal=a+b;4'bx100: cal=a-b;4'bx001: cal=a&b;4'bx101: cal=a|b;4'bx010: cal=a^b;4'bx110: cal={b[15:0],16'h0};4'bx011: cal=b<<a[4:0];4'b0111: cal=b>>a[4:0];4'b1111: cal=$signed(b)>>>a[4:0];endcaseendfunctionendmodule(2)以原理图方式建立顶层文件工程原理图如下:(3)查看波形图波形图如下:(4)分配引脚结构图如下:引脚分配表如下:四.实验任务(1)按图1-1所示,在本验证性示例中用数据选择开关(键3控制)的高/低电平选择总线通道上的8位数据进入对应的数据锁存器lpm_latch中;即首先将键3输入高电平,用键2、键1分别向DA[7..0] 置数01010101(55H),这时在数码管4/3上显示输入的数据(55H);然后用键3输入低电平,再用键2、键1分别向DB[7..0]置数10101010(AAH),这时在数码管2/1上显示输入的数据(AAH);这时表示在图1-1中的两个锁存器中分别被锁入了加数55H和被加数AAH。

算术逻辑运算单元ALU

算术逻辑运算单元ALU

燕山大学EDA课程设计报告书题目:算术逻辑逻辑单元ALU姓名:班级:学号:成绩:一、设计题目及要求题目名称:算术运算单元ALU要求:1.进行两个四位二进制数的运算;2.算术运算:A+B, A-B, A×B;3.逻辑运算:A and B, A or B, A not, A xor B;4. 用数码管显示算术运算结果,以LED指示灯显示逻辑运算结果。

二、设计过程及内容1.整体设计思路(1)根据设计要求将题目划分为五个模块。

包括两个逻辑运算模块,两个算术运算模块,和一个控制模块。

其中逻辑运算模块为A and B和A or B,A not和A xor B;算术模块为A±B,A×B。

(2)因为需要进行四位二进制数的运算,因此用A3,A2,A1,A0表示四位二进制数A,用B3,B2,B1,B0表示四位二进制数B,用C4,C3,C2,C1表示四位二进制数C。

其中A,B为输入,C为输出。

2.分模块设计(1)A+B和A-B模块(李佳乐负责)A+B可以直接通过74283 两个四位二进制数加法器实现。

A-B可以看作A+(-B),即A加B的补码来实现。

同时再设计一个转换控制端M。

M=0时实现A+B,M=1时实现A-B。

最后再设计一个总的控制端K1,K1=1时模块正常工作,K1=0时不工作。

做加法时,C0为进位输出,C0输出1表示有进位,做减法时,C0为借位输出,C0输出1表示有借位。

通过74283五位输出,进入译码器将五位变成八位输出,在通过数码管显示。

A+B,A-B总原理图如下:A+B,A-B分原理图如下:译码器原理图如下:扫描电路原理图如下:A+B仿真图:15+15=30A-B仿真图:14-6=8(2)AXB模块(宋任强负责)乘法模块计算部分由四个74285实现,计算结果经译码器编译为10位BCD码,经扫描器输入到数码管,K2控制是否进行乘法运算。

AXB总原理图:A×B运算部分译码器扫描器AXB仿真图:5x5=25(3)A and B和A or B模块(刘宏炜负责)A and B模块通过四个二输入与门实现,A or B通过四个二输入或门实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机原理与设计
实验报告
实验一算术逻辑单元ALU
姓名: XXX
学号: 2013551728
班级: 13级软件工程2班
实验日期: 2014年 10 月22 日
一.实验目的
1.理解算术逻辑单元ALU的工作原理。

2.掌握算术逻辑单元ALU的设计方法。

3.验证32位算术逻辑单元ALU的加、减、与、移位功能。

4.按给定数据,完成几种指定的算术和逻辑运算。

二.实验内容
算术逻辑单元ALU的设计如图1-1所示。

其中运算器addsub32能实现32位的加减运算。

参加运算的两个32位数据分别为A[31..0]和B[31..0],运算模式由aluc[3..0]的16种组合决定,而aluc[3..0]的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图1-1);r[31..0]为输出结果,Z为运算后的零标志位。

ALU功能如表1-1所示。

表1-1 ALU的运算功能
注1、* 表示每一位都移至下一更高有效位, “+”是逻辑或,“加”是算术加
三.实验步骤
(1)设计ALU元件
ALU元件设计代码:
module alu (a,b,aluc,r,z);
input [31:0] a,b;
input [3:0] aluc;
output [31:0] r;
output z;
assign r = cal(a,b,aluc);
assign z = ~|r;
function [31:0] cal;
input [31:0] a,b;
input [3:0] aluc;
casex (aluc)
4'bx000: cal=a+b;
4'bx100: cal=a-b;
4'bx001: cal=a&b;
4'bx101: cal=a|b;
4'bx010: cal=a^b;
4'bx110: cal={b[15:0],16'h0};
4'bx011: cal=b<<a[4:0];
4'b0111: cal=b>>a[4:0];
4'b1111: cal=$signed(b)>>>a[4:0];
endcase
endfunction
endmodule
(2)以原理图方式建立顶层文件工程
原理图如下:
(3)查看波形图波形图如下:
(4)分配引脚结构图如下:
引脚分配表如下:
四.实验任务
(1)按图1-1所示,在本验证性示例中用数据选择开关(键3控制)的高/低电平选择总线通道上的8位数据进入对应的数据锁存器lpm_latch中;即首先将键3输入高电平,用键2、键1分别向DA[7..0] 置数01010101(55H),这时在数码管4/3上显示输入的数据(55H);然后用键3输入低电平,再用键2、键1分别向DB[7..0]置数10101010(AAH),这时在数码管2/1上显示输入的数据(AAH);这时表示在图1-1中的两个锁存器中分别被锁入了加数55H和被加数AAH。

可双击图1-1的ALU元件,了解其Verilog HDL描述。

(2)键6控制时钟SCLK,可设置表1-1的aluc[3..0]=0 ~ F。

现连续按动键6,设置操作方式选择aluc[3..0]=0000(加法操作),使数码管8显示0,以验证ALU的算术运算功能:当键7设置clr=0时,数码管6/5=FF(55H+AAH=FFH);
当键7设置cn=1(复位)时,数码管7/6/5=100(Z=1);
键KEY6控制时钟SCLK,设置aluc[3..0]=0~F,KEY7设置clr=0或clr=1,验证ALU 的逻辑运算功能,并记录实验数据。

表1-2 DA[7..0],DB[7..0]设置值检查
表1-3给定了寄存器DRl=DA[7..0]和DR2=DB[7..0]的数据(十六进制),要求根据此数据对照逻辑功能表所得的理论值(要求课前完成)与实验结果值进行比较(均采用正逻辑0)。

表1-3
四.实验心得
这次实验总体难度并不大,较难的地方是由于第一次接触Quartus这个软件,所以刚开始在应用上出现了很多问题,比如不知道该如何封装元件、如何测试波形、如何设置引脚等等。

为了解决这样的问题我上网搜索了很多资料,也请教了老师和同学,最终学会了这些,让我受益很大。

相关文档
最新文档