LC3设计补充说明

更新时间:2023-12-24 05:10:01 阅读量: 教育文库 文档下载

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

LC3设计补充说明—有关LC3汇编器、仿真器与CPU设计

1) LC-3 CPU 设计可不设计溢出及其相关逻辑

溢出判别用程序的实现,见sum_over.asm,其中注意:累加必须用两个源寄存器R4,R0,以判别两个源数据的符号位,否则累加方式用ADD R1,R1,R0,将无法用两个源数据的符号位与运算结果的符号位的判别法判别溢出,实例如下: …………….

ADDITON ADD R1,R4,R0 ;accumulation_sum to R1

JSR OVERFLOW ;goto: +/-overflow judgement and

;process(R1's symbol_bit and value in fact...)

ADD R4,R1,#0 ;R4 <= R1 ………………

2)有关LC3Edit 汇编器 (X—16进制 ﹟---10进制) ① 支持伪指令:

.ORIG address 程序开始 .END程序结束 ------两者必须有 .FiLL data .BLKW data block .STRINGZ “字符串”

不支持外部变量(SQRT)伪指令 .EXTERNAL SQRT; BASE .FILL SQRT;

不支持非法指令none(OPCode=1101b), 汇编中用插入:

none .FILL XD000; 以解决在QuartusII上的逻辑仿真和实验平台上运行问题。 RTI 中断返回指令仅能在特权模式下运行,如何进该模式,未提供。

② BR条件转移指令,在无下标nzp时,该汇编器仍编译为BRnzp(0000111…),如果设

计了溢出及其相关逻辑,若用 BR 判溢出,则手工修改nzp位为000,解决在QuartusII上的逻辑仿真和实验平台上运行。 ③ 汇编程序的.ORIG X0200,则 经编译后,其目标码首“字”= X0200,和实验平台Debug

程序加载的首地址吻合,注意:X0200不一定是程序的首地址,要与实验平台Debug程序加载与启动首地址一致, .ORIG X0060后的第一有效行必须是指令(助记符),而非宏指令。程序启动首地址必须LC-3 CPU 设计内的PC <= 16'h0200; 一致,描述如下:

always @(posedge clk or posedge reset) begin

if (reset)

begin //interim 16'h0200

PC <= 16'h0200; //Setup start first address,be equal to assemble_.ORIG 0200 H ………………

QuartusII上的逻辑仿真:编译后的*.hex文件,去首个“字”即.ORIG “值”,将其

按地址拷贝(列拷贝)到仿真存贮器初始化文件*.mif,即可。

实验平台上Debug加载:用编译后的*.obj文件改后缀为*.bin,即可。

注意:CPU检测程序,用汇编器设计编译,并在LC3Simulate仿真器运行。运行正

确后,再到QuartusII上的逻辑仿真和实验平台上运行,避免软硬错误混淆。

④ 程序最后一条必须添加:

在LC3Simulate仿真器上运行时:用HALT(停机)没有 LOOP BRnzp LOOP好 在QuartusII上的逻辑仿真和实验平台上运行时: LOOP BRnzp LOOP 否则,程序下滑到随机码,开始混乱,甚至会破坏原程序的运行结果。

⑤ 在参考资料内,提供的求和测试程序ADDITION.ASM,因循环,总运行时间长,不适

合用于QuartusII上的逻辑仿真。另外,累加应是1~10的和,因结果SUM=55;注释与指令操作不一致;程序结束LOOP BRnzp LOOP,连续允许操作,下滑无法停机等问题。

⑥ 利用程序模拟中断隐操作,TRAP指令等,并实现中断处理程序。

3)有关LC3Simulate仿真器

打开LC3Simulate仿真器,同时呈现LC3 Console 控制台窗口 ① LC3Simulate仿真器使用与说明 如下图1:

常态指示窗口首行PC值,可修改 用户程打启序最后开动 目连无本条标续 转本必文运条指令件行 时; 跨越单指操作进入单指操作离开单指操作停止程序运行到值时就暂停的断点值设置控制变达量触发程序断点值后运行修改控制变量即跳到选择行窗口的蓝箭头色,击蓝箭头行,该行变蓝鼠标选择程序新蓝按键的色盘即行输选将入中值跳键修处到后改EnterPC 下滑到仿真器自带程序单指操作 下滑到仿真器自带程序“跳转时”暂停操作 触发程序断点功能: 鼠标选择需要断点的程序行,该行变蓝色,击该按钮,程序PC断点标志●就呈现该行首,或双击行首·处,即可。 可反复设置若干程序PC断点。以便调试程序。 通常,用户程序单指操作用即F11,程序PC断点操作用或双击行首·处。需调试

执行某段程序,其首地址用选择,并用单指操作即F11。 ② LC3Simulate仿真器 ,未加载用户程序见下图2:

’ 下拉变量 同右边 常态:窗口的蓝箭头指向正在执行指令行 x-----数据或地址值 CC---N、Z、P 下拉 变量: PC X IR PSR CC R7~0 图1:LC3Simulate仿真器菜单工具操作

三处 相同 单指、断点操作时 显示跟踪信息部分 PC 指向 存贮器用户区首址

可拉动显示全部 64K空间内容。 没有加载用户程序时,非用户区有仿真系统程序

见3)⑥

图2:LC3Simulate仿真器初态窗口

LC3 Console 控制台窗口:显示停机(程序加HALT)等状态,模拟键盘和显示外设界面等。

③ 加载用户程序ADDITION.obj 的窗口信息,如下图3A:

汇编程序的. .ORIG X0060

最后条指令 地址 指令码 二进制 16进制 标号 汇编指令

加载的用户目标程序 执行指令条数计数 指令执行情况 空闲/运行

图3A:加载用户程序ADDITION.obj的窗口信息

④ 执行(击

运行按钮)用户程序ADDITION.obj情况,见下图3B

击后变灰 可击停机 窗口内状态同图3A

(因LOOP BRnzp LOOP) 不停的计数

图3B:执行(击

)用户程序ADDITION.obj

⑤ 击 停机按钮,看执行结果,见下图3B:

累加结果 在存贮器 内的结果 停机位置

在存贮器 内的结果

图3C:执行结果信息

注意:

用户程序可加载到非用户区,但必须是非仿真器自带程序用区,本例就加载在 系统陷阱(TRAP)矢量地址空间内,即 .ORIG X0060。见3)⑥⑴

提供较全面的LC3_CPU的检测程序lc3_test.asm,可据需要用注释符“;”进行删改。请仔细阅读。

⑥ LC3Simulate仿真器---仿真器非用户区的自带服务程序分布 包括:模拟I/O如键盘、显示、系统陷阱(TRAP)等的程序,

模拟硬件隐操作程序等。 (权限冲突、异常、外中断矢量区x0100-x1FFF无程序)

现截图,将自带的程序显示如下图4(可能有遗漏),同学们有兴趣自己分析其功能。 ⑴ 系统统陷阱(TRAP)矢量区: X0000-X00FF =================================

TRAP x00 均系无效

有效程序

图4a: 系统陷阱(TRAP)矢量区:X0000-X00FF

⑵ 相当“BIOS与OS区”: X0200-X2FFF NOP—非指令============================

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

Top