DVCC模拟实验环境

最新版本下载地址

CONTENT

一 简介

注:该部分内容大约 120 字,阅读该部分大约需要 1 分钟

DVCC simulation environment(以下简称 DVCC)是一款适用于计算机组成原理课程的模拟软件。使用 QT C++构建。相较于其它版本,DVCC 可以脱离硬件设备,独立运行。可以选择读取微代码文件自动运行,也可选择手动配置信号运行。

二 DVCC 使用手册

注:该部分内容大约 10000 字,阅读该部分大约需要 25 分钟

2.1 界面

菜单栏
Fig-2-1 DVCC界面功能划分示意图
  1. 菜单栏
  2. 电路图显示区域
  3. 微指令信息显示框
  4. 运行状态状态栏
  5. 快捷按钮&信号控制区域
  6. 浮动面板

2.1.1 界面概述

主界面区域划分示意图如 Fig-2-1 所示,界面大致划分为 5 个区域,分别为:菜单栏区域、电路图区域、微指令信息区域、运行状态区域、快捷按钮&信号控制区域。

2.1.2 菜单栏介绍

菜单栏
Fig-2-2 菜单栏
菜单栏共有5项,分别为文件、运行、工具、选项、关于菜单栏。

2.1.2.1 文件菜单栏

2.1.2.2 运行菜单栏

2.1.2.3 工具菜单栏

2.1.2.4 选项菜单栏

2.1.2.5 关于菜单栏

2.1.3 电路图区域介绍

电路图
Fig-2-3 电路图

在电路图区域,各部件的数据位于其中心,需要注意,注入 ALU 等单元仅在输出结果或输入数据时才会显示数据。

各个信号的标注为该信号是否有效,例如LDDR1: 1表示为 LDDR1 信号有效。不可简单的将信号有效与微代码为 1 等价。

注意:CN 在有效时表示无进位。
DVCC 信号详细信息见 2.3 DVCC 信号详解

2.1.4 微指令信息区域

微指令信息框
Fig-2-4 微指令信息框

微指令信息框内有目前正在执行的微代码以及接下来一条微代码。

在微代码信息框内列的含义依次为:微指令序号、微指令 6 位 16 进制内容、M 信号、CN 信号、WE 信号、B1B0 信号、A 字段内容、B 字段内容、C 字段内容、U5-U0 内容、输出数据到总线的部件、从总线输入数据的部件、跳转方式。

:U5-U0 为微代码所填入的转移地址(序号),不一定为下一条微指令地址(序号)。

DVCC 信号详细信息见 2.3 DVCC 信号详解

2.1.5 运行状态区域

运行状态栏
Fig-2-5 运行状态栏

在该区域显示目前软件运行信息,常见的信息有:

2.1.6 快捷按钮&信号控制区域

2.1.6.1 快捷按钮

快捷按钮
Fig-2-6 快捷按钮

2.1.6.2 信号控制按钮

信号控制按钮
Fig-2-7 信号控制按钮
按钮 含义 备注
总清 PC内容清0 \
手动脉冲 T3/T4脉冲 \
LDAR AR寄存器接入总线 \
LDAD(LEDB) PC计数器接入总线、LED接入总线 PC需要选中也即LDPC信号有效
LDDR1 DR1接入总线 \
LDDR2 DR2接入总线 \
LDPC PC计数器选中 \
CE RAM片选信号,也即RAM有效 \
WE 有效WRITE,无效READ \
AR ALU带进位运算,运算结果影响ZI、CY \
SWB 数据开关数据送入总线 \
ALUB ALU运算结果送入总线 ALUB是ALU运算开启的前提,也即仅在ALUB信号有效时ALU进行运算
PCB PC计数器送入总线 PC需要选中也即LDPC信号有效
299B 299B接入/送入总线 类似于ALUB

2.1.6.3 数据输入区域

数据输入区域 数据输入区域
Fig-2-7 数据输入区域

数据输入区域分为两种情况:

2.1.7 浮动面板介绍

ram rom 面板
Fig-2-8 Ram Rom 内存面板(非编辑态)

2.1.7.1 RAM 面板

RAM面板
Fig-2-9 RAM面板
Fig-2-10 RAM内容正确格式(8Bits为例)

2.1.7.2 ROM 面板

ROM面板
Fig-2-11 ROM面板
Fig-2-11 ROM内容正确格式

2.1.7.3 运行日志

运行日志
Fig-2-11 运行日志

如图 Fig-2-11 所示,你可以在该面板进行保存,查看日志等操作。

2.2 设置使用

设置大致分为 4 部分:

  1. 通用设置
  2. 运行设置
  3. 高级设置
  4. 其它设置

2.2.1 通用设置

通用设置可以设置语言、主题、字体族、字体大小、窗口默认大小。

2.2.2 运行设置

2.2.3 高级设置

该区域设置请谨慎调整。

2.2.4 其它设置

2.3 DVCC 信号详解

2.3.1 24位微程序含义

Tab-2-1 ALU功能表
S3-S0 M CN WE B1 B0 A B C U5-U0
24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
ALU功能选择 ALU功能选择 ALU功能选择 读写信号 外部设备接入 输入部件选择 输出部件选择 跳转方式、进位运算 下一微地址

2.3.2 ALU功能表

ALU功能表
Fig-2-14 ALU功能表

2.3.3 B1 B0

Tab-2-2 B1B0功能表
B1 B0 功能描述
00 选中开关输入
01 选中RAM
10 选中LED输出
11 NONE

2.3.4 A字段功能表

Tab-2-3 A字段功能表
A3 A2 A1 功能描述 备注
000 NONE
001 LDRi 选择同指令寄存器(IR)的最低2位(I1,I0)配合。
I1,I0=00时为输入到R0寄存器;
I1,I0=01时为R1;
I1,I0=10时为R2。
010 LDDR1 DR1选中
011 LDDR2 DR2选中
100 LDIR IR选中
101 LDAD PC计数器选中 ( 选中PC计数器也即LDPC有效 )
110 LDAR 地址寄存器选中
111 NONE

2.3.5 B字段功能表

Tab-2-4 B字段功能表
B3 B2 B1 功能描述 备注
000 NONE                  
001 RS-B I3,I2=00时为R0
I3,I2=01时为R1
I3,I2=10时为R2
010 RD-B I1,I0=00时为R0
I1,I0=01时为R1
I1,I0=10时为R2
011 RI-B 变址寄存器选中,默认R2寄存器
100 299-B 299选中输出
101 ALU-B ALU选中输出
110 PC-B PC选中输出 ( 选中PC计数器也即LDPC有效 )
111 NONE

2.3.6 C字段功能表

Tab-2-5 C字段功能表
C3 C2 C1 功能描述 备注
000 NONE
001 P(1) 如果U3为0:IR7-IR4作为测试条件。IR7-IR4替换下一顺序微地址的U3-U0。
如果U3为1:IR6-IR4作为测试条件,IR6-IR4替换下一顺序微地址的U2-U0。

010 P(2) IR3-IR2作为测试条件。IR3-IR2替换下一顺序微地址的U1-U0。
011 P(3) ZI/CY为true,下一顺序微地址的第U4位变1
100 P(4) SWC,SWA作为测试条件,使用SWC、SWA替换下一顺序微地址的U1、U0。
101 AR ALU带进位运算,运算结果影响CY/ZI。
110 LDPC 选中PC计数器,只有PC计数器选中后,PC计数器才可以输入、输出。
注意:在PC计数器输出后,PC内容加1。
111 NONE

2.4 微代码文件

2.4.1 .dvc微代码文件

dvc文件为软件专用微代码文件,地址长度由原来的2位地址增长为4位地址。其支持的格式如下图所示。
ram dvc 文件格式

Fig-2-15 ram dvc 文件格式

rom dvc 文件格式

Fig-2-16 rom dvc 文件格式

: \uFF04 为: 字符,请注意与 $ 区别。

2.4.2 .txt微代码文件

ram txt 文件格式

Fig-2-17 ram txt 文件格式

rom txt 文件格式

Fig-2-18 rom txt 文件格式

三 项目信息文件

3.1 开源协议

A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

3.2 Github 仓库说明

DvccSimulationEnvironment
├─ LICENSE
├─ README.md
├─ handbook
├─ resource
│  ├─ file_resource
│  └─ imagine_res
└─ source code
  ├─ dvcc
  ├─ dvcc designer
  └─ dvcc format converter

3.3 二次开发相关信息

3.3.1 项目文件信息

DVCC
├─ DVCC.pro
├─ DVCC.pro.user
├─ DVCC_zh_CN.qm
├─ DVCC_zh_CN.ts
├─ configset.cpp
├─ configset.h
├─ functionset.cpp
├─ functionset.h
├─ logo.ico
├─ main.cpp
├─ mainwindow.cpp
├─ mainwindow.h
├─ mainwindow.ui
├─ paint
│ ├─ aluqgitem.cpp
│ ├─ aluqgitem.h
│ ├─ arqgitem.cpp
│ ├─ arqgitem.h
│ ├─ cirgraphicsview.cpp
│ ├─ cirgraphicsview.h
│ ├─ dr1qgitem.cpp
│ ├─ dr1qgitem.h
│ ├─ dr2qgitem.cpp
│ ├─ dr2qgitem.h
│ ├─ inputqgitem.cpp
│ ├─ inputqgitem.h
│ ├─ irqgitem.cpp
│ ├─ irqgitem.h
│ ├─ microconqgitem.cpp
│ ├─ microconqgitem.h
│ ├─ outputqgitem.cpp
│ ├─ outputqgitem.h
│ ├─ pcqgitem.cpp
│ ├─ pcqgitem.h
│ ├─ r0qgitem.cpp
│ ├─ r0qgitem.h
│ ├─ r1qgitem.cpp
│ ├─ r1qgitem.h
│ ├─ r2qgitem.cpp
│ ├─ r2qgitem.h
│ ├─ ramqgitem.cpp
│ ├─ ramqgitem.h
│ ├─ shifter299qgitem.cpp
│ ├─ shifter299qgitem.h
│ ├─ signalsqgitem.cpp
│ └─ signalsqgitem.h
├─ resource
│ ├─ file_resource
│ │ ├─ configuration.ini
│ │ ├─ font
│ │ ├─ presetcode
│ │ └─ theme
│ └─ imagine_res
│ ├─ con_img
│ ├─ icon
│ ├─ img
│ ├─ menubar
│ └─ window_img
├─ systemdataset.cpp
├─ systemdataset.h
├─ toolpannel
│ ├─ componentsettingpannel.cpp
│ ├─ componentsettingpannel.h
│ ├─ componentsettingpannel.ui
│ ├─ logpannel.cpp
│ ├─ logpannel.h
│ ├─ logpannel.ui
│ ├─ ramcheck.cpp
│ ├─ ramcheck.h
│ ├─ ramcheck.ui
│ ├─ romcheck.cpp
│ ├─ romcheck.h
│ ├─ romcheck.ui
│ ├─ settingpannel.cpp
│ ├─ settingpannel.h
│ └─ settingpannel.ui
├─ versioninfo.cpp
└─ versioninfo.h

3.3.2 二次开发建议

四 Q&A

Q: DVCC与启东系列实验设备是否具有区别?
A: DVCC在基本结构上与启东的保持一致,区别在于部分信号由低电平有效变为高电平有效,但在DVCC内 高电平 一般都代表为有效,而非电平的高低,此处也是为了能够区别于在数字逻辑等课程中的高低电平问题,个人认为计算机组成原理课程更应该关注于整个计算机基本构成,以及计算机是如何实现运行而非纠结于电平高低问题。

Q: 设计器密钥如何获取?
A: 你可以向你的任课教师申请获取该密钥。

Q:是否可以二次开发商用?
A: 可以二次开发商用,具体细节请查阅项目开源协议。