这个题目是我临时想的,不知道是否准确,一直想写一个类似的东西,希望能够引起童鞋们关注硬件并喜欢上硬件。
我是文科出生,研究生阶段才转向计算机,中间有很长一段时间都只做软件理论相关研究和一些具体的软件项目,包括编译器、电力系统监控器、软件测试工具研发等;直到2009年,才开始陆陆续续接触一些硬件项目,说是硬件项目,其实主要是一些嵌入式的项目,如世界杯前做的3G转Wifi和自己玩的一些小车和传感器等。
在做嵌入式项目之前,压根就没接触过硬件方面的开发知识,难度可想而知,什么叫编码器、什么叫译码器、怎么做分频、怎么做倍频、怎么做A/D转换、D/A等等,一系列的问题迎面而来。为了完成项目,只能硬着头皮上,从最基础的数字逻辑开始看起,从二进制、卡诺图入手,逐渐深入到组合电路和时序电路,再结合一本叫做《计算机组成与设计-硬件/软件接口》,才逐渐深入明白我们做的编译器后端的具体工作原理,在此基础上对软件的各种性能问题有了更深刻的认识。
组合电路和时序电路是计算机原理的基础课,组合电路描述的是单一的函数功能,函数输出只与当前的函数输入相关;时序电路则引入了时间维度,时序电路在通电的情况下,能够保持状态,电路的输出不仅与当前的输入有关,而且与前一时刻的电路状态相关,如我们个人PC中的内存和CPU中的寄存器,均为时序电路。
说了这么多,我们学习的组合电路和时序电路在计算机中又是怎么一回事呢?为了便于理解,下面以一个大家都能接受的C语言程序开始,从上层向下层开始解释。
void main(){
int a = 3, b = 5;
int sum = a + b;
}

最低0.47元/天 解锁文章
1218

被折叠的 条评论
为什么被折叠?



