1、精简 8 位 cpu 实验设计报告实验介绍:实验分为两个部分,第一部分为 16*8 ROM 设计与仿真第二部分为 SAP-1 设计与仿真实验流程:16*8 ROM 的设计与仿真地址 汇编语言 机械码 地址 汇编语言 机械码0H LDA 9H 0000 1001 7H XXX 0000 00001H ADD AH 0001 1010 8H XXX 0000 00002H ADD BH 0001 1011 9H 10H 0001 00003H SUB CH 0010 1100 AH 14H 0010 01004H OUT 1110 0000 BH 18H 0001 10005H HLT 1111
2、0000 CH 20H 0010 00006H XXX 0000 0000部分程序代码:Rom16_8.VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM16_8 isPORT(DATAOUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -Data OutputADDR :IN STD_LOGIC_VECTOR(3 DOWNTO 0); -ADDRESSCE :IN STD_LOGIC -
3、Chip Enable);END ROM16_8;ARCHITECTURE a OF ROM 16_8 ISBEGINDATA -(address state 3.编写”指令执行周期(fetch cycle)”,即状态 S3S5 的命令(IR)截取高 4 位指令至 TMP 里 Elsif cpevent and cp=0 thenwhen s2=When s3=nstatechangestatemode : process(cp,rst)variable flag, F1:boolean;BeginIf rst =1 thenElsif cpevent and cp=0 thenIf run=
4、1then case pstate iswhen s0=nstate=s1;end case;pstate=nstate;End if;If pstate =s3 thenIf(tmp=“0000”)or(tmp=“0001”)or(tmp=“0010”)thenMar=ir(3 downto 0);elsif tmp =“1110”thenoutreg=acc;elsif tmp =“1111”thenrun=0;End ifElsif pstate=s4 thenif tmp=“0000”thenacc=databus;elsif tmp=“0001”thenbreg=databus;el
5、sif tmp=“0010”thenbreg=databus;end if;Elsif pstate=s5 thenif tmp =“0001”and f1=ture thenNum =unsigned(acc)+unsigend(breg);Acc =std_logic_vector(num);F1:=false;Elsif tmp=“0010” and f1 =true thennum =unsigned(acc)-unsigned(breg);Acc=std_logic_vector(num);F1:false;End if;End if;End if;End process changestatemode;编译、功能仿真