虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!
目录
第1节 接口/端口的定义
接口:任何两电路或设备间的连接电路。是一组特殊控制电路,介于CPU与内存、CPU与外设之间。
各种外设都必须通过接口才能和CPU(或总线)相连。
寻址:确定设备的地址,区分不同的设备
缓冲:适配外设与CPU的工作速度
转换:适配外设与CPU的信息格式、类型、幅度
时序:外设与CPU的工作时序
接口电路的组成:由多类/多个寄存器构成。
端口:寄存器的另一称呼。
微机的端口:
16根I/O线:地址空间2^16=64K
IBM:A0~9线有效,地址空间2^10=1K:000H~3FFH(1023)
PC系统IO端分配
前256个端口:000h-0FFh,系统外设占用
后768个端口:100h-3FFh,常规外设占用
第2节 端口访问指令
第3节 接口/端口地址设计
概念:给某个端口(接口/设备)设计特定的地址。
即设计端口译码电路:
输入:端口地址(结合IO/M,WR,RD等信号)
输出:仅当AB(地址总线)上出现端口地址时,输出低电平
设计地址译码电路三个前提
①有效I/O地址线10位:A9~0
②端口读写属性(只读/只写/可读可写)
③考虑DMA操作:地址允许信号AEN(DMAC信号)
3.1 AEN=0,即非DMA操作时,端口可以访问;
3.2 AEN=1,即是DMA操作时,端口不能访问;
例子:使用门电路设计端口地址2F8H的只读地址译码电路
分析:仅当AB(地址总线)输入2F8H时输出低电平,其它都输入高电平
地址线 | 0 0 A9 A8 | A7 A6 A5 A4 | A3 A2 A1 A0 |
十六进制 | 2 | F | 8 |
二进制 | 0 0 1 0 | 1 1 1 1 | 1 0 0 0 |
通过程序分析端口2F8H(760)的访问
MOV DX,2F8H ;把数据2F8H输入到DX寄存器
IN AL, DX ;F=0,对应端口被选中。用寄存器DX读数据到AL中。
通过跳线或变成改变端口的地址(2F8H/3F8H)
含有多个端口的接口地址译码电路
例子:某接口有4个端口:384H ~ 387H。画出地址译码电路
步骤:
①选中接口(接口译码)
384H 11 1000 0100
385H 11 1000 0101
386H 11 1000 0110
387H 11 1000 0111
仅当A9-0=11 1000 01XX时译码电路输出低电平
②选中特定电路
用74LS138实现第2级译码:注意AB与A1、A0的对应关系
接口地址的构成形式和实现方法总结:
①单端口:门电路直接译码
②多端口:两级译码,门电路和译码器
③地址可变:通过跳线或编程改变端口的地址
第4节 数据传输方式
所有有疑问的人,可以推荐一个老师给你们:
搜索“慕课”,然后去主页搜索“苏曙光”,这个老师真的真的优秀!讲课从不拖泥带水,精简干练,而且条理清晰,层次分明,超级严谨的!(我不是夸张,你可以当做我是个脑残粉)他目前还没有开设“微机原理”这门课,但是他开了一门《操作原理系统》。你点进去就可以加入学习了,然后去讨论区里去问他!!!