打算整理汇编语言与接口微机这方面的学习记录。本部分介绍存储器及其扩展方法。
参考资料
外存:磁盘、U盘、光盘等,外存严格来说属于IO设备。
顺序存储器和随机存储器:读写数据的方式不同。
内存:本文主要讲内存。
只读存储器:存放系统管理程序,比如计算机主板ROM里的BIOS程序。
ROM:一次性写,只读。
PROM:一次性可编程、只读;
每个新的芯片为空片:如果以字节为单位,则为FFH。
EPROM:常用,紫外线可擦除ROM,借助专用写入器可以将程序写入(写入的时候要先擦干净)。
目前常用型号:2716(2K乘8字节==2KB),2732,2764,27128。
后两者目前常用。
E2PROM:电可擦除ROM。可以反复写入,先擦除干净后写,且掉电后信息不丢失
常用是28系列。
随机读写存储器RAM:能读能写,但是掉电后信息丢失。
SRAM:静态,像寄存器/锁存器。
常用型号6264(8k×8bit==8KB)、62128、62256、2114(1K乘半字节,需要用两个2114并成一个字节--位扩展)
DRAM:动态,像电容,存1相当于给电容充电,所以需要反复给DRAM上电刷新(读出来再写入,刷新周期要满足一定条件,太长就不能让系统辨认原有数据了)。
应用DRAM需要设计地址刷新电路,而这个刷新电路很复杂,所以自己设计系统一般使用SRAM。
DRAM集成度更高(虽然较于SRAM速度慢一点点),而计算机使用的都是DRAM。
本章主要是内存中ROM和SRAM的设计。
从结构角度的分类/微机系统中存储器的层次结构:

容量
如果要设计32KB,62256(32K乘8bit==32KB)需要1片,2114需要64片
这里尽量选择接近的芯片来做,比如2114的话占用面积大且对电源要求高。
速度
存取时间:启动一次存储器操作到完成此次操作的时间
存储周期:两次独立的存储器单元操作的最小时间间隔
可以从半导体公司手册查到。
要求:(针对8086读写周期需要4个clk周期这一点)
下面的公式应该不会考,了解吧:
存储器芯片的最小读出时间:\(t_{cyc}(R)<4T-t_{da}-t_D-T\)
- T:8086时钟周期
- tda:8086的地址总线延时时间
- tD:各种因素引起的总线附加延时。总线长度、附加逻辑电路、总线驱动器等之和、
减去一个T是因为工程上的要求。
存储器芯片的最小写入时间:\(t_{cyc}(W)<4T-t_{da}-t_D-T\)
存储带宽:单位时间传输数据容量的大小。
带宽(B,MB/s)==存储器时钟频率(F,MHZ)*存储器数据总线位数(D)/8
\(B=F\times D/8\)
非易失性:是选择ROM还是RAM。
可靠性:平均故障时间间隔。
功耗、成本等
8K×8bit,有13根地址线(编码8k),数据引脚8根(引脚8bit),此外还需要片选信号。
6264有两个片选信号CS1fei和CS2:
还有一个输出允许脚OEfei,片选有效且输出允许有效时,可以输出数据。一个写允许脚WEfei,与片选结合可以写入数据。

注意不能同时写或读。OE和WE只能一个有效。
与8088CPU的地址总线结合起来来看,则8086的低13位地址线A12A0直接寻址6264内部,这叫片内寻址;而高位地址线A19A13,片外寻址,也就是决定是1MB的哪一个8KB,引出译码作为控制信号,作为片选信号。这一点比较好理解。
注意这里8088没有奇偶地址的概念,比较简单。
8086CPU的地址总线。则A1A13来片内寻址,A0决定是奇还是偶地址,高位A14A19片外寻址。
而如果用6264给8088微机系统设计32KB的SRAM:
上述思路是字节扩展,P198 6.4.2
注意译码电路不仅是地址,还有控制信号。比如8088最小方式中有IO/Mfei,表示对存储器操作。
这里实际只需要两位A13和A14来选择芯片块,同时也可以再加上其他不变的高位地址线,参与译码
1K×4bit。有10根地址线,4位数据线。
使用2114给8088系统扩充4KB存储系统:
需要8片
先两两相并位扩展,再串联字节扩展。
8K×8,所以13根地址线,8根数据线
要对2764先擦除后写入数据:
擦除。
OEfei无效,CEfei有效。
不是直接接到地址线和数据线,两边各需要一个锁存。将地址和数据都锁存起来
当上层命令来到,VPP电压加上,PGM加负脉冲,在这个负脉冲期间,锁存也解除,向选中地址写入相应数据
CE OE有效,将写入的数据读出(无锁存器的通道),比较是否符合预期,如果符合,则写入完成。
如果不相等,可重新操作,如果多次操作不行,可能地址单元损坏。
hhh,学了这个可以做编程器了...
2764的正常工作/只读模式:
例题见书P200 6.1
P205 例6.5
第一题,简单,16KB为2的14次方,16进制是4000H,地址范围就是80000H~83FFFH
第二题:
进行地址分析:
逻辑电路(不用型号):
整体设计如下图所示:
如果使用74LS138来做译码器(这个我没有学,跟上图原理相同,只不过封装了一些东西)
第三题:用到一点点汇编知识。这里55H和AAH数据图案检测,给要检测的RAM存储区每个地址单元分别写入55H(0101_0101)和AAH(1010_1010),并读出比较是否符合预期,如果符合,则读写正常。如果不正常,则应作出相应出错报警提示。
MOV AX,8000H
MOV DS,AX
MOV SI,0
MOV CX,16*1024
MOV AL,55H
NEXT1: MOV [SI], AL
MOV BL, [SI]
CMP BL, AL
JNE ERROR ;不相等则转到ERROR
INC SI ;地址增加继续比较
LOOP NEXT1
MOV SI,0
MOV CX,16*1024
MOV AL, 0AAH
NEXT2: MOV [SI],AL
MOV BL,[SI]
CMP BL,AL
JNE ERROR
INC SI
LOOP NEXT2
...
ERROR: ...
扩展原理基本相同,相较于8088,多的是奇偶地址的片选:
P208 例6.6:
上图改为74LS138,但这个器件我不总结了,我没学。
设计图如下图所示:

我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我主要使用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
我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数
我正在编写一个简单的静态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.
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于