于Quartus II的微程序控制简易计算机的设计

更新时间:2024-05-16 06:44:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于Quartus II的微程序控制简易计算机的设计

顾 晖,王礼春,成 耀

(南通大学计算机科学与技术学院,江苏 南通226019)

【摘 要】 本文借助于Quartus II软件在计算机上仿真设计了一台微程序控制的简易计算机,通过介绍电路仿真的主要流程,我们可以加深对计算机系统各模块的工作原理及相互联系的认识。

【关键词】 Quartus II EDA 微程序控制 计算机 0 引言

Quartus II是由美国Altera公司开发的,是一款功能比较强的EDA工具软件,它的优

[1]

势主要体现在其功能齐全,简单易用。

我们借助Quartus II6.0现有的器件,综合设计了一个简易计算机系统,并使用Quartus

[2]

II6.0完成仿真,通过仿真波形展示该系统指令的执行流程,以及微指令的控制方法。 1 简易计算机系统的体系结构及功能模块设计

[3]

一台微程序控制的简易计算机系统包含以下几个模块:

CEnalu-busALU输出缓冲(74244)RAM(256x8)WEs3s2s1s0ALUmAR(74273b)LDARDR1(74273b)LDDR1DR2(74273b)LDDR2PC输出缓冲(74244)nPC-BUSPC(74163)R0(74374b)LDR0nR0-BUSLDPCLOAD输入缓冲(74244b)nsw-bus微程序控制器时序产生器数据输入IR(74273b)LDIR

图(1) 微程序控制的简易计算机系统结构示意图

a) 运算模块,由ALU (两片74181),数据寄存器DR1,DR2(两片74273)以及数据缓冲器ALU_BUF (一片74244)构成,完成DR1与DR2的各种运算;

b) 存储模块,由RAM(一片lpm_ram_dp0),RAM_BUF(一片74273),AR(一片74273)构成,由AR提供地址,完成RAM 的存取数据操作;

c) 程序计数器模块,由PC(两片74161),PC_BUF(一片74244)构成,完成保存指令地址,以及提供RAM存取操作所需地址(包含存取数据与指令);

d) 微程序控制模块,由IR(一片74273),微存储器(一片lpm_rom0),指令译码器(三片74273),以及一片74138(完成组合译码功能)构成,完成系统的控制功能;

e) 输入模块,由IN_BUF(一片74244)构成,完成输入端IN0~IN7的数据输入功能; f) 时序电路,由集成计数器(一片74161)及三八译码器(一片74138)构成,可产生时序信号。

微程序控制的简易计算机系统结构示意图请参考图(1)。

[3] [4]

1.1 时序电路

时序电路见图(1.1)。各个端口功能如下:

a) R_CLK,时序电路的原始时钟,用来产生三个连续的时钟脉冲IR_CP,ROM_CP,TR_CP; b) START,启动键,低电平时有效;

c) IR_CP,一个微指令周期的第一个上升沿,为指令寄存器IR的时钟信号; d) ROM_CP,一个微指令周期的第二个上升沿,为微存储器ROM及地址寄存器AR共用的时钟信号;

e) TR_CP,一个微指令周期的第三个上升沿,为指令译码器,数据寄存器DR1、DR2,寄存器R0及RAM存储器共用的时钟信号。

说明 :该时序电路利用集成计数器74161的计数循环特性,通过选择三八译码器74138来产生三个连续的脉冲信号,以形成一个微指令周期。因本系统只是设计简易计算机系统,所以未设计RESET键。

1.2 微程序控制器模块

控制器模块译码后输出的控制信号见图(1.2)。各控制端功能如下: a) 0~5号控制端,输出下一条微指令在微存储器中的地址; b) 6号控制端LDR0,R0寄存器的时钟使能信号,高电平时有效;

c) 7号控制端,指示是否有下一条微指令,若有则执行下一条微指令,若无,则执行下一条指令;

d) 8~10号控制端,采取组合译码方式,分别用来选择控制端PC_BUF , ALU_BUF,IN_BUF,RM_BUF,以及R0寄存器的输出使能端,均为低电平时有效,当组合译码输出为000时表示不选择任何控制端;

e) 11号控制端LDRM,RAM存取操作时钟使能信号; f) 12号控制端LDAR,AR送地址操作的时钟使能信号;

g) 13号控制端LDDR2,数据寄存器DR2的时钟使能信号,上升沿到来时触发; h) 14号控制端LDDR1,数据寄存器DR1的时钟使能信号,上升沿到来时触发; i) 15号控制端LDPC,程序计数器PC的时钟使能信号,上升沿到来时触发;

j) 16号控制端LOAD,程序计数器PC的同步并行置数端,低电平有效,若要完成同步

[3] [4]

并行置数,必须要维持此信号到程序计数器PC的时钟信号上升沿到来之后;

k) 17号控制端W,RAM的读写控制端,高电平时为写,低电平时为读; l) 18号控制端CN0,运算器的低位进位端。低电平为有进位,高电平时为无进位(注:只有在算术运算时是有效的);

m) 19号控制端M,高电平时控制运算器执行算术运算,低电平时控制运算器执行逻辑运算;

n) 20~23号控制端S0~S3,组合控制运算器执行不同的运算,如:1001时可以执行加(在19M号控制端为低电平,18号控制端CN0为高电平时有效)。

说明:微程序的输出控制端口(除六条微地址接口外)均是与其它模块相连接的控制端口,因此对其他模块的控制端口不再作进一步的阐述。

[4] [5]

1.3 运算器模块

运算器模块的控制端口有:M,CN0,S0~S3,N_AU,N_IN,详细说明请见控制器模块,模块结构请见图(1.3)。 1.4 存储器模块

存储器模块的结构请见图(1.4),其各个控制端口已在控制器模块中作了详细说明。

1.5 数据显示灯

为了调试时的方便,在设计过程中添加了一些数据显示灯,如下所示: a) DR1_OUT0~DR1_OUT7,数据寄存器DR1的显示灯; b) DR2_OUT0~DR2_OUT7, 数据寄存器DR2的显示灯;

c) IR0~IR7,指令寄存器IR的显示灯; d) BUS0~BUS7,总线的数据显示灯;

e) TR_OUT0~TR_OUT23,指示当前译码后的微控制信号的显示灯; f) CN8_ALU,运算器的最高位进位端。

[4] [6]

2 简易计算机系统的仿真实现

[2] [4]

2.1 工程的建立

a) 在Quartus Ⅱ环境下,打开菜单File,选择子菜单New Project Wizard后,按照向导窗口的提示,在窗口中正确输入有关的路径名和项目名称后,按下“ Finish”按钮,即可完成项目的新建工作;

b) 创建一个.dbf文件:选择File—New,打开“新建”窗口:在“Device Design Files”页,选中“Block Diagram/Schematic File”项后,按下“OK”按钮即可打开原理图编辑器,绘制系统的总体结构图,参图1.1~1.5;

c) 由于该系统用到存储器,因而还需分别创建一个24位的和一个8位的.hex(或.mif)文件。

2.2 编写指令与微码

系统运行必然需要指令,由于该系统是由微程序控制的,所以还需要编写微码。

a) 对8位的.hex(或.mif)RAM存储器编写程序即指令,各条指令在微指令存储器中如图(2),这里编写了最常用的五条指令;

b) 对24位的.hex(或.mif)ROM存储器编写微码,控制各个模块执行不同的操作,五条指令的微码如图(3),其中前面两条为完成取指令的通用微码,即每条指令都要调用的,最后一条指令(地址为:FFH)是为初始启动时引导系统去取指令并执行后续指令服务的) 。

2.3 指令的格式

该系统设计使用了五条指令,分别为输入指令IN,加法指令ADD, 写指令STA, 读指令OUT,跳转指令JMP,字长均为8位,其格式及功能如下:

a) 输入指令IN:为单字长指令,其功能是将数据开关的8位数据输入到R0寄存器; b) 加法指令ADD: 为双字长指令,第一个字为操作码,第二个操作数地址,其功能是将R0寄存器中的值与内存中地址为第二个操作数的内容加起来,并将结果存入R0寄存器中;

c) 写指令STA:为双字长指令,第一个字为操作码,第二个操作数地址, 其功能是将R0寄存器中的值,存储到以第二个操作数为地址的内存单元中;

d) 读指令OUT:为双字长指令,第一个字为操作码,第二个操作数地址,其功能是将以第二个操作数为地址的内存单元中值读到数据总线并显示;

e) 跳转指令JMP:为双字长指令,第一个字为操作码,第二个操作数地址,其功能是

[3]

程序无条件跳转到第二个字指定的内存单元地址。 2.4 微指令的格式

当系统建好后,微程序控制器的大部分结构也就随之确定了。

该系统采用了水平型微指令格式,微命令编码直接表示法与字段直接译码法相混合的编码方法,后续微地址由标志位判定,后续微码、后续指令自动互斥选择执行。

[4]

2.5 调试并仿真

以上完成了系统的绘制及编码工作,接下来对其进行以下几步调试。 a) 分别完成RAM与ROM的.hex(或.mif)文件,保存后并编译;

b) 调试无错后再创建一个.vwf文件,并添加相应控制结点及数据显示灯,然后调制适当的波形(见图(2))后,再进行仿真;

c) 系统的仿真波形如图(3),该图给出了系统循环执行输入指令IN,加法指令ADD,写指令STA,读指令OUT,跳转指令JMP的执行过程。

3 结束语

通过该系统的设计,对于较复杂的系统,常采用的方法就是将其分成各个模块来实现,这样可以很大程度上简化整个系统的设计以及实现上的难度,充分发挥了化繁为简的作用。

通过使用Quartus II6.0对整个系统进行整体分析、模块设计、模块整合、编译仿真等操作,我们可以察觉Quartus II6.0充分发挥了设计上的优势,简单易用,便于整合,方便修改。

参 考 文 献

[1]覃贵礼,谭呈祥. 用Quartus II实现数字电路实验中的仿真[J]. 南宁师范高等专科学校学报,2005(2):71-73.

[2]郑亚民,许敏. 基于Quartus II的带计时器功能的秒表系统设计[J]. 电子工程师, 2005(01):59-62.

[3]王爱英. 计算机组成与结构[M]. 北京:清华大学出版社,2001. [4] Altera公司. Quartus II 软件[EB/OL].

http://www.altera.com.cn/products/software/products/quartus2/qts-index.html, 2007-8-18/2007-8-26.

[5]东南大学计算机学院. ALU部件 [EB/OL].

http://cse.seu.edu.cn/people/xuzaolin/Chapter3/untitled14.html, 2007-5-11/2007-8-23.

[6]李雪梅. 用Quartu II4.0设计数字电路过程的介绍[J]. 现代电子技术, 2005(06):35-38.

Design of Simple Computer based on Quartus II

Gu Hui,Wang Li-chun,Cheng Yao

(School of Computer Science & Technology, Nantong University, Jiangsu, China 226019)

Abstract: In this article, the authors use Quartus II to design a simple computer which is

controlled by micro programs. It can help us to learn the main flow of circuit simulation and deepen our knowledge of the principles of computer system.

Key words: Quartus II, EDA, micro programmed control, computer

本文来源:https://www.bwwdw.com/article/dak7.html

Top