数字信号处理和时序电路

348 阅读5分钟

浮点数和指数ip

Float-point这个IP核,用来计算浮点数。

cordic IP核做exp函数即e^x值

Float-point

通过配置Operation Selection界面,完成ip核配置,选择加减法还是定点数转浮点数, 乘法,除法,开方等操作。

ov5640

720p,一帧60hz,像素时钟96mhz。

640x480.一帧90hz,像素时钟 48mhz。

VDMA

1、AXI4-Lite:用于配置 VDMA 的寄存器,来控制 VDMA 的行为;

2、AXI4 Memory Map:用于通过 AXI4 接口,直接访问 DDR 控制器,进而访问 DDR;

3、AXI4-Stream:用于将图像数据按照 AXI4-Stream 的方式快速的输出,或者读入;

AXI4-Lite 用于 CPU 来给 VDMA 配置 IP 的行为,AXI4 Memory Map 直接和 DDR 交互,也就是 FrameBuffer;AXI4-Stream 用于输出、输入视频流式数据;

在 VDMA 中,定义了几条通路:

Write Channel(S2MM)

PG020 中定义的写数据路径为 AXI VDMA 从 AXI4-Stream Slave 接收数据,然后使用 AXI4 Master 写入到主存的过程;这个过程,我们也叫 S2MM,全称是 AXI4-Stream To AXI4 Memory Map:

Read Channel(MM2S)

PG020 中定义的读数据路径为 AXI VDMA 从 使用 AXI4 Master 将数据读出来,AXI4-Stream Master 将数据输出;这个过程,我们也叫 MM2S,全称是 AXI4 Memory Map To AXI4-Stream:

读写通道相互独立。

针对Artix-7 最大时钟频率150mhz。

VDMA 的寄存器是通过 AXI-Lite 进行配置访问,寄存器主要分为两组:MM2S 和 S2MM:

主要配置的内容有:

1、中断的配置,即是否产生一些错误中断,或者一些 Frame Count 中断;

2、使能和禁能 VDMA 或者 GenLock 等;

3、配置要传输图像在内存中 FrameBuffer 的起始地址;

4、配置图像的宽高(这样 VDMA 才知道要传输多大的数据 Size);

5、帧缓存的使用策略;

GenLock mechanism

视频数据输入速度与读取速度不同。为了避免可能导致速率不匹配的潜在不良影响,经常使用帧缓冲。数据写入一个缓冲区,而读取操作在另一个缓冲区进行。

VDMA的Genlock可防止读取和写入通道同时访问同一帧,也就是防止同时对一帧数据进行读和写操作;

VDMA 可以按照我们配置的数据量(图像的宽高),从固定 FrameBuffer 地址,将主存中的数据取出(或者写入);本质上是完成了主存的数据(具体的说,是图像数据)的高带宽搬移。

VTC

VTC 是为了生成特定的分辨率的 H/V 的 Sync,Active,FP,BP 信号用的一个信号输出(或者捕获)IP;可以通过软件对寄存器的配置参数,来达到生成不同分辨率的时序。

其实可以就看做是一个时序发生器,产生显示器输出所需要的时序信号,有了此核之后,那些各种显示消隐区也就不需要怎么考虑了

AXI4-Stream To Video Out

从 VDMA 出来的是 AXI-Stream 流式数据,从 VTC 出来的是像素时钟得到的 Hsync,Vsync,Hbank,Vbank等时序信号,而我们最后对应到 HDMI 的是像素和时序一起的信号,

所以这里需要一个将 AXI-Stream 流式数据和 Timing 信号转为一组同步的像素+Timing信号的 IP Core,Xilinx 提供了一个叫做 AXI4-Stream To Video Out 的软核。

输入为VTC的行场时序等 和axi4 stream 数据流。 输出为rgb数据 和行场同步数据的时序输出。

image.png 720P的像素时钟是 74.25mhz。

FCLK_CLK0 配置为 100M,FCLK_CLK1 配置为 142MHz,这个 FCLK_CLK1 就用于视频流数据时钟,为何选 142MHz 呢,因为 1080p60 定义的时钟速率为 148.5MHz,而且包含消隐区的传递,我们的 AXI4-Stream 的时钟略低于它也可以满足高带宽的数据传送。

像素时钟的产生者是 Dynamic Clock Generator 的 PXL_CLK_O,它的参考时钟是 100MHz 来自 AXI GP CLK;

输出 2 路时钟:

PXL_CLK_O:像素时钟;

PXL_CLK_5X_O:5 倍像素时钟; 串行时钟

AXI HP 的时钟是 142MHz,接入到 VDMA 的 mm2s 的 AXI 和 AXI-Stream,同时还接入到 AXI4-Stream To Video Out 的 aclk。

对应到720P 1208x720

工作时钟为60hz。 60fps。 ov5640 74.25MHZ, 像素时钟100mhz。 通过异步fifo将74.25MHZ同步到100mhz时钟频率。 100mz定为工作时钟。

DDR读写时钟150MHZ. 先缓存再处理。处理完成再通过vdma写入ddr。

像素时钟100mhz。 串行时钟500mhz。

AXI4-lite 总线接入的寄存器配置

1、Dynamic Clock Generator;

2、VTC;

3、VDMA;

数字信号的处理

半精度加法器,半精度乘法器设计。

加法器: 对阶,尾数相加,规格化并舍入,溢出判断。

乘法器: 阶码相加,尾数相乘,规格化并舍入,溢出判断。

滤波器

均值滤波去除高斯噪声

中值滤波去除椒盐噪声

图像二值化

图像分类

卷积

时序电路和组合电路

组合电路,是任意时刻的输出仅仅取决于当前时刻的输入,与电路之前的历史状态无关。

常见的组合逻辑电路:多路选择器、编码器、译码器、移位器、比较器、

时序逻辑电路的 输出不仅取决于当前的输入,还取决于电路的历史状态。

  • 锁存器:锁存器在E的高(低)电平期间对信号敏感
  • 触发器:触发器在CP的上升沿(下降沿)对信号敏感

从电路行为上讲,不管输入如何变化,仅当时钟的沿(上升沿或下降沿)到达时(这就是信号在时序逻辑中延迟一个时钟周期的根本原因),才有可能使输出发生变化。