乘法器计组课设
- 格式:doc
- 大小:6.10 MB
- 文档页数:16
计算机组成原理课程设计报告班级:计算机/物联网 1504 班:杰铭学号: 20154530 完成时间: 2018.1.1一、课程设计目的1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3.培养综合实践及独立分析、解决问题的能力。
二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。
三、课程设计使用的设备(环境)1.硬件●COP2000实验仪●PC机2.软件●COP2000仿真软件四、课程设计的具体容(步骤)1.详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:该模型机指令系统的操作码由8位机器码组成,前6位机器码用于区分操作类型,后2位机器码是在操作中涉及通用寄存器时提供通用寄存器的寻址。
进位跳转指令JC要求倒数第3、4位为00零跳转指令JZ要求倒数第3、4位为01无条件跳转指令JMP要求倒数第3、4位为11该模型机微指令系统的特点(包括其微指令格式的说明等):该模型机的微指令寄存器地址为00H-0FFH,共256*30位,每条微指令的控制字段部分有30位,控制方式采用的是直接控制而非编码控制,即一位对应一个逻辑开关的状态。
可惜的是,此微指令无跳转方式和下指字段,因而仅通过微指令无法在微指令寄存器中跳转,即在一条机器指令所对应的微程序中,只有顺序执行操作。
原系统中每条机器指令最多四个周期(当然不是必须的,可以通过机器指令的机器码的设置使一个机器指令包含更多微指令),即此模型机中每个微程序最多四条微指令,多余的空位则浮空处理。
哈尔滨理工大学课程设计(计算机组成原理)题目:简单模型机指令系统的设计班级:姓名:指导教师:系主任:2017年03月10日计算机组成原理(课程设计)设计过程情况表目录1.课程设计的目的 (1)2.课程设计的任务 (1)3.课程设计所用设备及所需资料 (1)4.设计内容 (1)4.1设计原理 (1)4.1.1总体概述 (1)4.1.2模型机的寻址方式 (2)4.1.3模型机微指令系统的特点 (2)4.2设计过程与步骤................................................................. 错误!未定义书签。
4.2.1. 模拟乘法除法的原理 (4)4.2.2.对应算法分配硬件 (9)4.2.3设计全新的指/微指令系统 (10)4.3设计结果及分析 (12)4.3.1汇编语言程序 (12)4.3.2程序执行跟踪 (14)5心得体会 (16)- I-1.课程设计的目的1.在实验机上设计机器指令及对应的微指令(微程序),从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;2. 通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3. 培养综合实践及独立分析、解决问题的能力。
2.课程设计的任务针对COP2000实验仪,首先通过综合实验了解该模型机微程序控制器原理(主要指熟悉该模型机指令/微指令系统的详细情况),然后以实现二进制乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;并编写并运行实现乘法和除法的程序进行设计的验证。
3.课程设计所用设备及所需资料1. COP2000实验系统2. PC机( COP2000仿真软件)3. COP2000计算机组成原理实验仪说明书4.设计内容4.1设计原理4.1.1总体概述COP2000模型机包括了一个标准CPU所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。
C课程设计乘法器一、课程目标知识目标:1. 学生能理解乘法器的概念,掌握乘法运算的基本原理。
2. 学生能运用乘法器进行两位数及以上的乘法运算,解决实际问题。
3. 学生了解乘法与加法的关系,理解乘法分配律。
技能目标:1. 学生能够独立使用乘法器完成乘法运算,提高计算速度和准确性。
2. 学生能够运用乘法运算解决生活中的实际问题,培养解决问题的能力。
3. 学生能够运用乘法分配律简化计算过程,提高运算效率。
情感态度价值观目标:1. 学生培养对数学学习的兴趣,激发探究精神。
2. 学生养成合作交流的学习习惯,学会倾听、表达和分享。
3. 学生通过乘法运算的学习,体会数学在生活中的应用,增强实际操作的能力。
课程性质:本课程为数学乘法运算的教学,以实用性和操作性为主,注重培养学生的计算能力和解决问题的能力。
学生特点:学生处于小学高年级阶段,具有一定的数学基础,对乘法运算有初步了解,但运算速度和准确性有待提高。
教学要求:教师应结合学生实际情况,采用生动有趣的教学方法,引导学生主动参与,注重培养学生的学习兴趣和实际操作能力。
在教学过程中,关注学生的个体差异,提供针对性的指导。
通过课程学习,使学生达到上述课程目标,为后续数学学习打下坚实基础。
二、教学内容本节教学内容以乘法器为核心,结合教材第四章“乘法运算”相关内容,进行以下安排:1. 乘法器概念及原理:- 引导学生理解乘法器的定义和作用。
- 讲解乘法器的基本原理,如位权原理和进位原理。
2. 乘法运算方法:- 教授两位数及以上的乘法运算方法。
- 指导学生运用乘法器进行乘法运算,提高计算速度和准确性。
3. 乘法运算在实际问题中的应用:- 分析生活中的实际问题,运用乘法运算进行解答。
- 通过实例,让学生体会乘法运算在生活中的广泛应用。
4. 乘法分配律:- 讲解乘法分配律的概念和意义。
- 演示乘法分配律在乘法运算中的应用,提高运算效率。
5. 教学内容的进度安排:- 第1课时:乘法器概念及原理,两位数乘法运算。
fpga课程设计乘法器一、课程目标知识目标:1. 让学生掌握FPGA的基本原理和结构,理解乘法器的设计方法。
2. 使学生了解数字信号处理中乘法运算的重要性,掌握乘法器的功能和应用。
3. 帮助学生掌握Verilog HDL语言编程,并能运用该语言设计简单的乘法器电路。
技能目标:1. 培养学生运用FPGA进行数字电路设计的能力,提高实际问题解决能力。
2. 培养学生运用Verilog HDL语言进行编程,实现特定功能的乘法器电路。
3. 培养学生进行团队协作,完成课程设计任务,提高沟通与协作能力。
情感态度价值观目标:1. 培养学生对FPGA技术及其应用的兴趣,激发学生的创新意识。
2. 培养学生严谨、务实的科学态度,养成勤奋、刻苦的学习习惯。
3. 增强学生的国家使命感和社会责任感,认识到我国在FPGA领域的发展潜力。
课程性质:本课程为电子工程与技术专业课程,以实践为主,理论联系实际。
学生特点:学生具备一定的电子电路基础和编程能力,对FPGA技术有一定了解。
教学要求:结合课程特点和学生特点,注重实践操作,提高学生的动手能力和创新能力。
在教学过程中,注重引导学生自主学习,培养团队协作精神。
通过课程学习,使学生能够独立完成乘法器的设计与实现,为后续相关课程打下坚实基础。
二、教学内容1. FPGA基本原理和结构复习:回顾FPGA的内部结构、工作原理以及配置技术,重点理解查找表(LUT)的原理和应用。
相关教材章节:第一章 FPGA概述。
2. 数字乘法器原理:介绍乘法器在数字信号处理中的应用,分析不同类型的乘法器设计方法,如并行乘法器、串行乘法器等。
相关教材章节:第三章 数字乘法器设计。
3. Verilog HDL语言编程基础:复习Verilog HDL的基本语法,重点掌握模块定义、数据类型、运算符和赋值语句等。
相关教材章节:第二章 Verilog HDL基础。
4. 乘法器设计实践:结合实际案例,引导学生利用Verilog HDL语言设计一个简单的乘法器电路,包括设计、仿真和综合。
沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:阵列乘法器的设计与实现院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:完成日期:2014年1月10日目录第1章总体设计方案 01.1设计原理 01.2设计思路 (1)1.3设计环境 (2)第2章详细设计方案 (2)2.1总体方案的设计与实现 (3)2.1.1总体方案的逻辑图 (3)2.1.2器件的选择与引脚锁定 (3)2.1.3编译、综合、适配 (4)2.2功能模块的设计与实现 (4)2.2.1一位全加器的设计与实现 (5)2.2.2 4位输入端加法器的设计与实现 (6)2.2.3 阵列乘法器的设计与实现 (9)第3章硬件测试 (12)3.1编程下载 (12)3.2 硬件测试及结果分析 (12)参考文献 (14)附录(电路原理图) (15)第1章总体设计方案1.1 设计原理阵列乘法器采用类似人工计算的方法进行乘法运算。
人工计算方法是用乘数的每一位去乘被乘数,然后将每一位权值对应相加得出每一位的最终结果。
如图1.1所示,用乘数的每一位直接去乘被乘数得到部分积并按位列为一行,每一行部分积末位与对应的乘数数位对齐,体现对应数位的权值。
将各次部分积求和,即将各次部分积的对应数位求和即得到最终乘积的对应数位的权值。
为了进一步提高乘法的运算速度,可采用大规模的阵列乘法器来实现,阵列乘法器的乘数与被乘数都是二进制数。
可以通过乘数从最后一位起一个一个和被乘数相与,自第二位起要依次向左移一位,形成一个阵列的形式。
这就可将其看成一个全加的过程,将乘数某位与被乘数某位与完的结果加上乘数某位的下一位与被乘数某位的下一位与完的结果再加上前一列的进位进而得出每一位的结果,假设被乘数与乘数的位数均为4位二进制数,即m=n=4,A×B可用如下竖式算出,如图1.1所示。
X 4 X3X2X1=A× Y4 Y3Y2Y1=BX4Y1X3Y1X2Y1X1Y1X4Y2X3Y2X2Y2X1Y2X4Y3X3Y3X2Y3X1Y3(进位) X4Y4 X3Y4 X2Y4 X1Y4Z8 Z7Z6Z5Z4Z3Z2Z1图1.1 A×B计算竖式X4 ,X3,X2,X1,Y4,Y3,Y2,Y1为阵列乘法器的输入端,Z1-Z8为阵列乘法器的输出端,该逻辑框图所要完成的功能是实现两个四位二进制既A(X)*B(Y)的乘法运算,其计算结果为C(Z) (其中A(X)=X4X3X2X1,B(Y)=Y4Y3Y2Y1,C(Z)=Z8Z7Z6Z5Z4Z3Z2Z1而且输入和输出结果均用二进制表示 )。
组成原理课设阵列乘法器在现代科技的发展中,计算机和电子设备的性能提升日新月异。
而在这些设备中,乘法器是一个至关重要的组成部份。
乘法器的性能直接影响到整个系统的运算速度和效率。
因此,设计一个高效且可靠的乘法器是组成原理课程中的一项重要任务。
一、乘法器的基本概念乘法器是一种用于实现两个数相乘的电子电路。
在计算机中,乘法器的作用是进行大量的乘法运算,从而实现复杂的计算任务。
乘法器通常由多个逻辑门和触发器组成,其内部结构可以分为串行乘法器和并行乘法器两种类型。
二、串行乘法器的原理串行乘法器是一种逐位相乘的乘法器,它将两个数的每一位进行相乘,并将结果相加得到最终的乘积。
串行乘法器的原理可以通过以下步骤来说明:1. 将两个数的每一位进行相乘,得到部份积。
2. 将部份积与进位相加,得到新的部份积。
3. 重复以上步骤,直到所有位数都相乘完毕。
4. 将所有的部份积相加,得到最终的乘积。
串行乘法器的优点是结构简单,适合于小规模的乘法运算。
但是由于乘法运算是逐位进行的,所以串行乘法器的运算速度较慢。
三、并行乘法器的原理并行乘法器是一种同时进行多位乘法运算的乘法器,它可以大大提高乘法运算的速度。
并行乘法器的原理可以通过以下步骤来说明:1. 将两个数的每一位进行相乘,得到部份积。
2. 将所有的部份积同时进行相加,得到最终的乘积。
并行乘法器的优点是运算速度快,适合于大规模的乘法运算。
但是由于并行乘法器的结构复杂,所以其设计和实现难度较大。
四、阵列乘法器的原理阵列乘法器是一种基于并行乘法器的乘法器,它通过将乘法运算分解成多个子运算,并将这些子运算并行进行,从而提高乘法运算的速度。
阵列乘法器的原理可以通过以下步骤来说明:1. 将两个数的每一位进行相乘,得到部份积。
2. 将所有的部份积按照位数进行罗列,形成一个二维矩阵。
3. 将矩阵中的每一行进行相加,得到每一位的乘积。
4. 将所有的乘积相加,得到最终的乘积。
阵列乘法器的优点是结构简单、运算速度快,适合于大规模的乘法运算。
乘法器eda课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握乘法器的基本原理和操作方法;技能目标要求学生能够运用乘法器解决实际问题,并进行简单的故障排查;情感态度价值观目标要求学生培养对科学技术的兴趣和好奇心,增强创新意识和团队合作能力。
二、教学内容根据课程目标,本章教学内容主要包括乘法器的基本原理、结构与功能、操作方法、应用案例以及故障排查。
具体安排如下:1.第一节:乘法器的基本原理与结构,介绍乘法器的组成、工作原理和主要性能指标。
2.第二节:乘法器的功能与操作,讲解乘法器的各项功能及其操作方法。
3.第三节:乘法器在实际中的应用,分析乘法器在不同领域的应用案例。
4.第四节:乘法器的故障排查与维护,教授学生如何进行故障排查和日常维护。
三、教学方法本课程采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
讲授法用于讲解基本原理和操作方法;讨论法用于引导学生深入思考和探讨问题;案例分析法用于分析乘法器在实际中的应用;实验法用于让学生亲自动手操作,提高实践能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
教材和参考书用于提供理论知识,多媒体资料用于辅助教学,使学生更直观地了解乘法器的工作原理和操作方法。
实验设备则是学生进行实践操作的重要工具,包括各种类型的乘法器及其配件。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面反映学生的学习成果。
平时表现主要考察学生的课堂参与度、提问和回答问题的情况;作业分为课后练习和项目任务,要求学生在规定时间内完成,以巩固所学知识;考试包括期中考试和期末考试,采用闭卷考试形式,覆盖课程所有知识点。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:共计16周,每周2课时。
教学地点为教室,教学进度安排合理、紧凑,确保在有限的时间内完成教学任务。
计算机组成原理原码以为乘法器课程设计简介本文档将介绍一个基于计算机组成原理的原码以为乘法器的课程设计。
乘法器是计算机中非常重要的一部分,其作用是实现数字乘法运算,是各种计算任务中必不可少的核心组件之一。
本课程设计旨在通过设计一个原码以为乘法器的电路,深入理解计算机组成原理的相关知识,并实践其中的原理和技术。
设计目标本课程设计的主要目标是实现一个8位原码以为乘法器电路,并能正确计算输入数字的乘积。
具体的设计目标包括以下几点:1.实现一个基于原码的乘法器电路。
2.支持8位输入数字的乘法运算。
3.保证电路的稳定性和正确性。
4.使用仿真软件验证电路设计的正确性。
设计原理选择使用原码作为乘法器的运算方式,是因为原码运算相对简单,并且易于理解。
原码运算直接对数字进行操作,不需进行补码转换,简化了计算过程。
乘法器的原理是将两个二进制数进行部分积的计算,然后将部分积相加得到最终的乘积。
在原码乘法器中,需要注意以下几点:1.正负数的处理:对于原码乘法器,正负数的处理是不同的。
正数的原码与补码一致,而负数的原码与补码相反。
因此,在乘法器的设计中,需要对输入的数字进行符号位判断,然后分别处理正数和负数。
2.部分积的计算:乘法器将两个数字的每一位进行相乘,然后将部分积相加得到最终的乘积。
在计算部分积时,需要进行位移操作和进位判断,以确保计算的正确性。
电路设计本课程设计的电路采用逻辑门的组合方式进行实现。
以下是电路设计的主要步骤:输入端口设计一个8位的并行输入端口,用于输入两个8位的原码数字。
每个输入都包含一个符号位和7个数据位。
符号位处理根据输入的符号位进行判断,如果两个输入的符号位相同,则输出结果的符号位为正,否则为负。
使用逻辑门进行判断,并将结果存储在一个标志位中。
部分积计算按位遍历两个输入数字的数据位,将每一位进行相乘,并根据位移规则将乘积结果相加得到部分积。
使用逻辑门和触发器进行位移和加法计算。
部分积相加将所有部分积相加得到最终的乘积结果。
阵列乘法器课课程设计一、教学目标本节课的学习目标包括以下三个方面:1.知识目标:学生需要掌握阵列乘法器的基本原理和操作方法,了解其在工作中的应用和优势。
2.技能目标:学生能够熟练使用阵列乘法器进行计算,提高计算效率,培养学生解决实际问题的能力。
3.情感态度价值观目标:通过学习阵列乘法器,学生能够培养对科学知识的热爱和探索精神,增强对数学学科的信心和兴趣。
二、教学内容本节课的教学内容主要包括以下几个部分:1.阵列乘法器的基本原理:介绍阵列乘法器的概念、工作原理和数学基础。
2.阵列乘法器的操作方法:讲解如何使用阵列乘法器进行计算,包括基本操作和高级应用。
3.阵列乘法器在工作中的应用:通过实际案例,展示阵列乘法器在各个领域中的应用和优势。
4.练习和拓展:布置相应的练习题,让学生巩固所学知识,并进行拓展训练。
三、教学方法为了提高教学效果,本节课将采用以下几种教学方法:1.讲授法:教师通过讲解,引导学生了解阵列乘法器的基本原理和操作方法。
2.案例分析法:教师通过分析实际案例,让学生了解阵列乘法器在工作中的应用和优势。
3.实验法:学生动手操作阵列乘法器,加深对知识的理解和记忆。
4.讨论法:学生分组讨论,分享学习心得和经验,互相促进。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:1.教材:为学生提供权威、系统的学习资料。
2.多媒体资料:通过图片、视频等形式,丰富教学手段,提高学生的学习兴趣。
3.实验设备:为学生提供实地操作的机会,增强实践能力。
4.网络资源:引导学生利用网络资源进行拓展学习,拓宽知识面。
五、教学评估为了全面、客观地评估学生的学习成果,本节课将采用以下几种评估方式:1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和理解程度。
2.作业:布置适量的作业,要求学生在规定时间内完成,通过作业的完成质量评估学生的掌握程度。
3.考试:安排一次课堂小测或期中期末考试,测试学生对知识的掌握和应用能力。
计算机组成与设计(六)——乘法器乘法的运算过程⼈们⽇常习惯的乘法是⼗进制,但计算机实现起来不⽅便。
⾸先,需要记录9x9乘法表,每次相乘去表中找结果;其次,将竖式相加也不⽅便。
但⼆进制却⼗分⽅便,冯·诺伊曼在《关于ENDVAC的报告草案》中说“⼆进制可以极⼤简化乘法和除法运算。
尤其是对于乘法,不再需要⼗进制乘法表,也不需要两轮的加法”。
⼆进制乘法运算过程观察这个式⼦,可以发现我们并不需要乘法表,如果乘数位为0,就在中间过程中全补零,如果乘数位为1,就在中间过程补被乘数。
运算过程的进⼀步调整按照上⾯那种计算的话,需要⼤量的空间来存储中间结果,还要⽤⼀个空间存储积。
其实,不难发现,每个中间结果最后都加在乘积上,我们可以将中间结果保存在乘积中,每次⽤中间结果更新乘积,运算结束时,乘积⾥⾯放的就是正确的乘积。
上⾯说直接对乘积加上被乘数是不准确的,为了满⾜对齐要求,只需将被乘数左移。
这样,我们得到了⼀个适合硬件实现的乘法运算过程。
乘法的实现实现结构以4-bit数为例,(1000)2 + (1001)2 = (1001000)2具体流程初始化,将Multiplier = 1001,将Multiplicand的低4为设为1000,⾼4位补零,Product = 0.检查乘数寄存器的最低位,如果为1,将被乘数寄存器加到乘积寄存器中,此时控制信号会给加法器⼀个信号,给乘积寄存器写信号,等到下⼀个上升沿到来时,会将运算的结果存到乘积寄存器中。
如果为0,不管。
同时给被乘数寄存器左移信号,给乘数寄存器右移信号,也是在下⼀个时钟上升沿起作⽤。
检测是否经历4次循环最终的结果如下:4位的过程对N位同样有效。
N位的流程图乘法的优化1观察上⾯N位乘法器的流程图,由于每次信号要等到⼀个时钟上升沿才起作⽤,所以1a、2、3过程各⽤⼀个周期。
其实这三个过程可以并列执⾏,就降为⼀个周期了。
乘法的优化2(⾯积优化)⾯积优化就是指减少不必要的硬件资源。
计算机组成原理课程设计报告
班级:计算机/物联网1504 班姓名:杨杰铭学号:20154530 完成时间:2018.1.1
一、课程设计目的
1.在实验机上设计实现机器指令及对应的微指令(微程序)并验证,从而进一步掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系;
2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;
3.培养综合实践及独立分析、解决问题的能力。
二、课程设计的任务
针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进行设计的验证。
三、课程设计使用的设备(环境)
1.硬件
●COP2000实验仪
●PC机
2.软件
●COP2000仿真软件
四、课程设计的具体内容(步骤)
1.详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:
该模型机指令系统的操作码由8位机器码组成,前6位机器码用于区分操作类型,后2位机器码是在操作中涉及通用寄存器时提供通用寄存器的寻址。
进位跳转指令JC要求倒数第3、4位为00
零跳转指令JZ要求倒数第3、4位为01
无条件跳转指令JMP要求倒数第3、4位为11
该模型机微指令系统的特点(包括其微指令格式的说明等):
该模型机的微指令寄存器地址为00H-0FFH,共256*30位,每条微指令的控制字段部分有30位,控制方式采用的是直接控制而非编码控制,即一位对应一个逻辑开关的状态。
可惜的是,此微指令无跳转方式和下指字段,因而仅通过微指令无法在微指令寄存器中跳转,即在一条机器指令所对应的微程序中,只有顺序执行操作。
原系统中每条机器指令最多四个周期(当然不是必须的,可以通过机器指令的机器码的设置使一个机器指令包含更多微指令),即此模型机中每个微程序最多四条微指令,多余的空位则浮空处理。
2. 计算机中实现乘法和除法的原理
(1)无符号乘法
①算法流程图:
乘法采用移位相加的操作来完成,由于位数限制,无溢出可能
因为积德长度限定在8位以内,由于需要储存中间结果及初始被乘数的指,乘数还需要在过程中进行移位,即两个寄存器无法完成此工作。
由上可知,完成乘法操作需要存取操作数,移位操作,测试标志位跳转,加法操作,同时为了调用加法程序,还需要子程序调用及返回操作。
②硬件原理框图:
寄存器A与R0,R3,EM通信
寄存器W与R2,EM通信
通用寄存器组R0,R1,R2与EM皆可通信
(2)无符号除法
①算法流程图:
使用余数恢复法。
先用减测试进行测试若够减,则进行减法操作,不够减直接进行移
位操作。
②硬件原理框图:
3.对应于以上算法如何分配使用COP2000实验仪中的硬件(初步分配,设计完成后再将准确的使用情况填写在此处)ST:减测试<SUBT>/位测试<TEST>时需使用
A/W:运算时使用
L/D/R:ROR/ROL时使用
乘法
R0:乘数
R1:被乘数
R2:中间结果/乘积
除法
R0:除数
R1:被除数/余数
R2:商
R3:除法次数
4.在COP2000集成开发环境下设计全新的指令/微指令系统设计结果如表所示(可按需要增删表项)
(1)新的指令集
(如果针对乘除法设计了两个不同指令集要分别列表)
(2)新的微指令集
其中减测试与位测试均占用5个节拍
5.用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序(1)乘法
4位乘法的算法流程图与汇编语言程序清单:
将乘数放在R0,被乘数放在R1中
MOV R0,#04H ;乘数
MOV R1,#0AH ;被乘数
MUL: MOV R2,A ;将中间结果暂存入R2保护
MOV A,R1 ;得到被乘数
TEST A,#0FH ;被乘数为0?
JZ END ;为0结束
TEST A,#01H ;被乘数末位为0?
ROR ;右移,不产生标志
MOV R1,A ;将被乘数保存
MOV A,R2 ;得到乘数
JZ MUL1 ;此处为TEST A,#01H的判断结果
ADD A,R0 ;末位不为0,则加上乘数MUL1: ROL ;中间结果左移
JMP MUL ;循环
END ENDS
(2)除法
4位除法的算法流程图与汇编语言程序清单:采用余数恢复法
MOV R0,#08H ;除数
MOV R1,#36H ;余数/被除数
MOV R2,#00H ;商
MOV R3,#05H ;移位次数
MOV A,R1 ;判断被除数是否为0 TEST A,#0FFH
JZ OVERF ;为0则跳转至除法中断。
置除数、商为0
SUB A,R0
JC ENDS ;不够除
MOV A,R0 ;将除数移位对阶
ROL
ROL
ROL
ROL ;在这里看似使用4次移位麻烦,但若使用循环,来回挪动操作数MOV R0,A ;将更加麻烦
MOV A,R1 ;看首位够不够减,若够减,商应大于4位,除法溢出,置除数商为SUBT A,R0 ;0FFH
JC DIV
JMP OVER
DIV:
MOV A,R1
SUBT A,R0 ;测试是否够减
JC DIV1
SUB A,R0 ;够减则用被除数减去除数
MOV R1,A
MOV A,#1H ;这里使用简单减法将标志位清0,取消对移位的干扰
SUB A,#0H
MOV A,R0 ;将除数右移
ROR
MOV R0,A
MOV A,R2
ROL ;将商左移,够减时商为1
ADD A,#01H
MOV R2,A
MOV A,R3
SUB A,#01H ;减少技术次数
MOV R3,A
JZ ENDS
JMP DIV
DIV1: ;不够减的情况,直接将除数右移
MOV R1,A
MOV A,#1H
SUB A,#0H
MOV A,R0
ROR
MOV R0,A
MOV A,R2
ROL
MOV R2,A ;将商左移,不够减时商为0
MOV A,R3
SUB A,#01H ;减少计数次数
MOV R3,A
JZ ENDS
JMP DIV
OVERF:
MOV R1,#0
MOV R2,#0
JMP ENDS
OVER:
MOV R1,#0FFH
MOV R2,#0FFH
JMP ENDSNOP
6.上述程序的运行情况(跟踪结果)
按下表填写描述以上各程序运行情况的内容。
按每个程序一张表进行。
程序运行的过程
乘法指令的运行过程,截取前几个循环(10*10 的乘法)
除法运行结果(54/8)一个循环
7.设计结果说明
调试运行程序时是否出现问题,是否有重新调整指令/微指令系统设计的情况出现?请在此做具体说明。
运行程序时偶尔会发想忘记添加某种类型指令,但只要添加上即可,其它都是汇编程序上的调整。
还有就是有些情况可以用多条机器指令,或者将这些机器指令的功能都通过一条微程序实现
五、本次课程设计的总结体会(不少于200字)
主要总结学到的具体知识、方法及设计中的切身体会;包括列出在设计的各个阶段出现的问题及解决方法。
设计阶段:
在起初设计时,准备设计单独的乘法、除法指令,即像8086/8088微机中的MUL,DIV 指令这种,通过提前规定好的寄存器存储其中一个运算数,在获取另一个进行运算。
可是在仔细研读cop2000官方说明书,以及对模拟程序的摸索后,发现此模拟机中的微程序系统与教科书存在差异。
其一为:微指令没有跳转方式和下指字段,也就是说,一条机器指令对应的微程序只能顺序执行,显然,这样不可能完成乘除法的运算;其二为:其对寄存器的选择是通过机器指令中操作数部分的字符翻译为编码来进行的,如操作数为R?则进行寄存器选择、为#xx则从EM中读取。
也就是说在一个微程序中无法选择通用寄存器,那么一条指令的最大可用空间为A,W,一个R,ST。
还有一方面,就是由于不带进位的移位操作在此系统中不影响标志位,用01和00测试进行右移,结果一样。
JZ不会跳转。
因此只能用测试最后一位的方法得到其右移出的位。
此外,在试验过程中还发现,堆栈寄存器只有一个字,因此不能像在高级语言中一直压栈弹栈,在TEST和SUBT中均使用了堆栈保护当前的A寄存器值,因此,在要使用两个操作的块内不能嵌套使用堆栈操作。
(以上红色字内容为由设计者完成并填写。
设计者如有需要可以
增加该报告的内容项目。
)。