eDP 1.4及更高版本(包括eDP 1.4a, 1.4b和当前的eDP 1.5)在加扰规范上保持了一致性。以下是详细的规范说明。
一、eDP 1.4+ 加扰核心规范
1. 加扰器基本参数
| 参数 | 规格 |
|---|---|
| LFSR位数 | 16位 |
| 多项式 | G(X) = X¹⁶ + X¹⁵ + X¹³ + X⁴ + 1 |
| 初始值 | 16'hFFFF |
| 加扰范围 | Main Link Audio和Video数据 |
2. 加扰启用条件
eDP加扰是可选的,由Source设备决定是否启用:
// 加扰启用通过DPCD寄存器设置 parameter DPCD_EDP_CONFIGURATION_CAP = 3'h0D; // Bit 0: RESERVED // Bit 1: ALTERNATE_SCRAMBLER_RESET_ENABLE // Bit 2: SCRAMBLING_ENABLE
3. 精确的LFSR实现
根据eDP 1.4规范第4.2.2.1节:
module edp_scrambler_1d4 (
input wire clk,
input wire reset_n,
input wire enable,
input wire [7:0] data_in,
input wire sync_reset, // 对应VSYNC或特定同步事件
output wire [7:0] data_out
);
// LFSR状态寄存器
reg [15:0] lfsr_state;
wire [7:0] scramble_sequence;
// 加扰序列生成(使用LFSR的高8位)
assign scramble_sequence = lfsr_state[15:8];
// 输出加扰数据
assign data_out = enable ? (data_in ^ scramble_sequence) : data_in;
// LFSR反馈计算 - 严格遵循规范多项式
wire lfsr_feedback;
assign lfsr_feedback = lfsr_state[15] ^ // X¹⁵
lfsr_state[14] ^ // X¹⁴
lfsr_state[12] ^ // X¹²
lfsr_state[3]; // X³
// LFSR状态更新 - 每个符号周期更新8次
integer i;
reg [15:0] lfsr_next;
always @(posedge clk or negedge reset_n) begin
if (!reset_n) begin
lfsr_state <= 16'hFFFF; // 规范定义的初始值
end else if (sync_reset) begin
lfsr_state <= 16'hFFFF; // 同步复位到初始值
end else if (enable) begin
// 每个时钟周期并行处理8位
lfsr_next = lfsr_state;
for (i = 0; i < 8; i = i + 1) begin
lfsr_next = {lfsr_next[14:0], lfsr_feedback};
end
lfsr_state <= lfsr_next;
end
end
endmodule
4. 同步复位机制
eDP 1.4定义了两种同步复位方式:
4.1 标准同步复位
-
在每个Video Data Period的开始复位LFSR
-
由VSYNC信号触发
-
确保每个视频帧的加扰序列从头开始
4.2 交替加扰器复位(可选)
// 通过DPCD寄存器启用 parameter ALTERNATE_SCRAMBLER_RESET = 1'b1; // 复位发生在: // 1. 每个Video Data Period开始 // 2. 每个Audio Data Period开始 // 3. 特定的Link Training Pattern期间
5. 加扰数据范围
eDP加扰应用于以下数据:
-
✅ Video Data:主链路视频数据
-
✅ Audio Data:主链路音频数据包
-
✅ Secondary Data Packet:辅助数据包
-
❌ Link Training Patterns:链路训练模式
-
❌ DPCD Accesses:控制寄存器访问
-
❌ AUX Channel Communications:AUX通道通信
6. 多Lane处理
对于多Lane配置,每个Lane使用相同的LFSR状态:
module edp_multi_lane_scrambler (
input wire clk,
input wire reset_n,
input wire enable,
input wire sync_reset,
input wire [7:0] lane0_data,
input wire [7:0] lane1_data,
input wire [7:0] lane2_data,
input wire [7:0] lane3_data,
output wire [7:0] lane0_scrambled,
output wire [7:0] lane1_scrambled,
output wire [7:0] lane2_scrambled,
output wire [7:0] lane3_scrambled
);
// 共享的LFSR状态
reg [15:0] shared_lfsr;
// 所有Lane使用相同的加扰序列
wire [7:0] shared_scramble_seq = shared_lfsr[15:8];
// 各Lane加扰输出
assign lane0_scrambled = enable ? (lane0_data ^ shared_scramble_seq) : lane0_data;
assign lane1_scrambled = enable ? (lane1_data ^ shared_scramble_seq) : lane1_data;
assign lane2_scrambled = enable ? (lane2_data ^ shared_scramble_seq) : lane2_data;
assign lane3_scrambled = enable ? (lane3_data ^ shared_scramble_seq) : lane3_data;
// 共享LFSR更新逻辑
wire lfsr_feedback;
assign lfsr_feedback = shared_lfsr[15] ^ shared_lfsr[14] ^
shared_lfsr[12] ^ shared_lfsr[3];
// 更新逻辑与单Lane相同
// ... (同上)
endmodule
7. 合规性测试要求
根据eDP 1.4规范,加扰器必须满足:
-
LFSR多项式一致性:严格使用
X¹⁶ + X¹⁵ + X¹³ + X⁴ + 1 -
初始值正确性:复位后必须为
16'hFFFF -
同步复位时机:在规定的同步事件准确复位
-
自同步能力:接收端能够自动同步而不需要额外的同步信号
8. 与DisplayPort的差异
| 特性 | eDP 1.4 | DisplayPort 1.4 |
|---|---|---|
| LFSR大小 | 16位 | 16位 |
| 多项式 | X¹⁶+X¹⁵+X¹³+X⁴+1 | X¹⁶+X¹⁵+X¹³+X⁴+1 |
| 初始值 | 16'hFFFF | 16'hFFFF |
| 同步复位 | 每个Video Data Period | 每个VSYNC |
| 可选性 | Source决定 | 必须支持 |
9. 实际实现建议
// 推荐的eDP 1.4+加扰器顶层模块
module edp_1d4_scrambler_top (
input wire clk_162MHz, // eDP典型时钟
input wire reset_n,
input wire scrambling_enable, // 来自DPCD配置
input wire vsync, // 垂直同步
input wire [7:0] video_data,
input wire data_valid,
output wire [7:0] scrambled_data
);
// 同步复位生成
wire sync_reset;
reg vsync_delayed;
always @(posedge clk_162MHz) begin
vsync_delayed <= vsync;
end
// 在VSYNC上升沿生成同步复位
assign sync_reset = vsync && !vsync_delayed;
// 加扰器实例化
edp_scrambler_1d4 u_scrambler (
.clk(clk_162MHz),
.reset_n(reset_n),
.enable(scrambling_enable & data_valid),
.data_in(video_data),
.sync_reset(sync_reset),
.data_out(scrambled_data)
);
endmodule
这些规范确保了eDP 1.4及更高版本设备之间的加扰兼容性,同时提供了足够的灵活性以适应不同的系统需求。
9523

被折叠的 条评论
为什么被折叠?



