Linux驱动开发-第一章-硬件基础

硬件基础

处理器

1、通用处理器(GPP)

目前主流的通用处理器(GPP)多采用SoC(片上系统)的芯片设计方法,集成了各种功能模块,每一种功能都是由硬件描述语言设计程序,然后在SoC内由电路实现的。

  • 中央处理器的体系架构:

    冯·诺依曼结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。

    哈佛结构,将程序指令和数据分开存储,指令和数据可以有不同的数据宽度。此外,哈佛结构还采用了独立的程序总线和数据总线,分别作为CPU与每个存储器之间的专用通信路径,具有较高的执行效率。

  • 指令集划分:

    RISC(精简指令集计算机)和CISC(复杂指令集计算机)。

    CSIC强调增强指令的能力、减少目标代码的数量,但是指令复杂,指令周期长;

    RISC强调尽量减少指令集、指令单周期执行,但是目标代码会更大。

2、数字信号处理器

数字信号处理器(DSP)针对通信、图像、语音和视频处理等领域的算法而设计。它包含独立的硬件乘法器。DSP的乘法指令一般在单周期内完成,且优化了卷积、数字滤波、FFT(快速傅里叶变换)、相关矩阵运算等算法中的大量重复乘法。

  • DSP的分类:

    定点DSP、浮点DSP:

    浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其浮点运算处理速度高于定点DSP。而定点DSP只能用定点运算模拟浮点运算。

  • 通用处理器和数字信号处理器也有相互融合以取长补短的趋势,如数字信号控制器(DSC)即为MCU+DSP。

3、专用处理器

针对特定领域而设计的专用处理器,对于某些应用场合,使用ASIC(专用集成电路)往往是低成本且高性能的方案。ASIC专门针对特定应用而设计,不具备也不需要灵活的编程能力。使用ASIC完成同样的功能往往比直接使用CPU资源或CPLD(复杂可编程逻辑器件)/FPGA(现场可编程门阵列)来得更廉价且高效。

非易失性存储器(NVM)

1、ROM

主要分为不可编程ROM、可编程ROM(PROM)、可擦除可编程ROM(EPROM)和电可擦除可编程ROM(E2PROM); ROM以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。ROM所存数据稳定 ,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。

2、Flash
  • NOR Flash:

    NOR Flash和CPU的接口属于典型的类SRAM接口,不需要增加额外的控制电路。
    NOR Flash的特点是可芯片内执行(eXecute In Place,XIP),程序可以直接在NOR内运行。

  • NAND Flash:

    NAND Flash以块方式进行访问,不支持芯片内执行。

  • NAND Flash较NOR Flash容量大,价格低;NAND Flash中每个块的最大擦写次数是100万次,而NOR的擦写次数是10万次;NAND Flash的擦除、编程速度远超过NOR Flash。

Flash的编程原理都是只能将1写为0,而不能将0写为1。因此在Flash编程之前,必须将对应的块擦除,而擦除的过程就是把所有位都写为1的过程,块内的所有字节变为0xFF。另外,Flash还存在一个负载均衡的问题,不能老是在同一块位置进行擦除和写的动作,这样容易导致坏块。

3、IDE

IDE(Integrated Drive Electronics)接口可连接硬盘控制器或光驱,IDE接口的信号与SRAM类似。人们通常也把IDE接口称为ATA(Advanced Technology Attachment)接口,不过,从技术角度而言,这并不准确。其实,ATA接口发展至今,已经经历了ATA-1(IDE)、ATA-2(Enhanced IDE/Fast ATA,EIDE)、ATA-3(FastATA-2)、Ultra ATA、Ultra ATA/33、Ultra ATA/66、Ultra ATA/100及Serial ATA(SATA)的发展过程。

掉电丢失数据的存储器(RAM)

1、SRAM

静态随机存取存储器SRAM),RAM的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。然而,当电力供应停止时,SRAM储存的数据还是会消失(被称为volatile memory)

2、DRAM(SDARM / DDR SDRAM)

DRAM以电荷形式进行存储,数据存储在电容器中。由于电容器会因漏电而出现电荷丢失,所以DRAM器件需要定期刷新。SRAM是静态的,只要供电它就会保持一个值,SRAM没有刷新周期。每个SRAM存储单元由6个晶体管组成,而DRAM存储单元由1个晶体管和1个电容器组成。

3、DPRAM:双端口RAM

DPRAM的特点是可以通过两个端口同时访问,具有两套完全独立的数据总线、地址总线和读写控制线,通常用于两个处理器之间交互数据。当一端被写入数据后,另一端可以通过轮询或中断获知,并读取其写入的数据。由于双CPU同时访问DPRAM时的仲裁逻辑电路集成在DPRAM内部,所以需要硬件工程师设计的电路原理比较简单。

4、CAM:内容寻址RAM

CAM是以内容进行寻址的存储器,是一种特殊的存储阵列RAM,它的主要工作机制就是同时将一个输入数据项与存储在CAM中的所有数据项自动进行比较,判别该输入数据项与CAM中存储的数据项是否相匹配,并输出该数据项对应的匹配信息。

5、FIFO:先进先出队列

FIFO存储器的特点是先进先出,进出有序,FIFO多用于数据缓冲。FIFO和DPRAM类似,具有两个访问端口,但是FIFO两边的端口并不对等,某一时刻只能设置为一边作为输入,一边作为输出。

接口与总线

1、串口
  • 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
  • 最简单的RS-232C串口只需要连接RxD、TxD、SG这3个信号,并使用XON/XOFF软件流控。组成一个RS-232C串口的硬件原理如下图所示,从CPU到连接器依次为CPU、UART(通用异步接收器发送器,作用是完成并/串转换)、CMOS/TTL电平与RS-232C电平转换、DB9/DB25或自定义连接器。

在这里插入图片描述

2、I2C
  • I2C(内置集成电路)总线是由Philips公司开发的两线式串行总线,产生于20世纪80年代,用于连接微控制器及其外围设备。I2C总线简单而有效,占用的PCB(印制电路板)空间很小,芯片引脚数量少,设计成本低。I2C总线支持多主控(Multi-Mastering)模式,任何能够进行发送和接收的设备都可以成为主设备。主控能够控制数据的传输和时钟频率,在任意时刻只能有一个主控。
  • I2C设备上的串行数据线SDA接口电路是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。同样地,串行时钟线SCL也是双向的,作为控制总线数据传送的主机要通过SCL输出电路发送时钟信号,并检测总线上SCL上的电平以决定什么时候发下一个时钟脉冲电平;作为接收主机命令的从设备需按总线上SCL的信号发送或接收SDA上的信号,它也可以向SCL线发出低电平信号以延长总线时钟信号周期。
3、SPI
  • SPI(Serial Peripheral Interface,串行外设接口)总线系统是一种同步串行外设接口,它可以使CPU与各种外围设备以串行方式进行通信以交换信息。一般主控SoC作为SPI的“主”,而外设作为SPI的“从”。

  • SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性(CPOL)和相位(CPHA)可以进行配置。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。

4、USB
  • USB(通用串行总线)是Intel、Microsoft等厂商为解决计算机外设种类的日益增加与有限的主板插槽和端口之间的矛盾而于1995年提出的,它具有数据传输率高、易扩展、支持即插即用和热插拔的优点,目前已得到广泛应用。

  • USB 1.1包含全速和低速两种模式,低速方式的速率为1.5Mbit/s,支持一些不需要很大数据吞吐量和很高实时性的设备,如鼠标等。全速模式为12Mbit/s,可以外接速率更高的外设。在USB 2.0中,增加了一种高速方式,数据传输率达到480Mbit/s,半双工,可以满足更高速外设的需要。而USB 3.0(也被认为是Super Speed USB)的最大传输带宽高达5.0Gbit/s(即640MB/s),全双工。

  • USB 传输数据的方式:

    1.控制(Control)传输方式
    控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给USB设备发送通用命令。所有USB设备必须支持标准请求(Standard Request),控制传输方式和端点0。

    2.同步(Isochronous)传输方式

    同步传输提供了确定的带宽和间隔时间,它用于时间要求严格并具有较强容错性的流数据传输,或者用于要求恒定数据传送率的即时应用。例如进行语音业务传输时,使用同步传输方式是很好的选择。同步传输也常称为“Streaming Real-time”传输。

    3.中断(Interrupt)传输方式
    中断方式传送是单向的,对于USB主机而言,只有输入。中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量分散的、不可预测的数据传输场合,键盘、游戏杆和鼠标属于这一类型。

    4.批量(Bulk)传输方式
    批量传输主要应用在没有带宽、间隔时间要求的批量数据的传送和接收中,它要求保证传输。打印机和扫描仪属于这种类型。

5、以太网接口
  • 以太网接口由MAC(以太网媒体接入控制器)和PHY(物理接口收发器)组成。以太网MAC由IEEE802.3以太网标准定义,实现了数据链路层。常用的MAC支持10Mbit/s或100Mbit/s两种速率。吉比特以太网(也称为千兆位以太网)是快速以太网的下一代技术,将网速提高到了1000Mbit/s。千兆位以太网以
    EEE 802.3z和802.3ab发布,作为IEEE 802.3标准的补充。

  • 一个以太网接口的硬件电路原理如下图所示,从CPU到最终接口依次为CPU、MAC、PHY、以太网隔离变压器、RJ45插座。以太网隔离变压器是以太网收发芯片与连接器之间的磁性组件,在其两者之间起着信号传输、阻抗匹配、波形修复、信号杂波抑制和高电压隔离作用。

在这里插入图片描述

6、PCI和PCI-E
  • PCI(外围部件互连)是由Intel于1991年推出的一种局部总线,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛应用。PCI总线具有如下特点:
    ·数据总线为32位,可扩充到64位。
    ·可进行突发(Burst)模式传输。突发方式传输是指取得总线控制权后连续进行多个数据的传输。突发传输时,只需要给出目的地的首地址,访问第1个数据后,第2~n个数据会在首地址的基础上按一定规则自动寻址和传输。与突发方式对应的是单周期方式,它在1个总线周期只传送1个数据。
    ·总线操作与处理器—存储器子系统操作并行。
    ·采用中央集中式总线仲裁。
    ·支持全自动配置、资源分配,PCI卡内有设备信息寄存器组为系统提供卡的信息,可实现即插即用。
    ·PCI总线规范独立于微处理器,通用性好。
    ·PCI设备可以完全作为主控设备控制总线。

  • 下图给出了一个典型的基于PCI总线的计算机系统逻辑示意图,系统的各个部分通过PCI总线和PCI-PCI桥连接在一起。CPU和RAM通过PCI桥连接到PCI总线0(即主PCI总线),而具有PCI接口的显卡则可以直接连接到主PCI总线上。PCI-PCI桥是一个特殊的PCI设备,它负责将PCI总线0和PCI总线1(即从PCI主线)连接在一起,通常PCI总线1称为PCI-PCI桥的下游(Downstream),而PCI总线0则称为PCI-PCI桥的上游(Upstream)。为了兼容旧的ISA总线标准,PCI总线还可以通过PCI-ISA桥来连接ISA总线,从而支持以前的ISA设备。

在这里插入图片描述

  • PCI-E(PCI Express)是Intel公司提出的新一代的总线接口,PCI Express采用了目前业内流行的点对点串行连接,比起PCI以及更早的计算机总线的共享并行架构,每个设备都有自己的专用连接,采用串行方式传输数据,不需要向整个总线请求带宽,并可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。
7、SD和SDIO
  • SD(Secure Digital)是一种关于Flash存储卡的标准,也就是一般常见的SD记忆卡,在设计上与MMC(Multi-Media Card)保持了兼容。SDHC(SD High Capacity)是大容量SD卡,支持的最大容量为32GB。2009年发布的SDXC(SD eXtended Capacity)则支持最大2TB大小的容量。

  • SDIO(Secure Digital Input and Output Card,安全数字输入输出卡)在SD标准的基础上,定义了除存储卡以外的外设接口。SDIO主要有两类应用——可移动和不可移动。不可移动设备遵循相同的电气标准,但不要求符合物理标准。现在已经有非常多的手机或者手持装置都支持SDIO的功能,以连接WiFi、蓝牙、GPS等模块。

  • eMMC(Embedded Multi Media Card)是当前移动设备本地存储的主流解决方案,目的在于简化手机存储器的设计。eMMC就是NAND Flash、闪存控制芯片和标准接口封装的集合,它把NAND和控制芯片直接封装在一起成为一个多芯片封装(Multi-Chip Package,MCP)芯片。eMMC支持DAT[0]~DAT[7]8位的数据线。上电或者复位后,默认处于1位模式,只使用DAT[0],后续可以配置为4位或者8位模式。

CPLD和FPGA

1、CPLD
  • CPLD(复杂可编程逻辑器件)由完全可编程的与或门阵列以及宏单元构成。

  • CPLD中的基本逻辑单元是宏单元,宏单元由一些“与或”阵列加上触发器构成,其中“与或”阵列完成组合逻辑功能,触发器完成时序逻辑功能。宏单元中与阵列的输出称为乘积项,其数量标示着CPLD的容量。乘积项阵列实际上就是一个“与或”阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑。在“与”阵列后一般还有一个“或”阵列,用以完成最小逻辑表达式中的“或”关系。下图为非常典型的CPLD的单个宏单元结构。

在这里插入图片描述

下图给出了一个典型CPLD的整体结构。

在这里插入图片描述

2、FPGA
  • FPGA(现场可编程门阵列)基于LUT(查找表)工艺。查找表本质上是一片RAM,当用户通过原理图或HDL(硬件描述语言)描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路所有可能的结果,并把结果事先写入RAM。这样,输入一组信号进行逻辑运算就等于输入一个地址进行查表以输出对应地址的内容。
  • 下图所示为一个典型FPGA的内部结构。这个FPGA由IOC(输入/输出控制模块)、EAB(嵌入式阵列块)、LAB和快速通道互连构成。

在这里插入图片描述

IOC是内部信号到I/O引脚的接口,它位于快速通道的行和列的末端,每个IOC包含一个双向I/O缓冲器和一个既可作为输入寄存器也可作为输出寄存器的触发器。

EAB(嵌入式存储块)是一种输入输出端带有寄存器的非常灵活的RAM。EAB不仅可以用作存储器,还可以事先写入查表值以用来构成如乘法器、纠错逻辑等电路。当用于RAM时,EAB可配制成8位、4位、2位和1位长度的数据格式。

LAB主要用于逻辑电路设计,一个LAB包括多个LE(逻辑单元),每个LE包括组合逻辑及一个可编程触发器。一系列LAB构成的逻辑阵列可实现普通逻辑功能,如计数器、加法器、状态机等。

器件内部信号的互连和器件引出端之间的信号互连由快速通道连线提供,快速通道遍布于整个FPGA器件中,是一系列水平和垂直走向的连续式布线通道。

  • 对于驱动工程师而言,我们只需要这样看待CPLD和FPGA:如果它完成的是特定的接口和控制功能,我们就直接把它当成由很多逻辑门(与、非、或、D触发器)组成的可完成一系列时序逻辑和组合逻辑的ASIC(特殊应用集成电路);如果它完成的是CPU的功能,我们就直接把它当成CPU。驱动工程师眼里的硬件比IC设计师要宏观。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值