计算机组成原理实验报告_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. 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;做不到按顺序同时地运算,希望有人能解决。

相关文档
最新文档