版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、设计题目及要求: 设计一台8位的CISC模型机,要求具有以下验证程序所要求的功能: 连续输入5个有符号整数(8位二进制补码表示,用十六进制数输入),求所有负数的平方和并输出显示。 说明:5个有符号数从外部输入; 一定要使用符号标志位(比如说SF),并且要使用为负的时候转移(比如JS)或不为负的时候转移(比如JNS)指令。二、设计步骤1. 模型机的总体设计模型机的总体设计的内容包括确定各种部件的设置以及它们之间的数据通路结构。CISC模型机由CISC微处理器、地址寄存器AR、ROM和RAM存储器等组成。微处理器由算术逻辑运算单元ALU、状态条件寄存器、累加器AC、数据暂存器DR、通用寄存器R
2、0R2、程序计数器PC、指令寄存器IR、操作控制器和时序产生器组成。CISC模型机的操作控制器采用微程序控制器。根据模型机功能要求,画出如图1所示模型机数据通路框图。 图1 模型机数据通路框图2. 微程序控制器的组成原理框图 微程序控制器组成原理框图如图2所示。它主要由控制器、微指令寄存器和地址转移逻辑电路三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。 图2 微程序控制器组成原理框图 3. 模型机机器指令格式和指令系统 CISC模型机的指令系统采用复杂的指令格式、多种指令字长度和多种寻址方式,但指令功能强大,单条指令的执行速度较慢。为了完成题目所要求的功能,模型机的指令系
3、统共设计了9条不同的功能指令。指令字长度有单字长(1个字节)和双字长(2个字节)两种;寻址方式有三种,分别是寄存器寻址、直接寻址和立即寻址。这9条指令是IN(输入),MOV(将一个数送入寄存器),TEST(测试),JNS(为正转跳),ADD(两数相加),DEC(自减1),MUL(相乘),JMP(无条件跳转),OUT(输出)。 下面分别介绍这些指令的格式: (1)I/O指令输入(IN)采用单字节指令,其格式如下: 输入(OUT)采用单字节指令,其格式如下: 说明:RS 为源寄存器, RD为目的寄存器。(2)转移指令条件转移指令(JNS)和无条件转移指令(JMP)采用双字节指令,其格式如下: “a
4、ddr”中的值就是要转移的地址值。 (3)相加指令相加指令(ADD)采用单字节指令,其格式如下: (4)MOV指令MOV指令采用双字节指令,其格式如下: 说明:“data”为立即数。 (5)自减指令自减1指令(DEC)指令采用单字节指令,其格式如下: (6)TEST指令测试指令(TEST)指令采用单字节指令,其格式如下: 7 6 5 4 3 2 1 0 操作码 × × Rd(7)MUL指令测试指令(TEST)指令采用单字节指令,其格式如下: 7 6 5 4 3 2 1 0 操作码 Rs Rd以下是对Rs和Rd的规定: 模型机规定数据的表示采用定点整数补码表示,单字长为8位,
5、其格式如下: 模型机的指令系统中共有9条基本指令,表1列出每条指令的助记符号、指令格式和功能。 助记符号指令格式功 能IN Rd 0010XXRd将数据存到Rd寄存器OUT Rs1111RsXX(Rs)->LEDADD Rs,Rd1011RsRd(Rs)+(Rd)->RdTEST ,Rd1001XXRd测试正负数DEC Rd1100XXRd(Rd)-1->RdMUL Rs,Rd1101RsRd(Rs)*(Rd)->RdMOV Rs,Rd1000RsRd(Rs)->RdJMP addr11100000 addrAddr->PCJNS addr10100000
6、addr若SF=0,则addr->PC 表1 9条机器指令的助记符号、指令格式和功能 4、汇编语言源程序MOV R1,05 MOV R2,00 L1: IN R0 TEST R0 JNS L2 MUL R0,R0 ADD R0,R2 L2: DEC R1 JNS L1 L3: OUT R2 JMP L3 5 、 根据汇编语言源程序以及指令格式设计出机器语言源程序如下:助记符 地址(十六进制) 机器代码 功能MOV R1,05 00 10000001 05R1 01 00000101 MOV R2,00 02 10000010 00R2 03 00000000 L1: IN R0 04 0
7、0100000 输入nR0TEST R0 05 10010000 测试R0最高位,锁存FSJNS L2 06 10100000 若不为负,L2PC 07 00001010 MUL R0,R0 08 10111010 (R0)*(R0)R0ADD R0,R2 09 10110010 (R0)+(R2)R2L2: DEC R1 0A 11000001 (R1)-1R1,锁存FS JNS L1 0B 10100000 若不为负,L1PC 0C 00000100L3: OUT R2 0D 11111000 (R2)LEDJMP L3 0E 11100000 L3PC 0F 00001101 6、微程序
8、流程图 根据模型机的数据通路图(图1)以及所有指令在CISC模型机中的操作过程,画出所有机器指令的微程序流程图,如图5所示。图中每个框为一个CPU周期(包含T1T4共4个节拍脉冲周期)对应于一条微指令。框中上面的十六进制数表示的是当前微指令在控制存储器中的微地址;框中下面的十六进制数表示的是当前微指令的后续微坡地。在编写微指令时,图中的菱形框从属于它上面的方框。 00 PCAR PC+1 RD MBUSIR 01P(1) 00OUTIN MOV TEST JNS MUL ADD DEC JMP PCARPC+1RsLEDRdBUSBUSDR测DR最高位锁存SFPCARPC+1ROMBUSBUS
9、RdSWBUSBUSRdBUSRdRsBUSBUSACRdBUSBUSDRAC+DRRdRdBUSBUSACAC-1BUSBUSRdPCARPC+1ROMBUSBUSPCRsBUSBUSACRdBUSBUSDRAC*DR RdP(2)ROMBUSBUSPC 07 08 09 0A 0B 0C 0D OE OF03042005071012 03 00 1106 00 00 00 00 SF=0 SF=1 00 003020 00 00图5 CISC模型机中所有机器指令的微程序流程图 7、结合微程序流程图设计出的微指令格式和微指令代码表如下:(表 2)微指令的代码表中微命令字段从左边到右代表的微命
10、令信号依次为:LOAD、LDPC、LDAR、LDIR、LDRi、RD_B、RS_B、S1、S0、ALU_B、LDAC、LDDR、WR、CS、SW_B、LED_B、LDFR。微地址 微命令字段 P1P2后继微地址000000111001100100111100000000100000110010110010010110100000000000101000111001001101000000000000011100011100100101100000000000010010000111110011111000000000001011000001001011111000000110000110100
11、011100000111100000000000011110001111000011111000000000010001110011001001111000000011001001100000100101111100000010000101011100110010011110011000000010111000010001101111000000101001100100000100110111100000111001101100001000110111100001000000111011100110010011110000100100011111000010001000110000000000
12、01000010000010010111110000100010100011000111010001111000000000010010010001100100101100000000010000001000110010010110000000001100001000011001001111000000000表 28、设计各单元电路(1) S1 S0 功能 0 0(AC)+(DR),锁存FC和FZ 0 1(AC)*(DR),锁存FC和FZ 1 0(AC)-1,锁存FS和FZ1 1 最高位锁存FS 表 3算术逻辑运算单元ALU的功能表LIBRARY IEEE; USE IEEE.STD_LOGI
13、C_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; ENTITY ALU IS PORT( A: IN STD_LOGIC_VECTOR(7 DOWNTO 0); B: IN STD_LOGIC_VECTOR(7 DOWNTO 0); S1,S0: IN STD_LOGIC; BCDOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; SF,ZI: OUT STD_LOGIC ); END ALU; ARCHITECTURE A OF ALU IS SIGNAL C:STD_
14、LOGIC_VECTOR(7 DOWNTO 0); SIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN PROCESS(S1,S0) BEGIN IF(S1='0' AND S0='0') THEN-ADD AA<='0'&A; BB<='0'&B; TEMP<=AA+BB; BCDOUT<=TEMP(7 DOWNTO 0); SF<=TEMP(8); IF(TEMP="100000000") THEN ZI&
15、lt;='1' ELSE ZI<='0' END IF; ELSIF(S1='0' AND S0='1') THEN -MUL AA<='0'&A; BB<='0'&B; TEMP<=AA*BB; BCDOUT<=TEMP(7 DOWNTO 0); SF<=TEMP(8); IF(TEMP="100000000"OR TEMP="000000000" ) THEN ZI<='1' ELS
16、E ZI<='0' END IF;ELSIF(S1='1' AND S0='0') THEN -DEC C<=A-1; BCDOUT<=C; IF(C>0) THEN SF<='0' ZI<='0' ELSE SF<='1' ZI<='1' END IF; ELSIF(S1='1' AND S0='1') THEN -TEST SF<=B(7); ELSE BCDOUT<="0000
17、0000" SF<='0' ZI<='0'END IF;END PROCESS;END A;(2) 表7 程序计数器PC的功能表 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.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
18、 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(LDPC'EVENT AND LDPC='1')THEN IF(LOAD='0')THEN QOUT<=D; -BUS->PC ELSE QOUT<=QOUT+1;-PC+1 END IF
19、; END IF; END PROCESS; O<=QOUT;END A;(3)表8 主存储器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(7 DOWNTO 0); ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CS:IN STD_LOGIC);END ROM;ARCHITECTURE A OF
20、ROM ISBEGIN DOUT<="10000001"WHEN ADDR="00000000"AND CS='0'ELSE "00000101"WHEN ADDR="00000001"AND CS='0'ELSE "10000010"WHEN ADDR="00000010"AND CS='0'ELSE "00000000"WHEN ADDR="00000011"AND CS=
21、9;0'ELSE "00100000"WHEN ADDR="00000100"AND CS='0'ELSE "10010000"WHEN ADDR="00000101"AND CS='0'ELSE "10100000"WHEN ADDR="00000110"AND CS='0'ELSE "00001010"WHEN ADDR="00000111"AND CS='0'
22、ELSE "11010000"WHEN ADDR="00001000"AND CS='0'ELSE "10110010"WHEN ADDR="00001001"AND CS='0'ELSE "11000001"WHEN ADDR="00001010"AND CS='0'ELSE "10100000"WHEN ADDR="00001011"AND CS='0'ELSE &qu
23、ot;00000100"WHEN ADDR="00001100"AND CS='0'ELSE "11111000"WHEN ADDR="00001101"AND CS='0'ELSE "11100000"WHEN ADDR="00001110"AND CS='0'ELSE "00001101"WHEN ADDR="00001111"AND CS='0'ELSE "00000
24、000"END A;(4)表9 时序产生器单元COUNTER的功能表 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; T2,T3,T4: OUT STD_LOGIC );END COUNTER;ARCHITECTURE A OF COUNTER ISSIGNAL X: STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN PRO
25、CESS(Q,CLR) BEGIN IF(CLR='0') THEN T2<='0' T3<='0' T4<='0' X<="00" ELSIF(Q'EVENT AND Q='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; END A;(5)微程序控制器单元 微程序控制器器由地址转
26、移逻辑电路ADDR、微地址寄存器aa、控制存储器CONTROM和微命令寄存器MCOMMAND等几部分组成。为了方便电路的设计与连线,在进行本模型机微程序控制器单元内部结构设计时,增加了F1、F2和F3共三个用于多根单线与总线之间转换的器件。 微程序控制器单元的内部结构如图6所示 图6 微程序控制器的内部结构图 a、 微地址寄存器 微地址寄存器aa的内部结构如图7所示图7 微地址寄存器aa的内部结构 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MMM ISPORT( SE:IN STD_LOGIC; T2:IN STD_LOGIC;D:IN S
27、TD_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(T2'EVENT AND T2='1') THEN UA<=D; END IF; END PROCESS;END A;b、LIBRARY IEEE;USE IEE
28、E.STD_LOGIC_1164.ALL;ENTITY ADDR IS PORT( I7,I6,I5,I4:IN STD_LOGIC; FS,FZ,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(FS AND P2 AND T4); SE4<=NOT(I7 AND P1 AND T4); SE3<=NOT(I6 AND P1 AND T4); SE2<=NOT
29、(I5 AND P1 AND T4); SE1<=NOT(I4 AND P1 AND T4);END A;c、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CONTROM IS PORT( ADDR:IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); D:OUT STD_LOGIC_VECTOR(18 DOWNTO 0);END C
30、ONTROM;ARCHITECTURE A OF CONTROM ISSIGNAL DATAOUT:STD_LOGIC_VECTOR(24 DOWNTO 0);BEGINPROCESS(ADDR) BEGIN CASE ADDR IS WHEN"000000" =>DATAOUT<="1110011001001111000000001" WHEN"000001" =>DATAOUT<="1001011001001011010000000"WHEN"000010" =>
31、;DATAOUT<="1000111001001101000000000" WHEN"000011" =>DATAOUT<="1000111001001011000000000"WHEN"000100" =>DATAOUT<="1000011111001111100000000" WHEN"000101" =>DATAOUT<="1000001001011111000000110"WHEN"000110&
32、quot; =>DATAOUT<="1000111000001111000000000" WHEN"000111" =>DATAOUT<="1000111100001111100000000"WHEN"001000" =>DATAOUT<="1110011001001111000000011" WHEN"001001" =>DATAOUT<="1000001001011111000000100"WHEN&qu
33、ot;001010" =>DATAOUT<="1110011001001111001100000" WHEN"001011" =>DATAOUT<="1000010001101111000000101"WHEN"001100" =>DATAOUT<="1000001001101111000000111" WHEN"001101" =>DATAOUT<="1000010001101111000010000&qu
34、ot;WHEN"001110" =>DATAOUT<="1110011001001111000010010"WHEN"001111" =>DATAOUT<="1000010001000110000000000"WHEN"010000" =>DATAOUT<="1000001001011111000010001" WHEN"010001" =>DATAOUT<="1000111010001111000
35、000000"WHEN"010010" =>DATAOUT<="0100011001001011000000000" WHEN"100000" =>DATAOUT<="0100011001001011000000000"WHEN"110000" =>DATAOUT<="1000011001001111000000000" WHEN OTHERS=>DATAOUT<="100001100100111100000
36、0000"END CASE;UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0); D(18 DOWNTO 0)<=DATAOUT(24 DOWNTO 6); END PROCESS; END A;d、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)<=
37、UA5; D(4)<=UA4; D(3)<=UA3; D(2)<=UA2; D(1)<=UA1; D(0)<=UA0;END A;e、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<
38、=D(2); UA1<=D(1); UA0<=D(0);END A;f、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);
39、 UA1<=D(1); UA0<=D(0);END A;g、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,I3,I2,I1,I0:IN STD_LOGIC; O:IN STD_LOGIC_VECTOR(18 DOWNTO 0); P1,P2,LOAD,LDPC,LDAR,LDIR,LDR0,LDR1,LDR2,R0_B,R1_B,R2_B,S1,S0, ALU_
40、B,LDAC,LDDR,WR,CS,SW_B,LED_B,LDFR:OUT STD_LOGIC );END MCOMMAND;ARCHITECTURE A OF MCOMMAND ISSIGNAL DATAOUT:STD_LOGIC_VECTOR(18 DOWNTO 0);BEGIN PROCESS(T2) BEGIN IF(T2'EVENT AND T2='1') THEN DATAOUT(18 DOWNTO 0)<=O(18 DOWNTO 0); END IF; P2<=DATAOUT(0); P1<=DATAOUT(1); LDFR<=DA
41、TAOUT(2) AND T4; LED_B<=DATAOUT(3); SW_B<=DATAOUT(4); CS<=DATAOUT(5); WR<=DATAOUT(6) OR(NOT T3); LDDR<=DATAOUT(7) AND T4; LDAC<=DATAOUT(8) AND T4; ALU_B<=DATAOUT(9); S0<=DATAOUT(10); S1<=DATAOUT(11); R2_B<=(DATAOUT(13) OR (NOT I1) OR I0)AND(DATAOUT(12) OR (NOT I3) OR I2
42、); R1_B<=(DATAOUT(13) OR I1 OR (NOT I0)AND(DATAOUT(12) OR I3 OR (NOT I2); R0_B<=(DATAOUT(13) OR I1 OR I0 )AND(DATAOUT(12) OR I3 OR I2); LDR2<=T4 AND DATAOUT(14) AND I1 AND (NOT I0); LDR1<=T4 AND DATAOUT(14) AND (NOT I1) AND I0; LDR0<=T4 AND DATAOUT(14) AND (NOT I1) AND (NOT I0); LDIR&
43、lt;=DATAOUT(15) AND T3; LDAR<=DATAOUT(16) AND T3; LDPC<=DATAOUT(17) AND T4; LOAD<=DATAOUT(18); END PROCESS;END A;(6)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS74 ISPORT( LDFR: IN STD_LOGIC; SF,ZI: IN STD_LOGIC; FS,FZ: OUT STD_LOGIC );END LS74;ARCHITECTURE A OF LS74 ISBEGIN PROCESS(LD
44、FR) BEGIN IF(LDFR'EVENT AND LDFR='1') THEN FS<=SF; FZ<=ZI; END IF; END PROCESS;END A;(7)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FEN2 IS PORT( WR,LED_B:IN STD_LOGIC; X:IN STD_LOGIC_VECTOR(7 DOWNTO 0); W1,W2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END FEN2;ARCHITECTURE A OF FEN2 ISB
45、EGIN PROCESS(LED_B,WR) BEGIN IF(LED_B='0' AND WR='0')THEN W2<=X; ELSE W1<=X; END IF; END PROCESS; END A;(8)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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论