首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FPGA图像处理

FPGA图像处理
EN

Stack Overflow用户
提问于 2014-03-17 08:23:46
回答 1查看 1.6K关注 0票数 0

我正在做一个项目(使用来自Xilinx的Zynq 7000工具包),在这个项目中,我需要接收来自Arm微控制器的图像,并将其交付给FPGA。我不知道FPGA是如何接收图像的。

我是否应该将图像转换为数组或文本文件?(即使没有ARM微控制器,我也不知道如何将图像(如位图图像或DICOM图像)加载到FPGA上)。

重要的是,我需要一些可以合成的代码。

我不能用“文件打开”之类的东西。

有可能寄给我一个代码来完成这个部分吗?我可以知道你是否在你的网站上解释了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-03-17 09:32:31

你自己来定义协议。

ARM和FPGA将有一些连接,例如从ARM中的一些GPIO引脚连接到FPGA上的一些GPIO引脚。除此之外,您还必须定义一个协议,通常如下所示:

  1. 符号传输 您的协议需要将数据符号从一方传输到另一方。符号可以是一个位、一个小块、一个字节或其他什么东西(这取决于您在这里进行优化)。接收方必须能够确定信号的当前状态是过渡状态还是应该读取的符号。 一个简单的实现是SPI协议,它有独立的数据和时钟连接。当检测到时钟引脚上的上升边缘时,读取单个数据位。可以通过停止时钟来停止总线,并动态地调整速度。
  2. 低层框架 在符号传输的顶部,您通常希望进行某种分组,例如,您总是将整个字节一起传输,并在每个帧之后暂停,或者总是首先发送长度指示符的约定。 当发送方和接收方丢失同步时,这一点非常重要,例如,由于干扰,时钟线路上有一个短脉冲,而且从这一点开始,接收方比发送方多了一点。 当暂停开始时,接收器将有一个有点太多,这是一个明确的迹象,什么地方出了问题,因此接收器可以重置和重新启动在零。 在这一层上,您还可以包括一个指示该帧属于哪个流,从而使您有机会拆分数据和命令通信量。
  3. 误差修正 通常,这些帧通过错误检查代码(例如CRC)进行扩展,该代码允许丢弃带有错误传输的数据。然后,可以使用反馈机制来重传已被混淆的数据。一种可能的实现是在正确接收到帧时断言一行;发送方可以在看到确认时继续处理下一个帧,或者在超时后重复最后一个帧。
  4. 上层框架 在此基础上,您将得到实际的数据。 如果您有一个单独的命令流,您可以使用它来进行帧化(即有一个命令“启动图像”,然后是数据流上的数据,然后是“结束图像”命令)。 当所有内容都在单个流中时,您应该遵循同步标记长度-数据的模式。每个上层帧都以已知的序列开始;如果缺少该序列,数据将被丢弃,直到找到该序列(同样,重新同步)。然后标记执行拆分为数据流和命令流,长度显示要跟踪多少数据,并在数据处理后重新启动对同步模式的扫描。

可以组合这些层来优化,或者减少错误检查,如果输出中的错误是可以接受的,并且您想要提高性能。另外,我还会检查ARM端的引脚是否有一个“特殊功能”附加在上面,因为大多数嵌入式CPU都有现成的控制器可用于几个通信协议,这将使您能够更快地实现协议,并使用DMA控制器这样的硬件来获得更好的性能。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22449591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档