8位模型计算机设计与仿真

本文详细介绍了如何设计一个基于FPGA的8位模型计算机,包括设计指标、模块化设计思路和具体模块如CPU、存储器、指令系统等。通过VHDL实现各模块并进行仿真验证,确保模型计算机的功能正确性。
摘要由CSDN通过智能技术生成

基于FPGA的8位模型计算机设计与仿真

项目仓库地址:https://github.com/Kenny-ting/8-bit-model-machine

一、8位模型计算机设计

1.1 设计指标

本模型计算机具备以下功能、模块,以及参数指标:

  1. 模块:存储器模块、CPU模块、外设输入模块和输出模块;
  2. 总线:包括地址总线和数据总线,总线位宽为8位;
  3. 指令集:涵盖基本的汇编指令,如算术运算指令、逻辑运算指令、移位指令内存读写指令、数据转移指令和停机指令,共计6条;
  4. 存储器容量:14*8位;
  5. 芯片主时钟频率:50MHz,系统节拍器采用8分频;
  6. 输入按键数:无,操作指令固化在RAM中。
  7. 输入输出方式:使用存储器初始化文件,固化在内存和寄存器阵列中的数据,尽可能丰富数据来源和去向,以及基本的数据存取。按键输入和数码管显示输出。

1.2 设计思路

(1)模块化设计:自顶向下,逐层设计
(2)顶层设计与描述
当功能模块设计完成后,可由VHDL代码生成元件符号,根据模型机的结构,将各元器件用总线和控制线连接起来,连接的顺序由小及大、由内到外;每连完一个模块就测试一个模块,确保模块内部可以正常工作。
(3)仿真:仿真工具使用ModelSim,编写VHDL测试文件

二、模块设计

2.1 模型计算机组成

在设计整体结构时,依据的是各指令的数据通路。然后采用自顶向下,逐步分解细化的方法进行设计。先整体模块,后局部模块。
从整体上看,模型计算机主要分为:CPU模块、外设输入模块、外设输出模块、存储模块。模型计算机结构框图如图2.1所示,具体模块有:节拍发生器模块、指令寄存器模块IR、算术逻辑单元模块ALU、数据寄存器模块DR、程序计数器模块PC、地址寄存器模块MAR、操作控制器模块等。系统流程图如下:

在这里插入图片描述

2.2 模型计算机的指令系统设计

在模型计算机中,指令用于验证模型机能否正常工作。模型计算机可完成两个立即数相加,并将相加结果送入累加器。指令系统需要6条指令,为了方便描述,以“6+7”、“7-6”、“6&7”和“6×2”为例,具体如下:

LD  A,6;A←6,把6送入累加器A,操作码是00111110;
ADD A,7;A←A+7,把A中67相加,结果送入累加器A,操作码是11000110;
LD  A,7;	  A←7,把7送入累加器A,操作码是00111110;
SUB A,6;  A←A-6,把A中76相减,结果送入累加器A,操作码是00110011;
LD  A,6;  A←6,把6送入累加器A,操作码是00111110;
AND A,7;  A←A&6,把A中67相与,结果送入累加器A,操作码是01110001;
SRL;	  将累加器A中结果左移一位,操作码是10110110
HALT;运算完毕,停机,操作码是01110110

总线结构是单总线,数据总线位数8位、操作码和操作数合计为14×8位,存储器容量最少是14×8位;地址总线最少是4位。运算器是单累加器,实现加法、减法、逻辑与和移位(乘法)操作。

(1)本模型计算机指令“LD A,6”流程如下、“LD A, 7”相同:

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 ,7 ;把 A 中 6 与立即数 7 相加

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
T6:SR → dbus
dbus → A, IA=0, EDR=1
T7:空

(3)第三条指令 SUB A,7 ;把 A 中 7 与立即数 6 相减

T0:(PC) → MAR→ABUS, IMAR=0
T1:DBUS → DR, IDR=1
T2:(PC)+1 → PC, IPC=1
(DR)→IR, IIR=0, SUB=1
T3:(PC) → MAR → ABUS, IMAR=0
T4:DBUS → DR, IDR = 1
T5:(PC) + 1 → PC, IPC = 1
A+0 → SR
T6:SR → dbus
dbus → A, IA=0,EDR=1
T7:空

(4)第四条指令 AND A , 7 ;把 A 中 6 与立即数 7 相逻辑与

T0:(PC) → MAR→ABUS, IMAR=0
T1:DBUS → DR, IDR=1
T2:(PC)+1 → PC, IPC=1
(DR)→IR, IIR=0, AND=1
T3:(PC) → MAR → ABUS, IMAR=0
T4:DBUS → DR, IDR = 1
T5:(PC) + 1 → PC, IPC = 1
A+0 → SR
T6:SR → dbus
dbus → A, IA=0,EDR=1
T7:空

(5)第五条指令 SRL;把 A 中 每一位左移,最低位用‘0’补位

T0:(PC) → MAR→ABUS, IMAR=0
T1:DBUS → DR, IDR=1
T2:(PC)+1 → PC, IPC=1
(DR)→IR, IIR=0, SRL=1
T3:(PC) → MAR → ABUS, IMAR=0
T4:DBUS → DR, IDR = 1
T5:(PC) + 1 → PC, IPC = 1

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值