硬件实验--模型机与程序运行

硬件基础实验二 实验报告

一、指令集结构

该模型机要实现以下指令:

指令格式

功能

装载存储指令

LDA

0x20 Byte

R5<-Mem[Byte]

STA

0x40 Byte

Mem[Byte]<-R5

运算指令

ADD

0xC0 Byte

R5<-R5 加 Mem[Byte]

AND

0xE0 Byte

R5<-R5 与 Mem[Byte]

COM

0x80

R5<-取反R5

传输指令

OUT

0x60 Byte

BUS<-Mem[Byte]

跳转指令

JMP

0xA0 Byte

PC<-Mem[Byte]

 

二、微程序流程

clip_image003

三、模型机微体系结构

clip_image005

四、设计思路

依据微体系结构图通过VHDL编程设计模型机,由模型机主题、时序电路、数码管显示模块组成。

地址转移逻辑:

INPUT:T4、CLR、SWE、SRD、IR[2..0]、P1、Addr[4..0]、 OUTPUT:A[4..0]
CLR=0 异步清零,用于产生主入口地址00000
SWE=0 A[4]异步强置1,用于产生RAM强写入口地址10000
SRD=0 A[3]异步强置1,用于产生RAM强读入口地址01000
T4↑,P1=0 根据下址顺序执行,A[4..0]=Addr[4..0]
T4↑,P1=1 重新映射,A[4..0]=Addr[4..3]&IR[2..0]

五、设计模型机主体

用VHDL代码实现

其中,进程ct1、ct2、ct3、ct4功能划分依据分别是:

ct1:微序列控制器下址跳转。

ct2:实现各种指令,主要集中在实现从存储器或者寄存器释放数据到总线上。

ct3:完成各种指令,从总线上装载数据到相应的存储器或者寄存器中。

ct4:生成下址,判断下址生成方式,根据不同的方式生成下址。

编译运行,仿真测试一下功能,正确无误后打包为bsf备用。

六、设计时序电路

通过状态机设计时序电路,如图:

clip_image007

将模型机产生的VHDL代码打包备用。

七、设计显示模块

通过VHDL代码实现数码管显示模块

仿真测试功能,正确无误后打包备用。

 

八、顶层组装

将各模块组装如图:

clip_image009

九、测试运行

IR[7..5]对应BUS(3,1,5),计算(C 加 D)’ and B’ 加 A

其中 A=01H B=02H C=03H D=04H分别存储在OEH至11H单元。

汇编代码如下:

 

重新初始化RAM,写入上述程序:

 

修改IR对应BUS:

下载测试,单步执行,观察AR,BUS上的值,最后计算出结果为F9H。

十、实验日志

1. bus_reg_t2<=ram8(conv_integer(ar))与ram8(conv_integer(ar))<=r5的含义:

1. 将ram8存储器中对应于ar中地址单元的数据取出来放到bus_reg_t2寄存器中。

1.将r5寄存器中的数据装载到ram8存储器中对应于ar中地址单元中。

2. 修改IR和BUS的对应关系时,总是报错,语法错误。后来才知道要用并置语句,修改成:ir<=bus_Reg_t2(3)&bus_Reg_t2(1)&bus_Reg_t2(5);

关于并置语句:

并置“&” 就是用来进行位和位矢量的连接运算 所谓位和位矢量的连接运算是指将并置操作符右边的内容接在左边的内容之后以形成一个新的位矢量.通常采用并置操作符进行连接的方式很多 : 既可以将两个位连接起来形成一个位矢量 , 也可以将两个位矢量连接起来以形成一个新的位矢量 , 还可以将位矢量和位连接起来形成一个新的矢量。

3. 关于type语句

type st is (k1,k2,k3,k4); --四个状态,模4计数器

意思是定义一个数据类型state具有4种状态k1,k2,k3,k4可以像定义其他类型一样定义这种数据类型,一般用于状态机

4. 关于数码管显示的VHDL设计

这次的代码从整体上设计数码管显示电路,比硬件一时分模块写VHDL代码然后打包在组装方便了很多,还有模型机主体的设计,较之分模块整合更加方便,让我感受到VHDL编程给设计带来的便利。

5. 声明时库资源同时声明三个

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

他们指定singned和unsigned数据类型和相应的算术与比较操作。它可以包含有几个数据转换函数,允许数据从一种类型转换到另一种类型。

这样可以省去很多的时间。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注