为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 算术逻辑单元

算术逻辑单元

2022-10-13 3页 doc 279KB 0阅读

用户头像 个人认证

is_380822

从事护理行业多年,经验丰富

举报
算术逻辑单元个人采集整理仅供参照学习一、实验目的1)掌握运算器的工作原理。2)考证运算器的功能。二、实验原理算术逻辑单元的主要功能是对二进制数据进行定点算术运算、逻辑运算和各样移位操作。算术运算包含定点加减乘除运算;逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作。ALU往常有两个数据输入端A和B,一个数据输出端以及标记位等。三、实验要求1、实验设计目标设计一个16位算术逻辑单元,知足以下要求。(1)16位算术逻辑单元可以进行以下运算:加法、减法、加1、减1、与、或、非和传递。用3位运算操作码OP[...
算术逻辑单元
个人采集整理仅供参照学习一、实验目的1)掌握运算器的工作原理。2)考证运算器的功能。二、实验原理算术逻辑单元的主要功能是对二进制数据进行定点算术运算、逻辑运算和各样移位操作。算术运算包含定点加减乘除运算;逻辑运算主要有逻辑与、逻辑或、逻辑异或和逻辑非操作。ALU往常有两个数据输入端A和B,一个数据输出端以及标记位等。三、实验要求1、实验目标设计一个16位算术逻辑单元,知足以下要求。(1)16位算术逻辑单元可以进行以下运算:加法、减法、加1、减1、与、或、非和传递。用3位运算操作码OP[2..0]进行运算,控制方式以下所示。运算操作码OP[2..0]运算对标记位Z和C的影响000ResultA+B影响标记位Z和C001ResultA+1影响标记位Z和C010ResultA-B影响标记位Z和C011ResultA-1影响标记位Z和C100ResultAandB影响标记位Z101ResultAorB影响标记位Z110ResultnotB影响标记位Z111ResultB不影响标记位Z和C(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指示灯。四、实验步骤实验台设置成FPGA-CPU独立调试模式。REGSEL=0、CLKSEL=1、FDSEL=0。使用实验台上的单脉冲,即STEP_CLK短门路短接,短门路RUN_CLK断开。(2)将设计在QuartusⅡ下输入,编译后下载到TEC-CA上的FPGA中。对第1组数据进行8种运算,A为0xAAAA,B为0x5555对第2组数据进行8种运算,A为0xFFFF,B为0x0000对第3组数据进行8种运算,A为0x0000,B为0xFFFF对第4组数据进行8种运算,A为0x8950,B为0x9863(7)依据4组数据运算结果,连同标记位的状态填写下表:算术逻辑单元实验运算操作码运算标记C标记Z运算种类数据OP结果rezult运算前运算后运算前运算后Result<-A+B000oxFFFF0000个人采集整理仅供参照学习第1组数据A=0xAAAAB=0x5555第2组数据A=0xFFFFB=0x0000第3组数据A=0x0000B=0xFFFF第4组数据A=0x8950B=0x9863Result<-A+1001oxAAAB0000Result<-A-B010ox55550000Result<-A-1011oxAAA90000Result<-AandB100ox00000001Result<-AorB101oxFFFF0010Result<-notB110oxAAAA0000Result<-B111ox55550000Result<-A+B000oxFFFF0000Result<-A+1001ox00000101Result<-A-B010oxFFFF1010Result<-A-1011oxFFFE0000Result<-AandB100ox00000001Result<-AorB101oxFFFF0010Result<-notB110oxFFFF0000Result<-B111ox00000000Result<-A+B000oxFFFF0000Result<-A+1001ox00010000Result<-A-B010ox00010100Result<-A-1011oxFFFF1100Result<-AandB100ox00001101Result<-AorB101oxFFFF1110Result<-notB110ox00001101Result<-B111oxFFFF1111Result<-A+B000ox21B30100Result<-A+1001ox89511000Result<-A-B010oxF0ED0100Result<-A-1011ox894F1000Result<-AandB100ox88400000Result<-AorB101ox99730000Result<-notB110ox679C0000clk:instd_logic;reset:instd_logic;dinput:instd_logic_vector(15downto0);wr:instd_logic;op:instd_logic_vector(2downto0);sel:instd_logic;result:outstd_logic_vector(15downto0);Z,C:outstd_logic个人采集整理仅供参照学习Result<-B111ox98630000五、实验领会本次算数逻辑单元实验总结领会以下:1)在两个十六位数相加时获得的结果可能为十七位的,所以开始要把两个输入的十六位的数值A、B扩大为十七位;2)设置的17位存放器A1和B1也要在wr为1时,进行储存;3)在改变数据的case语句中,不可以在有信号量变化的if语句中进行数据的改变,由于在时钟的上涨边沿,不可以保留数据;(4)关于C、Z的改正,不可以直接在相应的状况下改正,所以定义C1、Z1暂时信号量,而后在时钟的上涨沿,将改正的C1、Z1值赋给C、Z;六、实验代码libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityALUisport();endentity;architecturertlofALUissignalresult1:std_logic_vector(16downto0);signalA1,B1:std_logic_vector(16downto0);beginprocess(clk,reset)variableA,B:std_logic_vector(15downto0);variableZ1,C1:std_logic;beginif(reset='0')thenZ1:='0';个人采集整理仅供参照学习C1:='0';result<="0000000000000000";elsif(clk'eventandclk='1')thenif(sel='0'andwr='1')thenA:=dinput;A1<='0'&A;elsif(sel='1'andwr='1')thenB:=dinput;B1<='0'&B;endif;endif;caseopiswhen"000"=>result1<=A1+B1;C1:=result1(16);if(result1="00000000000000000")thenZ1:='1';elseZ1:='0';endif;when"001"=>result1<='0'&A+'1';C1:=result1(16);if(result1="00000000000000000")thenZ1:='1';elseZ1:='0';endif;when"010"=>result1<=A1-B1;C1:=result1(16);if(result1="00000000000000000")thenZ1:='1';elseZ1:='0';endif;when"011"=>result1<='0'&A-'1';C1:=result1(16);if(result1="00000000000000000")thenZ1:='1';elseZ1:='0';endif;when"100"=>result1(15downto0)<=AandB;C1:='0';if(result1(15downto0)="0000000000000000")then个人采集整理仅供参照学习Z1:='1';elseZ1:='0';endif;when"101"=>result1(15downto0)<=AorB;C1:='0';if(result1(15downto0)="0000000000000000")thenZ1:='1';elseZ1:='0';endif;when"110"=>result1(15downto0)<=notB;C1:='0';if(result1(15downto0)="0000000000000000")thenZ1:='1';elseZ1:='0';endif;when"111"=>result1(15downto0)<=B;endcase;if(clk'eventandclk='1')thenZ<=Z1;C<=C1;endif;result<=result1(15downto0);endprocess;endrtl;
/
本文档为【算术逻辑单元】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索