The different modes that Advanced Timing allows end users to select are:

  • Electronic Industries Alliance (EIA-861B) refers to a CEA/EIA standard which consists of display timing and formats supported by Digital Televisions
  • Generalized Timing Formula (GTF) is a method of generating industry standard timings used by a wide variety of display products
  • Display Monitor Timings (DMT) are a list of VESA standard pre-defined timings which are commonly used within the Computer industry.
  • Coordinated Video Timings (CVT) were released on March 2003 as the newest VESA standard for generating display timings
  • Coordinated Video Timings-Reduced Blanking (CVT-RB) is geared specifically for non-CRT display devices. CVT-RB offers reduced horizontal and vertical blanking periods and allows a lower pixel clock rate and higher frame rates.
  • EDID Timing is the preferred timing standard defined by the display's Extended Display Identification Data (EDID) value. EDID is a standard data structure that defines the display device's configuration data and mode support which allows optimum use of the display 

[링크 : http://www.nvidia.com/object/advanced_timings.html]

    [링크 : https://forums.geforce.com/default/topic/379915/timing-standard-what-is-it-/]


The standard was adopted in 2002 and superseded the Generalized Timing Formula. 

[링크 : https://en.wikipedia.org/wiki/Coordinated_Video_Timings]


+

2018.06.11

제목대로 DMT 타이밍에 대한 VESA 문서

[링크 : http://caxapa.ru/thumbs/361638/DMTv1r11.pdf]


+

 타이밍 모드

 표준

 CEA/EIA-861B

 ???

 GTF 

 1999

 DMT

 2007 (Version 1.0 Rev 0.11)

 CVT 

 2002 (Version 1.0 Rev 0.9)

 CVT-RB

 2007 (Version 1.0 Rev 0.11)

 EDID 

 1996 (Version 1.0 Rev 0.4)


he standard was adopted in 1999, and was superseded by the Coordinated Video Timings specification in 2002. 

[링크 : https://en.wikipedia.org/wiki/Generalized_Timing_Formula]


+

라즈베리 파이에서 HDMI 모드 중에 CEA / DMT가 있던게 생각남..

'이론 관련 > 컴퓨터 관련' 카테고리의 다른 글

MNIST 데이터베이스  (0) 2018.06.22
VGA DMT 스펙  (0) 2018.06.11
vga porch  (4) 2018.06.01
VGA(RGB) 파형 측정  (0) 2018.05.30
VGA Pattern Generator 관련 검색  (0) 2018.05.30
Posted by 구차니

요건.. 내가 640x480을 기준으로 작성해서 출력 안되던 녀석의 파형

Hsync 31.45kHz

Vsync 59.95Hz


다만 Vsync이전의 마지막 Hsync 간격이 이상한게 보이고

계산을 잘못했는지 Hsync 2개가 Vsync 안에 들어가야 하는데 정상적으로 들어가지 않은 듯?



여기는 되는 녀석 찾아서 찍은거

640x480

Hsync 31.21kHz 음.. 조금 낮네?

Vsycn 59.91Hz

눈에 띄는건.. Vsync 동안 두번의 Hsync가 지나가고

Vsync의 끝과 동시에 세번째 Hsync가 시작되어야 한다.


800x600@72

Vsync 72.19Hz(72Hz)

Hsync 48.08kHz

리셋 누르고 있어야 하는 소스라 대충 찍어서 무리무리 ㅠㅠ

아무튼 예상한거랑은 또 다르게 나오네.. 해상도가 달라서 그런거 치고는 sync의 위치가 다른데?

'이론 관련 > 전기 전자' 카테고리의 다른 글

pdm - Pulse Width Modulation  (0) 2019.03.29
setup, hold, slack?  (0) 2018.06.28
color bar (BT.471-1)  (0) 2018.06.05
자이로 드리프트  (0) 2018.05.15
balanced unbalanced  (0) 2018.05.14
Posted by 구차니

당일치기 빡심...

왕복하면 한 470km 나오는데 빡세다..

가기 싫다 ㅠㅠ

'개소리 왈왈 > 직딩의 비애' 카테고리의 다른 글

이른(?) 여름휴가  (0) 2018.06.23
오랫만에 똥차 세대를 보네  (0) 2018.06.22
피곤함..  (0) 2018.05.31
kb 파인테크 신용카드..  (2) 2018.05.11
멘탈 와사삭  (2) 2018.05.03
Posted by 구차니

빨간날이라 쉬니 좋은건가..

아무튼 이래저래 하얗게 불태우고 체력 완전 방전

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

피곤피곤...  (0) 2018.06.16
체력 방전  (0) 2018.06.09
피곤피곤..  (0) 2018.06.02
월차, 아내님 병원 그리고 드론  (8) 2018.05.28
주말이 머했는데 끝나냐...  (0) 2018.05.27
Posted by 구차니

자주 보는(?) 컬러바차트는 아래와 같은데


ITU-R BT.471-1을 따르는 데

RGB의 출력 패턴을 아래와 같이 (a) 100/0/100/0 의 내용대로 하면 나오는 듯?


[링크 : https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.471-1-198607-I!!PDF-E.pdf]

    [링크 : https://www.itu.int/rec/R-REC-BT.471-1-198607-I/en]

[링크 : http://t-sato.in.coocan.jp/scrolling-h/colorbar.html]

'이론 관련 > 전기 전자' 카테고리의 다른 글

setup, hold, slack?  (0) 2018.06.28
vga 출력 Hsync, Vsync 파형  (0) 2018.06.08
자이로 드리프트  (0) 2018.05.15
balanced unbalanced  (0) 2018.05.14
MFCCs - Mel-frequency cepstral coefficients  (0) 2018.05.02
Posted by 구차니

득도할 수 없으면.. 즐겨야 하나!?

어제 1500 대 까지 회복했으니.. 열심히 달리면.... (응?)



고객님 질문에 대한 답변입니다
질문관리자 페이지 커스터마이징은 예정이 없는지요?
TISTORY 블로그 주소 : minimonk.net 

확인 요청 URL : https://minimonk.tistory.com/manage

- 접속한 운영체제와 브라우저 정보(ex. Windows 10, Chrome 60.0.3112.113): 
- 문제 발생 시각: 
- 구체적인 오류/문제 현상: 

※ 정확한 원인 파악과 신속한 해결을 위해 위 정보를 기재해 주세요. 
캡쳐 화면을 첨부해 주시면 더욱 도움이 됩니다. 

예전에는 커스터마이징을 통해서 필요 없는 부분을 제외할 수 있었는데 
지금은 고정된 상황이라 상당히 불편합니다. 
예전 처럼 커스터마이징 가능한 기능 추가 예정이 있는지요? 

특히 방문자 카운터를 중앙에 크게 배치해서 너무 신경 쓰입니다 
예전에는 방문자 수 신경 안쓰려고 없애 놨었는데 
중앙에 똭! 배치 해두니 신경을 안쓸래야 안 쓸수가 없어 스트레스 받습니다.
답변안녕하세요, 고객님.
Daum 고객센터 담당자 송상현입니다.


문의하신 관리자 페이지 커스터마이징과 관련하여 답변을 드리겠습니다.

과거 관리자 페이지를 커스터마이징하여 첫 화면에 다양한 위젯을 편집할 수 있었으나
현재는 관련 기능을 제공하지 않고 있지 않으며 제공 계획은 현재로써는 하고 있지 않은 점 알려 드립니다.

다만, 불편함을 느끼셨다는 방문자의 사이즈를 조정해 보는 부분은
내부적으로 검토를 진행하도록 하겠습니다.

이용에 불편을 끼쳐 죄송합니다. 

감사합니다.

 


Posted by 구차니

DE0-nano에 LemonLite RGB 보드 사용

모니터 마다 해상도 출력이 좀 다른데 머가 문제일까..

일단 눈을 띄우는데는 성공했으니 뭐가 문제인지는 좀 찾아 봐야 할 듯..



vga640x480 vga(

CLOCK_50,

KEY[0],

LED,

GP0[6],

GP0[5],

{GP0[16],GP0[19],GP0[18],GP0[21]},

{GP0[12],GP0[15],GP0[14],GP0[17]},

{GP0[8],GP0[9],GP0[10],GP0[13]}

); 


module vga640x480(

input clk,

input rst,

output [7:0] LED,

output reg hsync,

output reg vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


reg clk25;

reg [9:0] horizontal_counter;

reg [9:0] vertical_counter;


reg [9:0] X;

reg [9:0] Y;


wire [7:0] red;

wire [7:0] green;

wire [7:0] blue;


assign r[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? red : 4'b000; 

assign g[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? green : 4'b000; 

assign b[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? blue : 4'b000; 

assign red =   ((horizontal_counter >= 144)&&(horizontal_counter < 344) ) ? 4'b1111 : 4'b0000;

assign green = ((horizontal_counter >= 344)&&(horizontal_counter < 544) ) ? 4'b1111 : 4'b0000;

assign blue =  ((horizontal_counter >= 544)&&(horizontal_counter < 784) ) ? 4'b1111 : 4'b0000;


always @(posedge clk)

begin


if (clk25 == 0)

begin

   clk25 <= 1;

end   

else

begin

clk25 <= 0;

   end

end



always @(posedge clk25)

begin

if ((horizontal_counter > 0) && (horizontal_counter < 97))// -- 96+1

begin

hsync <= 0;

end

else

begin

hsync <= 1;

end 

if ((vertical_counter > 0 ) && (vertical_counter < 3 )) //-- 2+1

begin

vsync <= 0;

end

else

begin

vsync <= 1;

end

horizontal_counter <= horizontal_counter+1;

    

if (horizontal_counter == 800) 

begin

vertical_counter <= vertical_counter+1;

horizontal_counter <= 0;

end

    

if (vertical_counter == 521)

begin

vertical_counter <= 0;

end

end



endmodule  

[링크 : https://github.com/pmezydlo/DE0-Nano-SOC-VGA/blob/master/vgaram.v]

Posted by 구차니

소스 코드 수정중인데 안나오네

vga640x480 vga(

CLOCK_50,

KEY[0],

LED,

GP0[6],

GP0[5],

{GP0[16],GP0[19],GP0[18],GP0[21]},

{GP0[12],GP0[15],GP0[14],GP0[17]},

{GP0[8],GP0[9],GP0[10],GP0[13]}

); 


module vga640x480(

input clk,

input rst,

output [7:0] LED,

output hsync,

output vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


parameter HSYNC = 189;

parameter HBP = (HSYNC + 95);

parameter HVID = (HBP + 1260);

parameter HFP = (HVID + 47);


parameter VSYNC = 3000;

parameter VBP = (VSYNC + 51000);

parameter VVID = (VBP + 762500);

parameter VFP = (VVID + 17500);


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (!rst)

begin

cnt <= 0;

end

else

begin

cnt <= cnt + 1;

if(cnt > 834000)

cnt <= 0;

end

end


assign hsync = ((cnt % 1590) < 189) ? 0 : 1;

assign vsync = (cnt < 3000) ? 0 : 1;

assign r = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign g = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign b = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign LED[0] = ~vsync;

assign LED[1] = ~hsync;


endmodule 


V sync는 59.95

H sync는 31.31kHz 이고


sync 길이도 파형도 맞는거 같은데..

Vsync 60us 근처

Hsync 4us 근처


왜 안될까...



+

module vga800x600x60(

input clk,

input rst,

output [7:0] LED,

output hsync,

output vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


parameter HSYNC = 160;

parameter HBP = (HSYNC + 95);

parameter HVID = (HBP + 1260);

parameter HFP = (HVID + 47);


parameter VSYNC = 5300;

parameter VBP = (VSYNC + 51000);

parameter VVID = (VBP + 762500);

parameter VFP = (VVID + 17500);


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (!rst)

begin

cnt <= 0;

end

else

begin

cnt <= cnt + 1;

if(cnt > 828950)

cnt <= 0;

end

end


assign hsync = ((cnt % 1320) < 160) ? 0 : 1;

assign vsync = (cnt < 5300) ? 0 : 1;

assign r = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign g = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign b = ((hsync & vsync) == 1 ? 4'b1111 : 4'b0000);

assign LED[0] = ~vsync;

assign LED[1] = ~hsync;


endmodule  



For VESA 800*600 @ 60Hz: 

Fh (kHz) :37.88 

A (us) :26.4 

B (us) :3.2 

C (us) :2.2 

D (us) :20.0 

E (us) :1.0 


Fv (Hz) :60.32 

O (ms) :16.579 

P (ms) :0.106 

Q (ms) :0.607 

R (ms) :15.84 

S (ms) :0.026 

[링크 : http://www.epanorama.net/documents/pc/vga_timing.html]


+

640x480x60 에 빨간화면 확인

vga640x480 vga(

CLOCK_50,

KEY[0],

LED,

GP0[6],

GP0[5],

{GP0[16],GP0[19],GP0[18],GP0[21]},

{GP0[12],GP0[15],GP0[14],GP0[17]},

{GP0[8],GP0[9],GP0[10],GP0[13]}

); 


모니터에 따라 인식이 느리거나 안되기도 하네..

848x640x60 으로 인식... 머야(요즘 24인치 FHD LCD 모니터)

module vga640x480(

input clk,

input rst,

output [7:0] LED,

output reg hsync,

output reg vsync,

output [3:0] r,

output [3:0] g,

output [3:0] b

);


reg clk25;

reg [9:0] horizontal_counter;

reg [9:0] vertical_counter;


reg [9:0] X;

reg [9:0] Y;


wire [7:0] red;

wire [7:0] green;

wire [7:0] blue;


assign r[3:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? 4'b1111 : 4'b000; 

assign g[1:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? 4'b1111 : 4'b000; 

assign b[2:0] = ((horizontal_counter >= 144) 

&& (horizontal_counter < 784) 

&& (vertical_counter >=39)

&& (vertical_counter < 519)) ? 4'b1111 : 4'b000; 

assign red =   ((horizontal_counter >= 144)&&(horizontal_counter < 344) ) ? 4'b1111 : 4'b0000;

assign green = ((horizontal_counter >= 344)&&(horizontal_counter < 544) ) ? 4'b1111 : 4'b0000;

assign blue =  ((horizontal_counter >= 544)&&(horizontal_counter < 784) ) ? 4'b1111 : 4'b0000;


always @(posedge clk)

begin


if (clk25 == 0)

begin

   clk25 <= 1;

end   

else

begin

clk25 <= 0;

   end

end



always @(posedge clk25)

begin

if ((horizontal_counter > 0) && (horizontal_counter < 97))// -- 96+1

begin

hsync <= 0;

end

else

begin

hsync <= 1;

end 

if ((vertical_counter > 0 ) && (vertical_counter < 3 )) //-- 2+1

begin

vsync <= 0;

end

else

begin

vsync <= 1;

end

horizontal_counter <= horizontal_counter+1;

    

if (horizontal_counter == 800) 

begin

vertical_counter <= vertical_counter+1;

horizontal_counter <= 0;

end

    

if (vertical_counter == 521)

begin

vertical_counter <= 0;

end

end

endmodule  


[링크 : https://github.com/pmezydlo/DE0-Nano-SOC-VGA/blob/master/vgaram.v]

Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 5. 10:55
Posted by 구차니

reset키(key[0])를 누르고있는 동안에는 영상이 나온다.

단순하게 posedge를 negedge로 바꾸려고 하는데 에러나네.. ㅠㅠ


빨강이 옆에 번지는건 왜일까..


800x600 72Hz 라고 출력된다.



vga_demo vga(

CLOCK_50,

KEY[0],

GP0[16],

GP0[12],

GP0[8],

GP0[6],

GP0[5],

); 


/*

VGA Demo 800x600 at 72Hz

http://www-mtl.mit.edu/Courses/6.111/labkit/vga.shtml

800x600, 72Hz 50.000 800 56 120 64 600 37 6 23

Pixel Clock (MHz): 50.000 

Horizontal (in Pixels)

    Active Video: 800 (16us)

    Front Porch:   56 (1.12us)

    Sync Pulse:   120 (2.4us)

    Back Porch:    64 (1.28us)

        Total pixel clock ticks: 1040 (20.8us)

Vertical (in Lines, so x20.8us)

    Active Video: 600 (12480us)

    Front Porch:   37 (769.6us)

    Sync Pulse:     6 (124.8us)

    Back Porch:    23 (478.4us)

        Total pixel clock ticks: 666 (13.32us)

Total pixel clock ticks: 692,640

50,000,000 / 692,640 = 72.187572188 = 72Hz

1 pixel clock = 1/50Mhz = 20ns = 0.02us

*/


module vga_demo

    (

        CLOCK_50,

        RESET,

        VGA_RED,

        VGA_GREEN,

        VGA_BLUE,

        VGA_HS,

        VGA_VS

    );

    input CLOCK_50;

    input RESET;

    output VGA_RED;

    output VGA_GREEN;

    output VGA_BLUE;

    output VGA_HS;

    output VGA_VS;


    /* Internal registers for horizontal signal timing */

    reg [10:0] hor_reg; // to count 1040 different values up to 1039

    reg hor_sync;

    wire hor_max = (hor_reg == 1039); // to tell when a line is full


    /* Internal registers for vertical signal timing */

    reg [9:0] ver_reg; // to count 666 different values up to 665

    reg ver_sync;

    reg red, green, blue;

    wire ver_max = (ver_reg == 665); // to tell when a line is full


    // Code


    

    /* Running through line */

    always @ (posedge CLOCK_50 or posedge RESET) begin


        if (RESET) begin 

            hor_reg <= 0;

            ver_reg <= 0;

        end

        else if (hor_max) begin

            hor_reg <= 0;


            /* Running through frame */

            if (ver_max)

                ver_reg <= 0;

            else

            ver_reg <= ver_reg + 1;


        end else

            hor_reg <= hor_reg + 1;


    end

    

    always @ (posedge CLOCK_50 or posedge RESET) begin

    

        if (RESET) begin 

            hor_sync <= 0;

            ver_sync <= 0;

        end

        else begin


            /* Generating the horizontal sync signal */

            if (hor_reg == 856)      // video (800) + front porch (56)

                hor_sync <= 1;       // turn on horizontal sync pulse

            else if (hor_reg == 976) // video (800) + front porch (56) + Sync Pulse (120)

                hor_sync <= 0;       // turn off horizontal sync pulse


            /* Generating the vertical sync signal */

            if (ver_reg == 637)      // LINES: video (600) +  front porch (37)

                ver_sync <= 1;       // turn on vertical sync pulse

            else if (ver_reg == 643) // LINES: video (600) + front porch (37) + Sync Pulse (6)

                ver_sync <= 0;       // turn off vertical sync pulse


                

            // Draw a single square.

            if (hor_reg >= 100 && hor_reg <= 200 && ver_reg >= 100 && ver_reg <= 200) begin

                red <= 1;

                green <= 0;

                blue <= 0;

            end 

            else begin

                red <= 1;

                green <= 1;

                blue <= 1;

            end

                

        end

    end


    // Send the sync signals to the output, inverted as the sync pulse is low.

    // Maybe wrong as this doc says pulse id positive http://tinyvga.com/vga-timing/800x600@72Hz

    assign VGA_HS = ~hor_sync;

    assign VGA_VS = ~ver_sync;

    

    // Send a pattern of colours (based on the registry bits) but do not output anything during the synchronization periods

    //assign VGA_RED = (!hor_reg[0] && !ver_reg[0] && ver_reg < 600 && hor_reg < 800);

    //assign VGA_GREEN = (!hor_reg[1] && !ver_reg[1] && ver_reg < 600 && hor_reg < 800);

    //assign VGA_BLUE = (!hor_reg[2] && !ver_reg[2] && ver_reg < 600 && hor_reg < 800);

    

    assign VGA_RED =  red && ver_reg < 600 && hor_reg < 800;

    assign VGA_GREEN = green && ver_reg < 600 && hor_reg < 800;

    assign VGA_BLUE = blue && ver_reg < 600 && hor_reg < 800;    

    

    // http://gerfficient.com/2013/02/11/fpga-to-vga-using-de0-nano/

    

endmodule 

[링크 : https://github.com/theapi/de0-nano/blob/master/vga/experiment/vga_demo.v]

Posted by 구차니