本帖最后由 lhchen922 于 2016-11-15 18:13 编辑
请教下,在网上看见下面的一段话,其中“加了两次 反向”怎么理解,,怎么表示法?是连续assign吗??可是连续assign 好像是被优化了。谢谢大家。
最近 做一个项目------4个 1080p(1920 x 1080) 合成 一个 4K(3840 x 2160,297M)的接口板。当 1080p 进去, 1080p出来的时候,视频正常 播放出来。 可是当 1080p进, 4k出来的时候,视频图像上会有水波纹。当时就猜想是 FPGA 送给 下游器件SII9136的 时序不能满足。于是把输出的时钟反向有了一定的效果, 水波纹少了很多。后来用示波器量了下,发现时序还缺少一些。然后又 加了两次 反向。 Oh, God. 成功了! 撒花。。。。。。
[html] view plain copy
在CODE上查看代码片派生到我的代码片
assign IDCK_OUT = ~clk_out_test1;
assign clk_out_test = ~clk_rd;
assign clk_out_test1 = ~clk_out_test;
//assign D_OUT[35: 28] = //
always @(posedge clk_rd or negedge global_reset_n)
begin
if (~global_reset_n)
begin
D_OUT[31: 0] <= 32'b0;
// D_OUT[25: 0] <= 26'b0;
end
else
begin
D_OUT[31: 24] <= dout_c[7: 0]; // DD35 ------DD28
D_OUT[19: 12] <= dout_c[15: 8]; /// DD23 -----DD16
// D_OUT[26:24] <= 3'b0;
// D_OUT[15: 0] <= 16'b0;
// D_OUT[34: 27] <= dout_c[7: 0];
// D_OUT[23: 16] <= dout_c[15: 8];
end
end
总结: 一般说来,当FPGA->下游器件的时序不够的时候, 反向或者 PLL移向能够解决问题。
assign clk_out_test = ~clk_rd;
assign clk_out_test1 = ~clk_out_test;
其中clk_rd应该是默认的时钟信号,
取反一次后叫clk_out_test
后面再加2次取反
分别是clk_out_test1和IDCK_OUT
一周热门 更多>