EDA课程设计 ALU算术逻辑运算单元的设计.doc

上传人:土8路 文档编号:10371753 上传时间:2021-05-12 格式:DOC 页数:14 大小:140.50KB
返回 下载 相关 举报
EDA课程设计 ALU算术逻辑运算单元的设计.doc_第1页
第1页 / 共14页
EDA课程设计 ALU算术逻辑运算单元的设计.doc_第2页
第2页 / 共14页
EDA课程设计 ALU算术逻辑运算单元的设计.doc_第3页
第3页 / 共14页
EDA课程设计 ALU算术逻辑运算单元的设计.doc_第4页
第4页 / 共14页
EDA课程设计 ALU算术逻辑运算单元的设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《EDA课程设计 ALU算术逻辑运算单元的设计.doc》由会员分享,可在线阅读,更多相关《EDA课程设计 ALU算术逻辑运算单元的设计.doc(14页珍藏版)》请在三一文库上搜索。

1、摘要摘要 本文讨论了基于FPGA 芯片的四位简单微处理器的设计方法。依据微处理器 的基本原理,以XILINUX ISE 9.2I软件平台作为开发工具,它与AMD公司生产的 四位微处理器AM2901指令兼容,主要完成微处理器硬件系统设计和指令系统设 计两方面的任务,运用VHDL硬件编程语言,使微处理器能够实现两个四位二进 制加、减算术运算和与或等逻辑运算功能。微处理器系统包括运算器、控制器、 存储器以及其他必要的逻辑部件。 关键词关键词:FPGA,VHDL,微处理器。 目录目录 一一 设计任务设计任务33 二二 总体设计总体设计33 三三 详细设计详细设计33 1 1、ALUALU 输入选择器的

2、设计输入选择器的设计3 3 2 2、ALUALU 算术逻辑运算单元的设计算术逻辑运算单元的设计44 3 3、存储器、存储器 RAMRAM 的设计的设计66 4 4、寄存器、寄存器 qreg1qreg1 的设计的设计77 5 5、输出选择器的设计、输出选择器的设计88 6 6、顶层模块的设计、顶层模块的设计99 四四 结果分析结果分析1111 五五 结束语结束语1313 六六 参考文献参考文献1313 一、设计任务一、设计任务 本设计为一个基于VHDL语言的9位简单指令,微处理器的设计流程,包括微 处理器的ALU操作数选择、ALU功能选择、RAM输入输出及移位操作,最后用顶层 设计进行元件例化。

3、通过编译、仿真检查程序,最后在FPGA芯片上实现下载。 二、总体设计二、总体设计 系统的主要分五个模块。模块间的关系如下图: ALU 输入选择设计输入选择设计 ALU 功能选择设计功能选择设计 RAM 输入输出及移位操作设计输入输出及移位操作设计 寄存器输入输出及移位操作设计寄存器输入输出及移位操作设计 系统本身输入输出及移位操作系统本身输入输出及移位操作 三、详细设计三、详细设计 微处理器的指令系统规定:基本指令字长为 9 位,指令的每一位从高到低用 I8、I7、I6、I5、I4、I3、I2、I1、I0表示。 1 1、ALUALU 输入选择器的设计输入选择器的设计 指令的编码方式如图 指令码

4、指令码 ALU 输入选择 其中,ALU 输入选择,可以对 ALU 中运算的操作数进行选择,即 r 和 s,选择信 指令码 输入选择 I2 I1 I0 r s 0 0 0 a q 0 0 1 a b 0 1 0 0 q 0 1 1 0 b 1 0 0 0 a 1 0 1 d a 1 1 0 d q 1 1 1 d 0 号 a、b、d、q、0 到 ALU。 ALU 输入选择器是由微处理器指令中的源操作数所控制的两个多路选择器构成 的。输出信号 r 在 a、d 和 0 之间选择,s 信号在 a、b、q 和 0 之间选择。其 VHDL 源程序如下: library ieee; use ieee.std

5、_logic_1164.all; use ieee.numeric_std.all; entity alumux is port ( d,q,a,b : in unsigned(3 downto 0); aluin_ctrl:in std_logic_vector(2 downto 0); -输入选择控制 r,s:buffer unsigned(3 downto 0); end alumux; architecture arc1 of alumux is begin with aluin_ctrl select r=a when 000|001, 0000when 010|011|100, d

6、 when others; with aluin_ctrl select s=q when 000|010|110, b when 001|011, a when 100|101, 0000 when others; end arc1; 2 2、ALUALU 算术逻辑运算单元的设计算术逻辑运算单元的设计 ALU 算术运算逻辑单元,可以对两个 4 位操作数执行 3 种算术运算和 5 中 逻辑运算。输入信号为 4 位 r 信号,4 位 s 信号以及进位信号 cin,输出信号为 f3.0、进位输出信号 c4、进位生成信号 g_bar、进位传输信号 p_bar 和溢出 标志 ovr。ALU 的输出信号

7、 f3.0还反馈到寄存器和存储器。 指令码 ALU 单元选择 I5 I4 I3 0 0 0 r+s 0 0 1 s-r 0 1 0 r-s 0 1 1 r or s 1 0 0 r and s 1 0 1 (not r) and s 1 1 0 r xor s 1 1 1 not(r xor s) ALU 功能选择 ALU 算术逻辑运算单元的主要功能是根据指令码的要求,分别对两个操作执 行算术逻辑运算单元的 VHDL 程序实现如下: library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use ieee.std

8、_logic_unsigned.all; entity alu is port ( r,s : in unsigned(3 downto 0); alu_ctrl:in std_logic_vector(2 downto 0); -功能选择控制 cin:in std_logic; -进位输入 f:buffer unsigned(3 downto 0); -结果输出 g_bar,p_bar:buffer std_logic; -进位生成标志和进位传输标志 c4:buffer std_logic; -进位输出 ovr:buffer std_logic); end alu; architecture

9、 rt1 of alu is signal r1,s1,f1:unsigned(4 downto 0); begin r1=0 s1 if cin=0 then f1=r1+s1; -r+s else f1 if cin=0 then f1=s1+not(r1); -s-r else f1 if cin=0 then f1=r1+not(s1); -r-s else f1 f1 f1 f1 f1 f1 null; end case; end process; f=f1(3 downto 0); c4=f1(4); g_bar=not( (r(3)and s(3) or (r(3)or s(3)

10、and (r(2)and s(2) or (r(3)or s(3)and (r(2)or s(2)and (r(1)and s(1) or (r(3)or s(3)and (r(2)or s(2)and (r(1)and s(1)and (r(0)and s(0); p_bar=not( (r(3)or s(3)and(r(2)or s(2)and(r(1)and s(1)and(r(0)and s(0); ovr=1when (f1(4)/=f1(3)else 0; end rt1; 3 3、存储器、存储器 RAMRAM 的设计的设计 存储器 RAM 用于读写数据的双端口存储器。4 位 aa

11、ddr 信号和 baddr 信号对 16 位存储器进行寻址,决定了输出线 a、b 的读出数据。 指令码 RAM 操作 I8 I7 I6 0 0 0 0 0 1 0 1 0 f3.0 0 1 1 f3.0 1 0 0 ram3 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; entity ram1 is port ( clk : in std_logic; aaddr,baddr,f:in unsigned(3 downto 0); -a 地址、b 地址 f:in un

12、signed(3 downto 0) -输入数据 ram1_ctrl:in std_logic_vector(2 downto 0);-RAM 操作控制 ram0,ram3:in std_logic; a,b:buffer unsigned(3 downto 0); -a、b 通道 end ram1; architecture rt1 of ram1 is -16 位地址 type ram_type is array(15 downto 0)of unsigned(3 downto 0); signal ab_data:ram_type; -存储区值 signal ctrl:std_logic

13、_vector(1 downto 0); begin ctrlab_data(to_integer(baddr)ab_data(to_integer(baddr)ab_data(to_integer(baddr)ab_data(to_integer(baddr)=ab_data(to_integer(baddr); end case; end if; end process; a=ab_data(to_integer(aaddr); -a 通道 bq_dataq_dataq_dataq_data=q_data; -保持 end case; q=q_data; end if; end proce

14、ss; q3=f(3)when (q_ctrl=110 or q_ctrl=111)else Z; q0=f(0)when (q_ctrl=100 or q_ctrl=101)else Z; end rt1; 5 5、输出选择器设计、输出选择器设计 系统本身输入输出及移位操作 输出选择器选择将 a 信号或 f 信号输出,用于选择 ALU 输出或者寄存器信 号作为对外输出信号。输出选择模块主要是经多路选择器将输出信号传送到 输出总线 y3.0,输出信号的选择受指令码控制,输出总线构成三态结构, 受控制端 OE 的控制。其 VHDL 源程序如下: library ieee; use ieee.st

15、d_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; entity outmux is port ( a,f : in unsigned(3 downto 0); mux_ctrl:in std_logic_vector(2 downto 0); -输出控制 oe:in std_logic; -三态控制 指令码 输出 I8 I7 I6 0 0 0 f 0 0 1 f 0 1 0 a 0 1 1 f 1 0 0 f 1 0 1 f 1 1 0 f 1 1 1 f y:buffer unsigned

16、(3 downto 0); -输出 end outmux; architecture arc1 of outmux is signal y_data:unsigned(3 downto 0); begin y_data=a when mux_ctrl=010 else f; yclk,aaddr=aaddr,baddr=baddr,f=ff, ram1_ctrl=i(8 downto 6),ram0=ram0,ram3=ram3,a=aa,b=bb); -寄存器的端口映射 u2:qreg1 port map(clk=clk,f=ff, q_ctrl=i(8 downto 6),q0=q0,q3

17、=q3,q=qq); -输入选择器的端口映射 u3:alumux port map(d=d,q=qq,a=aa,b=bb, aluin_ctrl=i(2 downto 0),r=rr,s=ss); -ALU 算术逻辑运算单元的端口映射 u4:alu port map(r=rr,s=ss, alu_ctrl=i(5 downto 3),cin=cin,f=ff,g_bar=g_bar,c4=c4,ovr=ovr); -输出选择器的端口映射 u5:outmux port map(a=qq,f=ff,mux_ctrl=i(8 downto 6),oe=oe,y=y); end rt1; 四、结果分析

18、四、结果分析 1 1、ALUALU 输入选择器输入选择器 由运行结果可知,当指令为 0 时,输入选择信号 r 为 a,输入选择信号 s 为 q, 当指令为 3 时,输入选择信号 r 为 0,输入选择信号 s 为 b。图中当指令码 alum_ctrl 为 0,则输入选择信号 r 为输入 a 即 2,输入选择信号 s 为 q 即 1。 当指令码 alum_ctrl 为 3,则输入选择信号 r 为 0,输入选择信号 s 为 b 即 8。 2 2、ALUALU 算术逻辑运算单元算术逻辑运算单元 由运行结果可知,当指令码 alu_ctrl 为 0 时,执行加法运算,即 r+s,如果 进位输入为 1,则再

19、加上进位,即 r+s+1,图中 2 加 4 加进位 1 得 7,相加之后 没有进位,进位输出 c4 即为 0,溢出标志 ovr 为 0,当指令码 alu_ctrl 为 4 时, 执行与运算,即 r and s,图中 5 与 d 进行与运算,结果为 5。 3 3、存储器、存储器 RAMRAM 由运行结果可知,当输入指令 ram1_ctrl 时,地址选择信号 baddr 选择 ram 存储位置,存储的值由 a 通道或 b 通道输出,a 通道输出的值由地址选择信号 aaddr 决定,通道输出的值由地址选择信号 baddr 决定,图中指令 ram1_ctrl 为 2 时,将计算结果 1 存储在地址 b

20、addr 为 0 的存储区内,a 通道输出地址 aaddr 为 0 的存储区值,即输出 1,b 通道输出地址 aaddr 为 0 的存储区值,即输出 1。 4、寄存器、寄存器 qreg1qreg1 由运行结果可知,指令 q_ctrl 有四种操作包括接收、左移、右移、保持,图 中当指令 q_ctrl 为 0 时,执行接受输入数据 f,当指令 q_ctrl 为 7 时,执行 保持数据 f,q3 被赋值,当指令 q_ctrl 为 4 时,实现左移,q0 被赋值。 5 5、输出选择器、输出选择器 由运行结果可知,当 oe 为高电平时,输出端 y 输出高阻态,否则输出端由输 出控制指令 mux_ctrl

21、 决定,当 mux_qtrl 为 2 时,输出为 a 信号,当 mux_ctrl 为 7 或 0 时,输出为 f 信号。 6 6、总体仿真、总体仿真 由运行结果可知,输入端 d 输入数据,经 ALU 算术逻辑单元运算后得到的结果送 入存储器和寄存器,最后经输出选择器选择输出数据。当输入指令为 i 为 7 时,将信 号 d 输入,执行加法运算,经存储器存储,经寄存器寄存,oe 为低电平控制输出端 y 输出。 五、结束语五、结束语 本文介绍了基于FPGA进行微处理器的设计,进行系统建模,并且使用现场 可编程器件FPGA,由九位指令控制,实现ALU操作数选择、ALU功能选择、RAM输 入输出及移位操作、寄存器输入输出及移位操作。 六、参考文献六、参考文献 1 基于 Altera FPGA/CPLD 的电子系统设计及工程实践 人民邮电出版社 2 潘松,黄继业主编.EDA 技术与 VHDL(第 3 版).清华大学出版社 3 谭会生.EDA 技术综合应用实例与分析.西安电子科技大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1