注:该部分内容大约 120 字,阅读该部分大约需要 1 分钟
DVCC simulation environment(以下简称 DVCC)是一款适用于计算机组成原理课程的模拟软件。使用 QT C++构建。相较于其它版本,DVCC 可以脱离硬件设备,独立运行。可以选择读取微代码文件自动运行,也可选择手动配置信号运行。
注:该部分内容大约 10000 字,阅读该部分大约需要 25 分钟
主界面区域划分示意图如 Fig-2-1 所示,界面大致划分为 5 个区域,分别为:菜单栏区域、电路图区域、微指令信息区域、运行状态区域、快捷按钮&信号控制区域。
新建一个窗口
新建窗口独立于原有窗口。
打开、保存、另存微代码文件
.dvc / .txt
.dvc
,注:非
2
位地址标准的微代码,而是
DVCC 专用 4
地址微代码)
txt
格式,同时保存的微代码格式为
2
为地址的标准的微代码。文件名为(Stander_file_ave_yy-mm-dd_hh-mm-ss.txt
)
黏贴微代码
黏贴的微代码应该为微代码文件内容。
打开内存查看器
内存查看器详细信息见
2.1.7.1 RAM 面板
&&
2.1.7.2 ROM 面板
选择打开关闭微代码信息框
微代码信息框见
2.1.4
微代码信息框
配置运行设置
在版本
1.4.2.2
该菜单项仅能配置指令运行的间隔时间
打开运行日志浮动面板
日志浮动面板见
2.1.7.3 运行日志
保存运行日志
保存的文件名格式为log_save_file_yy-mm-dd_hh-mm-ss.txt
RAM/ROM 查看器面板
内存查看器详细信息见
2.1.7.1 RAM 面板
&&
2.1.7.2 ROM 面板
部件选择
选择加载的部件,未加载的部件在运行过程中所有的操作将被忽略。
微指令转换器
转换器使用说明见
2.5.2 DVCC 转换器
其它面板
注:目前未有任何功能
选项菜单栏->设置->通用->默认窗口大小
略
在电路图区域,各部件的数据位于其中心,需要注意,注入 ALU 等单元仅在输出结果或输入数据时才会显示数据。
各个信号的标注为该信号是否有效,例如LDDR1: 1
表示为
LDDR1
信号有效。不可简单的将信号有效与微代码为
1 等价。
注意:CN
在有效时表示无进位。
DVCC 信号详细信息见
2.3 DVCC 信号详解
。
微指令信息框内有目前正在执行的微代码以及接下来一条微代码。
在微代码信息框内列的含义依次为:微指令序号、微指令 6 位 16 进制内容、M 信号、CN 信号、WE 信号、B1B0 信号、A 字段内容、B 字段内容、C 字段内容、U5-U0 内容、输出数据到总线的部件、从总线输入数据的部件、跳转方式。
注
:U5-U0
为微代码所填入的转移地址(序号),不一定为下一条微指令地址(序号)。
DVCC 信号详细信息见 2.3 DVCC 信号详解 。
在该区域显示目前软件运行信息,常见的信息有:
快捷按钮
快捷按钮与前文菜单栏功能一致,此处不再重复描述。
载入预设
通过左侧的下拉框可以选择需要导入的微代码文件,再点击载入按钮即可载入预设,同时需要注意一下几点:
单步(指令)
按钮时会提示会造成不可预期的错误(在未来版本可能会取消该提醒)。
presetcode
文件夹(具体路径为./resource/file_resource/presetcode/
)。
Auto Run
SWC SWA
控制台SWC、SWA开关,☑
代表有效(高电平)。反之为无效(低电平)。
按钮 | 含义 | 备注 |
---|---|---|
总清 | 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 |
数据输入区域分为两种情况:
自动运行( Fig-2-7 右图 )
手动运行( Fig-2-7 左图 )
RAM面板基本构成
编辑
按钮,通过点击编辑按钮可以更改RAM面板的状态(查看/编辑)。
刷新内存
按钮:可以通过点击该按钮来刷新面板的数据。目前测试中可以实现自动刷新。
编辑过程
输入的格式为
Fig-2-10
所示的正则式,请注意此处以8Bits环境为例。
ROM面板基本构成
编辑
按钮,通过点击编辑按钮可以更改ROM面板的状态(查看/编辑)。
刷新内存
按钮:可以通过点击该按钮来刷新面板的数据。目前测试中可以实现自动刷新。
编辑过程
输入的格式为
Fig-2-11
所示的正则式,请注意,请勿对非内容列进行编辑。
如图 Fig-2-11 所示,你可以在该面板进行保存,查看日志等操作。
设置大致分为 4 部分:
通用设置可以设置语言、主题、字体族、字体大小、窗口默认大小。
目前支持 2
种主题(macQss、orignal),你可以选择自主制作主题,让后将主题
qss
文件放置于程序文件夹下的theme
文件夹(具体路径:
./resource/file_resource/theme/
)。
字体族推荐 "Harmony OS Sans Sc",字体大下推荐 12 号字。
默认推荐窗口大小 1400x800
注:
调整默认起始微地址微指令序号:选择运行设置中的起始微地址设置项,将其设置为你所想要的起始地址,点击保存,即可调整默认起始微地址。
通过设置指令运行间隔时间滑动条,你可以调整指令运行时,每一条微指令的间隔时间。(推荐间隔时间为:1000ms)
实时刷新
激活实时刷新后,你的任何操作,将会被立即更新到电路图区域。
注:激活实时刷新对电脑资源占用量较大,请谨慎开启。
Fig-2-12 实时刷新关闭
Fig-2-13 实时刷新开启
该区域设置请谨慎调整。
你可以通过该区域的 ram,rom 行数调整 DVCC 的 ram、rom 长度,最大支持FFFF(H)行。在设置时,请注意你的行数不应该小于你所导入的微代码文件的最大地址。(你可以通过查看导入成功显示的消息框,确定是否含有超出地址范围的 RAM、ROM 内容)
(未开启)你可以通过设置环境 Bit 数目来调整 DVCC 的 RAM 的长度,同时设置总体总线的长度(最大 bit 数 16Bits)
(预期添加设置)可以通过设置,选择更换自动运行状态时是否清除内存内容。
打开设计器,通过选中该设置项,你可以使用 DVCC 设置器,在打开时会提示输入密钥(密钥的长度为 16 位数字,在输入时请不要输入任何非数字的字符,同时请注意选择关闭设计器后,再次开启需要再次提供密钥),你可以向老师申请提供密钥(如果你是老师,您可以发送邮件到 haley_ehrich@outlook.com 获取密钥)。
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功能选择 | 读写信号 | 外部设备接入 | 输入部件选择 | 输出部件选择 | 跳转方式、进位运算 | 下一微地址 |
B1 B0 | 功能描述 |
---|---|
00 | 选中开关输入 |
01 | 选中RAM |
10 | 选中LED输出 |
11 | NONE |
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 |
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 |
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 |
dvc文件为软件专用微代码文件,地址长度由原来的2位地址增长为4位地址。其支持的格式如下图所示。
注
: \uFF04 为:$
字符,请注意与
$
区别。
$
(\uFF04)
作为其起始字符,请注意使用$
作为每一行微代码的起始字符可能会无法使用于启东联机软件。
另存
菜单项将dvc文件保存为标准微代码txt文件,详见
2.1.2.1
文件菜单栏
。也可使用提供的DVCC转码器转为标准代码,详见
2.1.2.3
工具菜单栏
。
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.
DvccSimulationEnvironment
├─ LICENSE
├─ README.md
├─ handbook
├─ resource
│ ├─ file_resource
│ └─ imagine_res
└─ source code
├─ dvcc
├─ dvcc designer
└─ dvcc format converter
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
fuctionset.cpp
systemdatset.cpp
configset.cpp
versioninfo.cpp
Q:
DVCC与启东系列实验设备是否具有区别?
A:
DVCC在基本结构上与启东的保持一致,区别在于部分信号由低电平有效变为高电平有效,但在DVCC内
高电平
一般都代表为有效,而非电平的高低,此处也是为了能够区别于在数字逻辑等课程中的高低电平问题,个人认为计算机组成原理课程更应该关注于整个计算机基本构成,以及计算机是如何实现运行而非纠结于电平高低问题。
Q:
设计器密钥如何获取?
A:
你可以向你的任课教师申请获取该密钥。
Q:是否可以二次开发商用?
A:
可以二次开发商用,具体细节请查阅项目开源协议。