Embeded Computing W1: 简介+PIC介绍
枫舞龙音
2022年02月04日 07:30

写在前面:本文内涉及知识均为个人根据所学进一步理解整理所得,参考内容为学校的课件以及网络。仅为个人学习所用,不可用作学术权威参考,建议不要引用,任何错误欢迎指正,欢迎大家在评论区讨论。


啥是嵌入式编程Embeded Computing?

硬件来说:

嵌入式系统就是集成了计算机的设备

(这个设备一般是有别于电脑的东西,比如自动售货机,电梯等)

特点:

  • 具有特殊用途,如自动贩卖机有贩卖用途

  • 内置计算机通常较廉价、经得起折腾,而且一般比较(手机等手持计算机的出现模糊了嵌入式计算机(以下称EMC)和一般计算机的界限)

  • 内存等有限制(比起台式和笔记本而言,只有几百bytes的内存)

实际应用中,有单芯片的,多芯片的,softcore (没找着应该咋翻译。。)或者半导体知识产权核(IP-cores)【后两者为可重用芯片,就是给你一块板可以自己设计,包括ASIC (Application  specific integrated circuit) 或者FPGA (Field Programmable Gate Array)内的嵌入式计算器】


软件:

  • 嵌入式编程可以让我们对软件有完全的控制

        优点就是自己安排的就不会浪费内存等资源

        缺点就是没有任何错误保护的机制,就是说当程序员犯傻的时候,程序就不运行了

  • 比起正常的编程来说,更简单但是限制更多。e.g. 甚至没办法自主完成乘法(乘法后面会大概讲到)

  • 限制多体现在:实时操作 (Real time operation)、内存管理 (Memory management)

特点:

  • 实时控制,当我们给出输入时,相应的输出会尽可能快地给出

  • 快速反应

  • 较短的预热时间

  • 无人值守也可以24/7运行

  • 不需要操作系统也可以运行简单的程序

  • 当执行嵌入式编程时我们必须了解硬件中发生了什么


学习目标

  • 单片机系统

  • 微控制器构造

  • 汇编语言/C语言编程

  • 与电子元件的连接

  • 外围设备的使用,中断以及通信的使用

  • 了解其他微控制器和嵌入式设备


EMBEDDED DESIGN (嵌入式设计)

如何用电路来控制现实生活中的某样东西?

方法一:数字电子元件(Digital Electronics)+ 数字设计方法 (Digital design methods)

元件包括:布尔操作与逻辑门,数字的进制、相加、触发器逻辑门的组合(truth table),逻辑门的串联(state diagrams/machines),存储(闪存RAM与只读存储器ROM)

设计方法包括:卡诺图(实际不太用)、VHDL/Verilog/System C等硬件描述语言

我们需要体积更小,价格更便宜,且不需要具备特别好的并行能力(high parallelism)

方法二:可编程设备Programmable devices(计算机/微控制器)

  • 通过命令instructions来代替之前的逻辑门,不同的命令会影响用于决定电流状态的变量。

  • 在这些设备上还有其他与外界连接的输入与输出。

  • 和FPGA需要重构内部逻辑门的连接不同,我们只改变代码,不改变设备上的晶体管。


计算机结构

要注意数据和程序代码是分开存储的

PIC基本概念介绍

Register寄存器:寄存器就是一堆D触发器的集合。通常用方块表示

(D flip-flop:可以捕获上升沿的状态然后输出)

每个寄存器都是一个存储单元,可以被读取或写入。

它和RAM的不同,就是寄存器是内置在CPU里的,而闪存在外面。也因为内置的缘故,它通过CPU计时,运行时可以立即反应。


ALU算术与逻辑单元:CPU中唯一负责计算的部分,可以接收两个输入数据(input word)和一个运算代码(operation code)然后输出计算结果。

比如两个输入是1和2,运算代码是加法,输出结果就是3。

注:ALU的输出会接到工作寄存器(Working register)上,工作寄存器再将结果作为输入回传到ALU中,ALU的一个输入一定来源于工作寄存器。理由是总线上每次只能写入一个值,当处理两个数据时,就需要将一个数据先放到W Reg上。


Working Register工作寄存器

  • W Reg总是ALU的一个数据来源。

  • 因为RAM只与总线相连,所以W Reg必须充当RAM和别的寄存器间的媒介。

  • ALU的另一个输入(operand)从其他地方(如programme)中来。


Pin引脚:用来连接EMC和外界的,通常不会画Vdd和Vss(因为默认电源已经连接)


Computer Buses计算机总线:一条线旁边写个数字,用来表示这是很多条线的集合,上面的数字代表传输的信号占多少存储。整个计算机共享总线,它连接的每个部分都能随时接入总线。

但是当多个输出想要写入总线时,就会造成争用(contention),这可能造成短路。

1kiB = 1024 B = 1024 bytes, 1Mib = 2^20 b = 1024*1024 bits


Tristate buffer三态缓冲器

可以看作一个开关

address decoder地址解码器:

图中个人理解应该是

四个门分别在唯一的一种A1,A0搭配时输出1,因此当我们需要输出2^n种不同的内容时不需要四条线来传输,而只需要n条线加上2^n个逻辑门即可。

地址解码器也可以用作乘法器multiplexer(mux)。


好嘞,这是我第一周的课程学习啦,基本是一些基本概念,之后可能会有更多编程之类的内容,希望能坚持写下去!这周说不定还可以写一篇professional studies的,如果我学得快,第二周的也会提前看完更新,新学期冲冲冲!


references:最后一张图来源于我的第一周EMC课件,因为不是学术论文我就不好好写references啦。