什么是数字集成电路呢?标准的定义是:数字集成电路是基于数字逻辑(布尔代数)设计和运行的,基于逻辑门搭建的,用于处理数字信号的集成电路。数字电路是用来处理0和1的信号的,在数字电路中,就只有0和1这两个状态。数字电路通过复杂的逻辑门设计,通过简单的0和1这两个状态的组合,就能实现非常复杂的功能。数字电路是用来处理数字信号的,那集成两个字如何体现呢?“集成”的意思就是,把整个数字电路系统所有的元器件,包括电容,电阻,电感和晶体管以及互连线,制作在一小块半导体晶片上,然后封装在一起,最终实现的产品就是我们日常使用的那个指甲盖大小的小黑片。
数字电路中的数字信号是指在时间上离散,在数值上也离散,且数值的大小和增减都是量化单位的整数倍的一类信号。处理数字信号的电子电路称为数字电路。数字电路是以布尔代数为理论基础,以逻辑门为基础原件,通过非常复杂的逻辑设计,可以实现各种各样的数字逻辑功能。
一个简单的数字电路模型可以理解为如下,它有若干的输入(input),若干个输出(output),以及一个时钟信号(clock)。输入信号在数字电路模块内部经过若干复杂的逻辑处理后,从输出端口输出。而模块内部复杂的逻辑功能,则是设计人员工作的重点。在数字电路中的信号都是离散的二值信号,用数字0和1表示。
布尔代数是能实现数字逻辑功能的理论,数字电路的物理基础是半导体理论。基于半导体工艺,可以制作出符合布尔代数的实际物理器件,即与,或,非这些基本的门级电路,利用这些门级电路结构,可以搭建出更加复杂的数字逻辑电路。基于门级电路,可以搭建出编码器,译码器,数字选择器,加法器,等等的基本模块,利用这些基本模块,可以搭建出复杂的专用系统,如接口信号协议转换,图像处理芯片,DSP芯片等等。
组合逻辑电路的特点是输出只取决于当前的输入,而与之前的输入无关,即组合逻辑电路没有记忆功能。对应的电路特点就是组合逻辑电路只由基本的逻辑门原件构成,没有使用到寄存器和时钟信号。当信号从输入端口输入后,经过短暂的电路延迟,结果就从输出端口输出,不用等待时钟信号来同步。
组合逻辑电路有基本的与门,或门,非门组成。用与,或,非三种运算符和逻辑变量可以构成任何的逻辑函数,依次称这三个逻辑运算符是一组完备集。任何逻辑函数都可以用这三种逻辑符运算来加以表示。一个逻辑函数也可以有多种的函数表达形式。根据真值表,可以将任意的逻辑函数转化为最大项或最小项表达式,进而化简到需要的最简的表达式。
一个组合逻辑电路的功能有多种表达形式,例如表达式,波形图,符号图灯,但能体现组合逻辑电路最本质的还是真值表。真值表是列出了逻辑事件输入和输出之间全部可能状态的表格。通常以1表示真,以0表示假。在FPGA的内部,将一切的组合逻辑电路以真值表的形式存储在LUT(look up table ,查找表)中,根据输入来将真值表中的对应的值进行输出,达到实现组合逻辑电路的功能。
例如,利用组合逻辑电路,就可以实现二进制的加法。首先根据加法的规律,列出二进制加法的真值表,根据真值表,化简得到逻辑表达式,然后用基本的电路原件加以实现即可。
时序逻辑电路的基础是触发器,尽管在数字电路中我们学习了许多种类的触发器,例如RS触发器,JK触发器,T触发器,但在实际的工程设计中,用到的最多的还是D触发器。常见的D触发器由数据输入端口D,数据输出端口Q,时钟端口CLK,复位端口RESET组成。D触发器的特点是在时钟clk的上升沿,触发器会接收D端的数据并在Q端输出,在其余的时刻,D触发器Q端的值保持不变。在通常的数字电路设计中,都统一使用同一个时钟信号,称为同步时序电路。 时序逻辑电路由组合逻辑电路和存储电路两部分组成。存储部分通常就由触发器组成。基于D触发器的时钟触发特性和保持特性,用触发器保持电路的临时状态值,在触发器的输入端接入组合逻辑电路,用于实现逻辑功能,再将组合逻辑的输出连接到需要触发器的输入端口中,在下一个时钟的上升沿,触发器在次采样保持该组合逻辑的输出,由此构成了基于历史状态时序逻辑电路。
例如,对于一个基于时钟的计数器,在复位时,使计数器的寄存器的值复位为0,将寄存器的输出端连接到加法器的一个输入上,加法器的另一个输入设置为1,然后再将加法器的输出端口连接到计数器寄存器的输入端口,形成逻辑闭环。在非时钟上升沿,加法器将寄存器输出的值加1,在时钟上升沿,将加1的结果再采样保持到寄存器中标并输出。由此,就能实现每个时钟计数器加1的功能。
数字集成电路又分为专用集成电路和通用集成电路。专用集成电路是为实现特定功能而设计制造的集成电路。所谓专用集成电路就是我们常说的 ASIC ,是 Application Specific IntegratedCircuit 的缩写,它是直接按功能和要求设计出整个系统,并把这个系统做到集成电路上。ASIC 在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。通用集成电路:所谓通用集成电路就是我们常说的 51 单片机、DSP(数字信号处理器),与 ARM 等等,这些芯片中包含了通用微处理器,需要二次开发,才能用于某一用途。通用集成电路还包括俗称的“电路零件”,就是从各种各样的相对明确的应用当中提取出来的公共部分,比如:我们在学习数字电路中用到的各种 74 系列数字门电路、A/D、D/A 转换器、电源电路等等,这些通用集成电路的特点是可以被各种各样的应用系统直接添加进去完成基本的功能的部分,本质上是分立的。
随着数字集成电路设计的规模越来越大,门数越来越多,功能越来越复杂,现在的集成电路设计不可能从门级电路开始设计。随着EDA设计工具的成熟以及基础模块设计的日趋成熟和完善化,数字集成电路设计可以往更高一个层级入手。由于基本的例如加法器,比较器,编码器,译码器,寄存器等基础模块以及开发设计的非常完善,故只需要在这一层级上,调用这些基础原件进行设计即可。而硬件描述语言(HardwareDescription Language,HDL)就是进行这一项工作的。我们在开发设计电路时,只要按照HDL语言的规范进行代码编写,EDA软件就会自动根据特定的算法将我们用代码描述的电路翻译(专业术语为“综合”)为这些基本的电路单元。然后在根据所依赖的器件和工艺的不同,将这些基本模块映射为门级电路,用以制造专用集成电路(ASIC),或者在FPGA上映射为以LUT和寄存器为基础原件的电路。
技术的发展是十分快的,Verilog语言开发与1989年,如今已经经过了30年的发展,基于Verilog的集成电路设计也已经十分的成熟。在以后的技术发展中,肯定会出现一种比HDL语言更高层级的集成电路设计工具,利用在现阶段已经做得非常成熟的模块,将这些模块再作为设计基础,进行更高层级的设计开发,实现更高层级的更复杂的功能。设计工具的出现,将开发人员从底层重复繁琐的工作中解放出来,让他们能从跟高层级来进行思考和设计,大大的提高了设计的便利性,这也就是技术发展的趋势。而作为一名技术开发人员,也要跟随技术发展的潮流,不断地学习新的技术,才能保持竞争力。
SOC,是片上系统(system on chip)的简称。顾名思义,何为“片”,“片”指的就是芯片;按照标准的解释,系统是由多个具有特定功能的集成电路组合在一个芯片上的产品。片上系统,就是将一整个系统设计制造在一个芯片上。在集成电路领域,一个系统要包含中央处理器(CPU),专用数字IP,专用模拟IP,片内总线通信,片上内存(或片外存储控制接口)等,由CPU通过片内总线来控制专用模块的工作。
我们现在用的手机处理器就是一个最典型的SOC。在手机处理器上,集成有ARM的处理器内核,有DSP,ISP,wifi模块,蓝牙模块,音视频硬件解码模块,相机驱动模块,图线处理器(GPU),DDR控制接口,无线基带模块,现在最新的手机处理器上还带有专用的人工智能算法的加速模块,用于加速人工智能算法的计算。利用SOC芯片,在加上一些外围芯片,就可以设计出一个完整的可用的硬件设备。(参考自:高通官网,晓龙845平台产品介绍页面:https://www.qualcomm.com/products/snapdragon-845-mobile-platform)
一个典型的soc设计,包括处理器内核设计,总线设计,内存模块设计,专用IP设计。现在可以在ARM官网上无需授权就可以下载到designstart版本的M3内核代码以及各种的外围专用IP源码。利用ARM已经提供好的内核,通过AHB,APB总线,我们可以将我们所需要的各种模块集成到系统中,定制自己的SOC。只需要利用M3处理器内核,用于存储运行代码的ROM,用于程序运行时存储数据的RAM,总线矩阵模块,以及专用外设模块,一个最简单的SOC就可以正常运行。这些模块之间利用总线和处理器内核进行数据通信。
在的数字电路芯片在往单片集成的方向发展,目标就是SOC,将所有的数字部分集成到一个单一的芯片上,不仅能提高芯片的设计生产成本,还能提高电路系统的稳定度,并降低功耗。由于利用片内的高性能的总线设计,采用最先进的工艺制造,芯片的总体频率会达到更高最,一提供更高的性能。SOC级别的芯片,现在是ARM一统天下,在手机移动端,在微控制领域的处理器芯片,大多都是基于ARM内核来进行开发设计的。SOC级别的设计重在系统性设计,包括总线传输,内存接口,各个模块之间的互联,数据传输通信,各个专用外设的地址分配和驱动编写,总之就是初中于系统级别的各个资源模块之间的调配。做SOC还要懂得ARM内核的架构,能在汇编,C语言层级编写驱动,在并使用操作系统来实现更加高级的功能和更加方便的开发。而专用的数字IP级别的开发则侧重于算法的硬件实现,侧重于数据的接收处理,侧重于单一的设计目标的实现。设计好一个专用外设模块后,可以将其打包封装成为一个专用的数字IP外设,然后加载到自定制的SOC中去。
对于数字集成电路来说,数字电路只是一个基础工具,我们拥有的是加法器,比价器,编码,译码器等这些基本的建筑材料。根据要设计的目标的不同,我们用这些基本的建筑材料来构建出可以实现不同目标的设计。正如建设房屋一样,我们有的基础材料是砖瓦,水泥,钢筋,用这些材料,可以建设出高楼大厦,也可以建设出精致的独栋小楼,可以造出公路,也可以建设河提河坝,可以用来住人,可以用来自存储货物,也可以用来建设观赏物。可谓是需求多种多样,最终根据需求设计出来的产品也五花八门。如用数字电路的基本单元,构建一个最简单的串口数据收发送模块,构建一个专用芯片的时序驱动模块,构建一个专用计算的加速模块,例如人工智能计算中的卷积计算加速模块,可以构建处理器,可以构建非常复杂的专用模块,例如图像处理模块,接口协议转换模块,内存接口驱动模块等等等等,数字电路的设计百种千样,各个领域都有各自非常成熟的企业在做。如华为之通信,ARM之处理器核心,还有非常多的在大众眼里不熟悉,但在行业内非常出名的企业,大到处理器芯片,交换机芯片,USB接口芯片,指纹识别芯片,小到一个手机镜头的防抖芯片,都有公司做出了成熟的产品。
虽然技术的发展虽然说日新月异,但却是一脉相承的,每一个新的技术的出现其实就是在旧的技术的有一点小小上的创新。除非发送像工业革命那样翻天覆地的技术革新,新的技术直接取代了旧的技术,在大多数时间中,技术的发展是平稳而又预期的发展的。技术底层的革新是非常缓慢的,也是百年难一遇,可遇而不可求的。在大多时间中的技术发展,其实就是对前人做的产品基础上修修补补,增添功能,做到功能更好,性能更高,仅此而已。所以在个人一生的时间尺度之内,技术的发展其实是有迹可循的。已有的技术是基础,要掌握,新型的技术是技术发展的趋势,要学习。当你掌握了你领域的相关的技术时,其实很容易向其他技术去扩展的,不断学习,不断寻找机遇,幸运会青睐于有理想,并为理想做出行动的人的。
关注公众号:“数字积木”,获取更多精彩内容,技术干货。