片内外设就是片上外设,同一种意思不同说法而已。
片内外设和片外外设的区别:
片内、外设是两个概念,片内指做成芯片的集成电路内部,简称片内,片外同理显而易见;外设是外部设备的简称,是指集成电路芯片外部的设备。集成电路芯片与外部设备的连接一般需要专门的接口电路和总线的连接(包括控制总线路,地址总线和数据总线)。由于大规模集成电路的技术发展得很快,现在许多芯片在制造得时候已经能够将部分接口电路和总线集成到芯片内部。对于这部分电路与传统的接口电路和总线是有区别的,为了加于区别可以称之为片内外设,其含义是在集成电路芯片内部集成的用于与外部设备连接的独立于内核的控制器、接口电路和总线等。
早期由于IC集成工艺不发达,很多东西都是外设,比如PWM、ADC、CAN等DSP芯片,原来都是需要芯片外接的,即使是现在,仍然有独立的ADC芯片,比如ADS8364等等。但是现在,PWM、ADC等等东西都已经集成在DSP芯片内部,当然,无论无何,芯片总还是会需要外接一些设备实现某种系统,为了与那些外设相区别,就将集成在芯片内,但是又不属于芯片本身(比如DSP,是一种微处理器,因此芯片中不属于微处理器的部分都是外设)的称为“片上外设”
举个例子,我们知道STM32单片机是ST公司基于Cortex-Mx开发的芯片,而ST公司用ARM内核设计芯片的过程中添加的独立于内核的东西(比如串口模块、FLASH、I2C模块、SPI通信模块、ADC和DAC模块等等)对于内核来说就是“外设”,由于是集成在芯片内部的,所以叫片上外设。我们拿到ST公司生产的STM32芯片,开发各种应用系统,在我们自己开发的系统上面独立于STM32的外部设备如(显示屏、SD卡)等都是片外外设。也就是说现在芯片设计中集成的一些IP,都属于片内外设。
看下图,黑色部分是ARM公司设计的内核,红色部分是ST公司基于ARM公司设计的芯片添加的部分,称之为片上外设,绿色是开发者设计应用系统添加的部分,称之为片外外设。