基于EDA的ALU设计.doc_第1页
基于EDA的ALU设计.doc_第2页
基于EDA的ALU设计.doc_第3页
基于EDA的ALU设计.doc_第4页
基于EDA的ALU设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课课 程程 设设 计计 说说 明明 书书 课程名称 课程名称 EDA 课程技术设计 题题 目 目 ALU 设计 学学 院 院 电气信息学院 专专 业 业 测控技术与仪器 年年 级 级 学学 生 生 学学 号 号 指导教师 指导教师 完成日期 完成日期 2010 年 6 月 20 日 1 EDA 技术和设计题目简介 1 1 1EDA 技术简介 1 1 2设计题目简介 1 2 总体方案设计与实现工具 2 2 1ALU 原理分析 2 2 2用 FPGA 实现 ALU 的设计 2 2 3VERILOGHDL 开发语言简介 3 3 ALU 的各模块的具体设计 4 3 1译码与控制分配模块ALUMUX的实现 4 3 2逻辑运算模块ALUCORE的实现 4 3 3加减模块ADDSUB的实现 6 3 4乘法模块MUL的实现 7 3 5除法模块DIV的实现 9 3 6各各模块的组合 15 4系统仿真与调试 15 4 1仿真环境介绍 15 5总结与体会 20 5 1设计的体会 20 5 2设计的不足和改进措施 20 5 3致谢 20 参考文献 21 附录 22 I 西华大学课程设计说明书 EDA 技术课程设计技术课程设计 摘摘 要 要 本次设计采用的是 EDA 技术设计一个算术逻辑单元 ALU 本设计主要 完成 ALU 整体设计 设计分为两个模块 算术运算模块和逻辑运算模块 算术运算模 块包括带进位的八位数的加减和四位数的乘除法运算 逻辑运算模块包括左移与右移 本设计使用 VerilogHDL 语言编写 并可以在 FPGA 上实现 Quartus II 来进行仿真和调 试 关关键词键词 EDA 技术 ALU VerilogHDL 语言 FPGA Abstract This design is adopted to design a EDA arithmetic logic unit ALU The design of the main design the design of the ALU is divided into two modules arithmetic and logical operations module With binary arithmetic modules including eight digit deductions and four digits the method of computing logic operation modules including left and right This design USES VerilogHDL language and can be realized on FPGA Simulation and Quartus II to debug Keywords EDA technology ALU VerilogHDL language FPGA 1 西华大学课程设计说明书 1 1 EDAEDA 技术和设计题目简介技术和设计题目简介 1 1 1 1 EDAEDA 技术简介技术简介 EDA 是电子设计自动化 Electron Design Automation 的缩写 是在 20 世纪 90 年代初 从 CAD 计算机辅助设计 CAM 计算机辅助制造 CAT 计算机辅助测 试 和 CAE 计算机辅助工程 的概念发展起来的 EDA 技术是在电子 CAD 技术基础上发展起来的计算机软件系统 是指以计算机为工 作平台 融合了应用电子技术 计算机技术 信息处理及智能化技术的最新成果 进 行电子产品的自动设计 利用 EDA 工具 电子设计师可以从概念 算法 协议等开始设计电子系统 大量 工作可以通过计算机完成 并可以将电子产品从电路设计 性能分析到设计出 IC 版图 或 PCB 版图的整个过程的计算机上自动处理完成 现在对 EDA 的概念或范畴用得很宽 包括在机械 电子 通信 航空航天 化 工 矿产 生物 医学 军事等各个领域 都有 EDA 的应用 目前 EDA 技术已在各大 公司 企事业单位和科研教学部门广泛使用 例如在飞机制造过程中 从设计 性能 测试及特性分析直到飞行模拟 都可能涉及到 EDA 技术 本文所指的 EDA 技术 主要 针对电子电路设计 PCB 设计和 IC 设计 EDA 设计可分为系统级 电路级和物理实现级 1 2 1 2 设计题目简介设计题目简介 算术逻辑单元 Arithmetic Logic Unit ALU 是中央处理器 CPU 的执行单元 是 所有中央处理器的核心组成部分 由 And Gate 和 Or Gate 构成的算术逻辑单元 主 要功能是进行二进制的算术运算 如加减乘 不包括整数除法 基本上 在所有现代 CPU 体系结构中 二进制都以补数的形式来表示 此算术逻辑单元能构完成带进位的 八位数的加减运算和四位数的乘法和除法的运算 本文介绍带进位的 ALU 设计 用 VerilogHDL 语言编写 并可以在 FPGA 上实现 2 西华大学课程设计说明书 2 2 总体方案设计总体方案设计与实现工具与实现工具 通过查阅大量相关技术资料 并结合自己的实际知识 我主要提出了使用 FPGA 的方案来实现系统功能 下面我将首先对这这种方案的组成框图和实现原理分别进行 说明 然后阐述我最终选择方案的原因 ALUALU 原理分析原理分析 根据本实验的设计要求 ALU 具有以下功能 1 带进位的加 减 乘 除四则运算 2 数据传送 移位 判断和程序转移等功能 由于 ALU 是中央处理器 CPU 的重要组成部分 所以对 ALU 的面积 功耗 指令执行时间和稳定性都有很强的要求 这样就对设计 ALU 器件就有特高的要求 2 2 2 2 用用 FPGAFPGA 实现实现 ALUALU 的设计的设计 在现代电子系统中 数字系统所占的比例越来越大 现代电子系统发展的趋势是 数字化和集成化 CPLD FPGA 作为可编程 ASIC 器件 在数字系统设计中发挥着重要 的作用 与传统的可编程器件相比 FPGA 采用了类似门阵列的通用结构 规模可以 做的较大 可实现的功能更强 设计的灵活性更大 且 FPGA 的容量越来越大 它所 提供的门数从几百门到上百万门 可以满足不同的需要 因此用 FPGA 来实现 ALU 的 功能不会受到 FPGA 门数的限制 用 FPGA 实现的 ALU 有很多优点 1 编程方式简便先进 2 高速 FPGA 的时钟延迟可达纳秒级 结合其并行工作方式在超高速应用领 域和实时测控方面有非常广阔的应用前景 3 高可靠性 表现在几乎可将整个系统下载于同一芯片中从而大大缩小了体 积易于管理和屏蔽 4 开发工具和设计语言标准化开发周期短 5 功能强大应用广阔 FPGA 可供选择范围很大 可根据不同的应用选用不同 容量的芯片 利用它们可实现几乎任何形式的数字电路或数字系统的设计 6 易学易用开发便捷 FPGA 应用的学习不需太多的预备知识 只要具有通常 3 西华大学课程设计说明书 的数字电路和计算机编程基础知识 就足以在短期内掌握基本的设计方法和开 发技巧 2 3 2 3 VerilogHDLVerilogHDL 开发语言简介开发语言简介 Verilog HDL 是一种硬件描述语言 HDL Hardware Discription Language 是一种 以文本形式来描述数字系统硬件的结构和行为的语言 用它可以表示逻辑电路图 逻 辑表达式 还可以表示数字逻辑系统所完成的逻辑 功能 Verilog HDL 语言具有下 述描述能力 设计的行为特性 设计的数据流特性 设计的结构组成以及包含响应监 控和设计验证方面的时延和波形产生机制 所有这些都使用同一种建 模语言 此外 Verilog HDL 语言提供了编程语言接口 通过该接口可以在模拟 验证期间从设计外部 访问设计 包括模拟的具体控制和运行 Verilog HDL 语言不仅定义了语法 而且对每个语法结构都定义了清晰的模拟 仿 真语义 因此 用这种语言编写的模型能够使用 Verilog 仿真器进行验证 语言从 C 编 程语言中继承了多种操作符和结构 Verilog HDL 提供了扩展的建模能力 其中许多扩 展最初很难理解 但是 Verilog HDL 语言的核心子集非常易于学习和使用 这对大多 数建模应用来说已经足够 当然 完整的硬件描述语言足以对从最复杂的芯片到完整的 电子系统进行描述 Verilog HDL 和 VHDL 是目前世界上最流行的两种硬件描述语言 都是在 20 世纪 80 年代中期开发出来的 前者由 Gateway Design Automation 公司 该公司于 1989 年 被 Cadence 公司收购 开发 两种 HDL 均为 IEEE 标准 4 西华大学课程设计说明书 3 3 ALUALU 的各模块的具体设计的各模块的具体设计 ALU 模块的功能是按照控制模块给出的指令 对来自数据存储器 程序存储器 累加器 ACC 和程序状态字的数据进行算术 逻辑或位运算 ALU 模块可以直接或间 接的执行很多指令 如加 减 乘 除等算术运算指令 逻辑与 或 异或等逻辑运 算指令以及移位操作指令 ALU 模块执行的指令有很多 除去上述的算术运算 逻辑 运算和环移指令外 还包括条件转移指令中的比较条件转移指令 CJNE 和减 1 条件转 移指令 DJNZ 这种设计方法主要考虑比较条件转移指令 CJNE 设计上的方便与规范性 而减 1 条件转移指令 DJNZ 的指令操作需要进行减 1 操作 正好可以利用 ALU 模块的 相应算术运算来进行 因此可通过 ALU 模块间接实现的 其余的很多指令则由 ALU 模块直接实现 这些指令包括算术逻辑运算指令 逻辑运算指令和环移指令 alu 模块 共由 5 个子模块组成 分别是译码与控制分配模块 alumux 逻辑运算模块 alucore 加 减模块 addsub 乘法模块 mul 和除法模块 div 译码与控制分配模块译码与控制分配模块 alumuxalumux 的实现的实现 alumux 模块是 alu 模块的译码与控制分配模块 用于实现对从 control 模块传来的 操作代码进行译码和把不同的操作代码分配到不同的子模块进行操作 其实体图如图 3 1 所示 alumux 模块的译码部分采用三个进程 Process 语句来实现 在每个进程中通 过 CASE 语句来实现对输入信号的译码操作 由 control 模块传送给 alumux 子模块的操作 代码共有 41 条 其中 每条操作代码都在 control 模块中用常量来加以定义 如对操 作代码 3 2 逻辑运算模块逻辑运算模块 alucore 的实现的实现 alucore 模块主要是实现相应的逻辑运算 移位指令运算及比较指令等相关运算 其实体图如图 3 3 所示 5 西华大学课程设计说明书 当指令代码经 alumux 模块译码后若选通了 alucore 模块 并提供相应的操作代码 和操作数后 alucore 模块开始进行相应的工作 在 VerilogHDL 语言中 逻辑运算非 常容易实现 可以直接利用相应的与 and 或 or 非 not 等语句来实现 如移位 逻辑指令的实现如下 5 b00011 begin ALU C ALU O C in AC in end 如果操作译码为 5 b00100 则完成 ALU C AC 直移 5 b00100 begin ALU C ALU O C in GR in end 如果操作译码为 5 b00100 则完成 ALU C Gr 直移 5 b10000 begin ALU O ALU C C in GR in end 如果操作码为 5 b10000 则完成 SHCR AC RI 5 b10001 begin ALU C ALU O GR in C in end 如果操作码为 5 b10001 则完成 SHCL AC RI 5 b01111 6 西华大学课程设计说明书 begin ALU C ALU O C in GR in end 如果操作编码为 5 b01111 则进行取反操作 3 3 加减模块加减模块 addsub 的实现的实现 addsub 加减法模块主要用来实现 alu 模块算术运算中的加减法运算 由于减法运 算的 实现也可以转化成加法运算 因此 addsub 模块的实现实质就是加法器的设计 实 现后的实体图如图 3 4 所示 其中输入端口 18 个 两个 8 位的操作数端口 opa i 和 opb i 用于存放加数和被加数 一个状态位 cy i 即低位的进位输入 另一个输入端 为加减法选择信号 addsub i 高电平时为加法操作 低电平时为减法操作 输出端口 11 个 包括 8 位的运算结果输出端口 rslt o 两位的进位状态标志位 cy o 和一位溢出 状态标志位 ov o 设计采用组合逻辑设计方法 所以对于设计的关键部分 并行进位 的产生相应的有一定的要求 即 VHDL 语言中的进位信号的表示应使用变量 variable 而不能使用信号量 signal 因此在 VHDL 语言中 可直接按照公式的要求进行编写代 码 其结果将由信号 rslt o 代出 addsub 模块 返回到 alumux 中 代码实现如下 5 b00111 begin ALU C ALU O AC in GR in end 如果操作译码为了 5 b00111 则进行八位数相加 5 b01000 begin ALU C ALU O AC in GR in end 如果操作编码为了 5 b01000 则八位数相减 5 b01011 begin ALU C ALU O AC in GR in C in 7 西华大学课程设计说明书 end 如果操作译码为了 5 b01011 则进行带进位八位数相加 5 b01100 begin ALU C ALU O AC in GR in C in end 如果操作译码为了 5 b01100 则进行带借位八位数相减 3 4 3 4 乘法模块乘法模块 mul的实现的实现 mul 模块主要实现算术运算中的乘法运算 该模块的设计非常简单 直接利用 VerilogHDL 语言中的乘法运算符编写程序进行设计即可 其实体图如图 3 5 所示 mul 模块的输入为被乘数 mula 和乘数 mulb 均为 4 位输入 而输出 product o 为 8 位输出 在 VerilogHDL 的实现中 内部运算的实现仍然是通过变量的是用来实现的 因为内部 的移位相加是通过 for 循环语句来实现的 因为是 4 位的乘法器 所以要循环 4 次 且 从乘数的最低位开始循环至最高位 每次循环时都要对乘数的对应位进行判断 若乘 数的对应位是 1 则把被乘数与保存中间值的变量值相加 然后再存于变量 v d 中 若乘数的对应位是 0 则直接把保存中间值的变量值送入变量 v d 中 判断结束后 循环中止前 都要把 v d 中的值放到 v c 中 并右移一位 依此循环 4 次 则可求出 最终乘积 而乘积的结果由信号 product o 送回到 alumux 模块 其实现代码如下 5 b11100 begin ALU C ALU O C in mul AC in 3 0 GR in 3 0 end 如果 操作译码为 5 b11100 则完成四位数相乘 function 7 0 mul 四位数移位相乘函数 input 3 0 AC in input 3 0 GR in reg 7 0 R 8 西华大学课程设计说明书 reg 7 0 temp reg 7 0 temp2 begin R 0 temp 0 temp2 AC in if GR in 0 1 begin temp temp2 R temp2 temp2 temp end if GR in 1 1 begin temp temp2 R R temp2 1 temp2 temp end if GR in 2 1 begin 9 西华大学课程设计说明书 temp temp2 R R temp2 2 temp2 temp end if GR in 3 1 begin temp temp2 R R temp2 7 if temp GR in begin temp3 temp2 R out 7 1 b1 temp temp4 temp2 6 if temp GR in begin temp3 temp2 R out 6 1 b1 temp temp4 temp2 5 if temp GR in begin temp3 temp2 R out 5 1 b1 12 西华大学课程设计说明书 temp temp4 temp2 4 if temp GR in begin temp3 temp2 R out 4 1 b1 temp temp4 temp2 3 if temp GR in begin 13 西华大学课程设计说明书 temp3 temp2 R out 3 1 b1 temp temp4 temp2 2 if temp GR in begin temp3 temp2 R out 2 1 b1 temp temp4 temp2 1 if temp GR in begin 14 西华大学课程设计说明书 temp3 temp2 R out 1 1 b1 temp temp4 temp2 GR in begin temp3 temp2 R out 0 1 b1 temp temp4 temp2 temp2 temp3 next temp temp4 temp end temp next div R out end endfunction 15 西华大学课程设计说明书 3 6 3 6 各各模块的组合各各模块的组合 下图是一位 ALU 的原理图 即一位的加减法 乘除法和一位的逻辑运算的连接 4 4系统系统仿真与调试仿真与调试 4 1 4 1 仿真环境介绍仿真环境介绍 本设计使用 quartusii 的时序仿真进行波形的仿真测试 仿真步骤如下 1 新建一个 vector Waveform Files 2 选择 nodes files 3 设定每个输入信号的激励信号 4 选择 time 还是 function 仿真 function 仿真还要先执行功能 processing general functional simulation nestlist 5 时序仿真可以用于分析时间延时 功能仿真只用于验证模块的功能 16 西华大学课程设计说明书 完成 ALU C AC 直移仿真波形 完成 ALU C Gr 直移仿真波形 17 西华大学课程设计说明书 八位数相加的仿真波形 八位数相减的仿真波形 带进位八位数相加的仿真波形 18 西华大学课程设计说明书 带进位八位数相减的仿真波形 求反指令的仿真波形 19 西华大学课程设计说明书 左移和右移指令的仿真波形 两个四位数移位相乘的仿真波形 两个八位数的除的仿真波形 20 西华大学课程设计说明书 5 5总结与体会总结与体会 5 1 5 1 设计的体会设计的体会 在本次设计中主要是在于 EDA 工具的使用 通过 VerilogHDL 语言完成 ALU 各模块 的设计和仿真 成功的完成了此设计 从此设计中我学到了许多 对于一个系统的开 发 最初的模块划分是非常重要的 随着系统的复杂度的增大 划分对系统的后续开 发显示出越来越大的重要性 随着自顶而下 Top Down 设计方法的广泛采用 把一 个系统划分为几个子模块 然后各个子模块分别设计的方法越来越多的被广大设计者 所使用 一个系统模块划分的好坏 模块间接口设计的是合理 将直接影响到整个的 系统开发 甚至会决定系统开发的成功与否 此设计中体现了 VerilogHDL 语言的重要 性 VerilogHDL 是一种硬件描述语言 它所描述的对象是具体的硬件电路 这就决定 了它与普通的程序设计语言有着很大的不同 普通的程序设计语言一般是顺序执行的 而 VeriolgHDL 语言则有较多的并行执行部分 这是由硬件电路的并行性所决定的 作 为描述硬件电路的一种设计语言 VerilogHDL 必然要有相应的语句去描述硬件电路的 并行性 编程时 思路中要有相应的电路概念 然后按照相应的电路编写程序 这样 的程序系统易于综合 优化 最后的综合的电路结果也比较理想 5 2 5 2 设计的不足和改进措施设计的不足和改进措施 对本文所涉及的范围来说我所做的工作还是有欠缺的 本文主要是对 ALU 的功能 进行软件设计和仿真 而没有通过实际的硬件系统来仿真与验证 如果以后条件允许 的话 可以在硬件系统上来进行仿真与验证 使其更适合于实际应用 其次是在仿真波形中还有很的毛刺出现 这是由于在设计的过程中由于竞争冒险 导致所致 可以在整个设计的源程序中加入时钟 这样可以消除毛刺带来的影响 5 3 5 3 致谢致谢 首先感谢我的导师黄勇老师 黄老师给了我们全方位的支持 包括课程设计的选 题 文献资料的收集 整理和论文写作过程的修改等等 特别是在论文的定稿过程中 更是一丝不苟 提出了许多宝贵意见 同时黄老师的治学态度 正直的品质和乐于助 人的精神 无时不刻在感染着我 鞭策着我 使我在工作和学习上不断取得进步 其次要深深感谢电气学院的全体老师辛勤培养和教诲 同时感谢我的同学 他们的帮助和相互支持使我的课程设计顺利地完成 21 西华大学课程设计说明书 参考文献参考文献 1 康华光 电子技术基础数字部分 第五版 M 高等教育出版社 2006 01 2 康华光 电子技术基础模拟部分 第五版 M 高等教育出版社 2006 01 3 谢自美 电子线路设计 试验 测试 第三版 M 华中科技大学出版社 2008 01 4 杨志亮 Protel99se 电路原理图设计技术 M 西北工业大学出版社 2002 02 5 王彩君 杨睿 数字电路实验 M 国防工业出版社 2006 07 6 王建新 姜萍 电子线路实践教程 M 科学出版社 2003 09 7 顾德仁 万栋义 脉冲与数字电路 M 高等教育出版社 1985 07 8 刘建成 电子线路试验教程 M 北京气象出版社 2004 01 9 李银华 电子线路设计指导 M 北京航空航天大学出版社 2005 06 10 张宪 何宇斌 电子电路制作指导 M 化学工业出版社 2006 01 22 西华大学课程设计说明书 附录 附录 1 A 9 0 B 9 0 ADDER A 8 0 B 8 0 ADDER SEL 4 0 DATA 31 0 OUT MUX SEL 4 0 DATA 31 0 OUT MUX SEL 4 0 DATA 31 0 OUT MUX CIN A 7 0 B 7 0 LESS THAN 1 CIN A 7 0 B 7 0 LESS THAN 1 CIN A 7 0 B 7 0 LESS THAN 1 CIN A 7 0 B 7 0 LESS THAN 1 A 6 0 B 6 0 ADDER A 4 0 B 4 0 ADDER A 7 0 B 7 0 ADDER SEL 4 0 DATA 31 0 OUT MUX A 4 0 B 4 0 ADDER A 3 0 B 3 0 ADDER SEL 4 0 DATA 31 0 OUT MUX A 1 0 B 1 0 ADDER SEL 4 0 DATA 31 0 OUT MUX CIN A 7 0 B 7 0 LESS THAN 1 SEL 4 0 DATA 31 0 OUT MUX A 9 0 B 9 0 ADDER A 4 0 B 4 0 ADDER A 4 0 B 4 0 ADDER A 2 0 B 2 0 ADDER SEL 4 0 DATA 31 0 OUT MUX A 8 0 B 8 0 ADDER A 5 0 B 5 0 ADDER SEL 4 0 DATA 31 0 OUT MUX 0 1 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 CIN A 7 0 B 7 0 LESS THAN 1 CIN A 7 0 B 7 0 LESS THAN 1 CIN A 7 0 B 7 0 LESS THAN 1 SEL 6 0 DATA 6 0 OUT SELECTOR SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 SEL DATAA DATAB OUT0 MUX21 IN 4 0 OUT 31 0 DECODER Mux8 OUT Mux0 OUT Mux6 OUT Mux5 OUT Mux4 OUT Mux3 OUT Mux2 OUT Mux1 OUT Mux7 OUT WideOr0 OUT0 Decoder0 OUT C in Add1 8 h00 op 4 0 GR in 7 0 AC in 7 0 Mux0 32 h30039998 LessThan7 LessThan3 4 h0 LessT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论