为了让大家对单片机有个直观的印象,下面贴出Intel于1972年设计的第一款8位微处理器8008的内部电路。 图中有3500个晶体管,采用10微米工艺制成。
8008微处理器(图片来自参考文献[1])
现在数字电路上的元件大部分都采用CMOS管。 制造微控制器的过程主要是利用物理和化学手段在半导体基板上制造出按一定顺序排列的CMOS管,然后将它们按一定的顺序连接起来。
它们应该按什么顺序排列?
答案可以追溯到图灵机。 图灵机可以被认为是现代计算机体系结构的原型。 图灵机的结构大概是这样的:
程序通过读写头读取纸带上的内容,从而确定读写头接下来移动到哪里以及下一次读写操作。 通过这个简单的结构和配套程序,就可以完成各种逻辑和计算。
关于图灵和图灵机的一些介绍,可以参考这个视频:
当今微控制器中CPU的结构与这种抽象结构非常相似。 下图列出了当今微控制器中常用的结构。 这个结构也是指导如何连接CMOS管的构造蓝图。
如上图所示,需要执行的程序通常存储在单片机的Flash中,而程序中的初始化数据以及运行过程中产生的数据则存储在RAM中。
单片机的工作流程如下:
电源稳定后,PC指针将被初始化。 初始化的PC并不是指向众所周知的main()函数,而是指向一个初始化程序。
初始化程序所做的主要是将程序中的.data段(初始化数据)和.bss段(未初始化数据,默认为零)复制到DRAM中。
初始化完成后,PC指针将被赋值为main()函数的入口地址,然后CPU将执行用户程序。
通过读写外设的寄存器可以控制USB、SPI、ADC、GPIO等外设的操作。 改变DRAM仅改变计算结果。 改变外设的内容会影响USB传输速率、GPIO的输出电压、ADC的采样率等。但是,在抽象层面上,读写DRAM和读写外设没有区别寄存器。 对于中断处理,CPU只是根据外设寄存器改变PC指针的值,让程序跳转到中断处理函数的位置,从而产生中断效果。
就写在这里吧。 如有错误或有疑问,请留言。
参考:
[1] /wiki/英特尔/mcs-8/8008