采用FPGA PL和PS帧缓冲接口的示波器类型设计?

时间:2016-06-06 05:29:21

标签: qt embedded fpga xilinx zynq

我在Xilinx Zynq芯片中运行在可编程逻辑上的一个verilog模块中生成一个特定信号(数字脉冲)。信号非常快,时钟约为200MHz。 我还有一个简单的linux和framebuffer Qt接口,用于以后控制我的应用程序。

我如何对我的信号进行采样,以便在我的Qt应用程序中制作示波器界面?我希望能够提供我正在产生的脉冲的视觉效果。

我需要使用什么才能以这样的时钟频率采样足够的数据?我如何将内核模块或mmap传递给Qt?

1 个答案:

答案 0 :(得分:0)

您最好做大多数示波器所做的事情:将数据采样到RAM,然后将其传输到处理器以进行显示/分析,以及更轻松的"步伐。

在FPGA方面,你需要一个能够检测某种启动或触发条件的状态机,可能是在从软件端设置了一个模式寄存器中的一个位置之后。

状态机然后将样本填充到由一个或多个块柱塞组成的缓冲区中。如果要将触发器放置在捕获的样本中间的某个位置,则应将其作为循环缓冲区,并使其连续记录,在触发后停止可配置数量的样本,以便在触发条件之前保留一些所需的数字没有被更新的人覆盖。

由于FPGA块rams通常是双端口,因此您可以简单地将另一个端口挂接到CPU总线以进行读取。您可能希望寄存器读取采样状态机的状态,如果您使用循环缓冲区方法,它停止的地址,以便您可以将数据打包到线性时间记录。

尝试进行流式实时采样可能是可能的,但会更加困难,并且不清楚您是否可以对实时生成的数据做任何有意义的事情。尽管如此,如果你想尝试,你可能需要在采样和处理器总线之间放置一个FIFO缓冲区,因为你可能只能在块中使用数据,而必须在两者之间服务其他操作,所以有些东西是需要吸收样品的恒定速率流入。另一种方法可能是尝试构建一个直接将样本写入外部系统RAM的DMA引擎,但这可能会更难。

您还可以查看CPU中是否有可用的高速接口 - 例如,它们可能是最初用于视频的内容。

您似乎只测量数字信号,即一位预测。如果您希望处理比FPGA架构可支持的更高的输入采样率,这可能意味着您可能会在FPGA边缘使用类似解串器块的内容将1位输入流转换为更宽的样本的更慢流储藏。

就输出而言,一旦你在缓冲区中有一个样本矢量,将其转换为范围/逻辑分析器类型的绘图非常简单,使用尽可能多的缩放,光标注释,自动测量或任何你等。

另外请不要忘记,如果只是为了在开发过程中使用它,FPGA和它们的工具通常能够在设计中构建逻辑分析器,并通过编程接口声明绘图数据在PC上。