一、引言
1、SoC(System-on-chip)
?传统的计算机系统主板由大量的电子元器件、散热装置以及固定连接器组成,需要使用大量的机械连接装置,以及额外的专用集成电路(Application SpecificIntegrated Circuit,ASIC)器件,这会带来以下几个方面的问题: (1)增加系统的整体功耗。 (2)增加系统的总成本。 (3)降低系统可靠性。 (4)维护成本较高。 ??传统计算机系统由于存在大量芯片与机械连接装置,使用时可能由于机械连接不牢固,造成系统无法正常工作。随着半导体技术的发展,将基于PCB的构造集成至芯片,即将构成计算机基本结构的大量元件集成到一个芯片中,如CPU内核、总线结构、功能丰富的外设控制器以及模数混合器件。 ??典型地,ARM公司向其合作伙伴提供了以ARM CPU体系结构为基础的嵌入式处理器物理知识产权( Intellectual Property,IP)核,以该嵌入式处理器结构为核心,可以在单个芯片内搭载功能丰富的外设资源。这种将一个计算机系统集成到单芯片中的结构称为片上系统(System on a Chip,SoC)。在该结构中,集成了ARM CPU核、ARM制定的高级微控制器总线结构( Advanced Microcontroller Bus Architecture,AMBA),以及用于和外部不同设备连接的物理IP核。
2、SoC与MCU及CPU
(1)SoC优势
(1)集成多个功能强大的处理器内核. (2)集成容量更大的存储器块、不同的I/O资源,以及其他外设. (3)集成了功能更强大的图形处理器单元( Graphies Processing Unit,GPU)、数字信号处理器( Digital Signal Processor,DSP)以及视频和音频解码器等. (4)可运行不同的操作系统。典型地有微软公司的windows操作系统、 Linux操作系统和谷歌公司的 Android操作系统。 (5)可以用于更高级的应用,如数字设备的主芯片(智能手机、平板电脑)。
(2)CPU(Central Processing Unit)特点
(1)单个处理器核。 (2)CPU可以用于绝大多数的应用场合,但是需要额外的存储器和外设的支持
(3)MCU(Microcontroller Unit)特点
(1)典型地,它只有一个处理器内核 (2)其内部包含了存储器块、I/O和其他外设 (3)MCU主要用于工业控制领域,如嵌入式应用。
实际上,MCU相当于低级的SoC,MCU与CPU均是SoC的子集。
3、典型SoC
高通 ----------骁龙 英伟达--------图睿 苹果-----------A系列(如A4,A5等,目前ipad2020采用了A12处理器芯片)
4、SoC设计流程
(1)IP供应商:如ARM,英特尔等 (2)芯片设计公司:如TI,Xilink,NVDIA,高通,华为海思等(他们主要从事芯片设计工作,一般不参与芯片的加工制造工作) (3)制造厂:台积电,三星,中芯国际等
??设计开发流程中,首先要制定SoC设计规范,完成软硬件划分,购买硬件IP核设计与软件驱动程序,IP核设计与驱动程序均由IP供应商提供,ARM等公司不参与芯片制造,他们主要靠授权IP核实现盈利。之后由芯片设计公司实现软硬件集成,并在FPGA上进行验证。之后软硬件进行优化与验证,最后交由制造厂加工芯片,设备厂商再进行PCB制备与设备组装。
??实际上,大部分嵌入式软硬件工程师仅仅在从事应用程序开发和验证以及PCB制造与设备组装工作,并不涉及芯片设计开发。在产品开发过程中,我们仅仅通过接口进行调用,内部已经被封装,类似于一个黑盒子,但通过学习ARM架构可以促进我们对于底层的理解,加深我们对于芯片工作原理的认识。
5、SoC基本结构
?如上图所示,针对于一个SoC器件主要由以下部分组成: (1)一个ARM处理器,如 Cortex-M0 (2)高级微控制器总线结构( Advanced Microcontroller Bus Architecture,AMBA) (3)来自ARM或者第三方的IP核 (4)一些SoC提供更复杂的结构,如:包含总线桥的多总线系统、DMA引擎、时钟生成器单元,以及电源管理单元等。
6、可编程SoC技术
??Xilinx公司的ZYNQ 7000系列就是集成了ARM与FPGA的可编程SoC. ??全可编程SoC可分为基于软核与硬核两种全可编程SoC。 (1)基于软核的全可编程SoC:在FPGA中并不存在这样一个CPU,而是通过使用FPGA内的通用逻辑资源,对所描述的CPU功能进行综合与实现后,在FPGA内部实现一个与专用SoC内CPU功能一样的处理器结构,是一种RTL级代码,简化为传输门的形式。 (2)基于硬核的全可编程SoC:如ZYNQ-7000中存在的A9处理器,是真正存在的处理器核,在硅片上已经做好了,只可通过AMBA规范连接CPU与外设,无法观察到CPU内部。 全可编程SoC设计流程见下图: ??采用 Xilinx7系列FPGA实现 Cortex-M0全可编程系统设计的过程。如图1.9所示,在构建全可编程SoC系统时,包含两个开发环境: 1)Xilinx的 Vivado2016.1集成开发环境
在该集成开发环境中,实现的主要功能包括: (1)对 Cortex-M0处理器硬件系统的描述,包括:Cortex-M0处理器、时钟、总线、存储器和外设,描述方法采用HDL和IP核混合设计方法。 注:这种描述方法属于寄存器传输级( Register Transfer Level,RTL)描述。 (2)对所描述的系统进行行为级仿真。通过仿真,及时发现系统描述中存在的缺陷。 (3)对系统进行详细描述和综合。通过详细描述和综合,将RTL描述转换成逻辑网表。 (4)对设计分配物理和时序约東。在本书介绍的内容中,物理约束主要是引脚位置和电气标准;时序约東,目标是保证整个 Cortex-MO嵌入式系统正常运行所需的时序,主要包括建立时间和保持时间。 (5)对设计进行实现。实现过程包括转换、映射以及布局布线。转换将逻辑网表变成 Xilinx可以识别的网表格式;映射将 Xilinx可以识别的网表格式对应到Xilinx具体的FPGA器件;布局布线就是在FPGA器件内选择所使用的逻辑设计资源,并使用FPGA内的互联资源将所使用的逻辑设计资源进行连接。 (6)时序收敛。时序收敛的目标是保证整个硬件系统工作时,不会出现竞争冒险和亚稳定工作状态等时序问题。通过对设计进行布局布线后仿真(时序仿真),读者可以分析所设计的系统在考虑时序(延迟等)时,能否正常工作。当不满足时序收敛条件时,读者需要修改时序约束条件。 (7)生成比特流文件。将实现后的设计转换成可以配置成FPGA的比特流文件。 (8)下载比特流文件。将生成后的比特流文件下载到FPGA内,用于在FPGA内生成全可编程SoC硬件系统结构。 (9)逻辑分析和调试。通过使用Xinx提供的在线逻辑分析工具,分析设计的逻辑功能,以便在出现运行故障时,帮助定位引起故障的原因。
2)Keil的u Vision5集成开发环境 在该开发环境中,可以使用汇编语言、C语言编写驱动、用户应用程序,以及选择使用RTX操作系统。并且,通过该集成开发环境提供的编译器、汇编器和链接器等工具生成可以用于配置 Cortex-M0硬件系统内存储器的十六进制文件。该文件就是所设计软件的机器码描述。
|