It seems not work as expected as datasheet described as follows:
If I just assign the G5~G0 (linked to G7~G2 pin) according to EDK plb_tft_cntlr_ref_v1_00_d pcore (Digilent VGA example, tft_clk DCM 25MHz) :
reg [10:0] CounterX;
reg [8:0] CounterY;
wire CounterXmaxed = (CounterX==767);
always @(posedge tft_clk)
if(CounterXmaxed)
CounterX <= 0;
else
CounterX <= CounterX + 1;
always @(posedge tft_clk)
if(CounterXmaxed)
CounterY <= CounterY + 1;
reg vga_HS, vga_VS;
always @(posedge tft_clk)
begin
vga_HS <= (CounterX[9:4]==0); // active for 16 clocks
vga_VS <= (CounterY==0); // active for 768 clocks
end
assign HSYNC_i = ~vga_HS;
assign VSYNC_i = ~vga_VS;
always @(posedge tft_clk) begin
if (SYS_plbReset) begin
G0_i <= 1'b0;
G1_i <= 1'b0;
G2_i <= 1'b0;
G3_i <= 1'b0;
G4_i <= 1'b0;
G5_i <= 1'b0;
end else begin
G0_i <= 1'b1;
G1_i <= 1'b1;
G2_i <= 1'b1;
G3_i <= 1'b1;
G4_i <= 1'b1;
G5_i <= 1'b1;
end
end
Sys_plbReset = 1 released in a short time, so it should be a whole green screen, but I only got a black 640x480 screen. It was not matching that datasheet, but any demo bitstreams would show screen properly.
if I changed to just like this, I could get partial green screen:
always @(posedge tft_clk) begin
if (SYS_plbReset) begin
G0_i <= 1'b0;
G1_i <= 1'b0;
G2_i <= 1'b0;
G3_i <= 1'b0;
G4_i <= 1'b0;
G5_i <= 1'b0;
end else begin
G0_i <= ~(CounterX[9]);
G1_i <= ~(CounterX[9]);
G2_i <= ~(CounterX[9]);
G3_i <= ~(CounterX[9]);
G4_i <= ~(CounterX[9]);
G5_i <= ~(CounterX[9]);
end
end
When I changed G5 like this:
always @(posedge tft_clk) begin
if (SYS_plbReset) begin
G0_i <= 1'b0;
G1_i <= 1'b0;
G2_i <= 1'b0;
G3_i <= 1'b0;
G4_i <= 1'b0;
G5_i <= 1'b0;
end else begin
G0_i <= ~(CounterX[9]);
G1_i <= ~(CounterX[9]);
G2_i <= ~(CounterX[9]);
G3_i <= ~(CounterX[9]);
G4_i <= ~(CounterX[9]);
G5_i <= (CounterX[9]);
end
end
I got a black screen again. It seems that’s not expected as the datasheet. Conflicts? Is there any documented detail?
What's the method of Digilent to handle this chip at that time?
Didn’t FMS3818KRC always catch the input value?
Question
mopplayer
Hi all,
It seems not work as expected as datasheet described as follows:
If I just assign the G5~G0 (linked to G7~G2 pin) according to EDK plb_tft_cntlr_ref_v1_00_d pcore (Digilent VGA example, tft_clk DCM 25MHz) :
reg [10:0] CounterX; reg [8:0] CounterY; wire CounterXmaxed = (CounterX==767); always @(posedge tft_clk) if(CounterXmaxed) CounterX <= 0; else CounterX <= CounterX + 1; always @(posedge tft_clk) if(CounterXmaxed) CounterY <= CounterY + 1; reg vga_HS, vga_VS; always @(posedge tft_clk) begin vga_HS <= (CounterX[9:4]==0); // active for 16 clocks vga_VS <= (CounterY==0); // active for 768 clocks end assign HSYNC_i = ~vga_HS; assign VSYNC_i = ~vga_VS; always @(posedge tft_clk) begin if (SYS_plbReset) begin G0_i <= 1'b0; G1_i <= 1'b0; G2_i <= 1'b0; G3_i <= 1'b0; G4_i <= 1'b0; G5_i <= 1'b0; end else begin G0_i <= 1'b1; G1_i <= 1'b1; G2_i <= 1'b1; G3_i <= 1'b1; G4_i <= 1'b1; G5_i <= 1'b1; end end
Sys_plbReset = 1 released in a short time, so it should be a whole green screen, but I only got a black 640x480 screen. It was not matching that datasheet, but any demo bitstreams would show screen properly.
if I changed to just like this, I could get partial green screen:
always @(posedge tft_clk) begin if (SYS_plbReset) begin G0_i <= 1'b0; G1_i <= 1'b0; G2_i <= 1'b0; G3_i <= 1'b0; G4_i <= 1'b0; G5_i <= 1'b0; end else begin G0_i <= ~(CounterX[9]); G1_i <= ~(CounterX[9]); G2_i <= ~(CounterX[9]); G3_i <= ~(CounterX[9]); G4_i <= ~(CounterX[9]); G5_i <= ~(CounterX[9]); end end
When I changed G5 like this:
always @(posedge tft_clk) begin if (SYS_plbReset) begin G0_i <= 1'b0; G1_i <= 1'b0; G2_i <= 1'b0; G3_i <= 1'b0; G4_i <= 1'b0; G5_i <= 1'b0; end else begin G0_i <= ~(CounterX[9]); G1_i <= ~(CounterX[9]); G2_i <= ~(CounterX[9]); G3_i <= ~(CounterX[9]); G4_i <= ~(CounterX[9]); G5_i <= (CounterX[9]); end end
I got a black screen again. It seems that’s not expected as the datasheet. Conflicts? Is there any documented detail?
What's the method of Digilent to handle this chip at that time?
Didn’t FMS3818KRC always catch the input value?
Any help would be appreciated.
Edited by mopplayerLink to comment
Share on other sites
2 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now