一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情。
1、数字电路
既然是搞硬件,面对开发板,肉眼可见的是电器元件和电路,那么具备一定的电路知识是必须的。什么?以前学出心理阴影,害怕数电模电。别怕,我也学出阴影过。
本篇博客只是浅浅的提一些基础的数电知识,不会特别深奥喔~
1.1、电平特性
数字电路中,电平只有两种:高电平和低电平
对于电平这儿,只需要记住一个点:0低1高,也就是,0代表低电平,1代表高电平。比如在比如在寻迹的时候,就是通过高低电平来判断当前路劲是在设定路线上,还是偏离轨迹。
剩下的内容了,当做常识过一遍,有个印象就好,倘若确实是遇到它了,心里也不会发怵,心平气和的就是奖励它们一个谷歌百度
常用的逻辑电平还有很多,比如TTL、CMOS、LVTTL、RS-232、RS-485 等。
1.1.1、简述TT电平和COMS电平
目前应用最广泛的数字电路是TTL电路和CMOS电路。
TTL—Transistor-Transistor Logic 三极管-三极管逻辑
MOS—Metal-Oxide Semiconductor 金属氧化物半导体晶体管
CMOS—Complementary Metal-Oxide Semiconductor互补型金属氧化物半导体晶体管
- TTL电路
TTL电路以双极型晶体管(三极管)为开关元件,所以又称双极型集成电路。双极型数字集成电路是利用电子和空穴两种不同极性的载流子进行电传导的器件。
它具有速度高(开关速度快)、驱动能力强等优点,但其功耗较大,集成度相对较低。
根据应用领域的不同,它分为54系列和74系列,前者为军品,一般工业设备和消费类电子产品多用后者。
74系列数字集成电路是国际上通用的标准电路。其品种分为六大类:74(标准)、74S(肖特基)、74LS××(低功耗肖特基)、74AS××(先进肖特基)、74ALS××(先进低功耗肖特基)、74F××(高速)、其逻辑功能完全相同。
- CMOS电路
CMOS电路是由绝缘场效应晶体管组成,由于只有一种载流子,因而是一种单极型晶体管集成电路。
它的主要优点是输入阻抗高、功耗低、抗干扰能力强且适合大规模集成。特别是其主导产品CMOS集成电路有着特殊的优点,如静态功耗几乎为零,输出逻辑电平可为VDD或VSS,上升和下降时间处于同数量级等,因而CMOS集成电路产品已成为集成电路的主流之一。
其品种包括4000系列的CMOS电路以及74系列的高速CMOS电路。其中74系列的高速CMOS电路又分为三大类:HC为CMOS工作电平;HCT为TTL工作电平(它可与74LS系列互换使用);HCU适用于无缓冲级的CMOS电路。74系列高速CMOS电路的逻辑功能和引脚排列与相应的74LS系列的品种相同,工作速度也相当高,功耗大为降低。
TTL 和CMOS 的逻辑电平按典型电压可分为四类:
| 一、 | 5V 系列(5V TTL 和5V CMOS) |
|---|---|
| 二、 | 3.3V 系列 |
| 三、 | 2.5V 系列 |
| 四、 | 1.8V 系列 |
5V TTL 和5V CMMOS 是通用的逻辑电平。
3.3V 及以下的逻辑电平被称为低电压逻辑电平,常用的为LVTTL 电平。低电压逻辑电平还有2.5V 和1.8V 两种。 RS-232 和RS-485 是串口的接口标准,RS-232 是单端输入/输出。RS-485 是差分输入/输出。
关于TTL电平 和 COMS电平
TTL 电平信号用的最多,这是因为数据表示通常采用二进制,+5V 等价于逻辑1,0V 等价于逻辑0;
这被称为TTL(晶体管-晶体管逻辑电平)信号系统。
CMOS 电平VCC 可达12V,CMOS 电路输出高电平约为0.9VCC,而输出低电平约为0.1VCC。CMOS 电路中不使用的输入端不能悬空,否则会造成逻辑混乱。
另外,CMOS 集成电路电源电压可以在较大范围内变化,因而对电源的要求不像TTL集成电路那样严格。
TTL 电路和CMOS 电路的逻辑电平关系如下:
| ①VOH | 逻辑电平1 的输出电压 |
|---|---|
| ②VOL | 逻辑电平0 的输出电压 |
| ③VIH | 逻辑电平1 的输入电压 |
| ④VIL | 逻辑电平0 的输入电压 |
输出通常称为 VOH 和 VOL(电压输出高/低),输入称为 VIH 和 VIL(电压输入高和低)。
TTL 电平临界值: ①VOHmin=2.4V,VOLmax=0.4V。 ②VIHmin=2.0V,VILmax=0.8V。
CMOS 电平临界值(假设电源电压为+5V): ①VOHmin=4.99V,VOLmax=0.01V。 ②VIHmin=3.5V,VILmax=1.5V。
注意点: TTL 和CMOS 的逻辑电平转换:CMOS 电平能驱动TTL 电平,但TTL 电平不能 驱动CMOS 电平,需加上拉电阻。
匹配问题
通常情况下,单片机、DSP、FPGA 之间引脚能否直接相连要参考以下方法进行判断: 一般来说,同电压的是可以相连的,不过最好还是要查看下芯片技术手册上的VIL、VIH、VOL 和VOH 的值,看是否能够匹配。
1.2、二进制和十六进制
1.2.1、进制的认识和转换
二进制的特点: 数字电路中只有两种电平特性,即高电平和低电平,这也就决定了数字电路中使用二进制。十进制数大家应该都不陌生,“逢十进一,借一当十”是十进制数的特点。有了十进制数的基础,我们学习二进制数便非常容易了,“逢二进一,借一当二”便是二进制数的特点。
十六进制的特点: 十六进制与二进制大同小异,不同之处就是十六进制是“逢十六进一,借一当十六”。还有一点特别之处需要注意,十进制的0-15 表示成十六进制为0~9、A、B、C、D、E、F,即十进制的10 对应十六进制的A,11 对应B,以此类推。我们一般在十六进制数的最后面加上后缀H,表示该数为十六进制数,如AH、DEH等。这里的字母不区分大小写,在C 语言编程时要写成“0xa,0xde”,在数的最前面加上“0x”表示该数为十六进制数。
进制转换——有个大致的概念就好,实际开发的时候倘若模糊了,可以借助计算器,做过算法的同学了,看到进制转换应该是可以轻松解决的。
十进制转二进制——除二取余,倒序排列
十进制和八进制的之间的转换了,我自己常用的的是方式去背32、16、 8、4、2、1,然后凑出来对应的十进制。
十进制转二进制——除十六取余,倒序排列
借助计算器求进制之间的转换。
1.3、二进制的逻辑运算
1.3.1、与运算、或运算、非运算、同或运算、异或运算
① 与运算
“与”运算是实现两个位都为1时,结果才为1这种逻辑关系的一种运算。C语言中运算符为“&”,其运算规则如下:0&0=0,0&1=0(1&0=0),1&1=1。
C 语言中“&&”表示“按位与”运算,意思是变量之间按二进制位数对应关系一一进行“与”运算。 如(0101 0101)&&(1010 1010)=0000 0000,而上面阐述的“&”运算只是对单一位进行运算。
② 或运算 “或”运算是实现“有1则1,两个位都为0时,结果才为0”这种逻辑关系的一种运算。C 语言中运算符为“|”,其运算规则如下:0|0=0,0|1=1(1|0=1),1|1=1。 C 语言中“||”表示“按位或”运算,意思是变量之间按二进制位数对应关系一一进行“或”运算。 如(0101 0101)||(1010 1010)=1111 1111,而上面 讲到的“|”运算只是对单一位进行运算。
③非运算 “非”运算是实现“求反”这种逻辑关系的一种运算。C 语言中运算符为“!”,其运算规则如下:!0=1,!1=0。
C 语言中“”表示“按位取反”运算。如0101 0101=1010 1010,而上面讲到的“!”运算只是对单一位进行运算。
④同或运算 同或”与“异或”运算使用的较少,我们在这里只做简单了解,大家用到之处可再查找相关资料。“同或”运算是实现“必须相同,否则就没有”这种逻辑关系的一种运算,其逻辑运算符为“⊙”。其运算规则如下: 0⊙0=1,0⊙1=0(1⊙0=0),1⊙1=1。在C 语言中没有规定符号。
⑤异或运算 “异或”运算是实现“两个位相同为0,相异为1”这种逻辑关系的一种运算,其逻辑运算符为“⊕”。其运算规则如下:0⊕0=0,0⊕1=1(1⊕0=1),1⊕1=0。 在C 语言中有“按位异或”运算“^”。Tips:异或运算在算法也被称为“半加运算”,即不考虑进位的加法