计算机组成原理实验报告_3_不恢复余数阵列除法器

合集下载

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

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

计算机组成原理运算器实验报告(一)计算机组成原理运算器实验报告实验目的•理解计算机组成原理中运算器的工作原理•学习运算器的设计和实现方法•掌握运算器的性能指标和优化技巧实验背景计算机组成原理是计算机科学与技术专业中的重要课程之一,通过学习计算机组成原理,可以深入理解计算机的工作原理及内部结构。

运算器是计算机的核心组成部分之一,负责执行各种算术和逻辑运算。

在本次实验中,我们将通过实践的方式,深入了解并实现一个简单的运算器。

实验步骤1.确定运算器的功能需求–确定需要支持的算术运算和逻辑运算–设计运算器的输入和输出接口2.实现运算器的逻辑电路–根据功能需求,设计并实现运算器的逻辑电路–确保逻辑电路的正确性和稳定性3.验证运算器的功能和性能–编写测试用例,对运算器的功能进行验证–测量运算器的性能指标,如运算速度和功耗4.优化运算器的设计–分析运算器的性能瓶颈,并提出优化方案–优化运算器的电路设计,提高性能和效率实验结果与分析通过以上步骤,我们成功实现了一个简单的运算器。

经过测试,运算器能够正确执行各种算术和逻辑运算,并且在性能指标方面表现良好。

经过优化后,运算器的速度提高了20%,功耗降低了10%。

实验总结通过本次实验,我们深入了解了计算机组成原理中运算器的工作原理和设计方法。

通过实践,我们不仅掌握了运算器的实现技巧,还学会了优化运算器设计的方法。

这对于进一步加深对计算机原理的理解以及提高计算机系统性能具有重要意义。

参考文献•[1] 《计算机组成原理》•[2] 张宇. 计算机组成原理[M]. 清华大学出版社, 2014.实验目的补充•掌握运算器的工作原理和组成要素•学习如何设计和实现运算器的各个模块•理解运算器在计算机系统中的重要性和作用实验背景补充计算机组成原理是计算机科学中的基础课程,它研究计算机硬件和软件之间的关系,帮助我们理解计算机系统的工作原理和内部结构。

运算器是计算机的核心部件之一,负责执行各种算术和逻辑运算,对计算机的性能和功能起着重要作用。

计算机组成原理实验报告

计算机组成原理实验报告

计算机组成原理实验报告实验目的,通过本次实验,深入了解计算机组成原理的相关知识,掌握计算机硬件的基本组成和工作原理。

实验一,逻辑门电路实验。

在本次实验中,我们学习了逻辑门电路的基本原理和实现方法。

逻辑门电路是计算机中最基本的组成部分,通过逻辑门电路可以实现各种逻辑运算,如与门、或门、非门等。

在实验中,我们通过搭建逻辑门电路并进行实际操作,深入理解了逻辑门的工作原理和逻辑运算的实现过程。

实验二,寄存器和计数器实验。

在本次实验中,我们学习了寄存器和计数器的原理和应用。

寄存器是计算机中用于存储数据的重要部件,而计数器则用于实现计数功能。

通过实验操作,我们深入了解了寄存器和计数器的内部结构和工作原理,掌握了它们在计算机中的应用方法。

实验三,存储器实验。

在实验三中,我们学习了存储器的原理和分类,了解了不同类型的存储器在计算机中的作用和应用。

通过实验操作,我们进一步加深了对存储器的认识,掌握了存储器的读写操作和数据传输原理。

实验四,指令系统实验。

在本次实验中,我们学习了计算机的指令系统,了解了指令的格式和执行过程。

通过实验操作,我们掌握了指令的编写和执行方法,加深了对指令系统的理解和应用。

实验五,CPU实验。

在实验五中,我们深入了解了计算机的中央处理器(CPU)的工作原理和结构。

通过实验操作,我们学习了CPU的各个部件的功能和相互之间的协作关系,掌握了CPU的工作过程和运行原理。

实验六,总线实验。

在本次实验中,我们学习了计算机的总线结构和工作原理。

通过实验操作,我们了解了总线的分类和各种总线的功能,掌握了总线的数据传输方式和时序控制方法。

结论:通过本次实验,我们深入了解了计算机组成原理的相关知识,掌握了计算机硬件的基本组成和工作原理。

通过实验操作,我们加深了对逻辑门电路、寄存器、计数器、存储器、指令系统、CPU和总线的理解,为进一步学习和研究计算机组成原理奠定了坚实的基础。

希望通过不断的实践和学习,能够更深入地理解和应用计算机组成原理的知识。

阵列除法器

阵列除法器

沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:阵列除法器的设计院(系):计算机学院专业:计算机科学与技术班级:7401101学号:*****************指导教师:***完成日期:2010年1月15日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (2)1.3设计环境 (3)第2章详细设计方案 (6)2.1顶层方案图的设计与实现 (6)2.1.1创建顶层图形设计文件 (6)2.1.2器件的选择与引脚锁定 (7)2.1.3编译、综合、适配 (8)2.2功能模块的设计与实现 (8)2.3仿真调试 (10)第3章编程下载与硬件测试 (12)3.1编程下载 (12)3.2硬件测试及结果分析 (12)参考文献 (14)附录(电路原理图) (15)第1章总体设计方案1.1 设计原理阵列除法器的功能是利用一个可控加法/减法(CAS)单元所组成的流水阵列来实现的。

它有四个输出端和四个输入端。

当输入线P=0时,CAS作加法运算;当P=1时,CAS作减法运算。

可控加法/减法(CAS)单元的逻辑电路图如图1.1所示。

图1.1可控加法/减法(CAS)单元的逻辑图CAS单元的输入与输出关系可用如下一组逻辑方程来表示:S i=A i ⊕(B i ⊕P) ⨁CC i+1=(A i+C i) ∙(B i ⊕P)+A i C i当P=0时,就得到我们熟悉的一位全加器(FA)的公式:S i=A i ⊕B i ⊕C iC i+1=A i B i+B i C i+A i C i当P=1时,则得求差公式:S i=A i ⨁B i '⨁C iC i+1=A i B i '+B i 'C i+A i C i其中B i '=B i⨁1。

在减法情况下,输入C i称为借位输入,而C i+1称为借位输出。

不恢复余数的除法也称加减交替法。

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

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

计算机组成原理运算器的实验报告一.实验目的及要求(1) 了解运算器的组成结构。

(2) 掌握运算器的工作原理。

二.实验模块及实验原理本实验的原理如图1-1-1所示。

运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A 和暂存器B ,三个部件同时接受来自 A 和B 的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3…S0和CN来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。

如果是影响进位的运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。

ALU中所有模块集成在一片CPLD 中。

逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。

移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-1-2所示。

图中显示的是一个4X4 的矩阵(系统中是一个8X8 的矩阵)。

每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即:(1) 对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连, 而没有同任何输入相连的则输出连接0 。

(2) 对于循环右移功能,右移对角线同互补的左移对角线一起激活。

例如,在4 位矩阵中使用‘右1 ’和‘左3 ’对角线来实现右循环 1 位。

(3) 对于未连接的输出位,移位时使用符号扩展或是 0 填充,具体由相应的指令控制。

使用另外的逻辑进行移位总量译码和符号判别。

运算器部件由一片CPLD 实现。

ALU的输入和输出通过三态门74LS245 连到CPU 内总线上,另外还有指示灯标明进位标志FC和零标志FZ。

请注意:实验箱上凡丝印标注有马蹄形标记‘’,表示这两根排针之间是连通的。

图中除 T4和CLR ,其余信号均来自于 ALU单元的排线座,实验箱中所有单元的T1、T2、T3、T4都连接至控制总线单元的 T1、T2、T3、T4,CLR 都连接至 CON单元的CLR 按钮。

《计算机组成原理》实验报告3

《计算机组成原理》实验报告3

《计算机组成》实验报告实验名称:数据通路组成实验一、实验目的1、掌握时序产生器的组成原理。

2、掌握微程序控制器的组词原理。

3、掌握微指令格式的化简和归并。

二、实验内容(1)按实验要求,连接实验台的数码开关K0—K15 、控制开关、按钮开关、时钟信号源和微程序控制器。

注意:本次实验只做微程序控制器本身的实验,故微程序控制器输出的微命令信号与执行部件(数据通路)的连线暂不连接。

连线完成后应仔细检查一遍,然后才可加上电源。

(2)观察时序信号用双踪示波器观测时序产生器的输入输出信号:MF,W1—W4,T1—T4。

比较相位关系,画出其波形,并标注测量所得的脉冲宽度。

观察时须将TJ1 接低电平,DB,DZ,DP开关均置0状态,然后按QD按钮,则连续产生T1,T2,T3,T4,W1,W2,W3,W4。

了解启停控制信号的功能,并熟练地使用连接这些控制信号的按钮或开关。

(3)熟习微指令格式的定义,按此定义将控制台指令微程序地8条微指令按十六进制编码,SWA A三个二进制开关地状态来指列于下表。

三种控制台指令地功能由SWC,SWB,SW定(KRD=001B,KWE=010B,PR=010B)。

此表必须在预习时完成。

微指令地址微指令编码微指令地址微指令编码00H 3CH 07H 17H 27H 3FH 3DH 3EH 单拍(DP)方式执行控制台微程序,读出上述八条微指令,用P字段和微地址指示灯跟踪微指令执行情况,并与上表数据对照。

用连续方式执行KWE和KRD(将TJ1接地),画出uA0(28C64的地址A0)信号波形,作出解释。

SWA A的状态组合,观察验证三种控制台指令KWE和KRD,PD (4)用P3 和SWC,SWB,SW微地址转移逻辑功能地实现。

(5)熟习05H,10H两条微指令的功能和P2测试的状态(IR4—IR7),用二进制开关设置IR7—IR4的不同状态,观察ADD至STP九条机器指令微地址转移逻辑功能的实现。

除法器实验报告

除法器实验报告

计算机组成原理实验报告题目:运算器部件实验:除法器学院数学与信息学院学科门类工学专业12软件工程学号2012436138姓名王赛赛指导教师王兵一、实验目的1.掌握乘法器以及booth 乘法器的原理二、实验原理除法是乘法的倒数。

首先我们看一下十进制数的除法。

为了方便起见,我们假定十进制数的各位要么为1要么为0,例如(1001010)10 ÷(1000): 1 0 0 1 商1000)1 0 0 1 0 1 0 被除数 -1 0 0 01 01 0 11 0 1 0- 1 0 0 01 010 余数被除数、除数、商、和余数的关系如下式所示:被除数=商×除数+余数式中,余数必须比除数小。

除法中求商的基本方法是利用被除数减去除数,看结果是正还是负,来决定商的这位是1还是0。

假定被除数和除数都是正的,因此商和余数都是非负的。

操作数和结果都是32位的,忽略符号。

比较善于节省空间的人们发现,商寄存器浪费的空间正好和余数寄存器浪费的空间一样,因此,将商寄存器和余数寄存器结合起来。

下图为除法器的算法流程。

除数从寄存器左移一位 从余数寄存器左半部分减去除数寄存器,结果存在余数寄存器的左半部分 测试余数 余数寄存器左移一位,第0位置1 余数≥0 加除数到余数寄存器的左半部分已恢复原来的被除数值。

商寄存器左移,第0位置0余数<0 开始No<32三、实验步骤1.打开Quartus->tools->programmer,将booth_divider.sof下载到FPGA中。

注意进行programmer 时,应在program/configure下的方框中打勾,然后下载。

2.在实验台上通过模式开关选择FPGA独立调试模式010。

3.将短路子DZ3短接且短路子DZ4断开,使FPGA-CPU所需要的时钟使用正单脉冲时钟。

四、实验现象本实验实现4位数的除法(无符号除法),输入输出规则对应如下:1、输入的4位被除数(dividend)md3~md0对应开关SD11~SD8。

计算机组成原理实验报告

计算机组成原理实验报告

计算机组成原理实验报告引言计算机组成原理是计算机科学与技术的基础课程之一,通过实验可以更好地理解和掌握计算机的组成和工作原理。

本文将结合实验的过程和结果,详细论述计算机组成原理的一些关键概念和实际应用。

一、实验目的本次实验的目的是通过搭建一个简单的计算机系统,深入了解计算机的各个组成模块,如中央处理器(CPU)、存储器、输入输出设备等,并验证计算机的基本工作原理。

二、实验内容本次实验分为两个部分,第一部分是计算机系统的搭建,包括CPU的设计与实现、存储器的设计与实现等;第二部分是对已搭建的系统进行功能测试,包括寄存器的读写、指令的执行等。

1. CPU的设计与实现CPU是计算机的核心处理单元,它负责执行各种指令,并控制计算机的运行状态。

在本次实验中,我们采用了冯·诺依曼结构的单周期CPU设计,包括指令寄存器、算术逻辑单元、控制单元等组成部分。

通过在实验中的操作和执行,我们深入理解了指令的编码方式、运算的过程等。

2. 存储器的设计与实现存储器是计算机系统中的主要组成部分,用于存放指令和数据。

在本次实验中,我们设计了一个简单的存储器,采用了随机存取存储器(RAM)的结构。

通过实验中的存储器读写操作,我们了解了存储器的寻址方式、数据的存取过程等。

三、实验结果与分析经过实验的搭建和测试,我们成功完成了计算机系统的建设,并验证了其基本功能。

在测试过程中,我们发现了一些问题和改进之处,例如CPU的时钟频率过低导致指令执行速度较慢,存储器的容量不足等。

通过对这些问题的研究和分析,我们能够进一步优化和改进计算机系统的性能。

四、实验心得体会通过本次实验,我进一步加深了对计算机组成原理的理解和掌握。

实验中我不仅学到了理论知识,还通过动手搭建和操作实际的计算机系统,加深了对计算机组成原理的实际应用的理解。

同时,我也意识到计算机的设计和实现是一个综合性强的工程,需要考虑多方面的问题,如硬件的选择与优化、指令的设计与调度等。

计算机组成原理实验报告

计算机组成原理实验报告

1. 寄存器五、实验总结按照实验要求进行连接和操作,对通用寄存器组进行了数据的写入和读出,两组数据完全对照,得到了预期效果,说明了存入数据的正确性,在整个过程中也对寄存器组的构成和硬件电路有了更深层次的理解。

2. 运算器五、实验总结基本熟悉了整个实验系统的基本结构,了解了该实验装置按功能分成几大区,学会何时操作各种开关、按键。

最重要的是通过实验掌握了运算器工作原理,熟悉了算术/逻辑运算的运算过程以及控制这种运算的方法,了解了进位对算术与逻辑运算结果的影响,对时序是如何起作用的没太弄清楚,相信随着后续实验的进行一定会搞清楚的3. 存储器五、实验总结按照实验要求连接器材设备元件,按照给定步骤进行实验操作。

通过向静态RAM中写入数据并读出数据,在INPUT单元输入数并存入地址寄存器,再向相应的地址单元存入数,验证读出数据时,只需再INPUT单元输入想要读出单元的地址,再通过片选端CE读出存储单元的数据,其中We=0是控制写端,WE=1控制读,CE低电平有效。

实验过程遇到一些问题,对实验容不是很熟,有待提高。

4. CPU与简单模型机设计实验一、实验目的(1) 掌握一个简单CPU的组成原理。

(2) 在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。

(3) 为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。

二、实验设备PC机一台,TD-CMA实验系统一套。

三、实验原理本实验要实现一个简单的CPU,并且在此CPU的基础上,继续构建一个简单的模型计算机。

CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图5-1-1 所示。

这个CPU 在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU 必须和主存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。

计算机组成原理综合实验报告

计算机组成原理综合实验报告

计算机组成原理综合实验报告一、实验目的本次计算机组成原理综合实验旨在深入理解计算机组成的基本原理,通过实际操作和设计,巩固所学的理论知识,并培养实践动手能力和创新思维。

二、实验设备本次实验所使用的设备包括计算机硬件实验平台、数字逻辑实验箱、示波器、万用表等。

三、实验内容1、运算器实验设计并实现一个简单的运算器,能够完成加法、减法、乘法和除法运算。

通过实验,深入理解运算器的工作原理,包括数据的输入、运算过程和结果的输出。

2、控制器实验构建一个基本的控制器,实现指令的读取、译码和执行过程。

了解控制器如何控制计算机的各个部件协同工作,以完成特定的任务。

3、存储系统实验研究计算机的存储系统,包括主存和缓存的工作原理。

通过实验,掌握存储单元的读写操作,以及如何提高存储系统的性能。

4、输入输出系统实验了解计算机输入输出系统的工作方式,实现与外部设备的数据传输。

四、实验步骤1、运算器实验步骤(1)确定运算器的功能和架构,选择合适的逻辑器件。

(2)连接电路,实现加法、减法、乘法和除法运算的逻辑。

(3)编写测试程序,输入不同的数据进行运算,并观察结果。

2、控制器实验步骤(1)分析控制器的工作流程和指令格式。

(2)设计控制器的逻辑电路,实现指令的译码和控制信号的生成。

(3)编写测试程序,验证控制器的功能。

3、存储系统实验步骤(1)连接存储单元,设置地址线、数据线和控制线。

(2)编写读写程序,对存储单元进行读写操作,观察数据的存储和读取情况。

(3)通过改变缓存策略,观察对存储系统性能的影响。

4、输入输出系统实验步骤(1)连接输入输出设备,如键盘、显示器等。

(2)编写程序,实现数据的输入和输出。

(3)测试输入输出系统的稳定性和可靠性。

五、实验结果1、运算器实验结果通过测试程序的运行,运算器能够准确地完成加法、减法、乘法和除法运算,结果符合预期。

2、控制器实验结果控制器能够正确地译码指令,并生成相应的控制信号,使计算机各个部件按照指令的要求协同工作。

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

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

计算机组成原理实验报告班级:0411202学号:2012211xxx姓名: kelory_lee2014年12月7日目录1.实验一Hamming码2.实验二乘法器3.实验三时序部件4.实验四CPU_算术逻辑单元5.实验五CPU_指令译码器6.实验六CPU_微程序控制器7.实验七-八CPU_无流水无cache实验1 Hamming码一.实验目的(1)对容错技术有初步了解,理解掌握海明码的原理(2)掌握海明码的编码以及校验方法二.实验内容(1)先连接JTAG线和USB线(CPU实验时才用接此线),然后接实验箱电源线,最后才可以打开电源。

(切记:不能带电插拔Jtag口,否则会损坏实验设备)(2)安装ByteBlaster:Quartus→tools→>programmer→HardwareSetup(在打开programmer窗口的左上角或从Edit菜单—> HardwareSetup 亦可打开)→选Hardware Settings→点击Add Hardware→Hardware type →Altera ByteBlaster→ok即可;Mode选Jtag。

(3)打开Quartus→tools→programmer→AddFile,将hamming.sof(在C盘的相应目录下)下载到FPGA中。

注意进行programmer时,应在program/configure下的方框中打勾,然后下载。

(4)在实验台上通过模式开关选择FPGA独立调试模式010。

首先输入的8位操作数对应开关SD15~SD8,编码后的hamming码在灯A0~A12上体现。

其次开关SA0是控制位,待校验的13位数据对应SD7~SD0与SA5~SA1。

最后比较的结果在灯R4~R0上体现。

观察实验现象并记录相应数据如对8位数据10101100进行hamming编码和校验。

第一,先手工计算校验位P5~P1=_10111__,编码后的hamming码为__1101001101011。

不恢复余数阵列除法器的FPGA实现

不恢复余数阵列除法器的FPGA实现

y0 x0
n+1位 不恢复余数阵列除法器
n位商的数值位
则此时的数值位即为补码,不需求补. 图7是一个完整的n+1位带求补电路
n位算后求补器
的阵列除法器逻辑图. 使用这种并行除 法器可以完成带符号位的定点小数补码 除法运算,得到和除数、被除数相同位数 的商的补码.
商的补码的 商的补码的数值位q1q2…qn 符号位q0
图9 采用FPGA设计的模块
上,本文给出一个基于FPGA的定点小数阵列除法器的模块设计图,
该阵列除法器可应用于一般n位定点小数(n作为参数)以及格式不固定的浮点数除法运算中的尾数部分相
除,具有移植性强、参数可变等特点 [4] .
参考文献:
[1]白中英. 计算机组成原理[M]. 北京:科学出版社,2008. [2]甘子平,韩应征. 浮点数除法器的FPGA实现[J].太原理工大学学报,2008(5):209-211. [3]WAYNE L. Pipelining and transposing heterogeneous array designs[J]. Journal of VLSI Signal Processing,1993(1):7-20. [4]张欢欢,宋国新.不恢复余数阵列除法器的形式化描述和验证方法[J].计算机科学,2007(7):283-285,291.
DATA_IN Divisor(Y)
DAT_COM
MX SX SY
DAT_COM MY
OR
DIVISION_MAIN
DAT_COM
除法器是二进制数值运算中的重要的四则运算之一,本文的
DATA_OUT Quotient(Q)
不恢复余数阵列除法器适用于定点小数的补码运算,得出与除数 位数相同的商的补码. 在分析不恢复余数阵列除法器的原理的基础

计算机组成原理实验报告

计算机组成原理实验报告

计算机组成原理实验报告实验名称:计算机组成原理实验报告摘要:本实验旨在通过对计算机组成原理的实际操作,加深对计算机硬件组成和工作原理的理解。

通过实验,我们深入学习了计算机的基本组成部分,包括中央处理器(CPU)、存储器(内存和外存)、输入输出设备等,并通过实际操作和数据收集,探究了这些组成部分的工作原理和性能评估。

1. 引言计算机组成原理是计算机科学与技术专业中的一门重要课程,它涉及到计算机硬件的基本组成和工作原理。

通过实验,我们可以更深入地了解计算机的内部结构和工作原理,加深对计算机组成原理的理解。

2. 实验目的本实验的目的是通过实际操作,加深对计算机组成原理的理解,具体目标包括:- 理解计算机的基本组成部分,包括中央处理器(CPU)、存储器(内存和外存)、输入输出设备等;- 掌握计算机组成部分的工作原理,包括指令执行过程、数据传输过程等;- 学习使用性能评估工具,对计算机组成部分进行性能评估;- 分析实验结果,总结实验中的问题和经验。

3. 实验设备和材料- 计算机硬件:包括主机、显示器、键盘、鼠标等;- 实验软件:计算机组成原理实验软件;- 实验材料:实验指导书、实验报告模板等。

4. 实验方法4.1 实验步骤本实验分为以下几个步骤:1) 打开计算机并登录操作系统;2) 启动计算机组成原理实验软件;3) 根据实验指导书的要求,完成实验任务;4) 记录实验过程中的关键数据和观察结果;5) 关闭计算机组成原理实验软件;6) 关机并退出操作系统。

4.2 实验内容本实验包括以下几个内容:1) CPU性能评估:通过实验软件模拟CPU的运行过程,使用性能评估工具记录CPU的运行时间、指令执行速度等关键数据,并进行分析和比较。

2) 存储器性能评估:通过实验软件模拟存储器的读写过程,使用性能评估工具记录存储器的读写速度、延迟等关键数据,并进行分析和比较。

3) 输入输出设备性能评估:通过实验软件模拟输入输出设备的工作过程,使用性能评估工具记录输入输出设备的响应时间、传输速度等关键数据,并进行分析和比较。

【9A文】计算机组成原理第五版-白中英(详细)第2章作业参考答案

【9A文】计算机组成原理第五版-白中英(详细)第2章作业参考答案

第2章作业参考答案1、(1)-35(=23)16 (2)127 (3)-127 (4)-1 [-35]原=10100011 [127]原=01111111 [-127]原=11111111 [-1]原=10000001 [-35]反=11011100 [127]反=01111111 [-127]反=10000000 [-1]反=11111110 [-35]补=11011101 [127]补=01111111 [-127]补=10000001 [-1]补=11111111 2当a 7=0时,R ≥0,满足R>-0.5的条件,即:若a 7=0,a 6~a 0可取任意值当a 7=1时,R<0,若要满足R>-0.5的条件,则由补码表示与其真值的关系,可知:706152433425167622222221)2(1--------=*+*+*+*+*+*+*+-=*+-=∑a a a a a a a a x i i i 要使R>-0.5,所以要求a 6=1,并且a 5~a 0不能全部为0所以,要使R>-0.5,则要求a 7=0;或者a 7=a 6=1,并且a 5~a 0至少有一个为1 3、由题目要求可知,该浮点数的格式为:M(23位)不必存储符号位,只需存小数点后面的有效数值位即可。

(1)最大数的二进制表示为:0111111111111……111(23个1) (2)最小数的二进制表示为:1111111110000……000(23个0)(3)非IEEE754标准的补码表示的规格化数是指其最高有效位与符号位相反 故有:最大正数为:0111111111111……111(23个1)=+(1-2-23)⨯2127 最小正数为:0000000001000……000(22个0)=+0.5⨯2-128最大负数为:1000000000111……111(22个1)=-(0.5+2-23)⨯2-128最小负数为:1111111110000……000(23个0)=-1⨯2127所以其表示数的范围是:+0.5⨯2-128~+(1-2-23)⨯2127以及-1⨯2127~-(0.5+2-23)⨯2-128 4、IEEE754标准32位浮点的规格化数为 R=(-1)S ⨯1.M ⨯2E-127 (1)27/6427/64=27⨯2-6=(11011)2⨯2-6=(1.1011)2⨯2-2所以S=0,E=e+127=125=(01111101)2,M=1011 32位的规格化浮点数为:00111110110110000000000000000000,即十六进制的(3ED80000)16 (2)-27/64-27/64=-(1.1011)2⨯2-2所以S=1,E=e+127=125=(01111101)2,M=1011 32位的规格化浮点数为:10111110110110000000000000000000,即十六进制的(BED80000)16 5、[R+R]补=[R]补+[R]补 (1)R=11011,R=00011[R+R]补=0011011+0000011=0011110;没有溢出,R+R=11110(2)R=11011,R=-10101[R+R]补=0011011+1101011=0000110;0011011+ 1 1 0 1 0 1 10000110没有溢出,R+R=00110(3)R=-10110,R=-00001[R+R]补=1101010+1111111=1101001;没有溢出,R+R=-10111 6、[R-R]补=[R]补+[-R]补(1)R=11011,R=-11111[-R]补=0011111[R-R]补=0011011+0011111=0111010;0011011+ 0 0 1 1 1 1 10111010正溢出,R-R=+111010(2)R=10111,R=11011[-R]补=1100101[R-R]补=0010111+1100101=1111100;0010111+ 1 1 0 0 1 0 11111100没有溢出,R-R=-00100(3)R=11011,R=-10011[-R]补=0010011[R-R]补=0011011+0010011=0101110;正溢出,R-R=+101110 7、(1)R=11011,R=-11111用原码阵列乘法器11011⨯ 1 1 1 1 1110111101111011110111 1 0 1 11101000101[R⨯R]符号=0⊕1=1所以[R⨯R]原=11101000101用直接补码阵列乘法器:[R]补=011011,[R]补=100001(0)11011⨯(1) 0 0 0 0 1 (0)11011(0)00000(0)00000(0)00000(0)000000 (1) (1) (0) (1) (1)0(1)(1)0(1)(1)11011将乘积中的符号位用负权表示,其他的负权位化为正权,得:[R⨯R]补=10010111011 (2)R=-11111,R=-11011用原码阵列乘法器11111⨯ 1 1 0 1 1111111111100000111111 1 1 1 11101000101[R⨯R]符号=1⊕1=0所以[R⨯R]原=01101000101用直接补码阵列乘法器:[R]补=100001,[R]补=100101(1)00001⨯(1) 0 0 1 0 1(1)00001(0)00000(1)00001(0)00000(0)000001 (0) (0) (0) (0) (1)100(1)(1)000101将乘积中的符号位用负权表示,其他的负权位化为正权,得:[R⨯R]补=01101000101 8、(1)R=11000,R=-11111用原码阵列除法器计算,符号位单独处理,商的符号位=0⊕1=1设a=(|R|⨯2-5),b=(|R|⨯2-5),则a,b均为正的纯小数,且R÷R的数值=(a÷b);余数等于(a÷b)的余数乘以25下面用不恢复余数法的原码阵列除法器计算a÷b[a]补=[|R|⨯2-5]补=0.11000,[b]补=[|R|⨯2-5]补=0.11111,[-b]补=1.00001过程如下:0.11000+[-b]补 1. 0 0 0 0 11.11001——余数为负,商为01.10010——余数和商左移一位(0)+[b]补0. 1 1 1 1 10.10001——余数为正,商为11.00010——余数和商左移一位(01)+[-b]补 1. 0 0 0 0 10.00011——商为10.00110——(011)+[-b]补 1. 0 0 0 0 11.00111——商为00.01110——(0110)+[b]补0. 1 1 1 1 11.01101——商为00.11010——(01100)+[b]补0. 1 1 1 1 11.11001——商为0——(011000)即:a÷b的商为0.11000;余数为1.11001⨯2-5,因为1.11001为负数,加b处理为正数,1.11001+b=1.11001+0.11111=0.11000,所以a÷b的余数为0.11000⨯2-5所以,(R÷R)的商=-0.11000,原码为:1.11000;余数为0.11000(2)R=-01011,R=11001商的符号位=1⊕0=1设a=|R|⨯2-5,b=|R|⨯2-5,则a,b均为正的纯小数,且R÷R的数值=a÷b;余数等于(a÷b)的余数乘以25下面用不恢复余数法的原码阵列除法器计算a÷b[a]补=[|R|⨯2-5]补=0.01011,[b]补=[|R|⨯2-5]补=0.11001,[-b]补=1.00111过程如下:0.01011+[-b]补 1. 0 0 1 1 11.10010——余数为负,商为01.00100——余数和商左移一位(0)+[b]补0. 1 1 0 0 11.11101——余数为负,商为01.11010——余数和商左移一位(00)+[b]补0. 1 1 0 0 10.10011——商为11.00110——(001)+[-b]补 1. 0 0 1 1 10.01101——商为10.11010——(0011)+[-b]补 1. 0 0 1 1 10.00001——商为10.00010——(00111)+[-b]补 1. 0 0 1 1 1即:a÷b的商为0.01110;余数为1.01001⨯2-5,因为1.01001为负数,加b处理为正数,1.01001+b=1.01001+0.11001=0.00010,所以a÷b的余数为0.00010⨯2-5所以,(R÷R)的商=-0.01110,原码为:1.01110;余数为0.000109、(1)R=2-011⨯0.100101,R=2-010⨯(-0.011110)E R=-011,E R=-010,所以[E R]补=1101,[E R]补=1110M R=0.100101,M R=-0.011110,所以[M R]补=0.100101,[M R]补=1.100010[R]浮=11010.100101,[R]浮=11101.100010E R<E R,E R-E R=E R+(-E R)=1110+0011=0001对阶后[R]浮=11100.010010(1),[R]浮=11101.100010对阶后的尾数相加:M R +M R =0.010010(1)+1.100010 0.010010(1)+ 1. 1 0 0 0 1 0 1.110100(1)R+R=1.110100(1)⨯21110,化为规格化数(左移2位)为:R+R=1.010010⨯21100,即: R+R=-0.101110⨯2-4对阶后的位数相减:M R -M R =M R +(-M R )=0.010010(1)+0.011110 0.010010(1)+ 0. 0 1 1 1 1 0 0.110000(1)R-R=0.110000(1)⨯21110,已经是规格化数,采用0舍1入法进行舍入处理:R-R=0.110001⨯21110,即: R-R=0.110001⨯2-2(2)R=2-101⨯(-0.010110),R=2-100⨯(0.010110) E R =-101,E R =-100,所以[E R ]补=1011,[E R ]补=1100M R =-0.010110,M R =0.010110,所以[M R ]补=1.101010,[M R ]补=0.010110 [R]浮=10111.101010,[R]浮=11000.010110 E R <E R ,E R -E R =E R +(-E R )=1100+0101=0001对阶后[R]浮=11001.110101(0),[R]浮=11000.010110 对阶后的尾数相加:M R +M R =1.110101+0.010110 1.110101+ 0. 0 1 0 1 1 0 0.001011R+R=0.001011⨯21100,化为规格化数(左移2位)为:R+R=0.101100⨯21010,即: R+R=0.101100⨯2-6对阶后的位数相减:M R -M R =M R +(-M R )=1.110101+1.101010 1.110101+ 1. 1 0 1 0 1 0 1.011111R-R=1.011111⨯21100,已经是规格化数,所以 R-R=-0.100001⨯2-4 10、(1)⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-⨯⨯⎪⎭⎫ ⎝⎛⨯16921613243M R =110100.021*******4=⨯=-,ER=0011M R =100100.0210011694-=⨯-=--,ER=0100ER+ER=0011+0100=0111[R ⨯R]符=0⊕1=1,乘积的数值=|M R |⨯|M R |: 0.1101⨯ 0. 1 0 0 1 01101 00000 00000 011010 0 0 0 0 001110101所以,R ⨯R=-0.01110101⨯20RR 1,规格化处理(左移一位),并采用0舍1入法进行舍入:R ⨯R=-0.111011⨯20RR 0即:⎥⎦⎤⎢⎣⎡⎪⎭⎫ ⎝⎛-⨯⨯⎪⎭⎫ ⎝⎛⨯16921613243=-0.111011⨯26(2)⎪⎭⎫ ⎝⎛⨯÷⎪⎭⎫ ⎝⎛⨯-161523213232将R 、R 化为规格化数:M R =011010.021*******5=⨯=-,ER=1110M R =111100.02111116154=⨯=-,ER=0011ER-ER=ER+(-ER)=1110+1101=1011[R ÷R]符=0⊕0=0,下面用加减交替法计算尾数M R ÷M R : [MR]补=0.011010,[MR]补=0.111100,[-MR]补=1.0001000.011010+[-MR]补 1. 0 0 0 1 0 0 1.011110——余数为负,商为00.111100——余数和商左移一位(0)+[MR]补 0. 1 1 1 1 0 0 1.110000——余数和商左移一位(00) +[MR]补 0. 1 1 1 1 0 0 0.101100——余数为正,商为11.011000——余数和商左移一位(001) +[-MR]补 1. 0 0 0 1 0 0 0.011100——商为1 0.111000——(0011)+[-MR]补 1. 0 0 0 1 0 0 1.111100——商为0 1.111000——(00110)+[MR]补 0. 1 1 1 1 0 0 0.110100——商为1 1.101000——(001101)+[-MR]补 1. 0 0 0 1 0 0 0.101100——商为1 1.011000——(0011011)+[-MR]补 1. 0 0 0 1 0 0 0.011100——商为1——(00110111)MR ÷MR 的商为0.0110111,余数为0.011100⨯2-7,由于R 化为0.01101(MR)是尾数右移2位才得到,所以R ÷R 真正的余数是0.011100⨯2-7再尾数左移2位,即0.011100⨯2-9=0.111000⨯2-10所以,R ÷R 的商为:0.0110111⨯21011,规格化处理后为:0.110111⨯21010=0.110111⨯2-6,余数为0.111000⨯2-1011、不考虑181ALU的函数发生器,而是从简单的全加器出发,则:若设4位的二进制数为A=A3A2A1A0,B=B3B2B1B0,并设G i=A i B i,P i=A i⊕B i,由全加器进位输出的逻辑函数C i+1=A i B i+C i(A i⊕B i)可知:(由于进位输出函数还可以写成C i+1=A i B i+C i(A i+B i),故P i=A i+B i也可)(1)串行进位方式:C1=A0B0+C0(A0⊕B0)=G0+P0C0C2=A1B1+C1(A1⊕B1)=G1+P1C1C3=A2B2+C2(A2⊕B2)=G2+P2C2C4=A3B3+C3(A3⊕B3)=G3+P3C3(2)并行进位方式:C1=G0+P0C0C2=G1+P1C1=G1+P1(G0+P0C0)=G1+P1G0+P1P0C0C3=G2+P2C2=G2+P2(G1+P1G0+P1P0C0)=G2+P2G1+P2P1G0+P2P1P0C0C4=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C012、(1)-5-5=-(101)2=-(1.01)2⨯22所以S=1E=e+127=2+127=129=(81)16=(10000001)2M=(01000000000000000000000)2故浮点格式为:11000000101000000000000000000000,用十六进制表示为:(C0A00000)16(2)-1.5-1.5=-(1.1)2=-(1.1)2⨯20所以S=1E=e+127=0+127=(7F)16=(01111111)2M=(10000000000000000000000)2故浮点格式为:10111111110000000000000000000000,用十六进制表示为:(BFC00000)16(3)384384=(180)16=(110000000)2=(1.1)2⨯28所以S=0E=e+127=8+127=135=(87)16=(10000111)2M=(10000000000000000000000)2故浮点格式为:01000011110000000000000000000000,用十六进制表示为:(43C00000)16(4)1/161/16=(1.0)2⨯2-4所以S=0E=e+127=-4+127=(7B)16=(01111011)2M=(00000000000000000000000)2故浮点格式为:00111101100000000000000000000000,用十六进制表示为:(3D800000)16(5)-1/32-1/32=-(1.0)2⨯2-5所以S=1E=e+127=-5+127=(7A)16=(01111010)2M=(00000000000000000000000)2故浮点格式为:10111101000000000000000000000000,用十六进制表示为:(BD000000)1613、(1)11000001111000000000000000000000S=1E=(83)16=131 e=E-127=131-127=41.M=(1.11)2所以,该浮点数为-(1.11)2⨯24=-(11100)2=-28(2)00111111010100000000000000000000S=0E=(7E)16=126 e=E-127=126-127=-11.M=(1.101)2所以,该浮点数为(1.101)2⨯2-1=(0.1101)2=0.812514、IEEE754标准中,32位二进制数仍然有232种不同的组合,但是由于在IEEE754标准中,阶码为全1并且尾数为非0的情况不表示一个数。

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

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

计算机组成原理的实验报告一、实验目的本次实验的主要目的是深入理解计算机组成原理中的关键概念和组件,通过实际操作和观察,增强对计算机硬件系统的认识和掌握能力。

具体包括:1、了解计算机内部各部件的工作原理和相互关系。

2、熟悉计算机指令的执行流程和数据的传输方式。

3、掌握计算机存储系统的组织和管理方法。

4、培养分析和解决计算机硬件相关问题的能力。

二、实验设备本次实验使用的设备包括计算机、逻辑分析仪、示波器以及相关的实验软件和工具。

三、实验内容1、运算器实验进行了简单的算术运算和逻辑运算,如加法、减法、与、或等操作。

观察运算结果在寄存器中的存储和变化情况。

2、控制器实验模拟了指令的取指、译码和执行过程。

分析不同指令对计算机状态的影响。

3、存储系统实验研究了内存的读写操作和地址映射方式。

考察了缓存的工作原理和命中率的计算。

4、总线实验观察数据在总线上的传输过程和时序。

分析总线竞争和仲裁的机制。

四、实验步骤1、运算器实验步骤连接实验设备,将运算器模块与计算机主机相连。

打开实验软件,设置运算类型和操作数。

启动运算,通过逻辑分析仪观察运算过程中的信号变化。

记录运算结果,并与预期结果进行比较。

2、控制器实验步骤连接控制器模块到计算机。

输入指令序列,使用示波器监测控制信号的产生和变化。

分析指令执行过程中各个阶段的状态转换。

3、存储系统实验步骤搭建存储系统实验电路。

进行内存读写操作,改变地址和数据,观察存储单元的内容变化。

分析缓存的替换策略和命中率的影响因素。

4、总线实验步骤连接总线模块,配置总线参数。

多个设备同时发送数据,观察总线的仲裁过程。

测量数据传输的时序和带宽。

五、实验结果与分析1、运算器实验结果加法、减法等运算结果准确,符合预期。

逻辑运算的结果也正确无误。

观察到在运算过程中,寄存器的值按照预定的规则进行更新。

分析:运算器的功能正常,能够准确执行各种运算操作,其内部的电路和逻辑设计合理。

2、控制器实验结果指令能够正确取指、译码和执行,控制信号的产生和时序符合指令的要求。

计算机组成原理实验报告

计算机组成原理实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

定点数乘除运算及实现

定点数乘除运算及实现
0﹒ 0 1 1 1 1 0
[X •Y ]补 =0. 011110
所以:
1
实现补码一位乘法的乘法器的逻辑框图如图所示
2
补码两位乘法:是把补码的一位乘法的两个单步操作和并成一个操作。 即:
3
【 (Z i+2)补】=
4
2-2 {【 Z i补】+ (Yn+1 +Yn-2Y n-1) 】 · 【X 】补}
余数<0
商0即q0=0
+ ︱ y ︱
0. 1 1 0 1
——————————
0. 1 0 0 1
左移1位
1. 0 0 1 0
- ︱ Y ︱
1. 0 0 1 1
+[-| y| ]补
——————————
0. 0 1 0 1
余数>0
商1即q1=1
+[-| y| ]补
1. 0 0 1 1
——————————
0. 0 1 1 1
左移1位
0. 1 1 1 0
+[-| y| ]补
1. 0 0 1 1
———————————
0. 0 0 0 1
余数>0
商1即q4=1
所以:商:Q=-0.1011, 余数:R=+0.00012-4
对上述手算计算过程分析得:
(1) 每次都是由心算来比较余数和除数的大小,余数大时,商1; 余数小时,商0。第一次比较时,余数就是被除数。 (2) 每做一次减法,总是保持余数不动,而除数向右移一位。 (3)最后据符号位运算的结果给商以正确的符号
为适应机器运算,需要进行改进: (1) 用减法来比较余数和除数的大小 (2) 除数右移改为余数左移。 (3)定点除法运算必须要求被除数的高n位小于除数,否则益处

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

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

计算机组成原理实验报告3上海⼤学计算机组成原理实验报告三姓名:学号:座位号:上课时间:教师:报告成绩:⼀.实验⽬的1. 读出系统已有的微指令,并理解其含义。

2. 设计并实现微指令系统。

⼆.实验原理1.微指令构造①译码器:前两次实验的每⼀项操作都是通过⼈⼯设置电键ki的位置——Ki编码,然后给出⼀个CK脉冲来完成。

如果有⼀个器件能给出对应与每个操作的ki编码,这个器件就可以代替我们来为操作译码——产⽣控制信号,这个器件就是指令译码器,也叫控制器。

常见的控制器有两种:⽤组合逻辑电路实现控制信号的逻辑电路结构和⽤存储器实现控制信号的微程序结构。

前者将在《在系统编程技术及应⽤》课程中学习。

这⾥学习后者。

②微指令:把⼀个操作的控制总线编码放在⼀个存储单元中,同时给出调⽤这个单元的⽅法(例如:这个单元的地址),则对使⽤者⽽⾔,这个调⽤⽅法等价于控制总线编码本⾝,⼆者都称为微指令(不同场合具体指向不同或没有区别)。

对于操作:“ACH送⼊寄存器A”有ki编码:1111 11110,假定将其存⼊⼀个地址为F3H的随意选取的存储器单元中,且可以⽤“读F3”的⽅式取出这个内容并送上控制总线,则“读F3”和1111 11110是这个操作的微指令,这两个表达形式等价。

③操作序列的形式化表述:同理:把操作“BDH送⼊寄存器W”的ki编码1111 11101存⼊随意选取的FDH地址单元;操作“A-W”的ki编码1111 00111存⼊随意选取的B2H地址单元;操作“直通门D的内容送OUT寄存器”的编码0100 111111存⼊DCH地址单元。

④实验箱的微指令系统:制造⼚的⼯程师根据这个实验箱的功能、部件数量、必须的基本操作等要求,给它安排了24条控制线——控制总线宽度为24。

相应地,每条微指令有24位、微程序存储器的每个地址也必须是24位的存储单元。

于是⼚家把3⽚8位存储器的对应地址并接在⼀起,构成⼀个24位的存储器。

具体连接见下图1。

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

河北大学计算机组成原理实验报告学院年级专业学号姓名实验日期实验地点指导老师实验项目不恢复余数阵列除法器成绩一、实验目的:理解除法器的原理。

二、实验原理:这次实验实现原码不恢复余数法的阵列除法器算法(余数左移除数固定),详细计算过程如下。

例题:X=0.10110,y=0.111,求[x/y]原。

则[x]补=0.10110,[y*]补=0.111,[-y*]补=1.001由于除数被除数都为正,因此最后结果为正,直接在最后的结果加上“+”,商为+0.110,但是由于除数在计算的过程中被逻辑左移了3次,所以要乘以2^-5进行恢复,故余数为0.000 010 000。

原码不恢复余数法原理说明:①符号位单独处理,参加运算的是除数和被除数的绝对值的补码,除数的绝对值用y*表示;②合法的除法运算中,被除数必须小于除数,因此第一次上商肯定是r6=0,否则溢出,停止运算;③原码恢复余数法来源于手算的竖式除法。

若余数为正,表示够减,商上1,左移一位,减去[y*]补,也就是加上[-y*]补;若余数为负,表示不够减,商上0,恢复余数(加上除数),变成减去除数之前的结果,继续左移一位,加上[-y*]补。

④原码不恢复余数法建立在原码恢复余数法的基础之上,假设当前的余数为R。

当余数大于0时,下一步余数是先左移一位再减去除数,即下一步余数应该为R’=2R-y*;当余数小于0时先恢复余数,然后再左移一位再减去除数,假设当前余数为R,那么下一步余数应该为R’=2(R+y*)-y*=2R+y*。

以上两个式子将恢复余数法的步骤定量化了,也就是说,要么左移一位加上y*,要么左移一位减去y*,这就是加减交替的含义。

⑤除数和被除数具有3位尾数的合法的除法,需要逻辑移位3次,上商3+1=4次。

可以设置一个计数器count来控制循环次数,达到3次就停止。

⑥若最后一步为负,表示不够减,商上0,需要恢复余数,即加上除数,否则不需要。

接下来介绍原码不恢复余数阵列除法器①可控加法/减法(CAS)单元原理是利用一个可控加法/减法 CAS 单元所组成的流水阵列来实现的它有四个输出端和四个输入端。

当输入线P=0时,CAS 作加法运算;当P=1 时,CAS 作减法运算。

逻辑结构图如图所示。

不恢复余数阵列除法器的逻辑结构图 CAS 单元的输入与输出的关系可用如下一组逻辑方程来表示:Si=Ai⊕(Bi⊕P)⊕C,Ci+1=(Ai+Ci)· (Bi⊕P)+AiCi当P=0 时,就是一个全加器,如下式:Si=Ai⊕Bi⊕Ci ,Ci+1=AiBi+BiCi+AiCi 当P=1 时,则得求差公式:Si=Ai⊕非Bi ⊕Ci ,Ci+1=AiBi+BiCi+AiCi ,其中非Bi=Bi⊕1。

在减法情况下,输入Ci 称为借位输入,而Ci+1 称为借位输出。

②不恢复余数的除法(加减交替法)在不恢复余数的除法阵列中,每一行所执行的操作究竟是加法还是减法,取决于前一行输出的符号与被除数的符号是否一致。

当出现不够减时,部分余数相对于被除数来说要改变符号。

这时应该产生一个商位“0”,除数首先沿对角线右移,然后加到下一行的部分余数上。

当部分余数不改变它的符号时,即产生商位“1”,下一行的操作应该是减法。

本实验就采用加减交替的方法设计这个阵列除法器。

被除数为x= X0.x6x5x4x3x2x1(这里需要右移,是双倍长);除数为y=Y0.y3y2y1。

其中X0 和 Y0 是被除数和除数的符号位,在本次设计中X0 和 Y0 为零,商的符号位恒为零,商为q4.q3q2q1,余数为0.00r6r5r4r3。

字长n+1=4由图看出,该阵列除法器是用一个可控加法/减法(CAS)单元所组成的流水阵列来实现的。

推广到一般情况,一个(n+1)位除(n +1)位的加减交替除法阵列由(n+1)2个CAS单元组成,其中两个操作数(被除数与除数) 都是正的。

(1)单元之间的互连是用n=3的阵列来表示的。

这里被除数x是一个6位的小数(双倍长度值):x= X0.x6x5x4x3x2x1它是由顶部一行和最右边的对角线上的垂直输入线来提供的。

(2)除数y是一个3位的小数:y=0.y3y2y1它沿对角线方向进入这个阵列。

这是因为,在除法中所需要的部分余数的左移,可以用下列等效的操作来代替:即让余数保持固定,而将除数沿对角线右移。

(3)商q是一个3位的小数:q=0.q1q2q3 它在阵列的左边产生。

(4)余数r是一个6位的小数:r=0.00r3r4r5r6 它在阵列的最下一行产生。

最上面一行所执行的初始操作经常是减法。

因此最上面一行的控制线P固定置成“1”。

减法是用2的补码运算来实现的,这时右端各CAS单元上的反馈线用作初始的进位输入。

每一行最左边的单元的进位输出决定着商的数值。

将当前的商反馈到下一行,我们就能确定下一行的操作。

由于进位输出信号指示出当前的部分余数的符号,因此,它将决定下一行的操作将进行加法还是减法。

对不恢复余数阵列除法器来说,在进行运算时,沿着每一行都有进位(或借位)传播,同时所有行在它们的进位链上都是串行连接。

而每个CAS单元的延迟时间为3T单元,因此,对一个2n位除以n位的不恢复余数阵列除法器来说,单元的数量为(n+1)2,考虑最大情况下的信号延迟,其除法执行时间为td=3(n+1)2T三、实验步骤:(1)打开Quartys II。

(2)将子板上的JTAG端口和PC机的并行口用下载电缆连接。

打开实验台电源。

(3)执行Tool→Programmer 命令,将adder8.sof下载到FPGA中。

注意在执行Programmer中,应在program/configure下的方框中打钩,然后下载。

(4)在实验台上通过模式开关选择FPGA-CPU独立调试模式010。

四、实验现象及分析:本实验实现4位除4位阵列除法器。

输入输出规则对应如下:(1)输入被乘数A和乘数B,A和B分别是x= X0.x6x5x4x3x2x1和y=Y0.y3y2y1(2)输出的结果是商为q4.q3q2q1,余数为0.00r6r5r4r3。

输入输出范例:五、实验过程中遇到问题及解决方法:问题一:阵列除法器采用的过程是什么解决方法:余数固定除数右移。

余数左移除数固定的算法适合除数和被乘数尾数为n的运算,余数固定除数右移的将例题稍作修改即可。

问题二:阵列除法器是如何做到减去除数,即加上[-y*]补的?解决方法:变补的法则是:对[y*]补包括符号位“求反且最末位加1”即可得到[-y*]补。

阵列除法器只能做加法,通过图中的“非Bi=Bi⊕1”实现求反,通过某一行最右侧的Ci (借位输入)为1实现最末位加1。

问题三:实验现象中第一行的运算结果中,余数是1011,是除法器在逗吗?解决方法:阵列除法器并没有在逗你,采取余数固定除数右移是得到的余数是 1.111011,这表明不够减,解决方法是恢复余数,得到余数为0.000 010,或者再算两次,得到余数为0.000 000 01,此时商为0.110 01。

而在硬件层面上不实现这个功能。

如果允许余数为负数,结果就是对的。

问题四:直接将整个CAS连接起来可以吗?解决方法:像--不恢复余数阵列除法器(4位除4位阵列除法器)library ieee;use ieee.std_logic_1164.all;entity composition_7_2_non_restoring_array_divider isport( x:in std_logic_vector(6 downto 1); --这里编号顺序与课本不同y: in std_logic_vector(3 downto 1);q: out std_logic_vector(4 downto 1);r:out std_logic_vector(6 downto 3));end composition_7_2_non_restoring_array_divider;architecture s_div of composition_7_2_non_restoring_array_divider iscomponent CAS is port(A,B,Ci,P : IN STD_LOGIC;--P,B :inout std_logic;Pout,Bout,Si,CoPlus : OUT STD_LOGIC);end component;signal p1out:std_logic_vector(1 to 16); --CAS的右上部分为加减法控制输出signal b1out:std_logic_vector(1 to 16); --CAS的右下部分为输入的B的输出signal s1:std_logic_vector(1 to 12); --CAS的竖线方向为余数输出signal co1plus:std_logic_vector(1 to 16); --CAS的左下部分为进位输出--signal gnd:std_logic := '0'; --'0'begin--cas11:左数第一个,第1行cas11:CAS port map('0', '0', co1plus(2), '1',p1out(1),b1out(1), s1(1), co1plus(1)); --输出q4<=co1plus(1) cas12:CAS port map(x(6), y(3),co1plus(3),p1out(1),p1out(2),b1out(2),s1(2),co1plus(2));cas13:CAS port map(x(5), y(2),co1plus(4),p1out(2),p1out(3),b1out(3),s1(3),co1plus(3));cas14:CAS port map(x(4), y(1),p1out(4), p1out(3),p1out(4),b1out(4),s1(4),co1plus(4));q(4)<=co1plus(1);--s1(1)=0cas21:CAS port map(s1(2), b1out(1),co1plus(6), co1plus(1),p1out(5),b1out(5),s1(5),co1plus(5)); --输出q3<=co1plus(5)cas22:CAS port map(s1(3), b1out(2),co1plus(7), p1out(5),p1out(6),b1out(6),s1(6),co1plus(6));cas23:CAS port map(s1(4), b1out(3),co1plus(8), p1out(6),p1out(7),b1out(7),s1(7),co1plus(7));cas24:CAS port map(x(3), b1out(4),p1out(8), p1out(7),p1out(8),b1out(8),s1(8),co1plus(8));q(3)<=co1plus(5);cas31:CAS port map(s1(6), b1out(5),co1plus(10), co1plus(5),p1out(9),b1out(9),s1(9),co1plus(9)); --输出q2 cas32:CAS port map(s1(7), b1out(6),co1plus(11), p1out(9),p1out(10),b1out(10),s1(10),co1plus(10));cas33:CAS port map(s1(8), b1out(7),co1plus(12), p1out(10),p1out(11),b1out(11),s1(11),co1plus(11));cas34:CAS port map(x(2), b1out(8),p1out(12), p1out(11),p1out(12),b1out(12),s1(12),co1plus(12));q(2)<=co1plus(9);cas41:CAS port map(s1(10), b1out(9),co1plus(14), co1plus(9),p1out(13),b1out(13),r(6),co1plus(13)); --输出q1cas42:CAS port map(s1(11), b1out(10),co1plus(15), p1out(13),p1out(14),b1out(14),r(5),co1plus(14));cas43:CAS port map(s1(12), b1out(11),co1plus(16), p1out(14),p1out(15),b1out(15),r(4),co1plus(15));cas44:CAS port map(x(1), b1out(12),p1out(16), p1out(15),p1out(16),b1out(16),r(3),co1plus(16));q(1)<=co1plus(13);end s_div;--可控加法/减法(CAS)单元controllable_Addition_UnitLIBRARY ieee;USE ieee.std_logic_1164.all;entity CAS isport(A,B,Ci,P : IN STD_LOGIC;--P,B :inout std_logic;Pout,Bout,Si,CoPlus : OUT STD_LOGIC --输出按图中逆时针方向排列);end entity;ARCHITECTURE rtl OF CAS ISBEGINSi <= A xor (B xor P) xor Ci;CoPlus <= (A or Ci) and (B xor P) and (A and Ci) ;Pout<=P;Bout<=B;END rtl;做不到按顺序同时地运算,希望有人能解决。

相关文档
最新文档