计算机组成原理课程设计设计嵌入式CISC模型计算机_第1页
计算机组成原理课程设计设计嵌入式CISC模型计算机_第2页
计算机组成原理课程设计设计嵌入式CISC模型计算机_第3页
计算机组成原理课程设计设计嵌入式CISC模型计算机_第4页
计算机组成原理课程设计设计嵌入式CISC模型计算机_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、 计算机组成原理课程设计说明书 题目:设计嵌入式CISC模型计算机 院系:计算机工程与科学学院 专业:网络工程 学号:1000380112 姓名:胡继恒 指导老师:陈志勇一 完成系统的总体设计 ALU状态条件寄存器 FCIRROM或RAM FZ FS操作控制器和时序产生器ARDRAC PC 具有时间标志的操作控制信号R2R0R1输出设备输入设备 二 操作控制器的逻辑框图三模型机的指令系统和所有指令的格式1) I/O指令输入指令(IN1)格式:7 6 5 4 3 2 1 0操作码 XX Rd输出指令(OUT1)格式:7 6 5 4 3 2 1 0操作码 Rs XX2) 转移指令条件转移指令(JS

2、)和无条件转移指令(JMP)格式: 7 6 5 4 3 2 1 0 操作码 X X X X 地址3) 比较指令和相加指令和相乘指令相加指令(ADD)和乘法(MUL)的格式:7 6 5 4 3 2 1 0操作码 Rs Rd4) MOV指令格式 7 6 5 4 3 2 1 0 操作码 X X Rd 立即数 5) 自减指令(DEC)7 6 5 4 3 2 1 0操作码 XX Rd6) TEST指令7 6 5 4 3 2 1 0操作码 XX Rd 助记符号 指令格式 功能 IN1 Rd1000 XX Rd将数据存到Rd中 OUT1 Rs1111 Rs XX(Rs) LED ADD Rs,Rd1100

3、Rs Rd(Rs)+(Rd) Rd JMP ADDR1110 XXXX ADDR ADDR PC DEC Rd1101 XX Rd (Rd)1 Rd MOV Rd,data1001 XX Rd Data Data Rd TEST Rd1010 XX Rd 80H-AC,锁存SF JS ADDR1011 XXXX ADDR若为负,则ADDR PC IMUL Rs,Rd0111 Rs Rd(Rs)*(Rd) Rd其中对Rs和Rd的规定 Rs 或 Rd选定寄存器 0 0R0 0 1R1 1 0R2模型机规定数据的表示采用定点整数补码表示,单字长8位,其格式如下: 76 5 4 3 2 1 0 符号位

4、 尾数四 时序产生电路 五 微程序流程图 00 PC ->AR PC+1 02RD MBUS -> IR 08SW-> BUSBUS->RdRs -> LEDP(1) IN1 OUT1 08 0FMOV TEST JS ADD DEC JMP MULPC->ARPC+109 0A 0B 0C 0D 0E 07Rd-> BUSBUS ->ACRS>BUSBUS->ACRd->BUSBUS->ACRs-> BUSBUS - >AC PC -> ARPC+1PC -> ARPC+103 04 20 06

5、12 13 15ROM->BUSBUS->PCAC-1->BUSBUS->RdROM ->BUSBUS - >RdRd->BUSBUS->DRRd->BUSBUS->DRAC锁存FSP(2) AC*DR->RdAC+DR->Rd 10 16 FS=1 FS=0ROM->BUSBUS->PC 20 30注:以 结尾的后继微地址都是00(1) 根据指令格式和指令系统的设计完成所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;(2) 设计微指令格式和代码表(3) 设计地址转移逻辑电路(4) 设计微程序

6、控制的其他逻辑电路,包括微地址寄存器、为命令寄存器、控制存取器 第二步,指令流程图设计完成后,开始设计微指令的格式和微指令的代码表按照要求,CISC模型机的系统使用采用双水平型微指令,字长为25位,其中微命令字段为17位,p字段为2位,后继微地址6位,其中格式如下 按照这个格式,再根据我的设计指令图,可以得到: 由微指令格式和微指令的程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右边代表微指令的信号依次是:LOAD、LDPC、LDAR、LDIR、LDRI、RD_B、RS_BALU_B、LDAC、WR、CS、SW_B、LED_B、LDFR微地址P1P2后继微地址000

7、000111001100100111100000001000001010010110010010110100010000000111000111001001011000000000000100100001101100111110000000000011010000010010111110000100000001111000010001101111000010101001000100011100100110100000000000100111100110010011110000000110010101000001001101111000000100001011111001100100111100

8、110000000110010000100011011110000001100011011000001001101111000010010001110111001100100111100001001100111110000100010001100000000000100001000111000001111000000000010010100011110000111100000000001001101000110010010110000000000101011000001001011111000010110010110100011111000111100000000010000001000110

9、010010110000000001100001000011001001111000000000六 顶层电路图生成微地址寄存器aa生成CROM控制器单元CISC模型机顶层电路图六 汇编语言源程序 MOV R1,0;寄存器R1用来存放最后的结果 MOV R2,4;记录5个数 INPUT:IN1 R0; 00 DEC R2; TEST R0 JS L1 TEST R2 JS L2 JMP INPUT L1:MUL R0,R0; ADD R0,R1; TEST R2 JS L2 IMP INPUT L2:OUT1 R1 END七 机器语言源程序助记符 地址(十六进制) 机器代码 MOV R1,0 0

10、0H 10010001 01H 00000000 MOV R2,4 02H 10010010 03H 00000100 INPUT:IN1 R0; 04H 10000000 DEC R2; 05H 11010010 TEST R0 06H 10100000 JS L1 07H 10110000 08H 00001110 TEST R2 09H 10100010 JS L2 0AH 10110000 0BH 00010101 JMP INPUT 0CH 11100000 0DH 00000100L1:IMUL R0,R0; 0EH 01110000 ADD R0,R1; 0FH 11000001

11、 TEST R2 10H 10100010 JS L2 11H 10110000 12H 00010101 JMP INPUT 13H 11100000 14H 00000100 L2:OUT1 R1 15H 11110100 END八 机器语言功能仿真图及波形分析执行MOV R1,0 MOV R2,4IN1 R0; DEC R2; TEST R0JS L1 为负执行IMUL然后ADD R0,R1然后判断R2为负则跳出输出,否则跳到继续输出九 故障现象和故障分析 顶层电路无法正常运行,结果发现是线的粗细影响顶层电路的连接,导致无法查出错误。十 心得体会 通过将近两周的学习,每天没日没夜的思索,

12、终于通过自己的努力,做出这个课程设计,虽然诸多地方按照书上来做,觉得很机械,从老师那基本没学到什么东西,自己不断看书,不断发掘,突然明白了许多东西,开始做时甚是迷茫加恐怖,但慢慢发现迎难而上,发现没有解决不了的问题真的学到了很多。十一软件清单1)ALU单元:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALU ISPORT(A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);B:IN STD_LOGIC_VE

13、CTOR(7 DOWNTO 0);S1,S0:IN STD_LOGIC;BCDOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SF:OUT STD_LOGIC);END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINPROCESS(S1,S0)BEGINIF(S1='0' AND S0='0')THEN -执行加法运算AA<='0'&A;BB<='0'&B;TEMP

14、<=AA+BB;BCDOUT<=TEMP(7 DOWNTO 0);ELSIF(S1='0' AND S0='1')THEN -判断符号位IF(A(7)='0') THENSF<='0'ELSIF(A(7)='1') THENSF<='1'END IF;ELSIF(S1='1' AND S0='0')THEN -执行减一运算TEMP<=A-1;BCDOUT<=TEMP(7 DOWNTO 0);ELSIF(S1='1'A

15、ND S0='1')THENTEMP(6 DOWNTO 0)<=A(6 DOWNTO 0)*B(6 DOWNTO 0);TEMP(7)<=A(7) XOR B(7);BCDOUT<=TEMP(7 DOWNTO 0);SF<=TEMP(7);END IF;END PROCESS;END A;2)状态字单元:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS74 ISPORT(LDFR:IN STD_LOGIC;CY,ZI,SF:IN STD_LOGIC;FC,FZ,FS:OUT STD_LOGIC);END

16、 LS74;ARCHITECTURE A OF LS74 ISBEGINPROCESS(LDFR)BEGINIF(LDFR'EVENT AND LDFR='1')THEN FS<=SF; END IF;END PROCESS;END A;3)暂存器、通用寄存器、地址寄存器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 DOW

17、NTO 0) );END LS273;ARCHITECTURE A OF LS273 ISBEGIN PROCESS(CLK) BEGIN IF(CLK'EVENT AND CLK='1') THEN O<=D; END IF; END PROCESS;END A;4)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_

18、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;5)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:

19、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;6)4选1数据选择器MUX4:LIBRARY IEEE;USE IEEE

20、.STD_LOGIC_1164.ALL;ENTITY MUX4 ISPORT(C,D,E,F: IN STD_LOGIC;X1,X2,X3,X4: IN STD_LOGIC_VECTOR(7 DOWNTO 0);W: out STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX4;ARCHITECTURE A OF MUX5 ISSIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN SEL<=F&E&D&C; PROCESS(SEL) BEGIN IF(SEL="1110") THEN

21、 -R0_out W<=X1; ELSIF(SEL="1101") THEN -R1_out W<=X2; ELSIF(SEL="1011") THEN -R2-out W<=X3; ELSIF(SEL="0111") THEN -R3_out W<=X4; ELSE null; END IF; END PROCESS;END A;7)程序计数器PC:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.ST

22、D_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&qu

23、ot; ELSIF(LDPC'EVENT AND LDPC='1') THEN IF(load='0') THEN QOUT<=D; -BUS->PC ELSE QOUT<=QOUT+1; -PC+1 END IF; END IF; END PROCESS; O<=QOUT;END A;8)ROM芯片ROM16:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY RO

24、M16 IS PORT(DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);CS:IN STD_LOGIC);END ROM16;ARCHITECTURE A OF ROM16 ISBEGINDOUT<="10010001" WHEN ADDR="00000000" AND CS='0' ELSE "10010010" WHEN ADDR="00000001" AND CS='0'

25、 ELSE "10000000" WHEN ADDR="00000010" AND CS='0' ELSE "11010010" WHEN ADDR="00000011" AND CS='0' ELSE "10100000" WHEN ADDR="00000100" AND CS='0' ELSE "10110000" WHEN ADDR="00000101" AND CS='0&

26、#39; ELSE "10100010" WHEN ADDR="00000110" AND CS='0' ELSE "10110000" WHEN ADDR="00000111" AND CS='0' ELSE "11100000" WHEN ADDR="00001000" AND CS='0' ELSE "01110000" WHEN ADDR="00001001" AND CS=

27、9;0' ELSE "11000010" WHEN ADDR="00001010" AND CS='0' ELSE "10100010" WHEN ADDR="00001011" AND CS='0' ELSE "10110000" WHEN ADDR="00001100" AND CS='0' ELSE "11100000" WHEN ADDR="00001101" AND CS

28、='0' ELSE "11110100" WHEN ADDR="00001110" AND CS='0' ELSE "00000000"END A;9)时序产生单元:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER ISPORT( Q,CLR: IN STD_LOGIC; T1, T2,T3,T4: OUT STD_LOG

29、IC );END COUNTER;ARCHITECTURE A OF COUNTER ISSIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN PROCESS(Q,CLR) BEGIN IF(CLR='0') THEN T1<='0' T2<='0' T3<='0' T4<='0' X<="00" ELSIF(Q'EVENT AND Q='1') THEN X<=X+1; T2<=(NOT X(

30、1) AND X(0); T3<=X(1) AND (NOT X(0); T4<=X(1) AND X(0); END IF; END PROCESS; END A;10) 由于微地址寄存器中的触发器异步置“1”端低电平有效,与uA4ua0对应的异步置“1”控制信号SE5SE1(uA5的异步置“1”端SE6实际未使用)SE5=(FS).P(2).T4SE4=I6.P(1).T4SE3= I6.P(1).T4SE2= I5.P(1).T4SE1= I4.P(1).T4LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDR IS POR

31、T( I7,I6,I5,I4:IN STD_LOGIC; FS,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(NOT FS) 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 AN

32、D P1 AND T4);END A;11)微地址寄存器: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&

33、#39;)THEN UA<='1' ELSIF(T2'EVENT AND T2='1') THEN UA<=D; END IF; END PROCESS;END A;12)控制存储器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CONTROM ISPORT(ADDR: IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA:OUT STD_LOGIC_VE

34、CTOR(5 DOWNTO 0); D:OUT STD_LOGIC_VECTOR(18 DOWNTO 0) );END CONTROM;ARCHITECTURE A OF CONTROM ISSIGNAL DATAOUT: STD_LOGIC_VECTOR(24 DOWNTO 0);BEGIN PROCESS(ADDR) BEGIN CASE ADDR IS END CASE; UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0); D(18 DOWNTO 0)<=DATAOUT(24 DOWNTO 6); END PROCESS;END A;13)微命令寄存器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MCOMMAND

温馨提示

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

评论

0/150

提交评论