精简8位cpu设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“00011011” WHEN ADDR “0010”

“00101100” WHEN ADDR “0011”

“11100000” WHEN ADDR “0100”

“11110000” WHEN ADDR “0101” “00010000” WHEN ADDR “1001”

AND CE ‘ 0'

E LSE - -ADD BH AND CE ‘ 0' E LSE --SUB CH AND CE ‘ 0' ELSE --OUT AND CE ‘ 0' ELSE --HLT AND CE ‘ 0' ELSE

AND CE ‘ 0' ELSE

精简8位cpu 实验设计报告

实验介绍:

实验分为两个部分,第一部分为16*8 ROM 设计与仿真 第二部分为SAP-1设计与仿真 实验流程:

①16*8 ROM 的设计与仿真

部分程序代码:

Rom16_8.VHDL LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ROM16_8 is

PORT(

DATAOUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --Data

Output

ADDR :IN STD_LOGIC_VECTOR(DOWNTO 0); --ADDRESS CE :IN STD_LOGIC --Chip En able );

END ROM16_8;

ARCHITECTURE a OF ROM 16_8 IS BEGIN

DATA<“00001001” WHEN ADDR “0000” AND CE ‘ O '

“00011010” WHEN ADDR “0001” AND CE ‘0' ELSE --ADD AH

--LDA 9H

“00011000”WHEN ADDR=“1011”AND CE=‘0'ELSE

“00100000”WHEN ADDR=“1100”AND CE=‘0'ELSE

“00000000”;

END a;

程序说明:rom的使能CE只有为0时,才接受读数据的命令。

② SAP-1 CPU设计与仿真

工作任务:

1. 取指令周期(Fetch Cycle)

(1)状态S0:寻址状态,Address State)

这个状态下,“程序计数器” 负责将所要执行的指令地址值传递至MAR 存放。

⑵状态S2:(增加状态,ln creme nt State)

这个状态下,“程序计数器”的值加1,代表计数器将指针指向下一个要执行的指令地址值。

(3)状态S2:记忆状态,Memory State)

这个状态下,将把记录在“ MAR”里的指令地址值,送入“ RAM”里后, 由“ RAM'读出该地址的指令码,再将该指令放入“指令寄存器”。

指令执行周期:

⑴LDA指令

状态S3:这个状态下,上述的09H数据传入MAR,以便下个状态能取出该数值所代表的地址里的值,比如20H。

状态S4这个状态是将存放在“ MAR”里的09数据,通过RAM读出09H 地

址的数据,比如是数值20H数值至“累加器”。

状态S5这个状态下的LDA指令并没有作用。

(2)ADD指令

状态S3这个状态下,上述的AH数据将传入MAR,以便下个状态取出该数值所代表地址里的内容值,比如是数值14H。

状态S4这个状态是将存放“ MAR”里的AH数据,通过RAM读出AH地址内的数据,放到 B 寄存器中。

状态S5这个状态是将存在“累加器”和“ B寄存器”的数值内容存放入“加减法器”相加后,再将相加结果放回“累加器” 。

⑶SUB指令

状态S3这个状态下,上述的BH数据传入MAR,以便下个状态能取出该数值所代表地址里的值。

状态S4这个状态是将存放在“MAR”的BH数据,通过RAM读出BH地址内的数据,并放到 B 寄存器中。

状态S5这个状态是将存放在“累加器”和“ B寄存器”的数值放入“加减法器”相减后,再将相减后结果放回“累加器”。

⑷OUT指令

状态S3这个状态下,累加器的内容将经Wbus传至“输出寄存器”,然后显示在二进制显示装置。

状态S4这个状态OUT指令没有作用。

状态S5这个状态OUT指令没有作用。

⑸HLT指令

状态S3:这个状态下“控制器/序列发生器”将停止送出脉冲信号CLK这时SAP-1 CPI会停止执行工作。

状态S4这个状态HLT指令没有作用。

状态S5这个状态HLT指令没有作用。

③ SAP-1 CPU设计

1.使用Process与Case When命令架构出6个脉冲的指令周期。ARCHITECTURE a OF SAPI1S

TYPE STATE IS (S0,S1,S2,S3,S4,S5);

SIGNAL PState :STATE;

SIGNAL NState :STATE;

BEGIN

ChangeStateMode:PROCESS(CR,RST) BEGIN

IF RST‘= 1 'THEN PC <=“ 0000” ;

ACC<=”0000000”; RUN<=‘1 ';

PState<=S0;

ELSIF C'P EVENT AND CP‘=0'THEN

IF RUN =‘1'THEN

CASE PState IS

WHEN S0=>

NState<=S1;

WHEN S1=>

NState<=S2;

WHEN S2=>

NState<=S3;

WHEN S3=>

NState<=S4;

WHEN S4=>

NState<=S5;

WHEN S5=>

NState<=S0; END CASE;

PState<=NState;

END IF;

END IF;

END PROCESS --state type declare

--present state

--next state

--state s0~s5

--reset cpu

--pogram counter=0H

--accumulator=0H

--CPU run program enable --Initial cpu present state --clock negative edage

--run program eanble? --check cpu present state --(address state & fetch cycle-1) --cpu next state --(increment state & fetch cycle-2) --cpu next state --(memory state & fetch cycle-3) --cpu next state --STATE S3 (Execution cycle -1) --cpu next state --STATE S4 (Execution cycle-2) --cpu next state --STATE S5 (Executioncycle-3) --cpu next state

--切换状态

相关文档
最新文档