算术逻辑部件ALU实验报告一、实验目的(1)熟悉硬件描述语言及开发环境,了解硬件系统开发的基本过程。(2)掌握ALU基本设计方法和简单运算器的数据传送通路。(3)验证ALU的功能。二、实验环境(1)硬件环境:安装有Windows7或以上操作系统的PC,THINPAD教学计算机。(2)软件开发:FPGA开发工具软件XilinxISE12.3或以上。三、实验内容(1)根据实验原理中的要求,用VHDL语言实现一个简单的ALU。(2)在教学计算机THINPAD上验证实现的ALU的功能。四、实验原理算术逻辑部件ALU的主要功能是对二进制数据进行定点算术运算、逻辑运算和各种移位操作等。算术运算包括定点加减乘除运算,逻辑运算主要用逻辑与、逻辑或、逻辑异或和逻辑非等操作。ALU通常有两个数据输入端A和B输出操作数,一个数据输出端Y以及标志位输出结果,通过输入操作码op来确定所要进行的操作,本实验通过实现一个状态机,根据状态机状态的变化来输人操作数及操作码,并最终实现不同的运算,将结果和标志位呈现出来。本实验中的ALU要求实现基本的算术运算、逻辑运算、移位运算等,具体功能如下:操作码功能描述ADDA+B加法SUBA-B减法ANDAandB与ORAorB或XORAxorB异或NOTnotA取非SLLAsllB逻辑左移B位SRLAsrlB逻辑右移B位SRAAsraB算术右移B位ROLArolB循环左移B位ALU的输入数据为16位,操作码op为4位,算术运算时数据用补码表示。五、实验步骤本实验通过VHDL语言实现一个比较简单的ALU模块。(1)用VHDL语言编写ALU功能代码,并用状态机对其进行控制,使其完成实验要求的操作。操作码和操作数的输入用微型开关SW0~SW15,计算结果的输出用数字机上的LED灯来展示。(2)将代码下载到教学机的FPGA中,并调试完成。(3)在THINPAD教学机上运行时,RST和时钟均用手动开关或按钮,便于演示。操作码和操作数在开关SW0~SW15上输入,为便于观察和调试,每次ALU得到操作数,最好可以在LED上显示一下,最后的运算结果在L0~L15上显示,标志位可自行选择显示方法。(4)状态机如下:RST-状态0输入操作数A-CLK-状态1输入操作数B-CLK-状态2输入操作码op输出操作结果r-CLK-状态3输出标志位-CLK-状态0实验主要代码如下:(5)记录实验结果:操作码AB结果标志位与预期一致ADD00000000000000000001000000000000000100000000000000100000一致SUB000100000000000000000000000000000001111111111111111110101一致ROL10011111000000000000000000000000000111100000000000010100一致六、思考题1、时序电路。七、实验总结通过该实验,我们小子熟悉了硬件描述语言的基本语法与调试方式。掌握了ALU的基本设计方法,并对XilinxISE开发环境有了更加深入的了解,学会了如何设计工程、如何仿真,对THINPAD教学机器也更加熟悉了。