概述
我们先建立一个整体的接口格局观,建立知识地图,了解接口的大概面貌。
整体来说,就这点事儿,4个箭头代表了所有!
- 三个器件
- 4个箭头
把这几个都想明白,就完事儿了。
第一层(顶层)抽象:接口是CPU与外设的桥梁
CPU不能直接控制外设,所以加了一个中介,进而间接地控制外设。
接口芯片就是辅助CPU与外界交互的。
第二层抽象:桥梁的具体功能
那么接口芯片这个桥梁能够干啥?
毫无疑问,分为两部分(分开看)
- CPU与接口的交互
- 外设与接口的交互
当然最终目的,还是CPU与外设的交互。
交互的内容是什么?
- 二进制数据
交互的信息是什么?
- 数据
- 控制
- 状态
至于具体内容是什么,取决于实际,这里不展开,总之记住
分开看,找联系
三个器件,两个部分,多种关联。
第三层抽象:桥梁的大致构成
- 数据:CPU <–> 接口 <–> 外设
- 控制:CPU --> 接口
- 状态:接口 --> CPU
接口芯片就是个简化的改进的CPU,接口是CPU的小弟
这里针对多功能可编程接口
接口 | CPU |
---|---|
控制字 | 指令 |
寄存器 | 寄存器 |
读写控制 | 寄存器读写控制 |
地址控制 | 寄存器地址控制 |
无 | ALU运算 |
数据读写 | 数据读写 |
串并转换 | 无 |
数模转换 | 无 |
通过对比,很容易就知道,CPU与接口芯片,整体来说差不多,但是有一些CPU能干接口不能干的,有一些接口能干CPU不能干的。
毕竟,小弟没有老大厉害,但是老大也不可能拥有小弟的全部技能。
但是宏观上来说,对多功能可编程接口的理解,跟CPU是类似的,这个逻辑要明白。
另外,接口的控制字,更像是一种类似于多路选择器的功能选择,它是一种编码,但是远比指令编码的含义要简单地多。
并且,我们知道,CPU被称作芯片,而接口被称为接口芯片,都是芯片,总是类似的~
第四层抽象:CPU与接口的交互
CPU给接口发的:
- 控制信息
- 控制字
- 其他(读写控制)
- 外设数据
接口给CPU发的:
- 状态信息
- 外设数据
第四层抽象:接口与外设的交互
接口给外设发的:
- 外设数据
- 查询外设
外设给接口发的
- 外设应答
第五层抽象:具体接口芯片功能分析
后面把重点的几个芯片分析一下就好,根据内些芯片的设计思想,之后你就可以构建自己想要的“小弟”了。
第六层抽象:驱动程序 — 使用汇编指令控制接口
CPU使用指令编码,去给接口发送二进制信息,可能是
- 外设数据
- 控制字数据
- 读写控制
- ……
总之就是,硬件底层逻辑设计好了,现在需要软件层次的,上层策略的设计和控制了,此时,底层是被屏蔽了的,只是一个黑箱。
第七层实现:接口芯片的设计与实现
大哥!你连CPU都会设计了,接口芯片不会吗?可能唯一麻烦的就是数模转换的部分,内个先不考虑,至少在数字部分,你肯定可以实现一些想要的接口芯片的。
大哥没空干的,就设计个小弟,让他来干!大哥只需要发号施令就行了。