1、 扩展的2条指令的格式及功能

ADTW和SWRM指令的格式、功能、寻址方式:

指令

格式

功能

寻址方式

ADTW

ADTW DR

DR自增2

寄存器寻址

SWRM

SWRM DR,[SR]

DR与[SR]的值互换

寄存器间接寻址

ADTW和SWRM指令的操作码编码、微程序步数、微程序入口地址:

指令

操作码编码

微程序步数

微程序入口地址

ADTW

10100001(A1)

2

81

SWRM

11101001(E9)

4

8A

2、 指令所对应的微程序

微指令格式:

图1  微指令格式图

首先,一条微指令由以上几部分组成,首先是微下地址,也就是条件成立时转移的下地址,如果条件不成立,则将顺序执行微指令。

之后判别测试字段CI3到CI0和条件码字段SCC3到SCC0,判别测试字段只有在0011时条件码字段才有效,因此当判别测试字段和条件码字段为(30H)时,微指令执行结束后才会跳转到下地址,也就是前面谈及的条件成立时转移的下地址。当判别测试字段和条件码字段为(20H)时,将会从MAPROM映射入口地址,而当值为(E0)时,程序将顺序执行下一个地址的微指令。

第三部分是内存和IO读写控制MRW用来控制是否读写内存、是否读写串口,而当第一位/MIO的值为1时,无论后两位为任何值,都表示无内存和串口的读写操作。之后的I2到I0代表ALU的数据来源控制,I5到I3代表ALU的运算功能控制,I8到I6代表ALU的运算结果处理控制。

A口和B口代表需要使用的寄存器控制,B口可以作为源寄存器和目标寄存器,而A口则只能作为源寄存器,其中A口为0000表示不使用寄存器,1000是表示取IR的SR,0100或0101  时表示R4(SP)或R5(PC)。B口与A口相似,0000表示不使用寄存器,不同的是1000表示取IR则的DR,0100或0101则是指指R4(SP)或R5(PC)。

SST字段表示设置状态寄存器,它的值为000时表示CZVS不更新,而值为001时则表示CZVS更新,后面的SSH用于设置移位,SCI则设置进位。

最后的DC2用于设置专用寄存器接收控制,而DC1则用于设置内部总线数据来源选择控制。

编写的是第2条和第4条:

序号

指令

入口地址

下址

CI3-0

SCC3-0

MRW

I2-0

I8-6

I5-3

B口

A口

SST

SSHSCI

DC2

DC1

2

ADTW  DR

81

00

E0

4,3

3,0

8,0

1,1

0,0

30

30

4,3

3,0

8,0

1,1

0,0

4

SWRM  DR,[SR]

8A

00

E0

4,3

0,0

8,0

0,0

0,0

00

E0

4,4

1,0

0,8

0,0

3,0

00

E0

1,7

3,0

8,0

0,0

0,0

30

30

0,2

1,0

0,0

0,0

0,1

ADTW指令各字段值的意义:

从这张表中我们可以看出ADTW指令的入口地址为81,有两条微指令组成,分别对应的地址是81和82,MA81中对应的微程序下址字段为00不起作用,因为之后的CI3-0和SCC3-0字段为E0,表示顺序执行MA82,MRW为4表示无内存和串口的读写操作,I2-0为3表示只用到一个寄存器DR。I8-6为3表示将结果送到目标寄存器DR中并输出结果。I5-3为0表示执行的操作为源和目标寄存器相加,因为没有源寄存器,因此不起作用。之后的B口为8表示取目标寄存器,A口为0则是不取寄存器。SST字段为1、SSHSCI字段也为1表示进位输入信号为1可以实现自增的效果,而DC2和DC1全为0则表示不操作并且送开关到内部总线。

MA82中对应的大多数字段值与MA81相同,不同的是MA82中对应的微程序下址字段为30指向判中断,代表指令执行结束,之后的CI3-0和SCC3-0字段为30,表示将会跳转到下地址,也就是30地址。其余部分均与MA81一致。

SWRM指令各字段值的意义:

SWRM指令的入口地址为8A,有四条微指令组成,分别对应的地址是8A、8B、8C和8D,MA8A中对应的微程序下址字段为00不起作用,因为之后的CI3-0和SCC3-0字段为E0,表示顺序执行MA8B,MRW为4表示无内存和串口的读写操作,I2-0为3表示用到了寄存器DR。I8-6为0表示将结果直接输出到Q寄存器当中。I5-3为0表示执行的操作为源和目标寄存器相加。之后的B口为8表示取目标寄存器,A口为0则是不取寄存器。SST字段和SSHSCI字段全为0表示进位输入信号为0吧并且不修改CZVS,而DC2和DC1全为0则表示不操作并且送开关到内部总线。

MA8B中字段值与MA8A不同的是I2-I0为4表示取另一个寄存器,同时I8-I6为1表示不作保存,直接输出F。A口为8表示取源寄存器,DC2为3则表示地址寄存器接收。MA8C中字段值不同的是MRW字段为1,,表示需要进行读内存的操作,I2-I0为7则表示源寄存器送外部输入的D数据。MA8D中微程序下址字段为30指向判中断,代表指令执行结束,之后的CI3-0和SCC3-0字段为30,表示将会跳转到下地址,也就是30地址。I2-0的值为2,表示将Q寄存器作为源寄存器;DC1的值为1表示送ALU输出到内部总线。

微程序控制器的组成框图:

图4  微程序控制器的组成框图

通过该图我们可以发现微指令寄存器中存放着当前正在执行的微指令,微指令寄存器将控制字段的微命令信号发出去执行。同时将判别字段的判别测试字段CI3到CI0和条件码字段SCC3到SCC0分别发送到微程序定义器Am2910和微指令转移控制条件SCC Gal当中,微程序定义器根据控制条件判断是跳转到下地址还是顺序执行或者是通过MAPROM映射入口地址。

3、ABEL语言源程序编辑以及JED文件生成

在烧写之前要制做一份扩展名为.JED的文件,中文名称叫熔丝图文件。

(1)在指令操作码定义处添加上需要添加的两条指令及其操作码:

ADTW      =       (IR==[1,0,1,0,0,0,0,1]);

SWRM      =       (IR==[1,1,1,0,1,0,0,1]);

(2)在微指令定义处定义微指令所用到的地址:

如  MA81     =       (Y==[1,0,0,0,0,0,0,1]);

(3)在微指令入口地址定义处添加上微指令的入口地址,分别D0到D7分别代表8位的入口地址,注意需要使用指令名称。

(4)在指令下地址定义处添加该条指令对应的每条微程序执行完后所需要跳转到的下地址位置,注意要使用地址来添加,如:MA81。

(5)在判别测试字段处添加上微指令所使用到的判别测试字段CI3到CI0和条件码字段SCC3到SCC0,同样要用微指令的地址来添加。

(6)在主存读写字段处添加微指令对应的MRW编码。

(7)在运算器控制码处添加微指令所对应的数据来源控制、运算功能控制和运算结果处理控制。

(8)需要对微指令B口、A口进行编码,也就是微指令需要使用的寄存器控制,注意修改的是B30、B20..A00,而不是B300、B200..A000。

(9)添加对应微指令所需要的运算器SST、SSHSCI编码。

(10)最后需要对微指令所涉及的DC2与DC1字段编码进行添加。

4、MACH编程

从编辑ABEL源程序到烧写到MACH芯片,整个流程为:

图5  MACH芯片烧写流程图

操作步骤简要概况如下:

(1)将“C:\XP+DATA\XP_MACH\2A70504组基微全”下面的源文件目录复制到E盘。

(2)双击工程项目文件lc4256.syn,启动ispLEVER;

(3)双击.abl文件,进行编辑并保存;

(4)双击Compile Logic进行编译;

(5)双击JEDEC File,生成.jed文件;

(6)双击启动ispVM System;

(7) SCAN找到器件并双击;

(8) Browse找到.jed文件,OK;

(9) GO。将文件下载到MACH芯片。

五、编程验证及结果分析

(1)ADTW指令编程验证及实验结果:

图6  ANTW指令实验结果图

由于ADTW指令实现的功能是DR自增2,因此只需要一个寄存器D0,将R0作为DR并为其赋上初值3,使用ADTW指令并执行,可以发现R0变成了5,自增了2。

(2)SWRM指令编程验证及实验结果:

图7  SWRM指令实验结果图

图8  SWRM指令内存结果图

SWRM指令实现的功能是将DR寄存器中的值与以SR寄存器中的值为地址的地址空间中的值进行交换,因此需要一个寄存器D0,将R0作为DR并为其赋上初值3,需要一个寄存器D1,将R1作为SR并为其赋上初值2019。

之后需要为地址2019的地址空间赋上值为5,以便观察两个值是否交换。

使用SWRM指令并执行,执行过程中R0为目标寄存器,R1为源寄存器,执行结束后可以发现寄存器R0处的值已经变成了5,而与此同时使用D 2019查看内存的变化,可以发现内存中2019的位置已经变成了3,两者发生了互换。

Am2910的指令扩展相关推荐

  1. 计算机组成 指令扩展,计算机组成原理课程设计--指令扩展设计.doc

    计算机科学学院 课程设计报告 课程 计算机组成原理 题目 的实现(指令扩展) 年级 2009级 专业 计算机科学与技术 学号 学生 多啦小鹏 任课教师 2012年 2月 28日 课程设计题目的求值(指 ...

  2. XDocReport 的简单使用 操作word 替换变量,动态图片,指定操作指令(程序)扩展(转自:http://www.cnblogs.com/fish-in-sky/p/4973237.html)

    XDocReport 主要是操作word,如动态插入数字.汉字.图片,也可以通过指令形式去执行程序输出结果. 1,模版变量定义. 1)新建word: 2)替换简单动态变量:Ctrl + F9   编辑 ...

  3. 嵌入式系统——指令操作扩展

    指令操作码扩展   指令主要分为两部分:操作码 + 操作数.指令操作码扩展主要思想是,在给定的指令字长情况下,确定操作数的位数(双操作数.单操作数.无操作数等),再用余下的位数作为操作码的位数.指令扩 ...

  4. vue 02-上计算属性、样式的操作,指令(含自定义,全局和局部)

    计算属性: 是一个函数,所依赖的元数据变化时,就会再次执行 典型案例todolistcomputed:{计算属性: function(){return 返回值} 使用: {{计算属性}}}与metho ...

  5. SIMD指令集——一条指令操作多个数,SSE,AVX都是,例如:乘累加,Shuffle等

    SIMD指令集 from:https://zhuanlan.zhihu.com/p/31271788 SIMD,即Single Instruction, Multiple Data,一条指令操作多个数 ...

  6. ARM指令寻址方式之: 内存访问指令寻址

    4.2  内存访问指令寻址 根据内存访问指令的分类,内存访问指令的寻址方式可以分为以下几种. ① 字及无符号字节的Load/Store指令的寻址方式. ② 杂类Load/Store指令的寻址方式. ③ ...

  7. ARM指令寻址方式之: 数据处理指令的寻址方式

    4.1  数据处理指令的寻址方式 4.1.1  数据处理指令的寻址方式概要 数据处理指令的基本语法格式如下. <opcode> {<cond>} {S} <Rd>, ...

  8. Visual C++利用Intel C++ 编译器提升多核性能与多媒体指令支持获取更高的程序效率与缩小程序体积

    Intel c++编译器有下列优点,建议VC++项目开发采用intel c++编译器取代VS自带c++编译器: 与 Microsoft Visual C++ 相兼容,可以嵌入 Microsoft Vi ...

  9. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(1) - 概述/历史/新数据类型/XMM寄存器组

    SSE Instructions SSE Overview & History Intel SSE技术的全称是Streaming SIMD Extension,中文译作流式单指令多数据指令扩展 ...

  10. 单指令多数据SIMD的SSE/AVX指令集和API

    https://software.intel.com/sites/landingpage/IntrinsicsGuide/# Technologies MMX SSE SSE2 SSE3 SSSE3 ...

最新文章

  1. jq 数组不重复_一道简单的数组遍历题,加上四个条件后感觉无从下手
  2. 计算机文化英文15版答案,15信高《计算机文化基础》期中考试题答案
  3. 拆解Mate 30 Pro,内部双重散热、铜管一体紫色防滚架,太酷了!
  4. .Net Core中的日志组件(Logging)
  5. super和this关键字详解
  6. [链接].VGA信号时序
  7. 【金融申请评分卡】数据准备 - 造衍生变量
  8. clion生成qt的qrc文件
  9. UE4简单水体使用记录
  10. PhotoShop简介
  11. qq西游服务器制作教程,QQ西游修罗版开区一键服务端+完整客户端+GM辅助工具+教程...
  12. 【VMware】【XShell】从虚拟机下载文件到本地
  13. vue2 项目启动一直卡在98%Starting development server...98% after emitting CopyPlugin
  14. ddos流量攻击有多少G_如何防护ddos流量攻击?
  15. [Zookeeper-3.6.2源码解析系列]-14-Zookeeper使用到的Reactor网络模型原理分析
  16. Android 框架问题分析案例 - 谁杀了桌面?
  17. 简单的新闻发布网站设计模板_如何创建简单有效的设计模板
  18. stm32关定时器_STM32定时器中断设置方法
  19. 2020年中级数据库系统工程师考试笔记13—数据库发展和新技术
  20. windows下安装rattle包所踩的坑

热门文章

  1. 【java算法】二分查找算法详解
  2. zen3 服务器芯片,AMD EPYC霄龙服务器处理器亮相,Zen3架构性能飙升
  3. java的return用法
  4. 为什么调试的时候需要编译选项中添加 -g,readelf命令.
  5. Vue中使用pdf.js通过流的方式传参给pdfviewer.html
  6. OpenCV 头像训练与识别
  7. WPF使用PictureBox
  8. 联想y7000p电池固件下载_刚读大学要用电脑,联想系列这3款笔记本学生党绝对喜欢...
  9. 挑战程序设计竞赛是c语言编写的嘛,POJ 2115 C Looooops 题解《挑战程序设计竞赛》...
  10. 使用 VMware vRealize Automation 6.2.1 中的 Remote Console (VMRC) 选项连接到资源失败,并显示以下错误: 无法建立远程控制台连接