8位CPU的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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";

相关文档
最新文档