8位CPU的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成原理
实验题目8位CPU得系统设计
学号1115106046
姓名魏忠淋
班级 11电子B 班
指导老师凌朝东
华侨大学电子工程系
8位CPU得系统设计
一、实验要求与任务
完成从指令系统到CPU得设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。
1。1设计指标
能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令;
1、2设计要求
画出电路原理图、仿真波形图;
二、CPU得组成结构
三、元器件得选择
1.运算部件(ALU)
ALU181得程序代码:
LIBRARY IEEE;
USEIEEE、STD_LOGIC_1164。ALL;
USEIEEE、STD_LOGIC_UNSIGNED.ALL;
ENTITY ALU181 IS
PORT(
S: IN STD_LOGIC_VECTOR(3 DOWNTO0 );
A:IN STD_LOGIC_VECTOR(7 DOWNTO0);
B: INSTD_LOGIC_VECTOR(7DOWNTO 0);
F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
ﻩCOUT:OUTSTD_LOGIC_VECTOR(3 DOWNTO0);
M :INSTD_LOGIC;
CN : IN STD_LOGIC;
CO,FZ:OUT STD_LOGIC );
END ALU181;
ARCHITECTURE behav OF ALU181 IS
SIGNALA9 :STD_LOGIC_VECTOR(8DOWNTO 0);
SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO0);
SIGNALF9: STD_LOGIC_VECTOR(8 DOWNTO0);
BEGIN
A9<= '0'& A; B9 <= ’0’&B;
PROCESS(M,CN,A9,B9)
BEGIN
CASE S IS
WHEN "0000" =〉IF M='0’THEN F9<=A9 + CN ; ELSE F9<=NOT A9; E NDIF;
WHEN "0001" =>IF M='0’THEN F9<=(A9 orB9)+ CN ;ELSE F9〈=NOT(A9OR B9);END IF;
WHEN ”0010"=> IF M=’0’THEN F9〈=(A9 or(NOT B9))+C N; ELSE F9<=(NOT A9) ANDB9; ENDIF;
WHEN "0011"=> IF M='0’THEN F9<= ”000000000"—CN ;ELSEF9<="000000000”;END IF;
WHEN"0100”=> IFM='0'THENF9<=A9+(A9 ANDNOT B9)+ CN; ELSE F9〈=NOT(A9 ANDB9);END IF;
WHEN ”0101”=>IFM='0' THENF9<=(A9orB9)+(A9 AND NOTB9)+CN ;ELSEF9<=NOT B9; END IF;
WHEN"0110" =>IFM=’0’THEN F9〈=(A9- B9) -CN ;ELSE F9〈=A9XOR B9; ENDIF;
WHEN”0111"=>IF M='0' THEN F9〈=(A9 or(NOT B9)) -CN ;ELSE F9<=A9 and (NOT B9); END IF;
WHEN"1000" =>IFM='0'THEN F9<=A9+ (A9AND B9)+CN ; ELSE F9〈=(NOTA9)and B9; END IF;
WHEN "1001”=> IF M=’0’THEN F9〈=A9+ B9 + CN ; ELSE F9<=NOT(A9 XOR B9); ENDIF;
WHEN ”1010"=>IF M=’0'THEN F9〈=(A9or(NOTB9))+(A 9AND B9)+CN ; ELSEF9<=B9;END IF;
WHEN "1011”=〉IF M='0'THENF9<=(A9 AND B9)- C N; ELSE F9<=A9 ANDB9; ENDIF;
WHEN ”1100”=〉IF M='0'THENF9<=(A9 +A9) + CN; ELSEF9〈="000000001"; END IF;
WHEN "1101”=〉IF M='0' THEN F9〈=(A9or B9)+ A9 + CN;ELSEF9〈=A9 OR (NOTB9); END IF;
WHEN "1110"=>IF M='0'THENF9<=((A9 or (NOTB9)) +A9) + CN; ELSE F9〈=A9OR B9;END IF;
WHEN”1111”=〉IFM=’0'THENF9<=A9 —CN ;ELSE F9<=A9 ; END IF;
WHEN OTHERS=> F9<= ”000000000" ;
ENDCASE;
IF(A9=B9) THENFZ<=’0';END IF;
ﻩEND PROCESS;
F<=F9(7DOWNTO0) ;CO<= F9(8) ;
COUT<="0000"WHEN F9(8)=’0'ELSE"0001";