计算机组成原理第6章.ppt

上传人:牧羊曲112 文档编号:6059678 上传时间:2023-09-19 格式:PPT 页数:68 大小:971KB
返回 下载 相关 举报
计算机组成原理第6章.ppt_第1页
第1页 / 共68页
计算机组成原理第6章.ppt_第2页
第2页 / 共68页
计算机组成原理第6章.ppt_第3页
第3页 / 共68页
计算机组成原理第6章.ppt_第4页
第4页 / 共68页
计算机组成原理第6章.ppt_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《计算机组成原理第6章.ppt》由会员分享,可在线阅读,更多相关《计算机组成原理第6章.ppt(68页珍藏版)》请在三一办公上搜索。

1、现代计算机组成原理,潘 明 潘 松 编著,科学出版社,第 6 章,16位CISC CPU设计,6.1 顶层系统设计,6.1.1 16位CPU的组成结构,图6-1 16位CPU结构框图,6.1 顶层系统设计,指令系统设计,(1)单字指令,1指令格式,表6-1 单字节指令格式,6.1 顶层系统设计,(2)双字指令,表6-2 双字指令格式,表6-3 双字节指令,6.1 顶层系统设计,指令系统设计,2指令操作码,表6-4 操作码功能表,6.1 顶层系统设计,指令系统设计,2指令操作码,表6-5 常用指令举例,6.1 顶层系统设计,6.1.3 顶层结构的VHDL设计,1.CPU元件的VHDL描述,【例6

2、-1】CPU_LIB.VHDlibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;package cpu_lib istype t_shift is(shftpass,shl,shr,rotl,rotr);subtype t_alu is unsigned(3 downto 0);,(接下页),6.1 顶层系统设计,6.1.3 顶层结构的VHDL设计,1.CPU元件的VHDL描述,constant alupass:unsigned(3 downto 0):=0000;constant andOp:unsign

3、ed(3 downto 0):=0001;constant orOp:unsigned(3 downto 0):=0010;constant notOp:unsigned(3 downto 0):=0011;constant xorOp:unsigned(3 downto 0):=0100;constant plus:unsigned(3 downto 0):=0101;constant alusub:unsigned(3 downto 0):=0110;constant inc:unsigned(3 downto 0):=0111;constant dec:unsigned(3 downto

4、 0):=1000;constant zero:unsigned(3 downto 0):=1001;type t_comp is(eq,neq,gt,gte,lt,lte);subtype t_reg is std_logic_vector(2 downto 0);type state is(reset1,reset2,reset3,reset4,reset5,reset6,execute,nop,load,store,move,load2,load3,load4,store2,store3,store4,move2,move3,move4,incPc,incPc2,incPc3,incPc

5、4,incPc5,incPc6,loadPc,loadPc2,loadPc3,loadPc4,bgtI2,bgtI3,bgtI4,bgtI5,bgtI6,bgtI7,bgtI8,bgtI9,bgtI10,braI2,braI3,braI4,braI5,braI6,loadI2,loadI3,loadI4,loadI5,loadI6,inc2,inc3,inc4);subtype bit16 is std_logic_vector(15 downto 0);end cpu_lib;,6.1 顶层系统设计,6.1.3 顶层结构的VHDL设计,1.CPU元件的VHDL描述,【例6-2】top.vhd

6、library IEEE;use IEEE.std_logic_1164.all;use work.cpu_lib.all;entity top isend top;architecture behave of top iscomponent memport(addr:in bit16;sel,rw:in std_logic;ready:out std_logic;data:inout bit16);end component;component cpuport(clock,reset,ready:in std_logic;addr:out bit16;rw,vma:out std_logic

7、;data:inout bit16);end component;signal addr,data:bit16;signal vma,rw,ready:std_logic;signal clock,reset:std_logic:=0;beginclock=not clock after 50 ns;reset=1,0 after 100 ns;m1:mem port map(addr,vma,rw,ready,data);u1:cpu port map(clock,reset,ready,addr,rw,vma,data);end behave;,6.1 顶层系统设计,6.1.3 顶层结构的

8、VHDL设计,2.顶层文件的原理图设计,(接下页),图6-2 CPU顶层结构图,6.1 顶层系统设计,6.1.3 顶层结构的VHDL设计,3CPU与LCD显示模块的接口,图6-3 显示模块dsp的实体结构图,6.1 顶层系统设计,6.1.3 顶层结构的VHDL设计,3CPU与LCD显示模块的接口,图6-4 LCD显示屏的数据显示,6.1 顶层系统设计,6.1.4 软件设计实例,表6-6 示例程序,表6-7 存储器初始化文件RAM_16.mif的内容,6.2 CPU基本部件设计,6.2.1 运算器ALU,表6-8 运算器ALU的功能,图6-5 运算器ALU结构图,6.2 CPU基本部件设计,6.

9、2.1 运算器ALU,图6-5 运算器ALU结构图,【例6-3】alu.vhdlibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;use work.cpu_lib.all;entity alu isport(a,b:in bit16;sel:in t_alu;c:out bit16);end alu;architecture rtl of alu isbeginaluproc:process(a,b,sel)begincase sel iswhen alupass=c c c c c c c c c

10、c c=0000000000000000 after 1 ns;end case;end process;end rtl;,6.2 CPU基本部件设计,6.2.1 运算器ALU,图6-6 运算器ALU的仿真波形,6.2 CPU基本部件设计,6.2.1 运算器ALU,表6-9 ALU运算仿真结果说明,6.2 CPU基本部件设计,6.2.2 比较器COMP,表6-10 比较器的运算类型,6.2 CPU基本部件设计,6.2.2 比较器COMP,图6-7比较器结构图,6.2 CPU基本部件设计,6.2.2 比较器COMP,【例6-4】COMP.VHDlibrary IEEE;use IEEE.std_

11、logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;use work.cpu_lib.all;entity comp isport(a,b:in bit16;sel:in t_comp;compout:out std_logic);end comp;architecture rtl of comp isbegincompproc:process(a,b,sel)begincase sel iswhen eq=if a=b then compout if a/=b then compout if

12、a b then compout if a=b then compout if a if a=b then compout=1 after 1 ns;else compout=0 after 1 ns;end if;end case;end process;end rtl;,6.2 CPU基本部件设计,6.2.2 比较器COMP,图6-8 比较器COMP的仿真波形图,表6-11 比较器COMP的仿真波形说明,6.2 CPU基本部件设计,6.2.3 控制器CONTROL,图6-9 控制器CONTROL的实体结构图,【例6-5】control.vhdlibrary IEEE;use IEEE.st

13、d_logic_1164.all;use work.cpu_lib.all;entity control isport(clock,reset,ready,compout:in std_logic;instrReg:in bit16;progCntrWr,progCntrRd,addrRegWr,addrRegRd,outRegWr,outRegRd:out std_logic;shiftSel:out t_shift;aluSel:out t_alu;compSel:out t_comp;opRegRd,opRegWr,instrWr,regRd,regWr,rw,vma:out std_l

14、ogic;regSel:out t_reg);end control;architecture rtl of control issignal current_state,next_state:state;beginnxtstateproc:process(current_state,instrReg,compout,ready)beginprogCntrWr aluSel aluSel=zero;shiftSel=shftpass;outRegWr=1;,(接下页),next_state outRegRd outRegRd vma vma case instrReg(15 downto 11

15、)iswhen 00000=next_state regSel regSel regSel progcntrRd progcntrRd regSel regSelnext_state=incPc;,(接下页),end case;when load2=regSel vma vma regSel regSel regSel regSel outRegRd outRegRd progcntrRd outregRd outregRd vma vma=1;rw=0;,(接下页),if ready=1 then regSel progcntrRd outregRd outregRd vma vma reg

16、Sel opRegRd opRegRd progcntrRd progcntrRd=1;alusel=inc;shiftsel=shftpass;outregWr=1;next_state=bgtI7;,(接下页),when bgtI7=outregRd outregRd vma vma regSel outregRd outregRd progcntrRd progcntrRd vma vma progcntrRd progcntrRd outregRd outregRd=1;progcntrWr=1;,(接下页),addrregWr vma vma next_state=incPc;end

17、 case;end process;controlffProc:process(clock,reset)beginif reset=1 then current_state=reset1 after 1 ns;elsif clockevent and clock=1 then current_state=next_state after 1 ns;end if;end process;end rtl;,6.2 CPU基本部件设计,6.2.4 寄存器与寄存器阵列,图6-10 寄存器REG的实体结构和RTL图,1寄存器REG,6.2 CPU基本部件设计,6.2.4 寄存器与寄存器阵列,1寄存器RE

18、G,【例6-6】reg.vhdlibrary IEEE;use IEEE.std_logic_1164.all;use work.cpu_lib.all;entity reg isport(a:in bit16;clk:in std_logic;q:out bit16);end reg;architecture rtl of reg isbeginregproc:processbeginwait until clk event and clk=1;q=a after 1 ns;end process;end rtl;,6.2 CPU基本部件设计,2寄存器阵列RegArray,【例6-7】reg

19、array.vhdlibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;use work.cpu_lib.all;entity regarray isport(data:in bit16;sel:in t_reg;en,clk:in std_logic;q:out bit16);end regarray;architecture rtl of regarray istype t_ram is array(0 to 7)of bit16;signal temp_data:bit16;beginproces

20、s(clk,sel)variable ramdata:t_ram;beginif clkevent and clk=1 then ramdata(conv_integer(sel):=data;end if;temp_data=ramdata(conv_integer(sel)after 1 ns;end process;process(en,temp_data)beginif en=1 then q=temp_data after 1 ns;else q=ZZZZZZZZZZZZZZZZ after 1 ns;end if;end process;end rtl;,6.2 CPU基本部件设计

21、,6.2.4 寄存器与寄存器阵列,图6-11 寄存器阵列RegAarray的结构图和RTL图,2寄存器阵列RegArray,6.2 CPU基本部件设计,6.2.4 寄存器与寄存器阵列,图6-12 寄存器阵列regarray.VHD的仿真波形,2寄存器阵列RegArray,6.2.5 移位寄存器SHIFT,【例6-8】sheft.VHDlibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use work.cpu_lib.all;entity shift isport(a:in bit16;sel:in t_s

22、hift;y:out bit16);end shift;architecture rtl of shift isbeginshftproc:process(a,sel)begincase sel iswhen shftpass=y y y y y y=0000000000000000 after 1 ns;end case;end process;end rtl;,6.2 CPU基本部件设计,6.2.5 移位寄存器SHIFT,表6-12 SHIFT移位运算类型说明,6.2 CPU基本部件设计,6.2.5 移位寄存器SHIFT,图6-13 移位寄存器的结构图,6.2 CPU基本部件设计,6.2.

23、5 移位寄存器SHIFT,图6-14 移位寄存器SHIFT的仿真波形图,6.2 CPU基本部件设计,6.2.6 三态寄存器TRIREG,图6-15 三态寄存器triReg的结构图和RTL图,6.2 CPU基本部件设计,6.2.6 三态寄存器TRIREG,【例6-9】triReg.vhdlibrary IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;use work.cpu_lib.all;entity trireg isport(a:in bit16;en,clk:in std_logic;q:out bit16

24、);end trireg;architecture rtl of trireg issignal val:bit16;begintriregdata:processbeginwait until clkevent and clk=1;val=a;end process;trireg3st:process(en,val)beginif en=1 then q=val after 1 ns;elsif en=0 then q=ZZZZZZZZZZZZZZZZ after 1 ns;else q=XXXXXXXXXXXXXXXX after 1 ns;-exemplar_translate_onen

25、d if;end process;end rtl;,6.3 CPU的时序仿真与实现,6.3.1 编辑仿真波形文件,图6-15 三态寄存器triReg的结构图和RTL图,1建立仿真波形VWF文件,通过仿真波形分析,可以了解CPU在执行指令过程中,各信号的工作时序是否符合设计要求。将工程TOP的端口信号节点加入波形编辑器中。top.vwf的波形文件存入文件夹/cpu_16/top中。将重要的端口节点RST、CLK0、STEP、Addr、data、alu和其它重要的控制信号分别加入到波形编辑窗中。在仿真波形文件中,输入信号有RST、CLK0和STEP。,6.3 CPU的时序仿真与实现,6.3.1 编

26、辑仿真波形文件,图6-16 仿真输出波形,1建立仿真波形VWF文件,6.3 CPU的时序仿真与实现,6.3.1 编辑仿真波形文件,表6-13 图6-16仿真波形对应的程序,1建立仿真波形VWF文件,6.3 CPU的时序仿真与实现,6.3.1 编辑仿真波形文件,图6-17 CPU复位和第1条指令的仿真波形,1建立仿真波形VWF文件,6.3 CPU的时序仿真与实现,6.3.1 编辑仿真波形文件,图6-18 STEP时序控制器的RTL电路图,2CPU的RTL电路结构图,6.3 CPU的时序仿真与实现,6.3.1 编辑仿真波形文件,图6-19 三态触发寄存器的RTL电路图,2CPU的RTL电路结构图,

27、6.3 CPU的时序仿真与实现,6.3.2 16位CPU的调试运行,图6-20 信号调入观察窗,存盘,6.3.3 应用嵌入式逻辑分析仪调试CPU,6.3 CPU的时序仿真与实现,图6-21 的全屏编辑窗,6.3.3 应用嵌入式逻辑分析仪调试CPU,6.3 CPU的时序仿真与实现,图6-22 SignalTapII数据窗的实时信号,6.3.3 应用嵌入式逻辑分析仪调试CPU,6.3 CPU的时序仿真与实现,图6-24 ByteBlasterII接口AS模式编程窗口,6.3.4 对配置器件编程,6.4 应用程序设计实例,图6-25 乘法算法1的硬件实现,6.4.1 乘法算法及其硬件实现,6.4 应

28、用程序设计实例,图6-26 改进后的乘法算法2的硬件实现,6.4.1 乘法算法及其硬件实现,6.4 应用程序设计实例,图6-27 乘法算法1的流程图 图6-28 乘法算法2的流程图,6.4.1 乘法算法及其硬件实现,6.4 应用程序设计实例,图 6-29 除法算法1的硬件结构,6.4.2 除法算法及其硬件实现,6.4 应用程序设计实例,图 6-30 除法算法2的硬件结,6.4.2 除法算法及其硬件实现,习 题,6-1对CPU进行修改,为其增加一个状态寄存器FLAG,FLAG可以中保存进位标志和零标志。6-2修改CPU,为其加入一条带进位加法指令ADDC,给出ADDC指令的运算流程,对控制器的控

29、制程序作相应的修改。6-3说明在16位CPU中,PCPC+1操作是如何执行的?6-4根据图6-26和图6-27的电路结构和流程图,设计乘法应用程序,进行计算机仿真验证程序功能,并在16位CPU上调试运行。6-5根据图6-30和图6-31的电路结构和流程图,设计除法应用程序,进行计算机仿真验证程序功能,并在16位CPU上调试运行。6-6请说明CONTROL.vhd中的两个进程各自的作用,两个进程之间是如何发生联系的?6-7简要说明16位CPU的复位过程。6-8根据control.vhd中状态机的描述,说明指令MOVE R1,R2 的执行过程。,实验与设计,实验6-1.16位计算机基本部件实验参考

30、实验示例和实验课件:/CMPUT_EXPMT/CH6_Expt/DEMO_61/和 实验6_1.ppt。,实验6-2.16位CPU设计综合实验参考实验示例和实验课件:/CMPUT_EXPMT/CH6_Expt/DEMO_62/TOP 和 实验6_2.ppt。,实验与设计,表6-14 汇编语言指令格式,实验与设计,图6-31 在QUARTUS II环境下编辑ram_16.mif文件,实验与设计,图6-32用In-System Memory Content Editor读取的数据文件,实验与设计,图6-33数据搬运完毕后的In-System Memory Content Editor窗,实验与设计,图6-34 嵌入式逻辑分析仪设置情况图,实验与设计,图6-35 CPU运行时逻辑分析仪显示波形,实验与设计,表6-15 LCD液晶显示屏显示数据说明,实验与设计,图6-36 LCD液晶显示屏,实验与设计,图6-37 CPU_16仿真波形,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号