计算机组成原理课内实验报告二.docx

上传人:b****4 文档编号:11720415 上传时间:2023-03-31 格式:DOCX 页数:9 大小:216.01KB
下载 相关 举报
计算机组成原理课内实验报告二.docx_第1页
第1页 / 共9页
计算机组成原理课内实验报告二.docx_第2页
第2页 / 共9页
计算机组成原理课内实验报告二.docx_第3页
第3页 / 共9页
计算机组成原理课内实验报告二.docx_第4页
第4页 / 共9页
计算机组成原理课内实验报告二.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

计算机组成原理课内实验报告二.docx

《计算机组成原理课内实验报告二.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课内实验报告二.docx(9页珍藏版)》请在冰豆网上搜索。

计算机组成原理课内实验报告二.docx

计算机组成原理课内实验报告二

计算机组成与设计课内实验二

一、实验名称

存储器访问实验

二、实验目的

●理解计算机主存储器的分类及作用

●掌握ROM、RAM的读写方法

三、实验原理

存储器按存取方式分,可分为随机存储器和顺序存储器。

如果存储器中的任何存储单元的内容都可随机存取,称为随机存储器,计算机中的主存储器都是随机存储器。

如果存储器只能按某种顺序存取,则称为顺序存储器,磁带是顺序存储器,磁盘是半顺序存储器,它们的特点是存储容量大,存取速度慢,一般作为外部存储器使用。

如果按存储器的读写功能分,有些存储器的内容是固定不变的,即只能读出不能写入,这种存储器称为只读存储器(ROM);既能读出又能写入的存储器,称为随机读写存储器(RAM)。

实际上真正的ROM基本上不用了,用的是光可擦除可编程的ROM(EPROM)和电可擦除可编程的ROM(EEPROM)。

EEPROM用的越来越多,有取代EPROM之势,比如容量很大的闪存(FLASH)现在用的就很广泛,常说的U盘就是用FLASH做的。

按信息的可保存性分,存储器可分为非永久性记忆存储器和永久性记忆存储器。

ROM、EPROM、EEPROM都是永久记忆存储器,它们断电后存储内容可保存。

RAM则是非永久性记忆存储器,断电后存储器中存储的内容丢失。

●随机读写存储器类型

随机存储器按其元件的类型来分,有双极存储器和MOS存储器两类。

在存取速度和价格两方面,双极存储器比MOS存储器高,故双极存储器主要用于高速的小容量存储体系。

在MOS存储器中,根据存储信息机构的原理不同,又分为静态随机存储器(SRAM)和动态随机存储器(DRAM)。

静态随机存储器采用双稳态触发器来保存信息,只要不断电,信息就不会丢失;动态随机存储器利用记忆电容来保存信息,使用时只有不断地给电容充电才能使信息保持。

静态随机存储器的集成度较低,功耗也较大;动态随机存储器的集成度较高,功耗低。

现在计算机中,内存容量较大,常由动态随机存储器构成。

●静态随机存储器

静态存储器由存储体、地址译码电路、读写电路和控制电路组成。

一个4096×1位的SRAM的结构框图如图6-37所示。

图中,A0~A11为地址线,用来寻址存储器中的某一个单元。

DIN、DOUT为数据线,实现数据的输入、输出。

W//R为读写控制信号线,用来实现读写操作控制。

/CS为片选信号。

图6-37SRAM结构框图

●动态随机存储器

动态随机存储器(DRAM)和SRAM一样,也是由许多基本存储电路按照行和列来组成的。

DRAM是以MOS管栅极和衬底间电容上的电荷来存储信息的。

由于MOS管栅极上的电荷会因漏电而泄放,故存储单元中的信息只能保持若干秒,为此DRAM必须附加刷新逻辑电路。

另外,DRAM将地址分为行地址和列地址,并分时复用以减少引脚数目。

常见的4164芯片即是DRAM。

四、实验要求

●实验设计目标

设计一个能够对实验台上的存储器读写的部件,满足以下目标:

✓一个16位的存储器地址寄存器(MAR)。

该寄存器在reset为低电平时清零,在时钟clk的上升沿加1,地址寄存器在超过ox000f后下一个时钟上升沿回到0。

✓一个标志寄存器(flag),在reset为低电平时复位为0,当存储器地址寄存器等于0x000f后,下一个时钟clk的上升沿标志寄存器翻转。

✓在标志寄存器为0时执行存储器存数功能,从存储器的0单元开始存16个16位数。

按动一次单脉冲按钮,存一次数,存的数由内部产生,不由实验台开关输入。

✓当标志寄存器为1时,执行从存储器的0单元开始的读数功能。

按动一次单脉冲按钮,读一次数,一直读16个数。

读出的数据送入一个16位信号R[15..0]暂存。

✓提示:

当需要从存储器读取数据时,首先将"ZZZZZZZZZZZZZZZZ"赋值给数据总线,然后才能读取存储器中的数据。

●顶层设计实体的引脚要求

引脚要求对应关系如下:

✓clk对应实验台上的时钟(单脉冲)。

✓reset对应实验台上的CPU复位信号CPU_RST。

✓存储器地址总线A[15..0]对应实验台上的指示灯A15—A0。

✓存储器数据总线D[15..0]对应实验台上的数据指示灯D15—D0。

✓16位信号R[15..0]对应实验台上的指示灯R15—R0。

✓存储器读写信号FWR对应实验台上的FWR。

五、实验步骤

●实验台设置成FPGA-CPU附加外部RAM运行模式“011”。

该调试模式要能够实现模拟FPGA-CPU对实验台存储器的存数、取数功能。

即REGSEL=0、CLKSEL=1、FDSEL=1。

使用实验台上的单脉冲,即STEP_CLK短路子短接,短路子RUN_CLK断开。

由于当FDSEL=0时,指示灯D15—D0显示的是开关SD15—SD0的值,因此开关FDSEL必须为1。

这种方式除了FPGA-CPU的时钟是单脉冲外,其余都与单片机控制FPGA-CPU调试模式完全一样。

●将设计在QuartusⅡ下输入,编译后下载到TEC-CA上的FPGA中。

●首先按实验台上的CPU复位按钮,使存储器地址寄存器复位为0,然后不断观察实验台上的指示灯,察看结果与预想的是否一致。

六、设计思路与源代码

●实验思路:

●源代码

libraryIEEE;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitymemoryis

port(reset,clk:

instd_logic;--复位、时钟

FWR:

outstd_logic;--RAM的读写

D:

inoutstd_logic_vector(15downto0);--数据

A:

outstd_logic_vector(15downto0);--地址

R:

outstd_logic_vector(15downto0)--寄存器

);

endmemory;

architecturebehavofmemoryis

signalcounter:

std_logic_vector(15downto0);

signalwdata:

std_logic_vector(15downto0);

signalstart,flag:

std_logic;--开始计数(读写)、结束(状态)

begin

A<=counter;

wdata<="00000000001"&counter(4downto0);--数据16bit的形成

process(reset,clk)

begin

ifreset='0'then

counter<=x"0000";

elsifclk'eventandclk='1'then--计数

if(start='1')and(counter/=x"000f")then

counter<=counter+'1';

elsif(start='1')and(counter=x"000f")then

counter<=x"0000";

endif;

endif;

endprocess;

process(reset,clk)

begin

ifreset='0'then

start<='0';

elsifclk'eventandclk='1'then

start<='1';

endif;

endprocess;

process(reset,counter,clk)

begin

ifreset='0'then

flag<='0';

elsifclk'eventandclk='1'then

ifcounter=x"000f"then

flag<=notflag;

endif;

endif;

endprocess;

process(reset,counter,clk,start,flag,wdata,D)

begin

ifreset='0'then

FWR<='1';

elsifstart='1'then

ifflag='0'then

D<=wdata;

FWR<=clk;

else

D<="ZZZZZZZZZZZZZZZZ";

FWR<='1';

R<=D;

endif;

endif;

endprocess;--增加flag引出信号,观察他的变化。

endbehav;

七、实验结果以及相关分析

仿真结果如下图所示,分为两个阶段,第一个阶段是写入数据阶段,经过16个时钟脉冲后,进入第二个阶段;第二个阶段是读出数据阶段,同样经历16个时钟脉冲,读出的数据首先暂存在一个寄存器中,然后再送入数据总线。

八、课后题

●如果从存储器中读出数据时不首先向数据总线送出"ZZZZZZZZZZZZZZZZ",那么会发生什么问题?

如果在从存储器中读出数据时不首先向数据总线送出高阻状态,那么读状态和写状态就可能会混淆重叠,从而造成错误。

●自己设计一个256*16(8)芯片并且对它进行读写。

分析时序波形,通过指示灯观察运行过程。

程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_unSIGNED.ALL;

ENTITYRAMIS

PORT(

address:

instd_logic_vector(7downto0);

data_in:

instd_logic_vector(15downto0);

write,read,cs:

instd_logic;

data_out:

outstd_logic_vector(15downto0)

);

endRAM;

ARCHITECTUREbehaveofRAMIS

SUBTYPEwordisstd_logic_vector(15downto0);

typememoryisarray(0to255)OFword;

signalsram:

memory;

begin

write_op:

process(write)--写进程

begin

if(write'eventandwrite='1')then--写的时候不读,不能同时读写

if(cs='1'andread='0')then

sram(conv_integer(address))<=data_in;

endif;

ENDIF;

endprocess;

read_op:

process(cs,read)--read进程

begin

ifcs='1'andread='1'then

data_out<=sram(conv_integer(address));

else

data_out<=(others=>'Z');--其他情况输出高阻态

ENDIF;

ENDPROCESS;

ENDBEHAVE;

 

●观察和分析用户可使用的各种可操作器件,如:

单脉冲键、reset键、拨动开关及各指示灯,制表说明它们的功能,如:

表1FPGA-CPU调试模式及相应模式开关设置

调试模式模式开关

REGSEL

CLKSEL

FDSEL

FPGA-CPU独立调试模式

0

1

0

FPGA-CPU附加外部RAM运行模式

0

1

1

单片机控制FPGA-CPU调试运行模式

1

0

1

●记录(截图)调试过程中的现象;分析、思考和记录解决的过程.

如上个部分已经解释。

九、课后小结

本实验是所有实验中较难的一个,因为它的过程比较多,细节也比较突出。

通过实验对于存储器的工作过程有了比较明晰的认识。

不过该代码设置了诸多信号量,并不是最优状态。

从仿真波形图中我们很明显可以看出,时延现象非常突出,由于只是仿真测试,我们尚不能估计出在实际中这些误差会带来什么影响,所以在细节方面技巧性的设计还有待提高。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1