模型机设计报告

一、设计目的

设计一个简易CPU。完整、连贯地运用《数字逻辑》所学到的知识,熟练掌握 EDA 工具基本使用方法,为学习好后续《计算机原理》课程做铺垫。(来自实验指导书)

二、设计内容

CPU综合设计CPU综合设计CPU综合设计① 按照给定的数据通路、数据格式和指令系统,使用 EDA 工具设计一台用硬连线逻 辑控制的简易计算机; ② 要求灵活运用各方面知识,使得所设计的计算机具有较佳的性能; ③ 对所设计计算机的性能指标进行分析,整理出设计报告。

多图多字预警嗷!

三、详细设计
  • 3.1整体架构
    CPU综合设计
  • 3.2各个模块实现
    (此部分必须有模块的接口设计,功能实现,功能的仿真验证等内容。)
    1.时钟节拍
    SZJP
    取址阶段和执行阶段中,有些元件是高阻态,有些元件是低阻态,所以应该一共应该有四个时钟控制。取址阶段clk1和clk2,执行阶段clk3和clk4。
    CPU综合设计
    2.PC计数器
    PCJSQ
    PC计数器的作用是提供一个取指令的地址,需要支持自加一(顺序计数)和加载总线上数据(跳转)这两个功能。
    引脚说明:
    CLK :时钟信号,时钟信号到来时配合LDPC和INPC控制PC计数器的操作;
    LDPC:控制PC计数器是否进行计数操作,高电平有效;
    INPC:控制PC计数器进行加一操作还是加载BUS总线上的数据,当LDPC为高电平时,INPC为高电平则PC+1,否则PC加载BUS总线上的数据;
    a:BUS总线上的数据输入;
    c:PC计数器的输出,不受时钟控制,输出当前PC计数器中的值。

CPU综合设计3.选择器
XZQ
该元件需要一个选择输入端口MADD,三个数据输入端口,根据选择器的选择输出对应端口的数据,无需时钟。
引脚说明:
MADD选择输入
MADD=00,输出端口F1的值(来自PC)
MADD=01,输出端口F2的值(来自通用寄存器A口)
MADD=10,输出端口F3的值(来自通用寄存器B口)
仿真中不会出现MADD=11,无需考虑
CPU综合设计4.RAM
用库里面的lmp_ram_io元件
原理图
CPU综合设计端口作用
CPU综合设计真值表
CPU综合设计CPU综合设计需要上升沿触发

根据需求可以不使用一些不必要的端口,本次设计需要的端口有,一个数据输入端,一个时钟端口,we和outenab配合时钟信号,决定是读数据,还是写数据。
CPU综合设计CPU综合设计DL:读取端口,允许对RAM执行读取操作,高电平有效
XL:写入使能,允许对RAM执行写入操作,EN低电平,WE高电平有效
CLK:时钟
dio:双端接口,既可以将RAM的数据读出,也可以将外部数据写入RAM,由CLK,EN,WE控制。

仿真只能对读进行判断
对照输出和mif文件初始化的值,检查是否正确。
因为mif为RAM的初始化,无法看见写入的数据。
5.通用寄存器组
TYJCQ
有三个寄存器A(R1),B(R2),C,分别寄存两个操作数,一个地址。
输出方向有ALU和选择器(XZQ),有多个控制信号。
CPU综合设计引脚说明:
CLK:时钟,上升沿来时配合RWBA执行写入操作。
WE=0时,输出操作,或者说读取操作。
RAA0,RAA1:控制A端输出的数据来自哪个端口。
RWBA0,RWBA1:控制B端输出的数据来自哪个端口。
AO:输出口A
BO:输出口B
WE=1时,写操作,无法看见。
根据RWBA0,RWBA1的选择,将输入的数据写入选中寄存器中。
cin:输入的数据
CPU综合设计6.ALU函数发生器
ALUFSQ
含糊发生器主要是对两个数进行逻辑运算,加,减,与,或,非,直传操作(可以传递给移位逻辑进行移位)。
这个元件是一个组合逻辑不需要时钟。
只有加减与C,Z标志有关。

C标志,Z标志的作用。
C:进位/借位位,结果有进位或者借位,C被置1,否则为0 DC:辅助进位/借位位,执行加、减运算指令后,若结果的低四位向高四位有进位或借位,则DC置1,否则置0 Z:零标志位,零标志位运算结果为零,Z被置1;运算结果不为零,Z被清零

来自 https://zhidao.baidu.com/question/1735223948944887547.html

来自百度知道。
CPU综合设计引脚说明:
M:ALU函数发生器的控制信号,M高电平进行逻辑运算,低电平进行直传。
A,B:两个运算数据的输入端
S:ALU运算操作的选择信号
T:输出
C:C标志
Z:Z标志
仿真时:
最开始C和Z的输出均为XXXX,这是正常的,因为还没有进行ADD和SUB运算。在S和M的控制下,T的输出为A,B两个数据输入输入的数据进行函数运算后的结果。
7.移位逻辑
YW
CPU综合设计CPU综合设计
引脚说明:
F,FL,FR:控制输入操作(直传,左移,右移)
a:输入
C:被移动的那一位
w:输出(当三种操作都不进行时输出ZZZZ)
8.指令寄存器IR
IRJCQ
时钟信号是一个周期性过程,不可能取址后马上译码,而且一个周期我们的译码工作应该只做一次,但是数据总线上的数据可以多次变化,所以我们不难把指令传给控制器产生控制信号,而要把取址得到的指令存起来,在执行阶段保持它不变,才能保证得到的控制信号是我们期望得到的。
引脚说明:
CLK:时钟,上升沿配合LDIR写入指令
LDIR:写入使能,高电平有效
cin:输入(来自RAM)
OUTA:(7 downto 4)高四位指令
OUTB:(3 downto 0)低四位指令
9.指令译码器
ZLYMQ
根据指令产生控制信号
CPU综合设计
先对16条指令设计一个指令译码器,再将译码器的输出设计一个组合电路,输出为各个原件的控制信号。
控制器(实验2)
KZQ
CPU综合设计
输入输出端口分别为:
输入端口为指令译码器的输出端口以及A(指令的前四为),B(指令的后四位),C(ALU的进位判断),Z(ALU的运算结果是否为0),SM(控制取指令周期和执行周期);输出端口对应为各个部件的输入端口。
10.CZ寄存器
CZ_JCQ
在ALU的时候总结了C标志,Z标志
C标志,Z标志的作用。
C:进位/借位位,结果有进位或者借位,C被置1,否则为0 DC:辅助进位/借位位,执行加、减运算指令后,若结果的低四位向高四位有进位或借位,则DC置1,否则置0 Z:零标志位,零标志位运算结果为零,Z被置1;运算结果不为零,Z被清零 。

四、测试环境
  • 4.1
    cyclone系列的FPGA,型号为EP1C3T144C8的时钟引脚
    主芯片EP1C3T144C8 Altera Cyclone系列FPGA是A1tera公司2003年9月份推出的,基于1.5v,O.13μm工艺,Cyclone是一个性价比很高的FPGA系列。其中EPlC3T144是Cyclone系列中的一员,共有2910逻辑单元,59904RAM bits,1个PLLs,最多有104个用户I/O,可以说这款FPGA的资源非常丰富,足够满足大型设计的需要。

EP1C3T144C8芯片采用1.5V内核电压,0.33 μmSRAM工艺,与其他同类产品相比具有以下特点:
(1)逻辑资源丰富,逻辑单元(LE)数量为2910个。
(2)有104个可用I/O引脚,I/O输出可以根据需要调整驱动能力,并具有压摆率控制、三态缓冲、总线保持等功能:整个器件的I/0引脚分为四个区,每个区可以独立采用不同的输入电压,并可提供不同电压等级的I/0输出。
(3)多电压接口,支持LVTTL,LVCMOS,LVDS等I/0标准。
(4)灵活的时钟管理,片内配有一个锁相环(PLL)电路,可以提供输入时钟的1~32倍频或分频、156~417ps相移和可变占空比的时钟输出,输出时钟的特性可直接在开发软件QuartusII里设定。经锁相环输出的时钟信号既可以作为内部的全局时钟,也可以输出到片外供其它电路使用。 (5)内有SignalTap嵌入式逻辑分析器,极大地方便了设计者对芯片内部逻辑进行检查,而不需要将内部信号输出到I/O管脚上。
来自万能的浏览器,我也不造这芯片具体啥啥的

  • 4.2测试结果
    不想放了,指令太多了,嘿嘿,懒得截图
    而且写指令分析真的很累人嗷。
    停机指令和NOP指令我单独分析的嗷
  • 4.3模型机性能分析
    显示出来的有16条指令,上面已经做了分析。
    成本开销:198/2910(7%)
    最短时钟周期13.725 ns。
五、总结

一些需要注意的细节和窍门:
1.连线可以通过命名连线,这样线少(连线到昏厥说真的)。
2.Z的值只与SUB和ADD有关。
3.自己加输出验证运行结果,可以加超多嗷。

相关文章:

  • 2022-01-10
  • 2021-09-27
  • 2021-12-11
  • 2022-12-23
  • 2021-09-09
  • 2021-06-23
  • 2021-05-29
猜你喜欢
  • 2021-11-20
  • 2021-05-04
  • 2021-10-12
  • 2021-04-06
  • 2021-09-10
  • 2021-08-26
  • 2022-12-23
相关资源
相似解决方案