组成原理课设A类题RAM.doc_第1页
组成原理课设A类题RAM.doc_第2页
组成原理课设A类题RAM.doc_第3页
组成原理课设A类题RAM.doc_第4页
组成原理课设A类题RAM.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。计算机组成原理课程设计题 目: 设计求负数平方和的CISC模型计算机 院 (系): 计算机科学与工程学院 专 业: 网络工程 学生姓名: 学 号: 指导教师: 32323232。目 录1、 课程设计的题目和内容:3课程设计完成的内容32、 系统的总体设计:31、 模型机的指令系统和所有指令的指令格式41)I/O指令42)转移指令53)TEST指令54)MOV指令55)乘法指令56)自加指令57)存取指令5机器语言源程序27机器语言源程序的功能仿真波形图及结果分析27参考文献301、 课程设计的题目和内容: 设计一台嵌入式CISC模型计算机(采用定长CPU周期、联合控制方式),并运行能完成一定功能的机器语言程序进行验证。 要求连续输入5个有符号整数(用8位二进制补码表示,十六进制数输入)求所有负数的平方和并输出显示。说明:5个有符号数从外部输入; 一定要使用符号位(比如说SF),并且要使用负的时候转移(比如 说JS)或不为负的时候转移(比如说JNS)指令。课程设计完成的内容 1.完成系统的总体设计,画出模型机数据通路框图; 2.设计微程序控制器(CISC模型计算机)的逻辑结构框图; 3.设计机器指令格式和指令系统; 4.设计时序产生器电路; 5.设计所有机器指令的微程序流程图; 6.设计操作控制器单元;在CISC模型计算机中,设计的内容包括微指令格式(建议采用全水平型微指令)、微指令代码表(根据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存器和控制存储器等。具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。 7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件-图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件; 8.由给出的题目和设计的指令系统编写相应的汇编语言源程序; 9.根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去; 10.使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。)2、 系统的总体设计:整个系统数据通路如下所示:本模型机中的指令系统中共有9条基本指令,下表列出了每条指令的格式、汇编符号和指令功能。1、 模型机的指令系统和所有指令的指令格式1)I/O指令输入指令(IN1)格式:15 14 13 12 11 109 87 6 5 4 3 2 1操作码X XRdX X X X X X X X输入指令(OUT1)格式:15 14 13 1211 109 87 6 5 4 3 2 1操作码RsX XX X X X X X X X2)转移指令条件转移指令(JS)和无条件跳转指令(JMP)格式:15 14 13 1211 109 87 6 5 4 3 2 1操作码X X X Xaddr3)TEST指令15 14 13 1211 109 87 6 5 4 3 2 1操作码X XRdX X X X X X X X4)MOV指令MOV指令格式:15 14 13 1211 109 87 6 5 4 3 2 1操作码X XRdData5)乘法指令乘法指令MUL格式:15 14 13 1211 109 87 6 5 4 3 2 1操作码RsRdX X X X X X X X6)自加指令自加1指令(INC)格式:15 14 13 1211 109 87 6 5 4 3 2 1操作码RsX XX X X X X X X X7)存取指令取数指令(LAD)格式和存数指令(STOI)格式如下:15 14 13 1211 109 87 6 5 4 3 2 1操作码RsRdX X X X X X X X其中,对Rs和Rd的规定:Rs或Rd选定的寄存器0 0R00 1R11 0R21 1R3模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:76 5 4 3 2 1 0符号位尾数T1、T2、T3、T4与CLR、Q之间的关系图QCLRT1T2T3T4一个CPU周期现在,我们开始微程序控制器的设计,它包括以下几部分工作: (1)根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;(2)设计微指令格式和微指令代码表;(3)设计地址转移逻辑电路;(4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器; (5)设计微程序控制器的顶层电路。 首先做第一步,根据指令格式和指令系统设计所有机器指令的微程序流程图.对于我设计的模型机,对应的指令流程图如下所示: 第二步,指令流程图设计完成后,开始设计微指令格式和微指令代码表,按照要求,CISC模型机系统使用的微指令采用全水平型微指令,字长为25位,其中微命令字段为17位,P字段为2位,后继微地址为6位,其格式如下: 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 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 P1 P2 后继微地址按照这个格式,再根据我设计的指令流程图,可以得到:由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右代表的微命令信号依次为: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。微地址P1P2uA5uA000110100100011111101100001100010100010111111000002100010100011111110000003101000000011111111000D04100011100001111111000005100011101101111111000006100000100011111111010007101000111001111111000E0801000010001111111000000910001111110111111100000a10000010001111111101000b10000110010111111100000c10000000001101111100000D10001010001111001100000E1000000000111001110000100100001000111111100000第三步:设计好了微指令代码表之后,我们可以开始设计地址转移逻辑电路地址转移逻辑电路是根据微程序流程图3-2中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。由于微地址寄存器中的触发器异步置“1”端低电平有效,与A4A0对应的异步置“1”控制信号SE5SE1的逻辑表达式为:(A5的异步置“1”端SE6实际未使用)SE5=SFP(2)T4SE4=I7P(1)T4SE3=I6P(1)T4SE2=I5P(1)T4SE1=I4P(1)T4需要注意的是:地址转移逻辑电路中异步置“1”信号SE5SE1表达式的确定与P字段测试时转移微地址的确定密切相关.地址转移逻辑电路的实现代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDR IS PORT( I7,I6,I5,I4:IN STD_LOGIC; FZ,FC,T4,P1,P2:IN STD_LOGIC; SE6,SE5,SE4,SE3,SE2,SE1:OUT STD_LOGIC);END ADDR;ARCHITECTURE A OF ADDR ISBEGIN SE6=1; SE5=NOT (SF AND P2 AND T4); SE4=NOT(I7 AND P1 AND T4); SE3=NOT(I6 AND P1 AND T4); SE2=NOT(I5 AND P1 AND T4); SE1=NOT(I4 AND P1 AND T4);END A;编译通过之后生成图形符号,我们的地址转移逻辑电路就完成了。接下来继续生成微控制器里面的其他器件和电路:我们先看看微地址寄存器aa的设计,它的内部电路图如下所示: 可以看得出,AA中带有异步清“0”和异步置“1”功能的触发器MMM,它的实现代码如下: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 ISBEGIN PROCESS(CLR,SE,T2) BEGIN IF(CLR=0) THEN UA=0; ELSIF(SE=0)THEN UA=1; ELSIF(T2EVENT AND T2=1) THEN UA DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT DATAOUT=10000010001111111100000000; END CASE; UA(5 DOWNTO 0)=DATAOUT(5 DOWNTO 0); O(19 DOWNTO 0)=DATAOUT(25 DOWNTO 6); END PROCESS;END A; 程序中的25位控制信号就是按照上面确定的微指令代码表确定的。编译通过后生成了控制存储器,接下来该生成微命令寄存器MCOMMAND,同样也是通过VHDL来描述即可,它的实现代码如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MCOMMAND ISPORT( T2,T3,T4:IN STD_LOGIC; D:IN STD_LOGIC_VECTOR(19 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:OUT STD_LOGIC );END MCOMMAND;ARCHITECTURE A OF MCOMMAND ISSIGNAL DATAOUT:STD_LOGIC_VECTOR(19 DOWNTO 0);BEGIN PROCESS(T2) BEGIN IF(T2EVENT AND T2=1) THEN DATAOUT(19 DOWNTO 0)=D(19 DOWNTO 0); END IF; LOAD=DATAOUT(19); LDPC=DATAOUT(18) AND T4; LDAR=DATAOUT(17) AND T3; LDIR=DATAOUT(16) AND T3; LDRI=DATAOUT(15) AND T4; LDPSW=DATAOUT(14) AND T4; RS_B=DATAOUT(13); S2=DATAOUT(12); S1=DATAOUT(11); S0=DATAOUT(10); ALU_B=DATAOUT(9); SW_B=DATAOUT(8); LED_B=DATAOUT(7); RD_D=NOT(NOT DATAOUT(6) AND (T2 OR T3); CS_D=NOT(NOT DATAOUT(5) AND T3); RAM_B=DATAOUT(4); CS_I=DATAOUT(3); ADDR_B=DATAOUT(2); P1=DATAOUT(1); P2=DATAOUT(0); END PROCESS;END A;编译成功后创建图形文件即可以生成微命令寄存器MCOMMAND,然后再分别生成微地址转换器F1、F2、F3,三个器件代码分别如下所示:F1: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 ISBEGIN D(5)=UA5; D(4)=UA4; D(3)=UA3; D(2)=UA2; D(1)=UA1; D(0)=UA0;END A;F2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY F2 IS PORT( D:IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA5,UA4,UA3,UA2,UA1,UA0: OUT STD_LOGIC );END F2;ARCHITECTURE A OF F2 ISBEGIN UA5=D(5); UA4=D(4); UA3=D(3); UA2=D(2); UA1=D(1); UA0=D(0);END A;F3:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY F3 IS PORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);UA7,UA6,UA5,UA4,UA3,UA2,UA1,UA0: OUT std_logic );END F3;ARCHITECTURE A OF F3 ISBEGINUA7=D(7);UA6=D(6);UA5=D(5);UA4=D(4);UA3=D(3);UA2=D(2);UA1=D(1);UA0=D(0);END A;这些器件都生成玩后,可以进行下一步设计,也就是设计顶级电路,顶层电路是这样的:我们已经生成了CROM,我们还需要:算数逻辑单元ALU;状态条件寄存器LS74;暂存器LS273;通用寄存器LS273;1:2分配器FEN2;3选1数据选择器MUX3;5选1数据选择器MUX5;程序计数器PC;地址寄存器LS273;ROM芯片ROM16;指令寄存器IR;时序产生器COUNTER。各个部件对应的VHDL语言描述如下所示:ALU:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.all;ENTITY ALU ISPORT( 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 ISSIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL TEMP1:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESSBEGIN IF(S2=0 AND S1=0 AND S0=0) THEN-ADD AA=0&X; BB=0&Y; TEMP=AA+BB;ALUOUT=TEMP(7 DOWNTO 0); -CF=TEMP(8); IF (TEMP=100000000 OR TEMP=000000000) THEN ZF=1; ELSE ZF=0; END IF;ELSIF(S2=0 AND S1=0 AND S0=1) THEN -TEST TEMP1=Y; SF=TEMP1(7); ELSIF(S2=0 AND S1=1 AND S0=0) THEN -INC AA=0&Y; TEMP=AA+1; ALUOUT=TEMP(7 DOWNTO 0); -CF=TEMP(8); IF (TEMP=100000000) THEN ZF=1; ELSE ZF=0; END IF; ELSIF(S2=0 AND S1=1 AND S0=1) THEN -DEC AA=0&Y; TEMP=AA-1; ALUOUT=TEMP(7 DOWNTO 0); -CF=TEMP(8); IF (TEMP=000000000) THEN ZF=1; ELSE ZF=0; END IF; ELSIF(S2=1 AND S1=0 AND S0=0) THEN -AND TEMP1=X AND Y; ALUOUT=TEMP1; -CF=0; IF (TEMP1=00000000) THEN ZF=1; ELSE ZF=0; END IF; ELSIF(S2=1 AND S1=0 AND S0=1) THEN -OR TEMP1=X OR Y; ALUOUT=TEMP1; -CF=0; IF (TEMP1=00000000) THEN ZF=1; ELSE ZFBUS ALUOUT=Y;ELSIF(S2=1 AND S1=1 AND S0=1) THEN -MUL AA=0&X; BB=0&Y; TEMP=AA*BB; ALUOUT=TEMP(7 DOWNTO 0); IF(TEMP=10000000 OR TEMP=00000000) THEN ZF=1; ELSE ZF=0; END IF; ELSE ALUOUT=00000000 ; ZF=0; END IF; END PROCESS;END A;状态条件寄存器PSW:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PSW ISPORT( C,Z,LDPSW: IN STD_LOGIC; ZF,SF: OUT STD_LOGIC );END PSW;ARCHITECTURE A OF PSW ISBEGIN PROCESS(LDPSW) BEGIN IF(LDPSWEVENT AND LDPSW=1) THEN SF=C; ZF=Z; END IF; END PROCESS;END A;暂存器、通用寄存器、地址寄存器LS273:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS273 ISPORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END LS273;ARCHITECTURE A OF LS273 ISBEGIN PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK=1) THEN O=D; END IF; END PROCESS;END A;1:2分配器FEN2:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FEN2 ISPORT( X:IN STD_LOGIC_VECTOR(7 DOWNTO 0); WR,LED_B:IN STD_LOGIC; W1,W2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END FEN2;ARCHITECTURE A OF FEN2 ISBEGIN PROCESS(LED_B,WR) BEGIN IF(LED_B=0 AND WR=0) THEN W2=X; ELSE W1=X; END IF; END PROCESS;END A;3选1数据选择器MUX3:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX3 ISPORT(ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SW_B,CS:IN STD_LOGIC;N1,N2:IN STD_LOGIC_VECTOR(7 DOWNTO 0);EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX3;ARCHITECTURE A OF MUX3 ISBEGIN PROCESS(SW_B,CS) BEGIN IF(SW_B=0) THEN EW=ID; ELSIF(CS=0)THEN EW=N2; ELSEEW=N1;END IF; END PROCESS;END A;4选1数据选择器MUX4:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX4 ISPORT(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;ARCHITECTURE A OF MUX4_1 ISBEGIN PROCESS BEGIN IF(I11=0 AND I10=0) THEN X=R0; ELSIF(I11=0 AND I10=1)THEN X=R1; ELSIF(I11=1 AND I10=0)THEN X=R2; ELSEX=R3; END IF; END PROCESS;END A;程序计数器PC:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PC ISPORT( 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 ISSIGNAL QOUT: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(LDPC,CLR,load) BEGIN IF(CLR=0) THEN QOUT=00000000; ELSIF(LDPCEVENT AND LDPC=1) THEN IF(load=0) THEN QOUTPC ELSE QOUT=QOUT+1; -PC+1 END IF; END IF; END PROCESS; O=QOUT;END A;ROM芯片ROM:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.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 ISBEGINDOUT=0010000011111011 WHEN ADDR=00000000 AND CS_I=0 ELSE 0010000100000000 WHEN ADDR=00000001 AND CS_I=0 ELSE 0010001000000000 WHEN ADDR=00000010 AND CS_I=0 ELSE 0010001100000000 WHEN ADDR=00000011 AND CS_I=0 ELSE 0001000100000000 WHEN ADDR=00000100 AND CS_I=0 ELSE 0111010000000000 WHEN ADDR=00000101 AND CS_I=0 ELSE 0101000000000000 WHEN ADDR=00000110 AND CS_I=0 ELSE 1011000000000000 WHEN ADDR=00000111 AND CS_I=0 ELSE 0110000000000100 WHEN ADDR=00001000 AND CS_I=0 ELSE 0010000011111011 WHEN ADDR=00001001 AND CS_I=0 ELSE 0011001100000000 WHEN ADDR=00001010 AND CS_I=0 ELSE 0101000000000000 WHEN ADDR=00001011 AND CS_I=0 ELSE 1011001100000000 WHEN ADDR=00001100 AND CS_I=0 ELSE 0110000000010001 WHEN ADDR=00001101 AND CS_I=0 ELSE 1011000000000000 WHEN ADDR=00001110 AND CS_I=0 ELSE 0110000000001010 WHEN ADDR=00001111 AND CS_I=0 ELSE 1000000000010101 WHEN ADDR=00010000 AND CS_I=0 ELSE 1001111100000000 WHEN ADDR=00010001 AND CS_I=0 ELSE 0100111000000000 WHEN ADDR=00010010 AND CS_I=0 ELSE 1011000000000000 WHEN ADDR=00010011 AND CS_I=0 ELSE 0110000000001010 WHEN ADDR=00010100 AND

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论