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