0 Introduction
0.1 Concept
在芯片设计概念当中,有几个名词概念,先理解清楚;
- FPGA VS ASIC: FPGA芯片就是可编程芯片,可以进行在线编程等,在不考虑其他因素情况下,肯定是FPGA非常的好用;但是结合商业市场考虑,FPGA的资源更多的是属于浪费,成本太大;相反:做成ASIC后就是量体裁衣,专用开发,成本大大降下来;因此除了少数几家做通用芯片FPGA外,现在市场都是做ASIC芯片设计;还有另一方面,有的芯片比如通信芯片,门资源等使用巨大,所有FPGA也是无法盛下的;
2.SoC VS ASIC: 这里面ASIC芯片相比上面是更狭义的概念;
1 SoC关注点
SoC更关注软硬件协同设计:
确定哪些部分需要硬化加速;
SoC架构设计:
* 处理器的选择:通用处理器-CPU,数字信号处理器-DSP;大小核设计,多核和众核设计;
* 存储器的选择
* 外设的选择
* 总线的选择:多个设备时–涉及仲裁;传输类型:fixed,Burst…
* 软件架构的设计
SoC架构设计关键任务:将设计划分为一系列硬件模块和软件任务,以及定义各部分之间的接口规范;
1.1 SoC总线
- 总线上存在多个设备,通过仲裁;一般策略:轮询和优先级;
- 传输类型:Fixed、Burst、Split、原子操作、Cacheable;
AMBA是最最常用的总线协议;
1.2 SoC存储器
存储器典型的分层设计:越靠近CPU,越快,容量越小;
- 寄存器:最近的存储器,运行频繁使用的数据;
- Cache:一般分为D-Cache和I-Cache;一般分层组织为1级、2级、3级
1级Cache为每个核独享;
2级多核共享;
3级为全部核共享; - 片内ROM:用来存在SoC系统的启动程序–Bootloader;
- 片外主存:存放正在运行的系统程序、应用程序、数据及堆栈等关键信息;
SDRAM、DDR2/3/4/5、LPDDR4/4x/5、HBM及GDDR5/6 - Flash:外部和内部都可以用flash;
常用来存放系统启动程序;容量大,非易失,多次读写; - Efuse/OTP
1.3 处理器
通用处理器-CPU,数字信号处理器-DSP;大小核设计,多核和众核设计;
核间通信架构方式:
1.共享Cache架构:共享二级或者三级Cache,多核Cache一致性是关键问题;
2.片上互联网络NOC架构,每个处理器具有独立的Cache,通过总线连接在一起,利用消息机制传递进行通信;–参考以太网Switch;
1.4 软硬件接口
系统架构设计需要定义好软硬件接口,才能保证软件的正常工作;主要接口有:
- 存储空间映射–Memory Map:
- 设备驱动
- 初始化、复位、bootloader程序
- 中断复位程序及中断向量
- IO引脚的复用