微控制器中外围设备之间的数据流是什么

What is the dataflow between peripherals in a microcontroller

我目前正在用 VHDL 设计 32 位微控制器。我已经制定了指令,一切都在模拟中进行。到目前为止,我已经设计了核心、ROM 和 RAM 接口(一个单独的层,我可以在其中连接任何具有潜在等待状态的设备,具体取决于设备)和一个带有原子寄存器的简单 GPIO。我要集成的下一个外围设备是我已经设计好的 SPI 外围设备。

但我的问题是:真正的微控制器如何 link 将它们的外围设备组合在一起?在我使用过的主流微控制器(STM32、MSP430、PIC 和 AVR)中,它们基本上都具有 "alternate function" 模式,以及输入、输出和(有时)模拟。

在内部,所有外设和 GPIO 外设之间是否有单独的 link,例如,从 SPI MISO 和 MOSI 到某些可分配 GPIO 引脚的直接 link?外围设备通过主系统总线相互通信似乎有点不合逻辑,因为如果您正在进行大量快速 SPI 传输,这会导致总线非常繁忙!然而,让每个外围设备直接link相互连接是将千万亿个逻辑单元用于多路复用器的秘诀吗?

谢谢!

所以你在谈论多路复用外部引脚,首先你想要地址 space 每个外设块 gpio 本身,通用 I/O 位 banging/sampling I/O 以缓慢的方式固定。 spi 外围设备是一个单独的外围设备,该块在远端有味噌、mosi、芯片 select 等。现在除此之外,如果您的最终实现像大多数芯片一样缺乏引脚,那么您可以在这两个提到的外围设备之外添加一个多路复用层。它基本上将外部引脚连接到 gpio 块信号或 spi 块信号,并且该逻辑可以有一个合理的默认值。例如,如果芯片从 spi 启动,那么 spi 函数希望成为默认值,如果主 uart 也在多路复用引脚上,则可能希望成为默认值。但除了像 gpio 这样的特定情况外,gpio 通常是默认值。

基本上您是在谈论将外部引脚多路复用到内部信号以减少引脚数。如果您有足够的引脚,则无需执行此操作。在大多数情况下,您的块是独立设计的,多路复用器是一个单独的块。