收藏 分销(赏)

嵌入式cpu系统设计仿真实验.doc

上传人:精*** 文档编号:4793366 上传时间:2024-10-13 格式:DOC 页数:20 大小:430.04KB 下载积分:10 金币
下载 相关 举报
嵌入式cpu系统设计仿真实验.doc_第1页
第1页 / 共20页
嵌入式cpu系统设计仿真实验.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
8位CPU设计课程报告 设计课题: 基本模型计算机设计与实现 姓 名: 专 业: 学 号: 日 期 2023年5月23日——2023年6月1日 指导教师: 国立华侨大学信息科学与工程学院 目 录 1.设计的任务与规定…………………………………………………………………1 2.方案论证……………………………………………………………………1 3.单元电路的设计……………………………………………………………………2 3.1 运算器ALU……………………………………………………………2 3.2工作寄存器………………………………………………………4 3.3 指令寄存器……………………………………………………5 3.4地址寄存器…………………………………………………5 3.5程序计数器…………………………………………………………5 3.6 时序信号发生器………………………………………………………………5 3.7 微命令产生部件…………………………………………………………5 3.8 微指令译码器…………………………………………………………6 3.9 2_4译码器…………………………………………………………6 4.系统电路总图及原理……………………………………………………………7 5.经验体会…………………………………………………………………………13 参考文献……………………………………………………………………………13 附录A:系统电路原理图……………………………………………………………13 8位CPU的硬件系统设计设计 1. 设计的任务与规定 计算机的核心部件CPU通常包含运算器和控制器两大部分。组成CPU的基本部件有运算部件,寄存器组,微命令产生部件和时序系统等。这些部件通过CPU内部的总线连接起来,实现它们之间的信息互换。 1.1设计指标 1. 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 2. 整个系统能正常稳定工作。 1.2 设计规定 1. 画出电路原理图(或仿真电路图); 2. 元器件及参数选择(或开发板的考虑); 3. 编写设计报告,写出设计的全过程,附上有关资料和图纸(也可直接写在相关章节中),有心得体会。 2. 方案论证 2.1 CPU的系统方案 CPU的基本部件所有用硬件描述语言生成,通过各个部件之间的逻辑关系和时序环节搭建整个系统。指令系统用状态机实现,控制器通过判断当前的状态来执行相应的指令操作。 该CPU 重要由算术逻辑单元ALU,数据暂存寄存器DR1、DR2,数据寄存器R0~R2,程序计数器PC,地址寄存器AR,程序/数据存储器MEMORAY,指令寄存器IR,微控制器uC,输入单元INPUT 和输出单元OUTPUT 所组成。图中虚线框内部分涉及运算器、控制器、程序存储器、数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA 中实现。虚线框外部分重要是输入/输出装置,涉及键盘、数码管、LCD 显示器等,用于向CPU 输入数据,或CPU 向外输出数据,以及观测CPU 内部工作情况及运算结果。 3. 单元电路的设计 3.1运算器ALU 算术逻辑单元ALU通过一条或多条输入总线完毕算术运算或逻辑运算。运算器的结构如图所示。a和b为运算器输入端口,c为运算器输出端口,用于输出运算结果。控制信号sel决定了运算器的算法功能。ALU的功能表如下所示,可以完毕加、减运算,还可以完毕逻辑运算,如与、或、非、异或。 ALU181的VHDL语言: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT ( S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); A : IN STD_LOGIC_VECTOR(7 DOWNTO 0); B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO : OUT STD_LOGIC; FZ : OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN A9 <= '0' & A ; B9 <= '0' & B ; PROCESS(M,CN,A9,B9) BEGIN CASE S IS WHEN "0000" => IF M='0' THEN F9<=A9 + CN ; ELSE F9<=NOT A9; END IF; WHEN "0001" => IF M='0' THEN F9<=(A9 OR B9) + CN ; ELSE F9<=NOT(A9 OR B9); END IF; WHEN "0010" => IF M='0' THEN F9<=(A9 OR (NOT B9))+ CN ; ELSE F9<=(NOT A9) AND B9; END IF; WHEN "0011" => IF M='0' THEN F9<= "" - CN ; ELSE F9<=""; END IF; WHEN "0100" => IF M='0' THEN F9<=A9+(A9 AND NOT B9)+ CN ; ELSE F9<=NOT (A9 AND B9); END IF; WHEN "0101" => IF M='0' THEN F9<=(A9 OR B9)+(A9 AND NOT B9)+CN ; ELSE F9<=NOT B9; END IF; WHEN "0110" => IF M='0' THEN F9<=A9 -B9 - CN ; ELSE F9<=A9 XOR B9; END IF; WHEN "0111" => IF M='0' THEN F9<=(A9 AND (NOT B9)) - CN ; ELSE F9<=A9 AND (NOT B9); END IF; WHEN "1000" => IF M='0' THEN F9<=A9 + (A9 AND B9)+CN ; ELSE F9<=(NOT A9) OR B9; END IF; WHEN "1001" => IF M='0' THEN F9<=A9 + B9 + CN ; ELSE F9<=NOT(A9 XOR B9); END IF; WHEN "1010" => IF M='0' THEN F9<=(A9 OR (NOT B9))+(A9 AND B9)+CN ; ELSE F9<=B9; END IF; WHEN "1011" => IF M='0' THEN F9<=(A9 AND B9)- CN ; ELSE F9<=A9 AND B9; END IF; WHEN "1100" => IF M='0' THEN F9<=A9 + A9 + CN ; ELSE F9<= ""; END IF; WHEN "1101" => IF M='0' THEN F9<=(A9 OR B9) + A9 + CN ; ELSE F9<=A9 OR (NOT B9); END IF; WHEN "1110" => IF M='0' THEN F9<=(A9 OR(NOT B9)) +A9 + CN ; ELSE F9<=A9 OR B9; END IF; WHEN "1111" => IF M='0' THEN F9<=A9 -CN ; ELSE F9<=A9 ; END IF; WHEN OTHERS => F9<= "" ; END CASE; IF (A9= B9) THEN FZ <= '0';END IF; END PROCESS; F<= F9(7 DOWNTO 0) ; CO <= F9(8) ; COUT <= "0000" WHEN F9(8) = '0' ELSE "0001" ; END behav; 3.2工作寄存器 3.3指令寄存器 指令寄存器(IR)用来存放当前正在执行的指令,它的输出涉及操作码信息、地址信息等,是产生微命令的重要逻辑依据。 3.4地址寄存器 CPU 访问存储器,一方面要找到需要访问的存储单元,因此设立地址寄存器(AR)来存放被访单元的地址。当需要读取指令时,CPU 先将PC 的内容送入AR,再由AR将指令地址送往存储器。当需要读取或存放数据时,也要先将该数据的有效地址送入AR,再对存储器进行读写操作。 3.5程序计数器 程序计数器(PC)也称指令指针,用来指示指令在存储器中的存放位置。当程序顺序执行时,每次从主存取出一条指令,PC 内容就增量计数,指向下一条指令的地址。增量值取决于现行指令所占的存储单元数。假如现行指令只占一个存储单元,则PC 内容加1;若现行指令占了两个存储单元,那么PC 内容就要加2。当程序需要转移时,将转移地址送入PC,使PC 指向新的指令地址。因此,当现行指令执行完,PC 中存放的总是后续指令的地址;将该地址送往主存的地址寄存器AR,便可从存储器读取下一条指令。 3.6时序信号发生器 时序控制电路STEP用于产生程序运营时所需的时钟节拍。 3.7微命令产生部件 实现信息传送要靠微命令的控制,因此在CPU 中设立微命令产生部件,根据控制信息产生微命令序列,对指令功能所规定的数据传送进行控制,同时在数据传送至运算部件时控制完毕运算解决。微命令产生部件可由若干组合逻辑电路组成,也可以由专门的存储逻辑组成。产生微命令的方式可分为组合逻辑控制方式和微程序控制方式两种。在本章所介绍的8 位模型CPU 设计中,采用微程序控制方式通过微程序控制器和微指令存储器产生微命令,因此此CPU 属于复杂指令CISC CPU。 微控制器: 微地址寄存器: 微程序存储器: 3.8微指令译码器 微指令译码器decoder_A、decoder_B、decoder_C内部都采用3—8译码器结构。其作用是对24位微指令中的A、B、C字段进行指令译码。A字段译码后输出的信号重要用于控制向寄存器或锁存器输入数据;B字段译码后输出的信号重要用于控制运算器、寄存器或锁存器,并通过三态门向内部数据总线输出数据;C字段译码后输出的信号重要用于指令分支判断。 3.9 2_4译码器 4. 系统电路总图及原理 将设计的各个单元电路进行级联,得到8位CPU系统电路原理图如下。 1、指令是计算机执行某种操作的命令,而指令系统是一台计算机中所有机器指令的集合。通常性能较好的计算机都设立有功能齐全、通用性强、指令丰富的指令系统,而指令功能的实现需要复杂的硬件结构来支持。因此在设计CPU 时,一方面要明确机器硬件应具有哪些功能,然后根据这些功能来设立相应指令,涉及拟定所采用的指令格式、所选择的寻址方式和所需要的指令类型。 设模型机指令系统中包具有五条基本指令,分为算术运算指令、存取指令和 控制转移指令等三种类型。五条机器指令分别是:IN(输入)、ADD(二进制加 法)、STA(存数)、OUT(输出)、JMP(无条件转移)。IN 为单字长(8 位 二进制),其余为双字长指令,XX H 为addr相应的十六进制地址码。 (1)微命令和微操作 微命令和微操作是一一相应的。微命令是微操作的控制信号,微操作是微命令的操作过程。微命令有兼容性和互斥性之分。兼容性微命令是指那些可以同时产生,共同完毕某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。兼容和互斥都是相对的,一个微命令可以和一些微命令兼容,和另一些微命令互斥。对于单独一个微命令,就无所谓兼容性或互斥性了。 (2)微指令、微地址 微指令是指控制存储器中的一个单元的内容,即控制字,是若干个微命令的集合,存放控制字的控制存储器的单元地址就称为微地址。一条微指令通常至少包含两大部分信息:微操作码字段,又称操作控制字段,该字段指出微指令执行的微操作;微地址码字段,又称顺序控制字段,指出下一条要执行的微指令的地址。 (3)微周期 所谓微周期是指从控存中读取出一条微指令并执行规定的相应操作所需的时间。 (4)微程序 一系列微指令的有序集合就是微程序。若干条有序的微指令构成了微程序。微程序可以控制实现一条机器指令的功能。或者说一条机器指令可以分解为特定的微指令序列。一旦机器的指令系统拟定以后,每条指令所相应的微程序被设计好并且存入控存后,控存总是处在只读的工作状态,所以控存一般采用只读存储器(ROM)存放。重新设计控存内容就能增长、删除、修改机器指令系统。在FPGA 中通常采用嵌入式阵列块构成的LPM_ROM 作为控存,存放微指令。 uA5~uA0:微程序控制器的微地址输出信号,是下一条要执行的微指令的微地址。 S3、S2、Sl、S0:由微程序控制器输出的ALU 操作选择信号,以控制执行16 种算术操作或16 种逻辑操作中的某一种操作。 M:微程序控制输出的ALU 操作方式选择信号。M=0 执行算术操作;M=l执行逻辑操作。。 Cn:微程序控制器输出的进位标志信号,Cn=0 表达ALU 运算时最低位有进位;Cn=1 则表达无进位。 WE:微程序控制器输出的RAM 控制信号。当CE=0 时,如WE=0,为存储器读;如WE=1,为存储器写A9、A8:译码后产生CS0、CS1、CS2 信号,分别作为SW_B、 RAM、LED 的选通控制信号。 A 字段(15、14、13):译码后产生与总线相连接的各单元的输入选通信号。 B 字段(12、11、10):译码后产生与总线相连接的各单元的输出选通信号。 C 字段(9、8、7):译码后产生分支判断测试信号P(1)~P(4)和LDPC 信号。 2、 微程序设计 一个具有五条指令IN、ADD、STA、OUT和JMP 的微程序流程图。其中方框代表基本的微操作,菱形框为分支判断框。 (1)IN指令 为了执行输入指令,CPU 要做两件事情。一方面,由INPUT 输入装置的数据开关SW输入数据送到数据总线上;另一方面,通过数据总线将输入的数据写入寄存器R0 中。 BUS←SW ; R0←BUS 由于输入到数据总线上的数据就是要写入寄存器的数据,因此可以将这两个操作合并成一个操作: R0←SW 3. (2)2.ADD指令 R0←R0+(MEM) 存储单元的地址是存放在紧跟在操作码后的字节中的,因此,一方面要以该字节的内容为地址,即将该单元内容送地址寄存器AR;然后,从AR 所指向的RAM 存储单元取出操作数送 给DR2。由于在取指令操作码时,PC 已经自动加1,指向下一字节,该地址就是存放操作数的存储单元的地址。通过执行以下三个环节,可以从存储器中取出操作数送到DR2: AR←PC,PC←PC+1 ;以AR的内容作为取操作数的地址 BUS←RAM,AR←BUS ;AR指向存放操作数的RAM单元 BUS←RAM,DR2←BUS ;RAM中的数据通过BUS送DR2 将R0 中的数据送DR1: DR1←R0 在ALU 中进行加法运算,运算结果送R0: R0←(DR1)+(DR2) (3)STA指令 向存储器RAM 写数据操作STA,以紧跟在操作码后的字节作为存放操作数地址,将R0 中的数据存入该地址单元。一方面将紧跟在操作码后的字节的内容送给地址寄存器AR: AR←PC,PC←PC+1 ;以PC的内容作为存数据的地址 BUS←RAM,AR←BUS ;AR指向存放操作数的RAM单元 BUS←R0,RAM←BUS (4)OUT指令 AR←PC,PC←PC+1 ;以PC的内容作为存数据的地址 BUS←RAM,AR←BUS ;AR指向存放操作数的RAM单元 BUS←RAM,DR1←BUS OUT←DR1 (5)JMP指令 AR←PC,PC←PC+1 ;以PC的内容作为取数据的地址 BUS←RAM,PC←BUS ;将RAM内容送PC,实现程序转移 5.波形仿真及分析 5.1波形仿真图 5.2波形分析 (1)M输出微指令01800,控制台执行P(4),进行“读、写、运营”功能判断。检测到SWA、SWB=11后,进入程序运营RP(11)方式,执行微地址为23的微指令,M输出微指令为018001,后续微地址uA为01.然后进入程序运营的流程,执行微地址为01的M微指令008001,执行的操作为PC→AR=00H,PC+1=01H,AR指向RAM存储器地址00H,后续地址uA为02. (2) 执行微地址为02的M微指令01ED82,执行取指令操作,取出第一条指令的操作码,通过度支判断P(1),这是一条输入指令IN。执行微地址为10的M微指令00C048,将RAM中的指令00通过内部总线BUS,送指令寄存器IR:RAM(00H)=00→BUS→IR=00H。执行微地址为01的M微指令001001,SW_B为高电平,允许SW的数据送往数据总线BUS,由此接受数据56H。所以R0=56H。 (3) 执行微地址为02的M微指令01ED82,执行取指令操作:PC→AR=01H,PC+1=02H,AR指向RAM存储器地址01H,后续微地址uA为02。执行微地址09的M微指令00C048,取指令,并通过度支判断P(1),读出地址为01H单元的内容10H,通过BUS送到指令寄存器IR:RAM(01H)=10H→BUS→IR=10H。执行微地址为03的M微指令01ED83,进入加法运算微程序。通过间接寻址获得另一个操作数,地址寄存器AR指向取数的间接地址:PC→AR=02H,PC+1=03H,AR指向RAM的02单元。 (4) 执行微地址为04的M微指令00E004,RAM_B为高电平,RAM的(02)单元的内容通过BUS送AR,取数地址(AR)=0AH,RAM(02)=0AH→BUS→AR=0AH。执行微地址为05的M微指令00B005,RAM_B为高电平,RAM的(0AH)单元的内容34H送到BUS,此时LDDR2为高电平,BUS上的数据就送给了DR2,执行结果:RAM(0AH)=34H→BUS→DR2=34H。 (5) 执行微地址为06的M微指令01A206,将R0的数据送DR1.R0_B=1,允许R0的内容56H送往BUS,此时LDDR1为高电平,BUS上的数据56H写入ALU的数据缓冲期DR1,执行结果:(R0)=56H→BUS→DR1=56H.执行微地址为01的M微指令919A01,完毕加法运算:(DR1)+(DR2)→R0,56H+34H=8AH→R0=8AH。 6.心得体会 通过设计8位CPU系统,我收获颇多,比如:VHDL语言的阅读、分析、编写能力明显提高,对CPU的内部结构及数据解决流程有了比较清楚的结识。在设计过程中碰到了不少的挑战和问题,通过解决这些问题提高了自己的能力。在仿真测试过程中进一步了解了CPU的工作过程,这对于以后学习也将会有很大的帮助。 参考文献: [1] 潘松 潘明. 现代计算机组成原理. 北京: 科学出版社, 2023. 附录A:8bit CPU指令系统 操作码 指令 功能 0h Nop 空操作 1h Load 装载数据到寄存器 2h Store 将寄存器的数据存入存储器 3h Move 在寄存器之间传送操作数 4h Loadi 将立即数装入寄存器 5h branchi 转移到由立即数指定的地址 6h branchgti 大于时转移到由立即数指定的地址 7h Inc 加1 8h Out 输出寄存器结果 9h In 输入数据到寄存器 Ah And 两个寄存器与操作 Bh Or 两个寄存器或操作 Ch Add 两个寄存器加操作 Dh Rotr 循环右移 Eh Rotl 循环左移 Fh sub 两个寄存器减操作
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服