做网站的服务器怎么弄,在手机上做网站是什么软件,网站建设合同表(书),织梦做商城网站介绍显卡之前#xff0c;必须得和大家交待清楚#xff0c;那么多的外部设备#xff0c;cpu是如何与他们交流。
大家都学过微机接口技术吧#xff1f;没学过也没关系#xff0c;反正我也只是笼统地说说^_^#xff0c;保证大家一定能看得懂。
按理说#xff0c;如果硬件…介绍显卡之前必须得和大家交待清楚那么多的外部设备cpu是如何与他们交流。
大家都学过微机接口技术吧没学过也没关系反正我也只是笼统地说说^_^保证大家一定能看得懂。
按理说如果硬件种类较少让cpu直接同硬件进行IO操作也不是很过分但现实不是这样的计算机能发展到今天这样兴盛是和诞生各种各样的硬件分不开的。微型计算机通过外部设备与外面的世界互换信息外部设备种类繁多原理各异有机械式、电动式、电子式输出的信号也多种多样有模拟量、数字量、开关量。它们都有自己特性数据格式不相同有的外设是用串行数据有的是并行数据并且它们都在自己的时序下工作无论它们的速度如何在cpu看来都太慢了。
让cpu小朋友与每个“个性不同脾气迥异”的硬件大大们打交道这也太为难cpu了您看通过执行jmp $这样的死循环语句就能看得出人家cpu可是个踏实低调的主所以“交际”这类活动对它还是少点好。再说同任何一个设备打交道cpu那么速度那么快它不得嫌弃别人慢吗为了减少自己的等待时间还得为低速设备准备数据缓冲区。cpu用的信号都是TTL电平外设大多数都是机电设备机电设备可不能用TTL电平驱动这还不算完呢cpu系统总线上传送的都是并行数据所以你听到的都是8位、16位、32位cpu…外设可是并行、串行都有还得转换格式想想就麻烦啊。看来不可能让cpu一一适应它们否则cpu要做的工作太多了。
cpu面临的问题就像校长面临一群学生一样让校长亲自管理每个学生的学习即使是肌肉男施瓦辛格也得累倒于是班主任的出现帮了大忙每个班主任负责一批学生由他们了解学生的情况后再向校长汇报这样校长他不需要过人的体格工作起来也会游刃有余了。人创造出来的东西必然脱离不了人的思维cpu工程师们也给cpu找了“班主任”在cpu和外设之间加了个代理总之以后cpu有什么事就同它接触就行了。什么速度不匹配缓冲区之类的全都由代理来搞定。举个例子如果是串行设备cpu就同串行接口通信把数据发给它后数据再经由串行接口发给串行设备串行设备有了反馈后把数据发送给串行接口再经串行接口返回给cpu并行设备也是如此。
任何不兼容的问题都可以通过增加一“层”来解决。在cpu和外设之间的这一层就是IO接口。IO接口形式不限它可以是个电路板也可以是块芯片甚至可以是个插槽它的作用就是在cpu和外设之间相互做协调转换如cpu和外设速度不匹配它就是变速箱cpu和外设信号不通用它就是翻译机。
这样通过加了中间层后工作就被划分成多个部分每个部分都有专人负责大家都轻松了多好啊。
不过说的还是有点抽象是吗那就整点具体的机箱里的声卡就是驱动音响设备的IO接口本章介绍的显卡也同样是一种IO接口它是用来驱动显示器的。也许您打开机箱后也未发现我说的声卡和显卡那是不是就没有它们呢?当然不会要是听不到声音看不到图像人们买电脑干吗用来学习的哈哈你懂的。其实它们被集成在主板芯片组中了您用的就是传说中的集成声卡和集成显卡。这下清楚多了吧下面咱们还是继续说点抽象的。
IO接口是连接cpu与外部设备的逻辑控制部件既然称为逻辑就说明可分为硬件和软件两部分。硬件部分所做的都是一些实质具体的工作其功能是协调cpu和外设之间的种种不匹配如双方由于速度不匹配那IO接口就实现数据缓冲以减少等待时间数据格式不匹配IO接口就在这两种格式间互相转换。IO接口内部实际上也是由软件来控制运作的这就是所谓的“逻辑”部分所以软件是指用来控制接口电路工作的驱动程序以及完成内部数据传输所需要的程序。
既然提到了软件这就意味着编程这样一来IO接口芯片又可按照是否可编程来分类可分为可编程接口芯片和不可编程接口芯片。
接口的作用是连接处理器和外部设备如果外部设备很简单傻瓜型的、不需要设定就直接能用就可以用不可编程接口芯片与处理器连接不可编程接口芯片是种非常简单的IO接口。
当然物理设备还是很贵重的并且计算机中的IO接口数量也是有限的所以我们当然希望IO接口功能越多越好可以设置多种工作模式甚至允许多个外部设备通过同一个IO接口芯片与处理器连接。计算机与IO接口的通信是通过计算机指令实现的当我们需要定制某些功能时我们也必须用计算机指令告诉IO接口哪些设备连接在此IO接口上、此IO接口的工作模式等。这种通过软件指令选择IO接口上的功能、工作模式的做法称为“IO接口控制编程”。这通常是用端口读写指令in/out来实现的后面会说到。
cpu太忙了它的时间特别宝贵为了简化cpu访问外部设备的工作能够轻松地同任何硬件通信大家就约定好IO接口的功能
1.设置数据缓冲解决cpu与外设的速度不匹配。
cpu和外设速度上的差异可以通过设置缓冲区来解决也就是说数据先存储在缓冲区里等需要的时候无论缓冲区是否满了就传送出去。
2.设置信号电平转换电路。
cpu和外设的信号电平不同如cpu所用的信号是TTL电平而外设大多数是机电设备故不能使用TTL电平驱动可以在接口电路中设置电平转换电路来解决。
3.设置数据格式转换
外设是多种多样的输出的信息可能是数字信号、模拟信号等而cpu只能处理数字信号。数字信号需要经过数/模转换D/A成模拟量才能被送到外设以驱动硬件模拟量也同样需要经过模/数A/D转换成数字量才能被cpu处理。所以接口电路中需要包括A/D转换器和D/A转换器。另外即使双方使用的都是数字信号这也牵涉到格式和字长的问题如cpu使用的是8位或16位或32位并行数据而外设用并行或串行数据都有可能所以IO接口中必须能够识别格式并且转换成对方需要的形式才行。
4.设置时序控制电路来同步cpu和外部设备
硬件的工作也是按照某种时序它们都有自己的时序系统就像cpu工作在自己的晶振时序上一样。双方时序不同接口电路就要协调这两种不同的时间计法。如cpu发控制信号、定时信号给IO接口电路IO接口用它们来控制和管理硬件。随后硬件有了反馈后其应答信号也需要通过接口返回给cpu这样cpu先“问”硬件后“回答”就实现了一次握手之后便可以实现IO的同步操作。
5.提供地址译码
cpu同多个硬件打交道每个硬件要反馈的信息很多所以一个IO接口必须包含多个端口即IO接口上的寄存器来存储这些信息内容。但同一时刻只能有一个端口和cpu数据交换这就需要IO接口提供地址译码电路使cpu可以选中某个端口使其可以访问数据总线。
在后来新加入的硬件只要符合此约定就能同cpu数据交换这样cpu就可以轻松应对种类万千的硬件啦。
后面的内容下半场再说。