文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.计算机组成原理课程设计报告题目:设计一台嵌入式CISC模型机院系:计算机科学与工程学院专业:网络工程姓名:麦健豪学号:15一、课程设计的题目和内容采用定长CPU周期、联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下:输入5个有符号整数(8位二进制补码表示),求最大负数的绝对值并输出显示。
说明:①5个有符号数从外部输入;②一定要使用符号标志位(比如说SF),并且要使用为负的时候转移(比如JS)或不为负的时候转移(比如JNS)指令;③采用单数据总线结构的运算器。
二、系统设计2.1系统的总体设计2.2设计控制器的逻辑结构框图说明:在T4内形成微指令的微地址,并访问控制存储器,在T2的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器。
2.3设计机器指令和指令系统指令对象功能机器指令Mov1 XX,RDDA TA->RD 0011DA TATEST XX,RD AC锁存FS 0100ADDR->PC 0101JNS XXXXADDRINC XX,RD RD+1->RD 0110IN XX,RD SW->RD 0111CMP RS,RD RS-RD锁存FS 1001MOV2 RS,RD RS->RD 1010JMP XXXXADDR->PC 1011ADDRNEG XX,RD (0-RD)->RD 1100OUT RS,XX RS->LED 1101以下是对Rs,Rd的规定:Rs或Rd 选定的寄存器0 0 R00 1 R11 0 R2模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:7 6 5 4 3 2 1 0符号位尾数2.4设计时序产生器2.5设计微程序流程图2.6设计操作控制器单元(1)设计微指令格式与微指令代码表CISC 模型机系统使用的微指令采用全水平型微指令,字长为25位,其中微命令字段为17位,P 字段为2位,后继微地址为6位,其格式如下:设计的具体指令为:16进制微地址L O A D L D P C L D A R L D I R L D R i R D _B R B _B S 1 S 0 A L U _B L D A C L D D R W R C S S W _B L E D _BL D F RP 1 P 2 后继微地址 00 000000 1000 000010 02 000010 1010 000000 03000011100000111004 000100 1000 00111105 000101 1001 10000006 000110 1000 01001007 000111 1000 00000009 001001 1000 0101010A 001010 1000 0000000B 001011 1000 0110000C 001100 1000 0110010D 001101 0000 0000000E 001110 1000 0000000F 001111 1100 00000012 010010 1000 00000015 010101 1000 01011016 010110 1100 00000018 011000 0000 00000019 011001 1000 00000030 110000 1000 00000020 100000 0000 000000(2)设计地址转移逻辑电路地址转移逻辑电路是根据微程序流程图的棱形框部分及多个分支微地址,利用微地址寄存器的异步置‘1’端,实现微地址的多路转移的。
由于是采用逻辑电路来实现的,故称之为地址转移逻辑电路。
在微地址流程图中,P(1)(高电平有效)测试时,根据指令的操作I7~I4强制修改后继地址的低四位;在P(2)(高电平有效)时,根据借位标志FS进行2路分支,并且都在T4内形成后继微指令的微地址。
SE5=((NOT FS) AND P(2) AND T4SE4=(I7 AND P(2) AND T4SE3=(I6 AND P(2) AND T4SE2=(I5 AND P(2) AND T4SE1=(I4 AND P(2) AND T42.7设计单元顶层电路2.8编写汇编语言源程序算法:R0存入一个整数-4,作为五次输入循环使用;R1用于存储输入的整数;R3用于存入最后的结果,并预存一个最小负数-128.随后如下Mov1 R0,-5 将立即数-4->R0MOV1 R2,-128 将立即数-128 ->R2L1 TEST R0 测试R0,锁存SFJNS L2 非负,即SF=0,跳转L2INC R0 R0+1IN R1 输入一个整数,并存入R1TEST R1 测试R1JNS L1 非负则跳转L1CMP R2,R1 比较R2,R1的大小,锁存SFJNS L1 非负则跳转L1MOV2 R1,R2 将R1的内容存入R2JMP L1 跳转L1L2 NEG R2 对R2求补OUT R2 输出结果2.9 机器语言源程序CISC 模型机的单元电路 3.1 ALU 单元LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.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:OUT STD_LOGIC指令 地址地址16进制 机器指令十六进制 备注Mov1 R0,-5 00000000 00 00110000 3000000001 01 FB MOV1 R2,-128 00000010 02 00110010 32 00000011 03 FF L1 TEST R0 00000100 04 01000000 40 JNS L2 00000101 05 01010000 50 00000110 06 00010010 11 INC R0 00000111 07 01100000 60 IN R1 00001000 08 01110001 71 TEST R1 00001001 09 01000001 41 JNS L1 00001010 0A 01010000 5000001011 0B 00000100 04 CMP R2,R1 00001100 0C 99 JNS L1 00001101 0D 01010000 5000001110 0E 00000100 04 MOV2 R1,R2 00001111 0F A6 JMP L1 00010000 10 B0 00010001 11 00000100 04 L2 NEG R2 00010010 12 C2OUT R20001001113D8S1 S0 功能0 0 AC-DR,锁存FS 01 AC 锁存FS 1 0 自加1 11求补);END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(S1,S0)BEGINIF(S1='0' AND S0='0')THENTEMP<=A-B;SF<=TEMP(7);BCDOUT<=TEMP(7 DOWNTO 0);ELSIF(S1='0' AND S0='1')THENTEMP<=A-0;SF<=TEMP(7);BCDOUT<=TEMP(7 DOWNTO 0);ELSIF(S1='1' AND S0='0')THENTEMP<=A+1;BCDOUT<=TEMP(7 DOWNTO 0);ELSIF(S1='1' AND S0='1')THENTEMP<=0-A;BCDOUT<=TEMP(7 DOWNTO 0);END IF;END PROCESS;END A;3.2寄存器单元LDFR上升沿有效。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS74 ISPORT(LDFR:IN STD_LOGIC;SF:IN STD_LOGIC;FS:OUT STD_LOGIC);END LS74;ARCHITECTURE A OF LS74 ISBEGINPROCESS(LDFR)BEGINIF(LDFR'EVENT AND LDFR='1')THENFS<=SF;END IF;END PROCESS;END A;而暂存寄存器与通用寄存器则是使用LS273LIBRARY 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 ISBEGINPROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1') THENO<=D;END IF;END PROCESS;END A;3.3 1:2分配器单元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) 通用寄存器功能表RO_1 R1_B R2_B ALU_B 功能1 1 1 0 输出ALU0 1 1 1 输出R01 0 1 1 输出R1 1 1 0 1 输出R2输入输出WR LED_B X[7..0] W1[7..0] W2[7..0]0 0 X X[7..0]其他值X X[7..0]);END FEN2;ARCHITECTURE A OF FEN2 ISBEGINPROCESS(LED_B,WR)BEGINIF(LED_B='0' AND WR='0') THENW2<=X;ELSEW1<=X;END IF;END PROCESS;END A;3.4 3选1数据选择器单元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 ISBEGINPROCESS(SW_B,CS)BEGINIF(SW_B='0') THENEW<=ID;ELSIF(CS='0')THENEW<=N2;ELSEEW<=N1;END IF;END PROCESS;END A;3.5 4选1数据选择器单元LIBRARY IEEE;USE IEEE.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 MUX4 ISSIGNAL SEL: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINSEL<=F&E&D&C;PROCESS(SEL)BEGINIF(SEL="1110") THEN --R0_outW<=X1;ELSIF(SEL="1101") THEN --R1_outW<=X2;ELSIF(SEL="1011") THEN --R2-outW<=X3;ELSIF(SEL="0111") THEN --R3_outW<=X4;ELSEnull;END IF;END PROCESS;END A;3.6 程序计数器单元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); BEGINPROCESS(LDPC,CLR,load)BEGINIF(CLR='0') THENQOUT<="00000000";ELSIF(LDPC'EVENT AND LDPC='1') THENIF(load='0') THENQOUT<=D; --BUS->PCELSEQOUT<=QOUT+1; --PC+1END IF;END IF;END PROCESS;O<=QOUT;END A;3.7 地址寄存器单元同寄存器单元3.8主存储器单元即为ROM。