
FPGA GTH Aurora 8b/10b编解码与PCIE视频传输的工程源码及QT上位机源码解决方
案
# 用FPGA搞视频传输能有多爽?手把手拆解Aurora+PCIE方案
最近在折腾FPGA视频传输系统,用上了Xilinx家的GTH高速收发器配合Aurora协议,再绑上PCIE这
匹快马,整套方案跑起来简直像给视频数据装上了火箭推进器。今天咱们不聊虚的,直接扒代码看实现。
## 硬件架构那些事儿
核心就三件套:GTH物理层、Aurora数据链路、PCIE传输通道。GTH负责把并行数据变成高速串行信号
飙车,Aurora 8b/10b给数据套上安全气囊(编解码+时钟纠正),PCIE则负责把处理好的视频流怼进电脑。
先看GTH的配置代码片段:
```verilog
// GTH收发器参数设定
gth_quad_wrapper gth_quad_inst (
.gtrefclk00_in (refclk_156), // 156.25MHz参考时钟
.gthrxn_in (rxn), // 差分接收负端
.gthrxp_in (rxp), // 差分接收正端
.rxrate_out (rxrate), // 接收速率调整
.txdata_in (tx_data), // 待发送数据
.rxdata_out (rx_data_raw) // 原始接收数据
);
```
这里有个小细节要注意——`rxrate`这个信号控制着线速率。比如咱们要跑3.125Gbps的话,实际有
效数据率就是3.125*(8/10)=2.5Gbps,这个8b/10b编码的开销是必须的代价。
## 代码里的门道
Aurora核生成的代码像个黑盒子,但关键在数据帧处理。看看咱们的数据打包逻辑:
```verilog
always @(posedge aurora_clk) begin
if(video_data_valid) begin
aurora_tx_tdata <= {8'hAA, video_line_flag, video_payload};
aurora_tx_tvalid <= 1'b1;