ImageVerifierCode 换一换
格式:DOC , 页数:39 ,大小:1.53MB ,
资源ID:830510      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-830510.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简单U的逻辑设计 .doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

简单U的逻辑设计 .doc

1、简单CPU的逻辑设计 简单cpu的逻辑设计摘要 基于现场可编程( FPGA) 技术和硬件描述语言VHDL 的设计和综合,通过自顶向下的设计方法和模块化设计思想, 在Quartus 环境下能定制、仿真、下载验证和实现CPU 功能。通过VHDL语言定制了运算器ALU 模块和调用宏模块定制了RAM 模块,介绍了基于FPGA 的CPU 设计方法,并通过初始化程序进行验证,实现了基于FPGA 的CPU 功能,表明基于FPGA 技术在设计CPU 核和大规模集成电路设计方面可根据实际情况定制,具有灵活性、可靠性和可扩展性。关键字 FPGA CPU Quartus 仿真 宏模块一、 设计任务与要求CPU 的设

2、计是计算机组成原理中一个很重要的内容。随着可编程逻辑器件的发展, 利用QuartusII 的软件平台设计一个简单的CPU ,并下载到FPGA/CPLD进行验证,此CPU 所执行的指令可任意添加,通过设计深入了解计算机的各个功能部件的功能及工作原理, 深入了解状态机控制器是如何控制模型机的运行,了解整机动态过程, 及理解计算机从机器指令到微指令的工作原理。要求:(1)完成简单CPU逻辑设计的整体方案设计 (2)完成简单CPU逻辑设计的功能设计 (3)完成简单CPU逻辑设计的仿真验证 (4)完成简单CPU逻辑设计的实际调试 二、方案设计与论证1、可行方案选择与论证CPU即中央处理器,是计算机的核心

3、。CPU主要由运算器、控制器、寄存器组和内部总线等构成。本CPU设计系统中控制器选择状态机控制器方案,而其对应的指令集类型选择CISC。1.1 CPU系统的选择(1)ASIC方案设计ASIC(Application Specific Integrated Circuits,专用集成电路),是指应特定用户要求或特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,品种多、批量少,要求设计和生产周期短,它作为集成电路技术与特定用户的整机或系统技术紧密结合的产物。ASIC是为某个客户定制的芯片,费用高、风险大、周期长。如果要实施这个方案,系统设计就必须考虑成本、周期等问题。(

4、2)基于FPGA设计方案FPGA是Field Programmable Gate Array的简称。FPGA的出现为现代电子产品嵌入式的设计带来了更大的灵活性,更容易实现片上系统(SOC) 。通过在FPGA上嵌入NIOS处理器,再采用C,或C+对各种逻辑器件进行控制。 另外在FPGA上采用VHDL硬件描述语言编写各种逻辑器件的驱动,从而实现各种功能。方案选择与论证:FPGA 开发流程大致为:选定器件,安装软件,设计输入,代码调试(包括管脚定义、时序定义、时序分析),设计仿真(功能仿真、时序仿真)和下载调试。而ASIC 是为某个客户定制的芯片,与FPGA 相比,有非通用的后端设计费、制掩模费、测

5、试费等,故前期成本较高。与传统芯片实现ASIC相比,FPGA具有实现速度快、风险小、可编程、可随时更改升级等一系列优点,因而得到了越来越广泛的应用。基于FPGA的设计可以利用VHDL编程,可在每一步对设计进行仿真,保证每一步设计都可达到要求,使成本更节约,精度更高,开发周期更短; Altera公司开发的QuartusII软件集成了功能强大的宏模块,可以方便地进行调用,以便更快更可靠完成设计工作。因此选择基于FPGA的简单CPU的逻辑设计。 1.2 指令集类型的选择指令系统优化设计有两种截然相反的方向,一个是增强指令的功能,即操作种类多,功能强,把一些原来由软件实现的、常用的功能改用硬件的指令系

6、统来实现,这种计算机系统称为复杂指令系统计算机(Complex Instruction Set Computer,CISC);另一个是20世纪80年代新发展起来的,尽量简化指令功能,提供最必须的操作,指令在一个节拍内执行完成,较复杂的功能用子程序来实现,这种计算机系统称为精简指令系统计算机(Reduced Instruction Set Computer,RISC)。(1)CISC复杂指令系统为了提高操作系统的效率,并尽量缩短指令系统与高级语言的语义差别,在指令系统中增加更多的和更复杂的指令,来使得高级语言的编译更加方便。复杂指令系统计算机CISC的特点是:指令功能强大,指令格式比较复杂,寻址

7、方式丰富,各种指令使用频率相差很大,各种指令执行时间相差也很大。(2)RISC精简指令系统它是在CISC指令系统基础上发展起来的,相对于CISC型CPU ,RISC型CPU不仅精简了指令系统,还采用了一种叫做“超标量和超流水线结构”,大大增加了并行处理能力。RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多了。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU通过以上的对比,本系统选择CISC指令集方案,原因是尽管CISC的实现要比RISC复杂,但是这种复杂主要体现是在指令译码和执行的设计上,而其他的部分没有很大

8、的差异。而对CPU的设计中就应该要对指令译码和执行有一个很好的把握所以我们指令系统设计选择CISC复杂指令系统。三、系统具体设计与实现本系统是基于VHDL状态机控制的16位复杂指令(CISC,Complex Instruction Set Computer)微处理器的设计流程,包括CPU的系统结构设计、基本组成部件设计、指令系统设计和CPU的RTL级仿真与实现,直至在FPGA上的调试运行。与基本传统的微程序控制技术的CPU设计不同,本CPU中指令功能的实现,则是通过用VHDL设计一个控制模块,在控制模块中用状态机的方式来实现各种指令的操作步骤,发出各种时序控制信号,使计算机内部各部件协调工作,

9、从而完成指令的功能。系统具体设计总体框图如图3-1所示。图3-1 系统设计总体框图3.1 CPU工作原理及工作过程1、CPU的工作原理 CPU的内部结构可以分为控制单元,逻辑运算单元和存储单元(包括内部总线及缓冲器)三大部分。CPU的工作原理就像一个工厂对产品的加工过程:进入工厂的原料(程序指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑运算单元),生产出成品(处理后的数据)后,再存储在仓库(存储单元)中,最后等着拿到市场上去卖(交由应用程序使用)。在这个过程中,我们注意到从控制单元开始,CPU就开始了正式的工作,中间的过程是通过逻辑运算单元来进行运算处理,交到存储单元代表工

10、作的结束。 2、CPU的功能及工作过程 CPU的基本结构、功能及参数CPU主要由运算器、控制器、寄存器组和内部总线等构成。寄存器组用于在指令执行过后存放操作数和中间数据,由运算器完成指令所规定的运算及操作。CPU对数据进行三种基本操作:读取数据、对数据进行处理、然后通常还要把把数据写回到存储器上。 对于最简单的构成,CPU只需要四个部分来实现它对数据的操作:指令、指令指示器、一些寄存器以及算术逻辑单元。 数据与指令在CPU中的运行过程:假设在内存中的数据是最简单的原始数据。首先,指令指针(Instruction Pointer)会通知CPU,将要执行的指令放置在内存中的存储位置。因为内存中的每

11、个存储单元都有编号(称为地址),可以根据这些地址把数据取出,通过地址总线送到控制单元中,指令译码器从指令寄存器IR中拿来指令,翻译成CPU可以执行的形式,然后决定完成该指令需要哪些必要的操作,它将告诉算术逻辑单元(ALU)什么时候计算,告诉指令读取器什么时候获取数值,告诉指令译码器什么时候翻译指令等等。 假如数据被送往算术逻辑单元,数据将会执行指令中规定的算术运算和其他各种运算。当数据处理完毕后,将回到寄存器中,通过不同的指令将数据继续运行或者通过DB总线送到数据缓存器中。基本上,CPU就是这样去执行读出数据、处理数据和往内存写数据3项基本工作。但在通常情况下,一条指令可以包含按明确顺序执行的

12、许多操作,CPU的工作就是执行这些指令,完成一条指令后,CPU的控制单元又将告诉指令读取器从内存中读取下一条指令来执行。这个过程不断快速地重复,快速地执行一条又一条指令,产生你在显示器上所看到的结果。我们很容易想到,在处理这么多指令和数据的同时,由于数据转移时差和CPU处理时差,肯定会出现混乱处理的情况。为了保证每个操作准时发生,CPU需要一个时钟,时钟控制着CPU所执行的每一个动作。时钟就像一个节拍器,它不停地发出脉冲,决定CPU的步调和处理时间,这就是我们所熟悉的CPU的标称速度,也称为主频。3.2 顶层系统设计3.2.1 顶层系统设计图3-2 16位CPU结构框图 1、CPU的结构图如图

13、3-2所示。这是一个采取单总线系统架构的复杂指令系统结构CISC(Complex Instruction Set Computer)的16位CPU。处理器中包含了各种基本器件模块,它们是8个16位的寄存器Reg0Reg7、一个运算器ALU、一个移位寄存器Shifter、一个程序计数器ProgCnt、一个指令寄存器InstrReg、一个比较器Comp、一个地址寄存器AddrReg和一个控制单元Control。这些模块共用一组16位的三态数据总线。 系统采用自顶向下的方法进行设计。顶层设计由微处理器和存储器通过一组双向数据总线连接,它们由一组地址总线和一些控制总线组成。处理器从外存储器中读取指令,

14、并通过执行这些指令来运行程序。这些指令存储在指令寄存器中,并由控制单元译码。控制单元使得相应的信号相互作用,并使处理单元执行这些指令。 与普通CPU的工作方式相同,执行一条指令,分多个步骤进行。首先地址寄存器AR保存当前指令的地址,当一条指令执行完后,程序寄存器PC指向下一条指令的地址。如果是执行顺序指令,PC+1就指向下一条指令地址;如果是分支转移指令,则直接跳到该转移地址。方法是控制单元将转移地址写入程序存储器PC和地址寄存器AR,这是在地址总线上就会输出新的地址。然后,控制单元将R/W置0,执行读操作,将VMA置1,告诉存储器地址有效。这样,存储器就开始进行地址译码,并将存储单元中数据传

15、给数据总线,当数据出现在数据总线上市时,存储器将READY信号置1,表明存储器的数据可以使用了。控制信号将存储器输出的数据写入指令寄存器IR中,接着对IR中的指令进行译码和执行指令,进程就这样循环进行下去。 3.2.2 指令系统设计 在设计处理器时首先要确定CPU具有哪些功能,并针对这些功能采用哪些指令,然后确定指令的格式。 为了使所设计的CPU具有基本的运算功能,指令将设计成以下形式,可以分类为: 装载指令:指令从其他寄存器或存储器装载数据或是立即赋值。 存储指令:指令存储寄存器的值写到存储器。 分支指令:指令使处理器转到其他地址,一些分支指令为条件转移,另 外一些为无条件转移。 移位指令:

16、这些指令用移位寄存器单元执行移位操作,实现数据传递。1、指令格式 指令有一些共有的属性,但也有各自的特点。所有指令都包含5位操作码。(1)单字指令 单字节指令在滴16位指令中包含两个3位的寄存器,一个是源操作数寄存器另一个是目的操作数寄存器。指令码格式如下图3-3所示。操作码源操作数目的操作数OpcodeSRCDST1514131211543210图3-3 单字指令格式 (2)双字指令 双字节指令中第一个字节中包含目标寄存器的地址,第二个字节中包含了指令地址或者操作数。指令码格式如下图3-4所示。操作码源操作数目的操作数OpcodeSRCDST151413121154321016位操作数151

17、4131211109876543210图3-4 双字指令格式2、指令操作码 这里为此16位处理器中设计了下列操作码,列于下表3-1中,主要的指令有数据存/取、算术运算、逻辑运算、控制转移。表3-1 操作码功能表操作码指令功能00000NOP空操作00001LOAD装载数据到寄存器00010STORE将数据寄存器的数据存入存储器00011MOVE在寄存器之间传送操作数00100LOADI将立即数装入寄存器00101BRANCHI转移到由立即数指定的地址00110BRANCHGTI大于时转移到由立即数指定的地址00111INC加1指令01000DEC减1指令01001AND两个寄存器与操作0101

18、0OR两个寄存器或操作01011XOR两个寄存器异或操作01100NOT寄存器求反01101ADD两个寄存器加运算01110SUB两个寄存器减运算01111ZERO寄存器清零10110BRANCHEQ等于时转移11010SHL向左逻辑移位11011SHR向右逻辑移位11100ROTR循环右移11101ROTL循环左移3、CPU执行指令步骤及其方式 从RAM或CACHE中读出指令(FETCH) 将读出的指令解成微指令(DECODE) 将执行指令所需的控制质料读出(FECCH OPERANDS) 执行解码后的微指令(EXECUTE) 执行后的结果存回RAM中(WRITE BACK) 3.2.3 顶

19、层结构的VHDL设计 此项设计的顶层文件包括顶层程序包CPU_LIB、TOP.VHD和应用程序在RAM中的初始化文件RAM_16.mif。 下面对CPU顶层文件的描述,包括顶层程序包CPU_LIB和顶层文件TOP.VHD的设计。同时给出了在QuartusII环境下设计的CPU顶层结构原理图。1、CPU 元件的VHDL描述 首先,顶层程序包CPU_LIB.VHD是用来说明连接各个元件之间的信号类型的。此程序包描述了多个用于规定运算器功能、移位寄存操作和用于CPU控制的状态的类型。 顶层程序包CPU_LIB内容如下所示:library IEEE;use IEEE.std_logic_1164.al

20、l;use IEEE.std_logic_arith.all;package cpu_lib issubtype t_shift is unsigned(2 downto 0 );constant shftpass : unsigned(2 downto 0 ) := 000;constant shl : unsigned(2 downto 0 ) := 001;constant shr : unsigned(2 downto 0) := 010;constant rotl : unsigned(2 downto 0) := 011;constant rotr : unsigned(2 dow

21、nto 0 ) := 100;-subtype t_alu is unsigned(3 downto 0 );constant alupass : unsigned(3 downto 0 ) := 0000;constant andOp : unsigned(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 pl

22、us : unsigned(3 downto 0 ) := 0101;constant alusub : unsigned(3 downto 0 ) := 0110;constant inc : unsigned(3 downto 0 ) := 0111;constant dec : unsigned(3 downto 0 ) := 1000;constant zero : unsigned(3 downto 0 ) := 1001;-subtype t_comp is unsigned(2 downto 0 );constant eq: unsigned(2 downto 0 ) := 00

23、0;constant neq: unsigned(2 downto 0 ) := 001;constant gt : unsigned(2 downto 0) := 010;constant gte: unsigned(2 downto 0) := 011;constant lt : unsigned(2 downto 0 ) := 100;constant lte: unsigned(2 downto 0 ) := 101;-subtype t_reg is std_logic_vector(2 downto 0 );type state is(reset1,reset2,reset3,re

24、set4,reset5,reset6,execute,nop,load,store,move,load2,load3,load4,store2,store3,store4,move2,move3,move4,incPc,incPc2,incPc3, incPc4, incPc5, incPc6,incPc7,loadPc,loadPc2,loadPc3, loadPc4, bgtI2, bgtI3,bgtI4, bgtI5, bgtI6, bgtI7,bgtI8, bgtI9,bgtI10,bgtI11, braI2, braI3, braI4, braI5, braI6,braI7,load

25、I2,loadI3, loadI4, loadI5, loadI6,loadI7, inc2, inc3, inc4, dec2, dec3, dec4,beq2,beq3,beq4,beq5,beq6,beq7,beq8,beq9,beq10,beq11);subtype bit16 is std_logic_vector(15 downto 0 );end cpu_lib; 为了验证微处理器的功能,在此设计了CPU内部各模块通过总线连接的数据通路,以及与存储器接口的模型。它们通过顶层文件TOP.VHD来进行调用。顶层文件TOP.VHD内容如下所示:library IEEE;use IEEE

26、.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_log

27、ic ; 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 R6?1b:000d;9:0000;-若为yes,则停止1c:000e;a:3801;-修改源指针R1=R1+11d:000f;b:3802;-修改目的指针R2 c c c c c c c c c c c= 0000000000000000

28、 after 1 ns; -sel为10101111,清0end case;end process;end rtl; 如图3-7所示是运算器ALU的仿真波形(ALU运算仿真结果说明如表3-4所示)。sel是运算功能选择信号,由4位二进制组成,a、b是ALU的数据输入,c是运算结果输出,输入和输出数据都是16位二进制数。 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11)图3-7运算器ALU的仿真波形表3-4 ALU运算仿真结果说明工作点波形功能选择sel运算类型输入数据运算结果cab(1)0000通过PASS2000c =a,c=2000(2)0001与

29、20001000c=a and b =0008(3)0010或20001000c=a or b=3000(4)0011非2000c=not a=DFFF(5)0100异或20002500c=a xor b=0500(6)0101加法20002500c=a+b=4500(7)0110减法20002500c=a-b=FB00(8)0111加12000c =a+1=2001(9)1000减12000c =a-1=1FFF(10)1001清0xxxxxxxxc =0000(11)10101111其他xxxxxxxxc=0000根据sel值的不同,ALU作相应的算术运算或逻辑运算。3.3.2 比较器CO

30、MP比较器的实体名为COMP,比较两个值,输出结果为0或1,取决于比较对象的类型和值。比较器的运算类型决定于选择输入控制信号sel(t_comp)的值,其值表示的状态如表3-5所示。比较类型t_comp定义在顶层文件cpu_lib中。两个输入值的比较操作将得到一个结果,这个位是执行指令时用来控制进程中的操作流程的。 表3-5 比较器的运算类型 t_comp比较类型操作说明000eq (等于)若a=b,compout=1001neq (不等于)若ab,compout=1010gt (大于)若ab,compout=1011gte (大于等于)若a=b,compout=1100Lt (小于)若ab,

31、compout=1101lte (小于等于)若a if a = b then compout = 1 after 1 ns ; -当sel=0,如果a=b则compout=1,else compout if a /= b then compout = 1 after 1 ns; -当sel=1,如果ab则compout=1,else compout if a b then compout b则compout=1,else compout if a = b then compout = 1after 1 ns; -当sel=3,如果ab则compout=1,else compout if a b then compout = 1 after 1 ns ; -当sel=4,如果ab则compout=1,else compout if a = b then compout = 1 after 1 ns ; -当sel=5,如果ab则compout=1,else compout compout = 0; -当sel=其他, compout=0end case;end process;end rtl;2、比较器COMP的仿真波形如图3-8所

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922