理工大学学士学位论文
(2)输入程序。在程序编辑区内编写程序。
(3)保存文件。单击保存文件按钮,弹出对话框将输入的VHDL语言程序保存为vhd文件,注意后缀名是.vhd,名字与实体名相同,单击―保存‖按钮即可保存文件。 (4)编译工程。单击水平工具条上的编译按钮或选择菜单Processing下的Start Complilation,开始编译,并伴随着进度不断地变化,编译完成后出现信息窗口。如果编译过程出现错误,要将错误改正,保存后再次编译,直到编译无错误为止。 3.仿真设计
设计仿真的目的就是在软件环境下,验证电路的行为和思想是否一致。仿真分为功能仿真和时序仿真。功能仿真是在设计输入之后,综合和布局布线之前的仿真,不考虑电路的逻辑和门电路的时间延时,着重考虑电路在理想环境下的行为和预期设计效果的一致性。时序仿真是在综合、布局布线后,也即电路已经映射到特定的工艺环境后,考虑器件延时的情况下对布局布线的网络表文件进行的一种仿真,其中器件延时信息通过反向标注时序延时信息实现的。 (1)仿真文件的生成。
1)建立矢量波形文件。单击―File‖菜单下的―New‖命令,在弹出的―New‖对话框中选择―Other Files‖页面,选择―Vector Waveform File‖后单击―OK‖按钮,弹出矢量波形编辑窗口。
2)添加引脚或节点。左键双击―Name‖下方空白处,弹出―Insert Node or Bus‖对话框。单击对话框―Node Finder‖按钮后,弹出―Node Finder‖对话框,在―Filter‖后面的方框里选择―Pin:all‖,然后单击―List‖按钮,在―Node Found‖栏中列出了设计中的所有的输入/输出引脚号,选择需要的引脚。
3)编辑输入信号并保存文件。
(2)功能仿真。功能仿真是忽略延时的仿真,是理想的仿真。接下来我们一起来进行设计的功能仿真。首先单击―Assignments‖菜单下的―Settings‖命令,单击左侧标题栏中的―Simulator‖选项后,在右侧的―Simulation mode‖的下拉菜单中选择―Functional‖选项即可(软件默认的是―Timing‖选项),单击―OK‖按钮后完成设置。后需要生成功能仿真网络表。单击―Processing‖菜单下的―Generate Functional Netlist‖命令后会自动创建功能仿真网络表。
7
理工大学学士学位论文
2.4 本课题基于Quartus II的设计流程
确定整体设计要求设计整机逻辑框图设计指令系统设计指令执行流程设计微操作控制信号顶层设计原理图编写vhdl源程序调试仿真
图2.1 8位模型计算机的设计流程
8
理工大学学士学位论文
3 基于VHDL8位模型机的原理与设计
3.1 模型计算机的原理
所谓模型计算机就是一计算机实际结构为基础,将其简化,能对输入的信息进行处理运算,更便于分析设计。随着微电子技术的进步,现代计算机主要由运算器,控制器,存储器,输入设备,输出设备五大部分组成。计算机能完成用户要求是按照提前设计好的指令进行的,指令是计算机执行具体操作的命令。一条指令就是机器语言的一个语句,用它来说明机器硬件应完成什么样的基本操作。在本课题中把模型机划分了十个模块分别是存储器,时钟信号源,节拍发生器,操作控制器,程序计数器,地址寄存器,累加器,算术逻辑单元,指令寄存器和指令译码器。让预设指令在这些部件中按顺序执行达到预期目的。计算机执行一条指令分为三步进行:
第1步是取指令,将要执行的指令从内存取到控制器中;
第2步是分析指令,对所取的指令通过译码器进行分析判断,判断该指令要完成的操作;
第3步是执行指令,根据分析结果向各部件发出操作信息,执行该指令相应的操作功能。
3.2 模型机的总体设计要求
要设计一个模型计算机,它由十个功能部件组成,具体是存储器,时钟信号源,节
拍发生器,操作控制器,程序计数器,地址寄存器,累加器,算术逻辑单元,指令寄存器和指令译码器。设计要求为:
1)总线结构:单总线,数据总线位数8位,地址总线3位 2)存储器:存储容量5*8位
3)操作控制器:实现指令操作码所需的操作控制信号 4)运算器:一个累加器,实现加法操作 5)指令系统规模:3指令
9
理工大学学士学位论文
3.3 模型机逻辑框图的设计
ESUM???ISUM控制信号ALU操作控制器..节拍发生器EAIA累加器(A)IIR指令寄存器(IR)和指令译码器时钟信号源CLKIPC程序计数器(PC)内部数据总线dbusIMAR地址寄存器(MAR)
地址线ABUS存储器(M)外部数据总线DBUS数据寄存器(DR)EDRIDR图3.1 8位模型机逻辑框图
3.3 模型机的指令系统设计
模型计算机可完成两个立即数相加,并将相加结果送入累加器。指令系统规模为3
条指令,为了方便描述以“6+0”为例,设计3条指令,具体如下: 1)LD A ,6 ;A←6,把6送入累加器A,操作码是00111110;
2)ADD A,0 ;A←A+0,把A中6与0相加,结果送入累加器A,操作码是11000110; 3)HALT ;运算完毕,停机,操作码是01110110;
10
理工大学学士学位论文
3.4 模型机的指令执行流程设计
根据模型机的结构框图,可设计指令系统中每条指令的执行流程。一条指令从主存
中取出到执行完,需要若干个机器周期,任何指令的第一个机器周期都是“取指令周期”,一条指令一共需要几个机器周期,取决于指令在机内实现的复杂程度。本模型机的指令流程如下:
1)第一条指令LD A ,6 ;将立即数6送入A。 T0:(PC)→MAR→ABUS,IMAR=0 T1:DBUS→DR,IDR=1 T2:(PC)+1→PC,IPC=1 (DR)→IR,IIR=0,LD=1 T3:(PC)→MAR→ABUS,IMAR=0 T4:DBUS→DR,IDR=1 T5:(PC)+1→PC,IPC=1 T6:dbus→A,IA=0 T7:空
2)第二条指令ADD A,0 ;把A中6与立即数0相加,结果6送入累加器A。 T0:(PC)→MAR→ABUS,IMAR=0 T1:DBUS→DR,IDR=1 T2:(PC)+1→PC,IPC=1 (DR)→IR,IIR=0,ADD=1 T3:(PC)→MAR→ABUS,IMAR=0 T4:DBUS→DR,IDR=1 T5:(PC)+1→PC,IPC=1 A+0→SR,ISUM=0 T6:SR→dbus,ESUM=0 dbus→A,IA=0,EDR=1 T7:空
11