基于LC3ISA处理器的设计与仿真.docx

上传人:b****9 文档编号:26254215 上传时间:2023-06-17 格式:DOCX 页数:92 大小:988.32KB
下载 相关 举报
基于LC3ISA处理器的设计与仿真.docx_第1页
第1页 / 共92页
基于LC3ISA处理器的设计与仿真.docx_第2页
第2页 / 共92页
基于LC3ISA处理器的设计与仿真.docx_第3页
第3页 / 共92页
基于LC3ISA处理器的设计与仿真.docx_第4页
第4页 / 共92页
基于LC3ISA处理器的设计与仿真.docx_第5页
第5页 / 共92页
点击查看更多>>
下载资源
资源描述

基于LC3ISA处理器的设计与仿真.docx

《基于LC3ISA处理器的设计与仿真.docx》由会员分享,可在线阅读,更多相关《基于LC3ISA处理器的设计与仿真.docx(92页珍藏版)》请在冰豆网上搜索。

基于LC3ISA处理器的设计与仿真.docx

基于LC3ISA处理器的设计与仿真

基于LC3ISA处理器的设计与仿真

 

题目:

基于LC-3ISA处理器的设计与仿真

 

 

第一章绪论

1.1集成电路与微处理器

集成电路[1]发展初期最重要的应用领域就是计算机技术领域。

计算机的发展是建立在集成电路技术的基础上的,而作为计算机核心部件的处理器,更是集成电路技术的结晶。

1964年4月7日IBM公司研制成功了世界上第一个采用集成电路的通用计算机IBM360,计算机从此进入了集成电路时代。

此后,集成电路的发展为微型计算机的出现和发展奠定了基础。

1971年,Intel公司成功地在一块12平方毫米的芯片上集成了2300个晶体管,制成了一款包括运算器、控制器在内的时钟频率仅为108kHz的可编程序运算芯片,它被称为中央处理单元(CPU),又称为微处理器,这就是世界上第一款微处理器——4004,从此便拉开了微处理器的序幕。

此后微处理器芯片的集成度一直约每隔12至18个月便会增加一倍,性能也将提升一倍。

这就是著名的“摩尔定律”[2]。

目前,微处理器的主频已经达到了GHz级别。

可以毫不夸张地说,没有集成电路的发展就没有微处理器的出现,自然也就不会有现在的微型计算机了。

1.2课题背景

1993年,YalePatt教授在密歇根大学提出对传统教学思路的改革。

1995年秋季,YalePatt和KevinCompton教授开设EECS100课程,这一课程是计算机科学(CS)、计算机工程(CE)和电子工程(EE)三个专业的第一门计算机类主修课程。

2001年,YalePatt教授正式发行了第一本内容取自EECS100课程的教科书——IntroductiontoComputingSystems:

frombitsandgatestoCandbeyond[3],书中内容包括两个部分:

一是计算机底层结构(LC-2计算机),二是高级语言编程。

此书发行后受到了大量学生和教师的好评,并且大多数人都赞同此书的编写方法,2004年YalePatt教授正式推出该教科书的第二版[4],第二版书中最大的改动就是采用LC-3结构替换了第一版的LC-2计算机模型。

LC-3是一个VonNeumann存储程序型计算机,具有比较完备的指令系统结构(ISA),对理解计算机各个组成部件的结构特点、工作原理及相互协同运行机制具有重要作用。

2012年,我校计算机学院软件工程专业采用该教材《计算机系统概论英文版第二版》[5]作为二年级学生计算机组成课程的教材,为深入理解书中LC-3ISA的处理器微体系结构、工作原理、中断自陷等相关异常处理机制,决定采用VerilogHDL硬件描述语言设计教材中LC-3的CPU,实现完整LC-3ISA处理器的逻辑设计,完成处理器的前端设计。

1.3本文工作

本次设计从研究微处理器的工作原理入手,采用VerilogHDL硬件描述语言,结合ModelSim仿真工具,通过团队合作,完成了能够实现15条指令的带有自陷、中断和异常运行机制的LC-3多周期处理器的设计与仿真,本人独立完成多周期处理器的数据通路部分的设计,本文主要进行以下几方面工作:

1.查阅相关文献资料,学习VerilogHDL硬件描述语言,熟悉使用ModelSim仿真工具,QuartusII综合工具;

2.深入分析LC-3指令系统结构,掌握每条指令的功能及具体运行的过程;

3.分析指令执行周期,深入理解自陷、中断和异常的运行机制,构建功能模块;

4.研究多周期处理器的基本工作原理,完成能够实现15条指令的带有中断和异常处理机制的多周期处理器的数据通路的设计;

5.使用QuartusII进行综合,ModelSim进行仿真验证,并完成整体设计的功能测试。

 

第二章设计流程和语言工具

2.1设计流程

集成电路(IC)设计是将系统、逻辑与性能的设计要求转化为具体的物理版图的过程,也是一个把产品从抽象一步步具体化、直至最终物理实现的过程。

为了完成这一过程,人们研究出了层次化和结构化的设计方法:

层次化的设计方法能使复杂的系统简化,并能在不同的设计层次及时发现错误并加以纠正;结构化的设计方法是把复杂抽象的系统划分成一些可操作的模块,允许多个设计者同时设计,而且某些子模块的资源可以共享。

IC设计[5]是一个非常复杂的过程,它的流程不是固定不变的,而是随着设计方法学和EDA(ElectronicDesignAutomation)工具的进步而不断演化的。

当前的基本流程以及各阶段使用的工具和数据形式见图2.1。

IC设计的基本流程如下:

(1)设计者分析用户和市场的需求,将其转化成对芯片产品的技术需求,形成设计规范说明书。

(2)设计和优化芯片中所使用的算法。

一般使用高级编程语言(如C/C++)对算法进行建模和借助仿真工具(如MATLAB)进行仿真,进而对算法进行评估和优化。

(3)根据设计的功能需求和算法分析的结果,设计芯片的架构,并对不同的方案进行比较。

根据性能、价格和功耗的约束,选择最合适的方案。

这一阶段可以使用SystemC语言对芯片架构进行建模和分析。

(4)RTL设计使用硬件描述语言完成对设计实体的RTL级描述。

这一阶段可以使用VHDL和VerilogHDL语言的输入工具编写代码。

(5)RTL验证使用仿真工具或者其他RTL代码分析工具,验证RTL代码的质量和性能。

该阶段可以使用SystemVerilog等验证语言和其他验证工具生成的testbench进行设计验证,确认设计是否符合设计规范。

(6)综合阶段使用综合工具将RTL代码生成描述实际电路的门级网表文件。

(7)门级验证对综合生成的门级网表进行验证。

这一阶段通常会使用仿真、静态时序分析和形式验证等工具。

图2.1IC设计流程

(8)后端设计根据速度和面积的约束利用布局布线工具对综合产生的门级网表进行布局规划(Floorplanning)、布局(Placement)、布线(Routing),生成生产用的版图。

(9)电路参数利用参数提取工具提取芯片中连线的寄生参数,从而获得门级的延时和时序信息。

(10)版图后验证根据后端设计取得的延时信息,再次验证设计是否能够实现所有的功能和性能指标。

(11)在特定的芯片工艺生产线上制造芯片。

(12)测试阶段主要对制造好的芯片进行测试,检测生产中产生的缺陷和问题。

IC设计流程一般分为前端设计(逻辑设计)和后端设计(物理设计)。

从数模角度分,IC设计又分为数字设计和模拟设计。

本次毕业设计的工作为数字前端设计。

本次设计采用的开发语言为Verilog硬件描述语言,仿真工具和验证工具为ModelSimALTERA6.4,综合和时序分析工具为QuartusII9.0。

2.2开发语言

硬件描述语言是一种用形式化方法来描述数字电路和系统的语言。

数字电路系统的设计者利用这种语言可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。

然后利用EDA工具逐层仿真验证,再把其中需要变为具体物理电路的模块组合经由自动综合工具转换到门级电路网表。

接下去再用专用集成电路(ASIC)或现场可编程门阵列(FPGA)自动布局布线工具把网表转换为具体电路布线结构的实现。

在制成物理器件之前,还可以用Verilog的门级模型来代替具体基本元件。

因其逻辑功能和延时特性与真实的物理元件完全一致,所以在仿真工具的支持下能验证复杂数字系统物理结构的正确性,使投片的成功率达到100%。

目前,这种称为高层次设计的方法已被广泛采用。

据统计,目前在美国约有90%以上的ASIC和FPGA已采用Verilog硬件描述语言方法进行设计。

VerilogHDL[6]是硬件描述语言的一种,用于数字电子系统设计。

该语言允许设计者进行各种级别的逻辑设计,进行数字逻辑系统的仿真验证、时序分析、逻辑综合。

VerilogHDL语言具有下述描述能力:

设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。

由于VerilogHDL从C编程语言中继承了多种操作符和结构,VerilogHDL语言的核心子集非常易于学习和使用,对大多数建模应用来说核心子集已经足够。

模块是VerilogHDL的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。

一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述;设计的数据流行为使用连续赋值语句进行描述;时序行为使用过程结构进行描述。

一个模块可以在另一个模块中使用。

模块之间可以通过使用线网来相互连接。

在模块中,结构和行为可以自由混合。

也就是说,模块描述中可以包含实例化的门、模块实例化语句、连续赋值语句以及always语句和initial语句的混合。

一个模块的基本语法如下:

module module_name(port_list);

Declarations:

//说明部分

reg,wire,parameter,

input,output,inout,

function,task,……

Statements:

//语句部分

initial statement

always statement

module instantiation

gate instantiation

UDP instantiation

continuous assignment

endmodule

说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数。

语句部分定义设计的功能和结构。

说明部分和语句部分可以散布在模块中的任何地方;但是变量、寄存器、线网和参数等的说明部分必须在使用前出现。

为了使模块描述清晰和具有良好的可读性,最好将所有的说明部分放在语句前。

2.3设计工具

2.3.1QuartusII开发环境

QuartusII开发环境[7]是一个基于Altera器件进行逻辑电路设计的集成开发环境。

QuartusII开发和设计的基本流程参见图2.2。

根据图2.2的QuartusII设计流程,接下来简要介绍本次设计使用的QuartusII基本功能模块。

在QuartusII软件系统中,一个“工程”(project)包含了整套的设计文件、软件资源文件、仿真文件、系统设置和具体设计的层次信息等。

开发者可以使用文本编辑器、模块编辑器、参数化模块资源库(LPM)创建设计文件和其他EDA工具创建的设计文件作为QuartusII设计源文件。

图2.2QuartusII设计流程

使用Complier的“QuartusIIAnalysis&Synthesis”模块分析、综合设计文件并建立工程数据库。

“Analysis&Synthesis”使用QuartusII内置的综合工具综合Verilog设计文件(.v)或VHDL设计文件(.vhd),它完全支持VerilogHDL和VHDL语言,并提供控制综合过程的选项。

也可以使用其他EDA综合工具综合VHDL或者VerilogHDL设计文件,生成可以与QuartusII软件配合使用的EDIF网表文件(.edf),然后再用到QuartusII软件工具中。

QuartusIIFitter也称为PowerFitTMFitter,用于完成布局布线,在QuartusII软件中也成为“布局布线”。

Fitter使用“Analysis&Synthesis”建立的数据库,将工程中的逻辑需求和时序需求与器件的可用资源相匹配。

它将每个逻辑功能分配到最恰当的逻辑单元位置以满足布线和时序的要求。

QuartusIITimingAnalyzer允许用户分析设计中所有逻辑的性能,并协助引导Fitter满足设计中的时序要求。

默认情况下,TimingAnalyzer作为全编译的一部分自动执行,它分析和报告时序信息,例如建立时间tSU、保持时间tH、时钟至输出延时tCO、引脚到引脚延时tPD、最大时钟频率fmax以及设计的其他时序特性。

使用TimingAnalyzer生成的信息分析、调试和验证设计的时序性能,也可以进行最快时序模式的时序分析,报告最佳情形下的时序情况。

QuartusIIPowerPlay功率分析工具提供了一个界面,用于在设计的各个阶段估算静态和动态功耗。

PowerPlay功率分析器完成功率分析,并生成一个高亮的包含按类型和实体分割、功耗等信息的功率报告。

本次毕业设计主要使用以上这些基本的功能模块。

2.3.2ModelSim仿真工具

ModelSim仿真工具[8]是Mentor公司的子公司ModelTech开发的软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。

它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。

主要特点:

·RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;

·单内核VHDL和Verilog混合仿真;

·源代码模版和助手,项目管理;

·集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;

·C和Tcl/Tk接口,C调试;

·对SystemC的直接支持,和HDL任意混合;

·支持SystemVerilog的设计功能;

·对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;

·ASICSignoff。

·可以单独或同时进行行为(behavioral)、RTL级、和门级(gate-level)的代码。

ModelSim的基本仿真流程如下:

(1)创建一个工作库。

在ModelSim中,所有以VHDL/Verilog或者混合编码形式存在的设计必须被编译到一个库中。

ModelSim默认创建一个名称为“work”的工作库,启动一个新仿真。

名称为“work”的库是编译器编译设计单元默认的目标单元。

(2)编译设计文件。

在工程库的创建完成后,将各个设计单元编译到其内。

ModelSim库格式文件对所有的可支持平台都适用,所以在不同的平台上进行仿真时,可以直接适用该库来仿真设计,不必重新编译设计。

(3)运行仿真。

设计编译完成后,本文可以针对顶层模块、结构、实体加载仿真器。

当设计装载成功,仿真时间设置为0位置时,本文可以输入一个运行命令开始仿真。

(4)调试结果。

如果仿真结构不是预期的,则可以使用ModelSim的调试工具跟踪问题的原因。

例如波形窗口、数据流窗口等。

ModelSim工程仿真流程一般包括以下步骤:

(1)创建一个工程,即创建.mpf文件和工作库。

(2)向工程添加设计单元,包括设计源文件、ModelSim管理文件夹、仿真环境的设置;可以将这些文件拷贝到工程目录,也可以简单地将它们映射到本地。

(3)编译文件。

进行语法检测并建立ModelSim仿真伪机器码。

(4)仿真设计。

对指定的设计单元进行仿真。

本次设计的仿真工作采用工程仿真流程完成。

ModelSim仿真工具提供波形窗口和数据流窗口来对设计进行调试。

波形窗口可以观察设计中每一个信号的变化情况。

数据流窗口可以使设计人员观测到设计的物理连接、跟踪事件的传递和确定“非期望输出”的原因。

在熟悉硬件描述语言和基本的开发工具后,后续章节首先对本次设计中使用的理论知识进行研究。

 

第三章LC-3指令系统结构

指令系统结构(InstructionSetArchitecture,以下简称ISA)对计算机整个系统是有着重要意义的[2]。

它是一个抽象的硬件与软件之间的分界面,包含着编写一个机器语言程序能正确运行的所有信息,如存储器结构、指令集、寄存器组、I/O等等。

我们把这些信息细化分为十点:

计算机结构类型、存储器结构、寄存器组、指令格式、操作码、数据类型、寻址方式、条件码、自陷和中断异常、I/O设备的管理。

LC-3ISA包含了这些全部信息。

3.1存储器结构

LC-3的存储器的地址是16-bit宽的二进制数,它的寻址空间是216即64K大小。

一个存储单元存储一个字(16bits),也就我们说的寻址能力。

在LC-3中是按字编址,没有采用按字节编址,也就不涉及字节顺序存储的问题。

下面我们看一下存储器的划分,如图3.1:

图3.1LC-3存储器映射图

图3.1是对LC-3存储器的一个映射图,它的地址从十六进制x0000到xFFFF,它被划分成6块区域,不同的存储区域定义了不同的用法。

x0000到x00FF用于存储自陷向量表;x0100到x01FF用于存储中断异常向量表,其中x0100到x017F是异常向量表,x0180到x01FF是中断向量表;x0200到x2FFF是操作系统区域和系统栈空间。

x3000到xFDFF是留给用户使用,用于存储用户程序。

xFE00到xFFFF是设备寄存器地址,用于提供给外部设备,如键盘和显示器。

存储器部分还有两个寄存器:

存储器地址寄存器(MemoryAddressRegister,MAR)和存储器数据寄存器(MemoryDataRegister,MDR)。

访问存储器是通过这两个寄存器完成的。

3.2寄存器组

本节只写了汇编程序员能够看到的寄存器组,共四个,每个寄存器的大小均是16-bit大小。

分别是通用寄存器GPR,程序计数器PC,指令寄存器IR,程序状态寄存器PSR;

●Generalpurposeregister(R0~R7)

●PC

●Instructionregister

●Processerstatusregister(PSR)

通用寄存器共八个,R0~R7对应编号是000~111(二进制数),程序计数器内容是下一条执行指令所在的地址,指令寄存器用于暂存从存储器中取出的指令,程序状态寄存器包含了当前执行进程的状态信息,其中程序状态寄存器的7个比特位已做了定义,包含三个字段信息,如图3.2:

图3.2处理器状态寄存器

bit[2:

0]是条件码字段(Conditioncode),三个比特位分别是负数(N)、零(Z)、正数(P),用来进行条件分支判断。

bit[10:

8]是优先级字段(Prioritylevel),在计算机的系统中我们把要做的所有事划分成几个级别,优先级高的先执行,优先级低的后执行。

在LC-3中定义了八个优先级,分别是PL0~PL7,PL7最高,PL0最低。

目前只使用了两个优先级,PL0和PL4,PL0是当前用户执行的优先级,PL4是键盘中断的优先级。

bit[15]是特权模式(Privilegemode)位,LC-3计算机执行时有两个模式,bit[15]等于0时,叫做管理员模式,bit[15]等于1时,叫做用户模式。

在LC-3的底层实现中用到的寄存器会在后续章节中介绍。

3.3指令集

LC-3ISA是一种精简指令系统结构,定义了一组丰富而简洁的指令集,能够进行编写适度复杂的汇编程序。

指令格式通过它的各个构成部分来定义指令的比特位划分。

一条指令分为两个部分:

一个操作码和隐式或显式的、零个或多个操作数。

一个ISA的指令集定义了:

操作码的集合、数据类型和寻址方式。

3.3.1操作码

指令的长度是设计中最基本的问题,它与存储器的结构、总线结构、CPU复杂程度和CPU速度等相互影响。

而指令中操作码的的宽度决定了可定义指令的数量。

LC-3的每条指令(16-bit)包含4-bit操作码(bit[15:

12])以及12位的相关信息。

图3.3汇总了LC-315种操作码以及其余比特位的使用说明。

第16个4-bit操作码未做定义。

表3-1中的注释,将有助于更好的理解对LC-3指令集(图3.3)的理解。

表3-1字符注释

注释

含义

DR

目的寄存器(DestinationRegister)。

代表R0~R7之一,指令中用于存放结果的寄存器

SR,SR1,SR2

源目的寄存器。

R0~R7

Imm5

5-bit立即数。

当用做立即数时,通常对应指令中的bit[4:

0]。

二的补码表示,范围-16~15,使用之前要做16位的符号扩展

表3-1字符注释(续)

BaseR

基址寄存器(BaseRegister)通常基址寻址寄存器和1个6-bit偏移相加,产生Base+offset地址

offset6

6-bit数值,指令的bit[5:

0];用于Base+offset寻址方式。

bit[5:

0]本看成是一个6-bit的有符号整数(二的补码表示),在计算Base+offset时,要做16位符号扩展

PC

程序计数器(ProgramCount)。

16位寄存器,指向下一个待获取指令的地址。

例如,如果当前指令所在地址是A,则PC的内容是A+1

PCoffset9

9-bit数值,指令的bit[8:

0];用于PC+offset寻址方式。

bit[8:

0]被看做是一个9-bit的有符号的二的补码表示的数(范围-256~255),符号扩展至16-bit之后,与PC相加生成地址

PCoffset11

11-bit数值,指令的bit[10:

0];用于JSR指令计算子程序的入口地址。

bit[10:

0]被看做是一个11-bit的有符号的二的补码表示的数(范围-1024~1023),符号扩展至16-bit之后,与PC相加生成地址

Trapvect8

8-bit,指令的bit[7:

0]。

用于TRAP指令确定trap服务程序的入口地址。

bit[7:

0]被看做无符号整数,零扩展至16位地址值(0~255).该地址存储器单元中存放了trap服务程序的入口地址。

此外,LC-3的指令集相较于CISC风格计算机的不固定指令格式、长度,更易于将代码指令拆分,使之易于多周期处理器数据通路的设计。

3.3.2数据类型

LC-3只支持一种数据类型——有符号整数。

在LC-3中,操作数采用二的补码方式表示。

3.3.3寻址方式

寻址方式是指定操作数位置或来源的一种机制。

操作数可能存在三个地方;存储器、寄存器、或指令的一部分。

操作数在寄存器中,我们称操作数为寄存器操作数;如果操作数是指令的一部分,我们称它为“立即数”操作数。

LC-3支持五种寻址方式:

1.立即数寻址(两种寻址过程),其一,指令的操作数是指令中的一部分,该操作数所在字段如图3.4

(1)中所示立即数字段;另一种情况,数由程序计数器和偏移量的和

图3.3LC-3指令集全部指令格式(注:

+表示该指令将修改条件码)

作为操作数,如图3.4

(2)所示。

(1)

(2)

图3.4立即数寻址

2.寄存器寻址,指令的操作数是寄存器中的内容,即指令字段所指定的寄存器中的内容如图3.5中指令第一个源操作数在SR1字段指定的寄存器中。

图3.5寄存器寻址

3.PC相对寻址(PC-relative),寻址的地址是程序计数器(PC)加指令中偏移地址的结果,偏移地址是图3.6中的PCoffset字段。

寻址过程如图3.6。

图3.6PC相对寻址

4.基址偏移寻址(Base+offset),地址是指令中的基址寄存器的地址和偏移地址的和,寻址过程如图3.7所示。

图3.7基址偏移寻址

5.间接寻址(indirect),程序计数器(PC)与指令中偏移地址的和为存储器的地址,该地址存储单元中的内容作为寻址的地址,寻址过程如图3.8所示。

图3.8间接寻址

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

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1