ALU算术运算器.docVIP

  • 356
  • 0
  • 约4.05千字
  • 约 8页
  • 2016-12-29 发布于重庆
  • 举报
《VHDL与数字系统设计》课程设计报告 ( 2012 -- 2013 年度第 1 学期) 名 称: VHDL与数字系统设计 题 目: ALU设计 院 系: 电气与电子工程学院 班 级: 电子1101 学 号: 1111230120 学生姓名: 王科敏 指导教师: 高雪莲 设计周数: 2周 成 绩: 日期: 2013年 1 月 8日 一、课程设计的目的与要求 设计目的 熟悉熟悉MAXPLUS2/Quartus II软件,掌握软件的VHDL程序输入、程序编译和程序仿真操作; 学习利用VHDL语言设计数字电路程序; 了解ALU的工作方式。 设计要求 利用VHDL语言设计ALU(算术逻辑单元)电路,并利用相关软件进行编译和仿真。并通过其波形输入验证电路设计; 根据ALU的每一个算术运算执行动作,写出当前算术运算执行动作的真值表,并根据这些真值表编写每个执行动作的VHDL程序; 尽可能采用多种编程思路完成程序设计。 二、设计正文 ALU是算术逻辑单元,是拥有算术运算和逻辑运算功能的电路。其中,算术运算主要以加、减法为主,(乘除法可以利用移位配合加法的方法处理,即可完成运算。逻辑运算分与、或、异或、非四种运算。ALU的真值表如下所示:(其中,A和B都为四位数据)。 表1 ALU的真值表 S2 S1 S0 进\借位co 输出 执行动作 0 0 0 0 F=A+B 加法 1 F=A+B+1 进位加法 0 0 1 0 F=A-B 减法 1 F=A-B-1 借位减法 0 1 0 0 F=A 传递(无进位) 1 F=A+1 A加1 0 1 1 0 F=A 传递(无借位) 1 F=A-1 A减1 1 0 0 X F=A AND B 与操作 1 0 1 X F=A OR B 或操作 1 1 0 X F=A XOR B 异或操作 1 1 1 X F=NOT A 非操作 设计程序如下所示: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ——程序中运用加减运算 ENTITY alu IS PORT(s2,s1,s0,co:IN STD_LOGIC; a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);f:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); ——定义输入与输出 END alu; ARCHITECTURE behave OF alu IS BEGIN PROCESS (s2,s1,s0,a,b,co) VARIABLE s:STD_LOGIC_VECTOR(2 DOWNTO 0); ——引入字符串,便于表达 BEGIN s:=s2s1s0; CASE s IS WHEN 000= f=a+b+co; WHEN 001= f=a-b-co; WHEN 010= f=a+co; WHEN 011= f=a-co; WHEN 100= f=a AND b; WHEN 101= f=a OR b; WHEN 110= f=a XOR b; WHEN OTHERS= f=NOT a; END CASE; ——用case语句并行执行,使f执行不同的运算 END PROCESS; END behave; 三、课程设计总结 1、运用case语句时注意when后是先等号后大于号,否则会出现错误; 2、程序进行仿真时,仿真的文件名始终与程序名一致。 附录 程序仿真结果图与所得结论 当s2s1s0=‘000’时的仿真结果如下图所示: 考虑程序仿真时的延迟问题,从图中可看出:当a=‘0000’,b=‘0000’,co=0时,f=‘0000’;当a=‘0000’,b=‘0000’,co=1时,f=‘0001’;当a=‘0001’,b=‘0001’,co=0时,f=‘0010’。由此可知f=a+b+co,与ALU真值表中结论符合:当s2s1s0=‘000’,co=0时, f=a+b;当时s2s1s0=‘000’,co=

文档评论(0)

1亿VIP精品文档

相关文档