




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳航空航天大学课程设计报告 沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称 计算机组成原理课程设计计算机组成原理课程设计 课程设计题目 定点原码二位乘法器的设计定点原码二位乘法器的设计 目目 录录 第第 1 章章 总体设计方案总体设计方案 1 1 1 设计原理 1 1 2 设计思路 3 1 3 设计环境 4 第第 2 章章 功能模块的设计与实现功能模块的设计与实现 6 2 1 总体的设计与实现 6 2 1 1 总体方案的逻辑图 6 2 2 基本功能模块的组成及工作原理 8 2 2 1 被乘数模块的组成及工作原理 8 2 2 2 乘数模块的组成及工作原理 8 2 2 3 选择模块的组成及工作原理 9 2 2 4 移位模块的工作原理 9 沈阳航空航天大学课程设计报告 I 第第 3 章章 程序仿真与测试程序仿真与测试 10 3 1 程序仿真 10 3 2 仿真测试及结果分析 10 参考文献参考文献 12 附附 录 汇编程序 录 汇编程序 13 沈阳航空航天大学课程设计报告 0 第 1 章 总体设计方案 1 1 设计原理设计原理 定点原码两位乘与定点原码一位乘一样 符号位的运算和数值部分是分开进 行的 但为了提高运算速度 所以采用了原码两位乘 因为原码两位乘是用乘数 的末两位的状态来决定新的部分积如何形成 可提高运算速度 乘数和被乘数都 用原码表示 两位乘数有四种可能的组合 每种组合对应的操作如表 1 1 所示 表表 1 1 乘数组合与部分积关系对照表乘数组合与部分积关系对照表 乘数 yn 1yn新的部分积 00新部分积等于原部分积右移两位 01新部分积等于原部分积加被乘数后右移两位 10新部分积等于原部分积加 2 倍被乘数后右移两位 11新部分积等于原部分积加 3 倍被乘数后右移两位 与一位乘法比较 多出了 2X 和 3X 两种情况 把 X 左移 1 位即得到 2X 在机器内通常采用左斜送一位来实现 可是 3X 一般不能一次完成 如分成两次 进行 又降低了计算速度 解决问题的办法是 以 4X X 来代替 3X 运算 在 本次运算中只执行 X 而 4X 则归并到下一步执行 此时部分积以右移了两位 上一步欠下的 4X 已变成 X 在实际线路中要用一个触发器 C 来记录是否欠下 4X 若是 则 C 变为 1 因此实际操作用 Yi 1 Yi C 三位来控制 运算规则 如下所示 表表 1 2 判断值对应的操作以及判断值对应的操作以及 C 值的变化情况值的变化情况 组合值 Yi 1 Yi C 操作 C 值变化 0 0 0 0 部分积 0 右移两位 C 0 1 0 0 1 部分积 x 右移两位 C 0 1 0 1 0 部分积 x 右移两位 C 0 2 0 1 1 部分积 2x 右移两位 C 0 2 1 0 0 部分积 2x 右移两位 C 0 沈阳航空航天大学课程设计报告 1 3 1 0 1 部分积 x 右移两位 C 1 3 1 1 0 部分积 x 右移两位 C 1 4 1 1 1 部分积 0 右移两位 C 1 定点原码两位乘法器实现的功能应如下面例子所示 设计的电路应实现下面 例子给定的功能 用原码两位乘方法求 X Y 已知 X 07H Y 16H 这里的 0 或 1 表示符号 位 2X 0010 1110 表表 1 3 07H 16H 的计算过程的计算过程 部分积 乘数 Cj 说明 000 0000 0110 0 开始 部分积为 0 Cj 0 010 1110 yn 1yn Cj 100 加 2x 保持 Cj 0 010 1110 0110 000 1011 1001 0 2 位 得新的部分积 乘数同时 2 位 001 0111 yn 1yn Cj 010 加 x 保持 Cj 0 010 0010 1001 0 000 1000 1010 2 位得最终结果 实现定点原码两位乘法的流程框图如 1 1 所示 1 沈阳航空航天大学课程设计报告 2 图图 1 1 定点原码两位乘法器逻辑电路框图定点原码两位乘法器逻辑电路框图 1 2 设计思路设计思路 设计的定点原码两位乘法器是用一个乘数模块 一个被乘数模块和部分积模 块以及移位模块和选择模块构成 顾名思义 乘数模块以及被乘数模块即用来存储乘数和被乘数的模块 思路 是把乘数存储在 R1 中 被乘数则存储在 R2 中 部分积则和书上 所说的一样 1 沈阳航空航天大学课程设计报告 3 先全部清零 在这里 我将把部分积存储在 R0 中 因为原码两位乘涉及到欠位 所以 R3 中存储欠位 思路大概如下 将要计算的乘数以及被乘数分别输进存储器中 然后分别计 算出 x 以及 2x 方便以后计算 然后再提出两数的符号位并进行异或运算 比如 17H 06H 的符号位计算则为 1 异或 0 最后经过移位运算可得出最终的符号位模 式 10 00 下面便是具体计算过程 记部分积为 000 0000 判断 yn 1yn Cj的值并加上对 应的值然后将部分积右移两位 同时将乘数右移两位 重复计算 计算次数达到 2 的时候判断附加位 如果附加位为 1 则加 x 并右移两位得结果 否则直接得 出结果 最终 要进行符号位运算 由于上面已经计算好符号位为 10 或者 00 所以 将上面的步骤得到的结果与 7FH 相与去掉上面结果的最高位 再将算好的符号位 加到结果上则可得到最终结果 根据课设题目要求 采用伟福 COP2000 和实验箱进行设计并实现定点原码 两位乘 所以本题目需要试用软件进行调试 首先需要进行编程 以下会给出几个本程序中将用到的汇编语言以及其对应的注释 表表 1 4 程序部分操作的注释程序部分操作的注释 ADD A R 将寄存器 R 的值加入累加器 A 中 ADDC A R 将寄存器 R 的值加入累加器 A 中 带进位 SUB A R 从累加器 A 中减去寄存器 R 的值 AND A R 累加器 A 与 寄存器 R 的值 OR A R 累加器 A 或 寄存器 R 的值 JZ MM 若零标志位置 1 跳转到 MM 地址 JMP MM 跳转到 MM 地址 CPL A 累加器 A 取反 再存入累加器 A 中 OUT 将累加器 A 中的数据输出到输出端口 RR A 累加器 A 右移一位 RL A 累加器 A 左移一位 沈阳航空航天大学课程设计报告 4 NOP 空指令 1 3 设计环境设计环境 软件环境 伟福 COP2000 型计算机组成原理实验仪 COP2000 计算机组成原理实验系统由实验平台 开关电源 软件三大部分组 成 实验平台上有寄存器组 R0 R3 运算单元 累加器 A 暂存器 W 直通 左移 右移单元 地址寄存器 程序计数器 堆栈 中断源 输入 输出单元 存储器 单元 微地址寄存器 指令寄存器 微程序控制器 组合逻辑控制器 扩展座 总线插孔区 微动开关 指示灯 逻辑笔 脉冲源 20 个按键 字符式 LCD RS232 口 COP2000 集成调试软件 即仿真测试软件 共分为 6 部分 1 主菜单区 实现实验仪的各项功能的菜单 包括 文件 编辑 汇编 运行 帮助 五大项 各项线面做详细介绍 2 快捷图标区 快速实现各项功能按键 3 源程序 机器码区 在此区域有源程序窗口 反汇编窗口 EM 程序代码窗 口 源程序用于输入 显示 编辑汇编源程序 反汇编窗口显示程序编译 后的机器码及反汇编的程序 EM 程序代码窗口用数据方式机器码 4 机构图 逻辑波形区 结构图能结构化显示模型机的各部件 以及运行时数 据走向寄存器值 逻辑波形图能显示模型机运行时所有信号的程序 5 微程序 跟踪区 微程序表格用来显示程序运行时微程序的时序 及每个时 钟脉冲各控制位的状态 跟踪表用来记录显示程序及微程序执行的轨迹 指令系统可以帮助你设计新的指令系统 6 寄存器状态区 用来显示程序执行时各内部寄存器的值 沈阳航空航天大学课程设计报告 5 第 2 章 功能模块的设计与实现 2 1 总体的设计与实现总体的设计与实现 被乘数 x 存放在寄存器 R2 中 乘数 y 存放在寄存器 R1 中 存储器 R0 中存 放部分积 R3 中暂时存放需要进行判断的值 根据所设计的算法器 运算中要对乘数 y 进行计算 被乘数 x 需要计算出 X 补 和 2x 方便以后计算 与原码一位乘不同的是 需要在乘数 当乘数位数为偶数 时 的最高位前加两个 0 这样 当乘数最高两个有效位出现 11 时 需要将 Cj置 1 再与所添补的两个 0 结合呈 001 状态 以完成加 x 的操作 此步不必 移位 以上所说的便是其中的一种小情况 剩余的几种状况在这里不重复说明 2 1 1 总体方案的逻辑图总体方案的逻辑图 总体方案在前面的图 1 1 中相信大家能够大致的了解程序的主要流程 下面 将对上面总体框图中的几个小部分给出更为具体的工作流程图 下面是对乘数 y 与被乘数 x 的符号位进行异或的操作 2 沈阳航空航天大学课程设计报告 6 图图 2 1 计算最终结果的符号位计算最终结果的符号位 下面是计算 X 补和 2x 的流程图 图图 2 2 计算计算 X 补和补和 2x 下面是得出最终结果的工作流程图 2 3 沈阳航空航天大学课程设计报告 7 图图 2 3 最终结果输出最终结果输出 2 2 基本功能模块的组成及工作原理基本功能模块的组成及工作原理 定点原码两位乘法器是由一个乘数模块 一个被乘数模块和部分积模块以及 选择器模块和移位模块为基础而实现的 设计要求用汇编语言实现算法 所以先 在仿真软件上进行汇编并仿真然后再在实验箱上进行操作 2 2 1 被乘数模块的组成及工作原理被乘数模块的组成及工作原理 1 被乘数模块的组成 被乘数模块的组成 被乘数模块主要涉及 3 个寄存器 1 个移位寄存器 1 个加法器 2 被乘数模块的工作原理 被乘数模块的工作原理 被乘数模块主要的功能是实现把 X 转换成 0 X 2X 以及 X 然后再由选择 器模块选择出那一个送到加法器里 对 2X 的实现才用移位寄存器来实现 用其 左移的功能将 X 左移一位得到 2X X 用加法器和寄存器得到 采用取反加一的 办法实现 2 2 2 乘数模块的组成及工作原理乘数模块的组成及工作原理 1 乘数模块的组成 乘数模块的组成 乘数模块由寄存器和移位电路组成 3 沈阳航空航天大学课程设计报告 8 2 乘数模块的工作原理 乘数模块的工作原理 乘数模块主要功能是右移两位将乘数最低两位移出 所移出的两位去控制被 乘数模块去选择向加法器所送的数 移位由一个移位电路实现右移两位 在移位 的同时乘数本身右移两位 2 2 3 选择模块的组成及工作原理选择模块的组成及工作原理 1 选择模块的组成 选择模块的组成 选择模块由 8 个 4 选 1 的选择器组成 8 个 4 路选择器分别去选择由被乘数 模块转换完的 0 X 2X X 由 8 个 4 路选择器分别表示 8 位 再组合成一个 数输出 2 选择模块的工作原理 选择模块的工作原理 表表 2 1 选择模块的工作原理选择模块的工作原理 组合值 Yi 1 Yi C 操作 C 值变化 0 0 0 0 部分积 0 右移两位 C 0 1 0 0 1 部分积 x 右移两位 C 0 1 0 1 0 部分积 x 右移两位 C 0 2 0 1 1 部分积 2x 右移两位 C 0 2 1 0 0 部分积 2x 右移两位 C 0 3 1 0 1 部分积 x 右移两位 C 1 3 1 1 0 部分积 x 右移两位 C 1 4 1 1 1 部分积 0 右移两位 C 1 根据以上给出的表格对应的进行选择加的数据 2 2 4 移位模块的工作原理移位模块的工作原理 由于在本算法器中需要多次进行移位 所以移位相对于本算法器来说是不可 或缺的一部分 在实现移位功能的时候 将数据全部用 2 进制代码表示 然后进行左右移位 的运算 结果依旧存放在原属寄存器中 在进行运算的时候直接调用移位后的数 据 中间可节省大部分的时间精力 沈阳航空工业学院课程设计报告 9 第 3 章 结果测试 3 1 程序仿真程序仿真 将先前编好的汇编语言存放在仿真软件中 并进行调试结果 同时对程序进 行改进等操作 由于设计的原码两位乘程序比较复杂 代码长度较长 所以在编 程的时候要耐心 一步一步的跟踪进行运算 并随时调试代码中的错误和改善代 码长度 3 2 仿真测试及结果分析仿真测试及结果分析 利用 COP2000 实验仪进行仿真测试 最终得出结果如下 当 x 07H y 06H 时的仿真结果如下图所示 已知 x 07H y 06H 不算符 号位计算可得 x y 2AH 将其写为 2 进制代码可得 0010 1010 又有最终符号 位的最终结果为 0000 0000 所以将最终符号位加到不带符号位的结果上可得 0010 1010 即最终结果应为 2AH 图图 3 1 x 07H y 06H 时的仿真结果时的仿真结果 由仿真结果可以看出 本程序的结果是正确的 沈阳航空工业学院课程设计报告 10 由于以上的乘数和被乘数均为正数 大家可能会说是巧合 下面 本人将对 一正一负的两个数来进行操作索性数据值不变 仅改变下刚才两个数的结果即可 即 x 07H y 16H 当 x 07H y 16H 时的仿真结果如下图所示 已知 x 07H y 16H 不算符 号位计算可得 x y 2AH 将其写为 2 进制代码可得 0010 1010 又有最终符号 位的最终结果为 1000 0000 所以将最终符号位加到不带符号位的结果上可得 1010 1010 即最终结果应为 AAH 图图 3 2 x 07H y 16H 时的仿真结果时的仿真结果 由上图可知 本仿真结果也正确 沈阳航空工业学院课程设计报告 11 参考文献 1 曹昕燕 EDA 技术实验与课程设计 M 北京 清华大学出版社 2006 2 范延滨 微型计算机系统原理 接口与 EDA 设计技术 M 北京 北京邮电大学 出版社 2006 3 王爱英 计算机组成与结构 第 4 版 M 北京 清华大学出版社 2006 4 俸远祯等 计算机组成原理 M 北京 电子工业出版社 1996 5 杜建国 Verilog HDL 硬件描述语言 北京 国防工业出版社 2000 6 王炜 计算机组成与设计实验教程 北京 科学出版社 2006 沈阳航空工业学院课程设计报告 12 附 录 步数机器码汇编语言注释 008C00MOV R0 00H将 00H 移到 R0 028D06MOV R1 16H将 16H 移到 R1 048E07MOV R2 07H将 07H 移到 R2 068F00MOV R3 00H将 00H 移到 R3 087C02MOV A 02H将 02H 移到 A 0A 88FFMOV 0FFH A将 A 移到 0FFH 0C71MOV A R1将 R1 值移到 A 0D5C10AND A 10H将 A 值跟 10H 相与 0F88DAMOV 0DAH A将 A 值移到 0DAH 11E4CPL A将 A 值取反 1288DBMOV 0DBH A将 A 值移到 0DBH 1472MOV A R2将 R2 值移到 A 155C10AND A 10H将 A 值跟 10H 相与 1788DCMOV 0DCH A将 A 值移到 0DCH 19E4CPL A将 A 值取反 1A58DAAND A 0DAH将 0DAH 值跟 A 值相与 1C88DAMOV 0DAH A将 A 值移到 0DAH 1E78DBMOV A 0DBH将 0DBH 值移到 A 2058DCAND A 0DCH将 0DCH 值跟 A 值相与 2288DBMOV 0DBH A将 A 值移到 0DBH 2478DAMOV A 0DAH将 0DAH 值移到 A 2628DBADDC A 0DBH将 0DBH 值加到 A 28D4RL A将 A 值左移一位 29D4RL A将 A 值左移一位 2AD4RL A将 A 值左移一位 2B88DAMOV 0DAH A将 A 值移到 0DAH 2D72MOV A R2将 R2 值移到 A 2E5C10AND A 10H将 A 值跟 10H 相与 30A439JZ L10 标志位置 1 跳到 L1 3272MOV A R2将 R2 值移到 A 335C0FAND A 0FH将 A 值 跟 0FH 相与 3588FDMOV 0FDH A将 A 值移到 0FDH 37AC43JMP NEXT跳到下一步 3972MOV A R2将 R2 值移到 A 3AE4CPL A将 A 值取反 3B2C01ADDC A 01H将 01H 加到 A 3D6C1FOR A 1FH将 A 值跟 1FH 或运算 3F88FDMOV 0FDH A将 A 值移到 0FDH 41AC43JMP NEXT跳到下一步 4372MOV A R2将 R2 值移到 A 44D4RL A将 A 值左移一位 4588F8MOV 0FBH A将 A 值移到 0FBH 4771MOV A R1将 R1 值移到 A 沈阳航空工业学院课程设计报告 13 485C0FAND A 0FH将 0FH 跟 A 值相与 4A81MOV R1 A将 A 值移到 R1 4B71MOV A R1将 R1 值移到 A 4C5C03AND A 03H将 03H 跟 A 值相与 4E13ADD A R3将 R3 值跟 A 值相与 4F88EEMOV 0EEH A将 A 值移到 0EEH 513C00SUB A 00H将 A 值减去 00H 53A46DJZ L20 标志位置 1 跳到 L2 5578EEMOV A 0EEH将 0EEH 值移到 A 573C00SUB A 01H将 A 值减去 01H 59A48AJZ L30 标志位置 1 跳到 L3 5B78EEMOV A 0EEH将 0EEH 值移到 A 5D3C02SUB A 02H将 A 值减去 02H 5FA48FJZ L40 标志位置 1 跳到 L4 6178EEMOV A 0EEH将 0EEH 值移到 A 633C03SUB A 03H将 A 值 减去 03H 65A496JZ L50 标志位置 1 跳到 L5 6778EEMOV A 0EEH将 0EEH 值移到 A 693C04SUB A 04H将 A 值减去 04H 6BA4A0JZ L60 标志位置 1 跳到 L6 6D70MOV A R0将 R0 值移到 A 6E5C03AND A 03H将 03H 跟 A 值相与 7088FEMOV 0FEH A将 A 值移到 0FEH 7270MOV A R0将 R0 值移到 A 73D0RR A将 A 值右移一位 74D0RR A将 A 值右移一位 7580MOV R0 A将 A 值移到 R0 7671MOV A R1将 R1 值移到 A 77D0RR A将 A 值右移一位 78D0RR A将 A 值右移一位 7981MOV R1 A将 A 值移到 R1 7A78FEMOV A 0FEH将 0FEH 值移到 A 7CD4RL A将 A 值左移一位 7DD4RL A将 A 值左移一位 7E11ADD A R1将 R1 值跟 A 值相与 7F81MOV R1 A将 A 值移到 R1 8078FFMOV A 0FFH将 0FFH 值移到 A 823C01SUB A 01H将 A 值减去 01H 8488FFMOV 0FFH A将 A 值移到 0FFH 86A4A6JZ SHOW0 标志位置 1 跳到 SHOW 88AC48JMP LOOP跳到 LOOP 8A70MOV A R0将 R0 值移到 A 8B22ADDC A R2将 R2 值加到 A 带进位 8C80MOV R0 A将 A 值移到 R0 8DAC6DJMP L2跳到 L2 8F70MOV A R0将 R0 值移到 A 9028FBADDC A 0FBH将 0FBH 值加到 A 沈阳航空工业学院课程设计报告 14 9280MOV R0 A将 A 值移到 R0 9370MOV A R0将 R0 值移到 A 94AC6DJMP L2跳到 L2 9670MOV A R0将 R0 值移到 A 9728FDADDC A 0FDH将 0FDH 值 加到 A 带进位 9980MOV R0 A将 A 值移到 R0 9A73MOV A R3将 R3 值移到 A 9B1C01ADD A 01H将 01H 跟 A 值相与 9D83MOV R3 A将 A 值移到 R3 9EA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- bsci考试题及答案
- 2025年氟化工艺考试试题(含答案)
- 医学基础知识试题题库(带答案)
- 消防安全知识的考试题及答案
- 医院三类射线装置辐射工作人员考核试题(附答案)
- 2025年执业药师之药事管理与法规基础试题库和答案
- 2024年全国保密知识竞赛题库和答案
- 2025网络安全知识竞赛题库和参考答案
- 标准文献分类法培训课件
- 化验室培训专业知识课件
- 2025年医疗器械不良事件培训考试试题(有答案)
- 第1课 互联网和物联网 课件 2025-2026学年七年级下册信息技术浙教版
- 信息技术在课堂教学中的应用
- 江苏省宿迁市沭阳县如东实验学校2024-2025学年七年级下学期期末数学试卷(含答案)
- 2025年湖南省高考真题卷政治和答案
- 额叶胶质瘤护理查房
- 菜鸟驿站标准化运营流程
- 危险废弃物及固体废物管理培训
- 徒手整形培训课件
- 乡镇密码电报管理制度
- 村级络监控安装方案(3篇)
评论
0/150
提交评论