计算机组成原理课程设计:设计mov指令详解

扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
计算机组成原理课程设计步骤需要哪些步骤,指令、微程序什么的?
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
连续输入5个有符号整数(8位二进制补码表示,用十六进制数输入),求最大的负数并输出显示.说明:①5个有符号数从外部输入; ②一定要使用符号标志位(比如说SF),并且要使用为负的时候转移(比如JS)或不为负的时候转移(比如JNS)指令.采用单数据总线结构的运算器,不采用RAM;★(范例)求1到任意一个整数N之间的所有奇数之和并输出显示,和为单字长说明:N从开关输入,和从数码管输出,然后输出显示停止.采用单数据总线结构的运算器,不采用RAM;★(范例)求1到任意一个整数N之间的所有奇数之和并输出显示,和为单字长说明:N从开关输入,和从数码管输出,然后输出显示停止.3.1.2 课程设计完成的内容 1.完成系统的总体设计,画出模型机数据通路框图; 2.设计微程序控制器(CISC模型计算机)的逻辑结构框图; 3.设计机器指令格式和指令系统; 4.设计时序产生器电路; 5.设计所有机器指令的微程序流程图; 6.设计操作控制器单元; 7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件----图形描述文件)对模型机中的各个部件进行编程
为您推荐:
其他类似问题
扫描下载二维码豆丁微信公众号
君,已阅读到文档的结尾了呢~~
计算机组成原理课程设计---设计指令系统
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
计算机组成原理课程设计---设计指令系统
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口当前位置: >>
计算机组成原理课程设计说明书
计算机组成原理课程设计说明书题目: 设计求负数平方和的 CISC 模型计算机院 (系) 计算机科学与工程学院 : 专 业: 计算机科学与技术学生姓名: 学 号:指导教师: 陈智勇 目录1 课程设计的题目与内容.................................... 11.1 1.2 题目......................................................... 1 内容......................................................... 12 系统总体设计 .......................................... 22.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 CISC 模型机数据通路框图的设计 ................................ 2 操作控制器的逻辑框图的设计................................... 2 模型机的指令系统和所有指令的指令格式的设计................... 3 时序产生电路的设计........................................... 6 机器指令的微程序流程图以及微指令的设计....................... 7 地址转移逻辑电路的设计....................................... 9 软件清单..................................................... 9 嵌入式 CISC 模型计算机的顶层电路图........................... 283 汇编语言源程序 ....................................... 29 4 机器语言源程序 ....................................... 30 5 机器语言源程序的功能仿真波形图及结果分析 ............. 31 6 故障现象和故障分析 ................................... 33 7 心得体会 .............................................. 34 桂林电子科技大学计算机组成原理课程设计说明书第1页1 课程设计的题目与内容1.1 题目 设计一台嵌入式 CISC 模型计算机(采用定长 CPU 周期、联合控制方式) ,并 运行能完成一定功能的机器语言程序进行验证,机器语言源程序功能如下: 连续输入 5 个有符号整数(用 8 位二进制补码表示,十六进制数输入) ,求 所有负数的平方和并输出显示。 说明: ① 5 个有符号数从外部输入; ② 一定要使用符号位 (比如说 SF) 并且要使用负的时候转移 , (比如说 JS) 或不为负的时候转移(比如说 JNS)指令; ③ 采用三数据总线结构的运算器,采用 RAM,先将输入数据依次存放在 RAM 的某一连续的存储区域内, 再依次读出判断是否为负数, 若为负数再求其平方和。 1.2 内容 (1) 完成系统的总体设计,画出模型机数据通路框图; (2) 设计微程序控制器(CISC 模型计算机)的逻辑结构框图; (3) 设计机器指令格式和指令系统; (4) 设计时序产生器电路; (5) 设计所有机器指令的微程序流程图; (6) 设计操作控制器单元; 在 CISC 模型计算机中,设计的内容包括微指令格式(建议采用全水平型微 指令) 、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制 器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储 器等。 具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来 设计) 。 (7) 设计模型机的所有单元电路,并用 VHDL 语言(也可使用 GDF 文件---图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的 整体,即形成顶层电路或顶层文件; (8) 由给出的题目和设计的指令系统编写相应的汇编语言源程序; (9) 根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序, 并将其设计到模型机中的 ROM 中去; (10) 使用 EDA 软件进行功能仿真,要保证其结果满足题目的要求; (其中要利 用 EDA 软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行 调试。 ) (11) 器件编程,并在 EDA 实验平台上进行操作演示。 桂林电子科技大学计算机组成原理课程设计说明书第2页2 系统总体设计2.1 CISC 模型机数据通路框图的设计2.2 操作控制器的逻辑框图的设计 桂林电子科技大学计算机组成原理课程设计说明书第3页2.3 模型机的指令系统和所有指令的指令格式的设计 1) I/O 指令 输入指令(IN1)格式: 15 14 13 12 11 10 操作码 ×× 输出指令(OUT1)格式: 15 14 13 12 11 10 操作码 Rs9 Rd87654 3 2 ××××××109 8 ××7654 3 2 ××××××102) 转移指令 非零条件转移指令(JNZ)格式: 15 14 13 12 11 10 9 8 操作码 ×× ×× 非负条件转移指令(JNS)格式: 15 14 13 12 11 10 9 8 操作码 ×× ×× 无条件转移指令(JMP)格式: 15 14 13 12 11 10 9 8 操作码 ×× ×× 3) MOV 指令 MOV 指令格式: 15 14 13 12 操作码7654 3 2 地址 addr107654 3 2 地址 addr107654 3 2 地址 addr1011 10 ××9 Rd87654 3 2 立即数 im104) 相加指令 相加指令(ADD)格式: 15 14 13 12 11 10 操作码 Rs 5) 有符号乘法指令 乘法指令(IMUL)格式: 15 14 13 12 11 10 操作码 ××9 Rd87654 3 2 1 ××××××09 Rd87654 3 2 1 ××××××0 桂林电子科技大学计算机组成原理课程设计说明书第4页6) 加 1 指令 加 1 指令(INC)格式: 15 14 13 12 11 10 操作码 ×× 7) 减 1 指令 减 1 指令(DEC)格式: 15 14 13 12 11 10 操作码 ×× 8) 相与指令 相与指令(AND)格式: 15 14 13 12 11 10 操作码 ×× 9) 字符串存储指令 乘法指令(STO)格式: 15 14 13 12 11 10 操作码 Rs 10) 字符串存储指令 乘法指令(STOI)格式: 15 14 13 12 11 10 操作码 Rs 11) 取数指令 取数指令(LAD)格式: 15 14 13 12 11 10 操作码 Rs9 Rd87654 3 2 1 ××××××09 Rd87654 3 2 1 ××××××09 Rd87654 3 2 1 ××××××09 8 ××7654 3 2 地址 addr109 Rd87654 3 2 1 ××××××09 Rd87654 3 2 1 ××××××0 桂林电子科技大学计算机组成原理课程设计说明书第5页指令系统表:指令格式 指令助记符 15--12 IN1 Rd MOV Rd,im LAD (Rs),Rd ADD Rs,Rd INC Rd DEC Rd JNZ addr STO Rs,addr JMP addr OUT1 Rs STOI Rs,(Rd) IMUL Rd,Rd AND Rd,Rd JNSaddr 11 10 9 8 7-----------0 输入设备→Rd 立即数→Rd ((Rs))→Rd (Rs)+(Rd)→Rd (Rd)+1→Rd (Rd)-1→Rd 若不等,则 addr→PC (Rs)→addr addr→PC (Rs)→输出设备 (Rs)→(Rd) (Rd) ×(Rd)→Rd (Rd) ∧(Rd)→Rd 若不为正, addr→PC 则 功能11 10 01 00 ×× ×× Rs Rs ×× ×× ×× Rs ×× Rs Rs ×× ×× ××Rd Rd Rd Rd Rd Rd ×× ×× ×× ×× Rd Rd Rd ×××××××××× im ×××××××× ×××××××× ×××××××× ×××××××× addr addr addr ×××××××× ×××××××× ×××××××× ×××××××× addr 桂林电子科技大学计算机组成原理课程设计说明书第6页其中,对源寄存器 Rs 与目的寄存器 Rd 的规定如下: Rs 或 Rd 00 01 10 11 选定的寄存器 R0 R1 R2 R3模型机规定数据的表示采用定点整数补码表示, 单字长为 8 位, 其格式如下: 7 符号位 6 5 4 3 2 1 0尾数2.4 时序产生电路的设计 T1、T2、T3、T4 与 CLR、Q 之间的关系图如图 1 所示。CLR Q T1 T2 T3 T4 一个 CPU 周期图1 桂林电子科技大学计算机组成原理课程设计说明书第7页2.5 机器指令的微程序流程图以及微指令的设计 要设计微程序控制器,首先要设计微程序流程图以及微指令,其次再设计地 址转移逻辑电路以及其它逻辑单元电路,设计步骤如下: 1. 根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每 条微指令的微地址和后继微地址; 2. 设计微指令格式和微指令代码表; 3. 设计地址转移逻辑电路; 4. 设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令 寄存器和控制存储器。 其中,微程序流程图设计如下图所示: 桂林电子科技大学计算机组成原理课程设计说明书第8页微指令流程图设计完成后,开始设计微指令格式和微指令代码表,按照要 求,CISC 模型机系统使用的微指令采用全水平型微指令,字长为 28 位,其中微 命令字段为 19 位,P 字段为 3 位,后继微地址为 6 位,其格式如下:LOAD LDPC LDAR LDIR LDRi LDPSW RS_B S2 S1 S0 ALU_B SW_B LED_B RD_D CS_D RAM_B CS_I ADDR_B CS_I P1 P2 P3 u5-uO按照以上格式,依据自身设计的微指令流程图,可以得到以下的微指令代码 表: 桂林电子科技大学计算机组成原理课程设计说明书第9页2.6 地址转移逻辑电路的设计 地址转移逻辑电路是根据微程序流程图中的棱形框部分及多个分支微地址, 利用微地址寄存器的异步置“1”端,实现微地址的多路转移。 由于微地址寄存器中的触发器异步置“1”端低电平有效,与 ?A5~?A0 对应 的异步置“1”控制信号 SE6~SE1 的逻辑表达式为: SE6=ZF?P(3)?T4 SE5=ZF?P(2)?T4 SE4=I15?P(1)?T4 SE3=I14?P(1)?T4 SE2=I13?P(1)?T4 SE1=I12?P(1)?T4 2.7 软件清单 ? ALU 设计: 其中 S2,S1,S0 表示的是算术逻辑运算单元 ALU,其功能表为: S2 S1 S0 功能 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 X+Y X-Y X+1 X-1 Y∧Y X∨Y Y Y×Y 桂林电子科技大学计算机组成原理课程设计说明书第 10 页VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED. ENTITY ALU IS PORT( X: IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y: IN STD_LOGIC_VECTOR(7 DOWNTO 0); S2,S1,S0: IN STD_LOGIC; ALUOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; SF,ZF: OUT STD_LOGIC ); END ALU; ARCHITECTURE A OF ALU IS SIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS BEGIN IF(S2='0' AND S1='0' AND S0='0') THEN --ADD AA&=X; BB&=Y; TEMP&=AA+BB; ALUOUT&=TEMP(7 DOWNTO 0); SF&=TEMP(7); IF (TEMP=&& OR TEMP=&&)THEN ZF&='1'; ELSE ZF&='0'; END IF; ELSIF(S2='0' AND S1='0' AND S0='1') THEN ALUOUT&=X-Y; IF(X&Y) THEN SF&='1'; ZF&='0'; ELSIF(X=Y) THEN SF&='0'; ZF&='1'; ELSE SF&='0'; ZF&='0'; END IF; ELSIF(S2='0' AND S1='1' AND S0='0') THEN AA&=Y; --INC --CMP(SUB) 桂林电子科技大学计算机组成原理课程设计说明书第 11 页TEMP&=AA+1; ALUOUT&=TEMP(7 DOWNTO 0); SF&=TEMP(7); IF (TEMP=&& OR TEMP=&&) THEN ZF&='1'; ELSE ZF&='0'; END IF; ELSIF(S2='0' AND S1='1' AND S0='1') THEN AA&=Y; TEMP&=AA-1; ALUOUT&=TEMP(7 DOWNTO 0); SF&=TEMP(7); IF (TEMP=&& OR TEMP=&&) THEN ZF&='1'; ELSE ZF&='0'; END IF; ELSIF(S2='1' AND S1='0' AND S0='0') THEN TEMP&=Y AND Y; ALUOUT&=TEMP; SF&=TEMP(7); IF (TEMP=&& OR TEMP=&&) THEN ZF&='1'; ELSE ZF&='0'; END IF; ELSIF(S2='1' AND S1='0' AND S0='1') THEN TEMP&=X OR Y; ALUOUT&=TEMP; SF&=TEMP(7); IF (TEMP=&& OR TEMP=&&) THEN ZF&='1'; ELSE ZF&='0'; END IF; ELSIF(S2='1' AND S1='1' AND S0='0') THEN ALUOUT&=Y; SF&=Y(7); ELSIF(S2='1' AND S1='1' AND S0='1') THEN TEMP&=Y *Y; SF&=TEMP(7); ALUOUT&=TEMP; IF (TEMP=&& OR TEMP=&&) THEN --IMUL --Rd-&BUS --OR --AND --DEC 桂林电子科技大学计算机组成原理课程设计说明书第 12 页ZF&='1'; ELSE ZF&='0'; END IF; ELSE ALUOUT&=&& ; ZF&='0'; END IF; END PROCESS; END A;算术逻辑单元 ALU 电路图如图 2 所示:图2? 4 选 1 数据选择器 MUX4 VHDL 源程序LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX4_1 IS PORT( R0,R1,R2,R3:IN STD_LOGIC_VECTOR(7 DOWNTO 0); X:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); I11,I10:IN STD_LOGIC ); END MUX4_1; ARCHITECTURE A OF MUX4_1 IS BEGIN PROCESS BEGIN IF(I11='0' AND I10='0') THEN 桂林电子科技大学计算机组成原理课程设计说明书第 13 页X&=R0; ELSIF(I11='0' AND I10='1')THEN X&=R1; ELSIF(I11='1' AND I10='0')THEN X&=R2; ELSE X&=R3; END IF; END PROCESS; END A;4 选 1 选择器 MUX4 电路图如图 3 所示:图3? 5 选 1 数据选择器 MUX5 VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX5 IS PORT( SW_B,RS_B,RAM_B,ADDR_B,ALU_B : IN STD_LOGIC; SW,RS,RAM,ADDR,ALU: IN STD_LOGIC_VECTOR(7 DOWNTO 0); W: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END MUX5; ARCHITECTURE A OF MUX5 IS SIGNAL SEL:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN SEL&=SW_B&RS_B&RAM_B&ADDR_B&ALU_B; PROCESS(SEL) BEGIN IF(SEL=&01111&)THEN 桂林电子科技大学计算机组成原理课程设计说明书第 14 页W&=SW; ELSIF(SEL=&10111&)THEN W&=RS; ELSIF(SEL=&11011&)THEN W&=RAM; ELSIF(SEL=&11101&)THEN W&=ADDR; ELSIF(SEL=&11110&)THEN W&=ALU; ELSE NULL; END IF; END PROCESS; END A;5 选 1 数据选择器电路图如图 4 所示:图4? 状态字器存器 PSW VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY PSW IS PORT( LDPSW : IN STD_LOGIC; ZI,SI: IN STD_LOGIC; FZ,FS: OUT STD_LOGIC ); END PSW; ARCHITECTURE A OF PSW IS 桂林电子科技大学计算机组成原理课程设计说明书第 15 页BEGIN PROCESS(LDPSW) BEGIN IF(LDPSW'EVENT AND LDPSW='1')THEN FZ&=ZI; FS&=SI; END IF; END PROCESS; END A;状态字寄存器 PSW 电路图如图 5 所示:图5? 微程序控制器 CROM CROM 的电路图如图 6 所示:图6 桂林电子科技大学计算机组成原理课程设计说明书第 16 页其内部电路图如图 7 所示:图7其组成的部件有以下: ? 地址转移逻辑 ADDRLIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADDR IS PORT( I15,I14,I13,I12:IN STD_LOGIC; FZ,FS,T4,P1,P2,P3:IN STD_LOGIC; SE6,SE5,SE4,SE3,SE2,SE1:OUT STD_LOGIC ); END ADDR; ARCHITECTURE A OF ADDR IS BEGIN SE6&=NOT ((NOT FS) AND P3 AND T4); SE5&=NOT ((NOT FZ) AND P2 AND T4); SE4&=NOT ( I15 AND P1 AND T4); SE3&=NOT (I14 AND P1 AND T4); SE2&=NOT (I13 AND P1 AND T4); SE1&=NOT (I12 AND P1 AND T4); END A; 桂林电子科技大学计算机组成原理课程设计说明书第 17 页?地址转移逻辑 ADDR 电路图如图 8 所示:图8? 微命令寄存器 MCOMMAND VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; ENTITY MCOMMAND IS PORT( T2,T3,T4:IN STD_LOGIC; D:IN STD_LOGIC_VECTOR(20 DOWNTO 0); LOAD,LDPC,LDAR,LDIR,LDRI,LDPSW,RS_B,S2,S1,S0:OUT STD_LOGIC; ALU_B,SW_B,LED_B,RD_D,CS_D,RAM_B,CS_I,ADDR_B,P1,P2,P3:OUT STD_LOGIC ); END MCOMMAND; ARCHITECTURE A OF MCOMMAND IS SIGNAL DATAOUT:STD_LOGIC_VECTOR(20 DOWNTO 0); BEGIN PROCESS(T2) BEGIN IF(T2'EVENT AND T2='1') THEN DATAOUT(20 DOWNTO 0)&=D(20 DOWNTO 0); END IF; LOAD&=DATAOUT(20); LDPC&=DATAOUT(19) AND T4; LDAR&=DATAOUT(18) AND T3; LDIR&=DATAOUT(17) AND T3; 桂林电子科技大学计算机组成原理课程设计说明书第 18 页LDRI&=DATAOUT(16) AND T4; LDPSW&=DATAOUT(15) AND T4; RS_B&=DATAOUT(14); S2&=DATAOUT(13); S1&=DATAOUT(12); S0&=DATAOUT(11); ALU_B&=DATAOUT(10); SW_B&=DATAOUT(9); LED_B&=DATAOUT(8); RD_D&=NOT(NOT DATAOUT(7) AND (T2 OR T3)); CS_D&=NOT(NOT DATAOUT(6) AND T3); RAM_B&=DATAOUT(5); CS_I&=DATAOUT(4); ADDR_B&=DATAOUT(3); P1&=DATAOUT(2); P2&=DATAOUT(1); P3&=DATAOUT(0); END PROCESS; END A;? 微命令寄存器 MCOMMAND 电路图如图 9 所示:图9 桂林电子科技大学计算机组成原理课程设计说明书第 19 页? 微地址寄存器 aa VHDL 源程序LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY MMM IS PORT( SE:IN STD_LOGIC; T2:IN STD_LOGIC; D:IN STD_LOGIC; CLR:IN STD_LOGIC; UA:OUT STD_LOGIC ); END MMM; ARCHITECTURE A OF MMM IS BEGIN PROCESS(CLR,SE,T2) BEGIN IF(CLR='0') THEN UA&='0'; ELSIF(SE='0')THEN UA&='1'; ELSIF(T2'EVENT AND T2='1') THEN UA&=D; END IF; END PROCESS; END A;微程序寄存器内部电路图如图 10 所示:图 10 桂林电子科技大学计算机组成原理课程设计说明书第 20 页微地址寄存器 aa 合成图如图 11 所示:图 11? 微地址转换器 F1 VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY F1 IS PORT( UA5,UA4,UA3,UA2,UA1,UA0: IN STD_LOGIC; D:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) ); END F1; ARCHITECTURE A OF F1 IS BEGIN D(5)&=UA5; D(4)&=UA4; D(3)&=UA3; D(2)&=UA2; D(1)&=UA1; D(0)&=UA0; END A; 桂林电子科技大学计算机组成原理课程设计说明书第 21 页? 微地址转换器 F1 电路图如图 12 所示:图 12? 控制存储器 CONROM VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; ENTITY CONTROM IS PORT(ADDR: IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); O:OUT STD_LOGIC_VECTOR(20 DOWNTO 0) ); END CONTROM; ARCHITECTURE A OF CONTROM IS SIGNAL DATAOUT: STD_LOGIC_VECTOR(26 DOWNTO 0); BEGIN PROCESS BEGIN CASE ADDR IS WHEN &000000& =& DATAOUT&=&000&; WHEN &000001& =& DATAOUT&=&000&; WHEN &000010& =& DATAOUT&=&000&; WHEN &000011& =& DATAOUT&=&111&; WHEN &000100& =& DATAOUT&=&000&; WHEN &000101& =& DATAOUT&=&000&; WHEN &000110& =& DATAOUT&=&000&; WHEN &000111& =& DATAOUT&=&000&; WHEN &001000& =& DATAOUT&=&001&; WHEN &001001& =& DATAOUT&=&000&; WHEN &001010& =& DATAOUT&=&000&; 桂林电子科技大学计算机组成原理课程设计说明书第 22 页WHEN &001011& =& DATAOUT&=&001&; WHEN &001100& =& DATAOUT&=&000&; WHEN &001101& =& DATAOUT&=&000&; WHEN &001110& =& DATAOUT&=&000&; WHEN &001111& =& DATAOUT&=&000&; WHEN &010000& =& DATAOUT&=&000&; WHEN &010001& =& DATAOUT&=&000&; WHEN &100000& =& DATAOUT&=&000&; WHEN OTHERS END CASE; UA(5 DOWNTO 0)&=DATAOUT(5 DOWNTO 0); O(20 DOWNTO 0)&=DATAOUT(26 DOWNTO 6); END PROCESS; END A; =& DATAOUT&=&000&;? 控制存储器 CONROM 电路图如图 13 所示:图 13? ROM 芯片的设计 VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; ENTITY ROM IS PORT( DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CS_I:IN STD_LOGIC ); END ROM; ARCHITECTURE A OF ROM IS BEGIN 桂林电子科技大学计算机组成原理课程设计说明书第 23 页DOUT&=&0001& WHEN ADDR=&& AND CS_I='0' ELSE &0101& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0010& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0001& WHEN ADDR=&& AND CS_I='0' ELSE &0101& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &1010& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0000& WHEN ADDR=&& AND CS_I='0' ELSE &0011& WHEN ADDR=&& AND CS_I='0' ELSE &0000&; END A;? ROM 芯片的设计电路图如图 14 所示:图 14 桂林电子科技大学计算机组成原理课程设计说明书第 24 页? 程序计数器 PC 程序计数器功能表: CLR 0 1 1 1 VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; ENTITY PC IS PORT( LOAD,LDPC,CLR:IN STD_LOGIC; D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END PC; ARCHITECTURE A OF PC IS SIGNAL QOUT:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(LDPC,CLR,LOAD) BEGIN IF(CLR='0')THEN QOUT&=&&; ELSIF(LDPC'EVENT AND LDPC='1')THEN IF(LOAD='0')THEN QOUT&=D; ELSE QOUT&=QOUT+1; END IF; END IF; END PROCESS; O&=QOUT; END A;LOAD × 0 1 1LDPC × ↑ 0 ↑功能 将 PC 清 0 BUS--&PC 不装入,也不计数 PC+1 桂林电子科技大学计算机组成原理课程设计说明书第 25 页程序计数器 PC 电路图如图 15 所示:图 15?RAM 芯片的设计RAM 芯片功能表: CS_D 1 0(↓) 0(↓) VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; ENTITY RAM IS PORT( RD_D,CS_D:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END RAM; ARCHITECTURE A OF RAM IS TYPE MEMORY IS ARRAY(0 TO 31) OF STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS(CS_D) VARIABLE MEM:MEMORY; BEGINRD_D 功能 × 0 1 写 读 选 择 桂林电子科技大学计算机组成原理课程设计说明书第 26 页IF(CS_D'EVENT AND CS_D='0') THEN IF(RD_D='0') THEN MEM(CONV_INTEGER(ADDR(4 DOWNTO 0))):=DIN; ELSE DOUT&=MEM(CONV_INTEGER(ADDR(4 DOWNTO 0))); END IF; END IF; END PROCESS; END A;? RAM 芯片的设计电路图如图 16 所示:图 16? 1:2 分配器单元 FEN2 VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FEN2 IS PORT( LED_B:IN STD_LOGIC; DBUS:IN STD_LOGIC_VECTOR(7 DOWNTO 0); FENOUT,OUTBUS:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END FEN2; ARCHITECTURE A OF FEN2 IS BEGIN PROCESS BEGIN IF(LED_B='0') THEN OUTBUS&=DBUS; ELSE FENOUT&=DBUS; 桂林电子科技大学计算机组成原理课程设计说明书第 27 页END IF; END PROCESS; END A;? 1:2 分配器单元 FEN2 电路图如图 17 所示:图 17? 时序产生器 COUNTER VHDL 源程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; ENTITY COUNTER IS PORT( CLK,CLR:IN STD_LOGIC; T2,T3,T4:OUT STD_LOGIC ); END COUNTER; ARCHITECTURE A OF COUNTER IS SIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN PROCESS(CLK,CLR) BEGIN IF(CLR='0') THEN T2&='0'; T3&='0'; T4&='0'; X&=&00&; ELSIF(CLK'EVENT AND CLK='1')THEN X&=X+1; T2&=(NOT X(1))AND X(0); T3&= X(1)AND (NOT X(0)); T4&=X(1)AND X(0); END IF; END PROCESS; 桂林电子科技大学计算机组成原理课程设计说明书第 28 页END A;? 时序产生器 COUNTER 电路图如图 18 所示:图 182.8 嵌入式 CISC 模型计算机的顶层电路图 桂林电子科技大学计算机组成原理课程设计说明书第 29 页3 汇编语言源程序MOV R1,11H ;寄存器 R1 用于存放 RAM 的某个连续区域的首地址 MOV R2,5H ;寄存器 R2 用于存放循环次数L0: IN1 R0 ;寄存器 R0 用于接收外部输入的数据 STOI R0,(R1);将 R0 中的数存放入 R1 中 RAM 的地址处 INC R1 DEC R2 JNZ L0 ;将地址加 1,跳到下一个地址 ;将循环次数减 1 ;循环不结束再重新跳回接收外部数据,循环结束则继续下面操作 ;寄存器 R0 用于存放结果MOV R0,0MOV R1,11H ;寄存器 R1 用于存放数据已存入 RAM 的某个连续区域的首地址 MOV R2,5H ;寄存器 R2 用于存放循环次数L1: LAD (R1),R3;寄存器 R3 用于存放刚才存入 RAM 的数据 INC R1 ;将地址加 1,跳到下一个地址AND R3,R3 ;取出的数自身相与,改变符号标志位 SF,判断其是否为负数 JNS L2 ;若不为负则跳转,取出下一个数IMUL R3,R3 ;若为负则将该数求平方和 ADD R3,R0 ;将平方和加入 R0L2:DEC R2 ;将循环次数减 1 JNZ L1 ;循环次数没有完成,则跳回去再取数STO R0,10H ;将 R0 存放的结果放回到 RAM 中 10H 的地址处 END:OUT1 R0;输出 R0 的结果内容 JMP END ;不断循环 桂林电子科技大学计算机组成原理课程设计说明书第 30 页4 机器语言源程序地址(十六进制) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14汇编语言源程序 MOV R1,11H MOV R2,5H L0: IN1 R0 STOI R0,(R1) INC R1 DEC R2 JNZ L0 MOV R0,0 MOV R1,11H MOV R2,5H L1: LAD (R1),R3 INC R1 AND R3,R3 JNS L2 IMUL R3,R3 ADD R3,R0 L2:DEC R2 JNZ L1 STO R0,10H END:OUT1 R0 JMP END机器代码 00 00 01 00 00 10 11 桂林电子科技大学计算机组成原理课程设计说明书第 31 页5 机器语言源程序的功能仿真波形图及结果分析从外部输入 5 个数据, 分别为 01 (1) FF , (-1) 00 , (0) FF , (-1) 00 , (00) , 得出以下波形图,结果分析如下: ① 当前执行的是指令 MOV R2,5H,R2 的值变为 05② 当前执行的是指令 DEC R2;R2 的值即将从 04 变成 03,而之前 R0 已从外部 接收 FF,R1 的地址也加 1,从 12 变成 13。③ 当前执行的是指令 LAD (R1),R3;R1 此时为 14,则将 14H 的地址中的内容 传给 R3,R3 从 00 变成 FF。 桂林电子科技大学计算机组成原理课程设计说明书第 32 页④ 当前执行的是指令 AND R3,R3;R3 中的内容与自身相与,内容不变,所以 R3 还是 FF。⑤ 当前执行指令 IMUL R3,R3;当前 R3 的内容为 FF,自身相乘变为 01,所以 R3 从 FF 变成 01。⑥ 当前执行的是指令 ADD R3,R0;R0 之前的值是 01,R3 的值是 01,两者相加 后存入 R0,R0 的值从 01 变成 02。 桂林电子科技大学计算机组成原理课程设计说明书第 33 页⑦ R0 将结果传出到输出总线,最终结果输出为 02。6 故障现象和故障分析在进行课程设计的时候,遇到了很多问题,出现了故障,以下是我在课程设 计出现的故障现象以及故障分析及解决: (1) 在进行波形仿真图分析的时候, 我把 INBUS 即全部输入 FF 的时候, 没有得出结果, 并且 OP 一直在 01 到 07 之间不断重复, 一直从 11 递减, R1 R0 一直为 00,R3 一直为 00,R2 则出现 05,FF,04,FF….,这时我意识到 它正在进行死循环。我再一次进行了各个寄存器的值的分析,发现 R2 与 R0 中的值不是自己想要的结果,我知道了问题出在了寄存器的使用上,我再一 次核查了自己的汇编程序,结果发现,R2 本身就是用来存循环次数的,在 接收外部数据的时候应该用 R0 接收,却写成 R2。将错误改正后,波形图不 再进行死循环,故障解决。 (2) 将死循环的问题解决后,发现结果得出来是 05,结果正确,OP 也是 按照自身编写的机器指令顺序完成的, R3, R2, R1, 均显示正常, R0 但是, MEN 中的之却一直是 …,这说明 RAM 一直没有存进数据,按照汇编程序分析,在进行 STOI R0,(R1)及 STO R0,10H 的时候,结果 MEN 应该是存入 FFFFFFFFFF05 了的,但是现在并 没有存入,说明 RAM 的存数出了问题,在打开 RAM.vhd 的时候,我发现, 我将原本为 PROCESS(CS_D)以及 IF(CS_D'EVENT AND CS_D='0') THEN 写 成了 PROCESS(RD_D)以及 IF(RD_D'EVENT AND CS_D='0') THEN, 所以才 会出现这样的故障,我将错误改正后,MEN 存进了我原先想要的数据,故 障解决。 (3) 在我以为这两个问题解决后,我高兴的以为自己已将课程设计完成, 但是,在我重新将输入的数据即 INBUS 全部置为 01 时,结果却是输出 05, 如果结果正确, 应该是 00, 难道是我的设计出了问题?我再次分析了 4 个寄 存器的值的变化情况,发现 R3 的值是 01,01,01,01..的重复出现,如果正常的 话,R3 的变化应该是 01,00,01,00…的重复才对,应该 01 不是负数,我再对 照了一下汇编代码,发现判断正负的代码 AND R3,R3 之后就是 JNS L2 和 IMUL R3,R3,问题应该是出现在这里了。难道是我 ALU 中的 AND 运算出 了问题,我又核查了 ALU 中的代码,发现代码没有出错。那应该就是错在 JNS 上了,我核查了地址转移逻辑 ADDR 中的代码,发现代码也没有写错。 桂林电子科技大学计算机组成原理课程设计说明书第 34 页那到底是什么原因?我又回过头来核查我的微指令流程图,惊奇地发现,原 来之前在进行 JNS 指令设计的时候, 错将为负判断后跳转的后继微地址写成 10H, 按照地址转移逻辑的计算应该为 20H。 将错误改正后, 结果显示为 00。 再输入不同的数据,结果输出正确,故障解决。7 心得体会在这次课程设计中, 我确实学到了很多东西。 我不仅学会了如何自己编写汇 编程序,自己设计微程序流程图,自己编写自己需要的微指令格式,并将其设计 成相应的微指令代码,我还学会了学习要认真刻苦,编写要细心,调试要耐心, 请教要谦虚。 在做设计的过程中, 我们会不理解信号量是怎么设计,不理解微程序流程的 每个步骤是什么信号量怎么设计的, 这时我们就要认真的研究课本, 要沉得下心。 在编写指令代码,机器代码的时候会知道 0101 真的很烦心,但是,只要够 细心,重复检查,就会发现正确的代码编写对之后的仿真有多么重要。 在调试的时候,我们会发现,往往波形显示的总不是我们所想要的结果,都 会遇到很多的错误,一定要耐心地把错误找出来,不要急躁。 在你遇到问题解决不出来, 抓耳挠腮的时候, 要学会如何谦虚地向他人请教。 做人一定要谦虚,尺有所短寸有所长,每个人总有他所擅长的地方,我们一定要 谦虚地向他人请教。 总的来说,计算机组成原理的课程设计让我们感受到了动手能力重要性,只 凭着脑子的思考、 捉摸是不能完成实际的设计的,只有在拥有科学知识体系的同 时,熟练掌握实际能力,包括编程经验的不断积累,才能把知识灵活、有效的运 用到实际课程设计中。参考文献[1] 陈智勇,周向红,陆二庆.计算机原理课程设计.[M].西安:西安电子科技大学出版 社,.
更多搜索:
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。}

我要回帖

更多关于 三菱plc mov指令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信