处理器与高速外设之间的通信

时间:2010-06-18 20:01:40

标签: interface embedded operating-system processor rtos

考虑到处理器以100 MHz运行并且数据以1000 Mbit / s(8位/ Clockcycle @ 125 MHz)的速率从外部设备/外设进入处理器,这是处理的最佳方式流量以更高的速度流向处理器?

4 个答案:

答案 0 :(得分:4)

首先,你不能在软件中做到这一点。没有办法以足够的速率对数字线路进行采样,或者对它做任何有用的事情。

您需要使用硬件FIFO缓冲区或存储单元。当数据突发进入时,它可以在高速FIFO中缓冲,然后根据处理器的需要读出。

高速FIFO芯片的下降非常昂贵(尽管大多数都是双端口)。为了降低成本,最好使用SRAM芯片和硬件加法器来增加输入数据的地址线。

答案 1 :(得分:2)

你缓冲它。通常,使用DMA(不涉及cpu)将来自设备的数据写入内存缓冲区(循环队列)。 cpu以恒定速率从内存缓冲区读取。通常,设备以突发方式发送数据。这样可以防止缓冲区填满。如果数据太多,缓冲区溢出。

答案 2 :(得分:2)

这对软件来说并不罕见。塞马吉说的是正确的话。这是一个系统工程问题。其他人也有正确的答案。如果你想用100MHz处理器查看或处理这些数据,那就不会发生,不要费心去尝试。您可以查看它的快照,或者让硬件过滤掉您正在寻找的特定百分比。虽然这是一个系统问题,但硬件提供了什么,这些数据放在哪里,这个数据的软件任务是什么,它是否看到数据的X缓冲区进入了gointa,并且通知goouta硬件有X缓冲区准备好了吗?硬件是否检查并对齐缓冲区,以便您可以查看标头,然后确定将硬件路由到何处?完成系统工程后,您将知道是否可以使用该处理器,如果您可以使用它的工作是什么以及如何操作。

你的直接问题。处理它的最佳方法是什么。处理它的最好方法是让硬件(fpga,asic等)将它移入和移出某个存储设备(可能是某种类型的ram)。处理器耗尽的ram不一定(DMA是一件好事可以避免)。硬件是软件可以与之交谈的东西,但您无法检查所有这些数据,所以不要尝试。不知道这是什么类型的数据,什么形式,软件看你愿意强迫硬件做多少工作等等,决定了答案的其余部分。如果您希望某个(保证)百分比是坏的或不属于此处理器,等等具有硬件过滤器,那么您可以处理剩下的内容。

网络就是一个很好的例子,PC有gige端口,但无法处理GigE线速数据。这就是为什么我们现在使用交换机而不是集线器,硬件切片一部分数据,以便PC可以处理它,协议处理以后重新发送无法处理的数据。并且交换机处理器不会查看所有数据,硬件会对其进行切片,因此软件只能检查标头。或者有时软件只管理驱动硬件的表,硬件处理数据的所有工作。

您的系统工程设计的答案是否会失败。

答案 3 :(得分:1)

DMA(直接内存访问)可能是解决方案,但是,内存总线似乎不可能比处理器内核运行得更快,因此接收外设必须接受比8位更大的寄存器数据,因为125MHz可以不能持久。例如,16位寄存器允许62.5MHz的存储器写入,这是可以实现的。此外,接收设备必须能够接受外部时钟,该外部时钟对核心时钟更快且异步。当然,接收外设也必须支持DMA。

除非您更了解您的硬件和通信协议,否则除了一般性答案之外,很难提供任何其他内容。