理工大学学士学位论文
ENTITY PC IS
PORT( IPC,CLK,CLR:IN STD_LOGIC;
PCOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END PC;
ARCHITECTURE A OF PC IS
SIGNAL QOUT:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN
PROCESS(CLK,CLR,IPC) BEGIN
IF(CLR=’0’) THEN QOUT=‖0000‖;
ELSIF(CLK’EVENT AND CLK=’1’) THEN IF(IPC=’1’) THEN QOUT<=QOUT+1; END IF; END IF; END PROCESS; PCOUT<=QOUT; END A;
3.程序计数器模块仿真波形
32
理工大学学士学位论文
图3.15 程序计数器功能仿真
波形分析:时钟信号CLK周期设为10ns,前20nsCLR信号设为低电平,程序计数器清零输出为000,第20ns之后CLR=1,程序计数器开始随时钟上升沿开始计数,输出地址为000,001,010,011,100,101,110,111,波形如图3.15所示。 3.5.8 地址寄存器MAR
说明:用MAR来保存当前CPU所访问的主存储器单元的地址。
1.逻辑框图
33
理工大学学士学位论文
开始CLK=1NNYIMAR=0Y输出地址值结束
图3.16 地址寄存器模块程序流程图
说明:用来保存当前CPU所访问的主存储器单元的地址,由于主存储器与CPU之间存在操作速度上的差别,所以必须使用地址寄存器来保存地址信息,直到主存储器的读/写操作完成为止。当IMAR=0且时钟信号CLK上升沿到来时,将地址存入,并直接输出到存储器的地址线上.
2.VHDL源程序设计 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY MAR IS
PORT(ADDR_IN:IN STD_LOGIC_VECTOR(2 DOWNTO 0); IMAR:IN STD_LOGIC; CLK:IN STD_LOGIC;
ADDR_OUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END MAR;
ARCHITECTURE A OF MAR IS
34
理工大学学士学位论文
BEGIN
PROCESS(CLK,IMAR) BEGIN
IF(CLK’EVENT AND CLK=’1’) THEN IF (IMAR=’0’) THEN ADDR_OUT<=ADDR_IN; END IF; END IF; END PROCESS; END A;
3.地址寄存器模块仿真波形
图3.17 地址寄存器功能仿真
35
理工大学学士学位论文
波形分析:输入等于输出,当地址寄存信号IMAR=0时,将地址输入,ADDR_IN设置为000到100循环,ADDR_OUT输出也是对应的000到1000,波形图如图3.17所示。
3.5.9 存储器RAM
说明:用于存储程序和数据
1.逻辑框图
开始NCS=0YWR=0Y写入地址内容N读出地址内容结束
图3.18 存储器RAM程序流程图
说明:计算机是按事先编写的程序进行运算的,首先将编写好的程序写入存储器,计算机在运行过程中对存储器进行读写操作。存储器,存储内容:000—00111110,001—00000110,010—11000110,011—00000111,100—01110110
36