草庐IT

计算机组成原理 存储器实验

Long_UP 2023-12-29 原文

存储器实验

实验环境

计算机组成原理实验环境

实验目的

  1. 掌握静态随机存储器 RAM 的工作特性。
  2. 掌握静态随机存储器 RAM 的读写方法。

实验要求

  1. 做好实验预习,熟悉 MEMORY6116 芯片各引脚的元器件的功能和连接方式,熟悉其他实验元器件的功能特性和使用方法,看懂电路图。
  2. 按照实验内容与步骤的要求,认真仔细地完成实验。
  3. 写出实验报告。

实验电路

本实验使用的主要元器件有: 2Kx8 静态随机存储器 6116 , 8 位数据锁存器 74LS273 (实验用作地址寄存器AR),三态输出的 8 组总线收发器 74LS245 ,与非门、与门、开关、指示灯等。芯片详细说明请见附录。

下图为本实验所用的存储器原理图,图中尾端带加粗标记的信号为控制信号,其余为数字信号或地址信号。实验电路中涉及的控制信号如下:

(1) CE : 6116 片选信号。为 0 时 6116 正常工作。
(2) OE : 存储器读信号。 CE=0 , OE=0 时为读操作, 实验中将其接地,恒置为 0。
(3) WE : 写信号。 CE=0, 在 OE 恒为 0 的情况下,WE=1 为写操作,WE=0 为读操作。
(4) P1 : 脉冲信号,当 WE=1 、P1=1 时,6116 进行写操作。
(5) LDAR : 对地址寄存器 AR 进行加载的控制信号,LDAR=1 时为加载状态。
(6) P2: 脉冲信号,当 LDAR=1 时,在上升沿将地址载入 AR 。74LS273 触发器在时钟输入为高电平或低电平时,输入端的信号不影响输出,仅仅在时钟脉冲的上升沿,输入端数据才发送到输出端,同时将数据锁存。
(7) SW-BUS:开关输出三态门使能信号,为 0 时将 74LS245 输入引脚的值从输出引脚输出,即将 SW7~ SW0 数据发送到数据总线。

实验原理

实验所用的半导体静态存储器电路上图所示。数据开关 (SW7~ SW0) 用于设置读写地址和欲写入存储器的数据,经三态门 74LS245 与总线相连,通过总线把地址发送至 AR ,或把欲写入的数据发送至存储器芯片。静态存储器由一片 6116 (2Kx8) 构成,但地址输入引脚 A8 ~ A10 接地,因此实际存储容量为 256 字节,其余地址引脚 A0 ~ A7 与 AR 相连,读和写的地址均由 AR 给出。 6116 的数据引脚为输入、输出双向引脚,与总线相连,既可从总线输入欲写的数据,也可以通过总线输出数据到数据灯显示。共使用了两组显示灯,一组显示了从存储器读出的数据,另一组显示存储单元的地址。

6116 有三根控制线, CE 为片选线, OE 为读线, WE为写线,三者的有效电平均为低电平。当片选信号有效时, OE=0时进行读操作, WE=0 进行写操作。本实验将 OE 接地,在此情况下,当 CE=0、 WE=1 时进行读操作;当 * CE*=0 、 WE =0 时进行写操作。由于 6116 的 WE 信号是由 WE 控制信号与 P1 进行与非运算得来的,因此, WE=1 时为写操作,其写时间与 P1 脉冲宽度一致。
读数据时,在数据开关上设置好要读的存储单元地址,并打开三态门 74LS245 , LDAR 置1,发出一个 P2 脉冲,将地址送入 6116 ,设置 6116 为读操作,即可读出数据并在数据灯上显示。
写数据时,先在数据开关上设置好要写的存储单元地址,并打开三态门 74LS245 , LDAR 置1,发出一个 P2 脉冲,将地址送入 6116 , 然后在数据开关上设置好要写的数据,确保三态门打开,设置 6116 为写操作,发出一个 P1 脉冲,即可将数据写入。

实验内容与步骤

(1) 运行虚拟实验系统,从左边的实验设备列表选取所需组件拖到工作区中,按照上图所示组建实验电路,得到如下图所示的实验电路。注意:图中没有使用总线,元器件通过两两之间连线实现彼此连接。当然,实验时也可以选用总线来连接器件。

(2) 进行电路预设置。

  1. 将 74LS273 的 MR置 1 , AR 不清零;
  2. CE=1, RAM6116 未片选;
  3. SW-BUS =1,三态门关闭。

(3) 打开电源开关。

(4) 存储器写操作。向01H、02H、03H、04H、05H存储单元分别写入十六进制数据 11H 、12H 、13H 、 14H 、 15H , 具体操作步骤如下(以向 01 号单元写入 11H 为例):

  1. 将 SW7~SW0 置为 00000001 , SW-BUS =0,打开三态门,将地址送入 BUS ;

  2. LDAR =1 ,发出 P2 单脉冲信号,在 P2 的上升沿将 BUS 上的地址存入 AR,可通过观察 AR 所连接的地址灯来查看地址, SW-BUS=1 关闭三态门.

  3. CE =0,WE=1 , 6116 写操作准备(注意:此时 WE =1,因而会读出此地址原有数据);

  4. 将 SW7~SW0 置为 00010001 , SW-BUS =0,打开三态门,将数据送入BUS ;

  5. 发出 P1 单脉冲信号,在P1的上升沿将BUS上的数据 00010001 写入 RAM 的 01 地址;

  6. CE=1, 6116 暂停工作,SW-BUS =1 关闭三态门。
    提示:可以使用“工具”菜单中的“存储器芯片设置”实时查看存储器芯片中的数据。注意本虚拟实验系统的6116芯片中预存了一些代码和数据。


    (5) 存储器读操作。依次读出01H、02H、03H、04H、05H单元中的内容,观察上述单元中的内容是否与前面写入的-致。具体操作步骤如下(以从01号单元读出数据11H为例):

  7. 将 SW7~SW0 置为 00000001 , SW-BUS =0 ,打开三态门,将地址送入 BUS ;

  8. LDAR=1,发出P2单脉冲信号,在P2的上升沿将BUS上的地址存入 AR 中,可通过观察 AR 所连接的地址灯来查看地址,SW-BUS =1 关闭三态门;

  9. CE=0 ,WE=0,6116 进行读操作,观察数据灯是否为先前写入的 00010001 。

  10. CE =1 ,6116 暂停工作。

思考与分析

  1. 静态半导体存储器与动态半导体存储器的主要区别是什么?
  2. 由两片 6116 (2K8) 怎样扩展成 (2K16) 或 (4K*8) 的存储器?怎样连线?
  3. 查阅 611 6芯片的数据手册,在 CE=0、 OE=0、WE=1的条件下,当输入的地址信息变化时,输出的数据是否会相应变化?是否有延迟?

有关计算机组成原理 存储器实验的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  3. ruby - Rack:如何将 URL 存储为变量? - 2

    我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.

  4. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  5. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  6. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

    我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

  7. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  8. ruby-on-rails - 尝试设置 Amazon 的 S3 存储桶 : 403 Forbidden error & setting permissions - 2

    我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不

  9. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  10. ruby - 如何打印出 Mechanized 存储的 cookie? - 2

    我正在使用mechanize登录网站,然后检索页面。我遇到了一些问题,我怀疑这是由于cookie中的某些值造成的。当Mechanize登录网站时,我假设它存储了cookie。如何通过Mechanize打印出存储在cookie中的所有数据? 最佳答案 代理有一个cookie方法。agent=Mechanize.newpage=agent.get("http://www.google.com/")agent.cookiesagent.cookies.to_scookie返回一个Mechanize::Cookiesobject

随机推荐