여전히 화면은 안나오지만 일단 modelsim에서 패턴은 대충 확인했으니

이제 맞춰나가면 될 듯..

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 = 190;

parameter HBP = (190 + 96);

parameter HVID = (190 + 96 + 1271);

parameter HFP = (190 + 96 + 1271 + 32);

parameter HTOTAL = 1589;


parameter VSYNC = 3200;

parameter VBP = (3200 + 52400);

parameter VVID = (3200 + 52400 + 762650);

parameter VFP = (3200 + 52400 + 762650 + 15900);

parameter VTOTAL = 834150;


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (~rst)

cnt <= 0;

else

begin

if(cnt < VTOTAL) cnt <= cnt + 1;

else cnt <= 0;

end

end


assign LED[0] = ~vsync;

assign LED[1] = ~hsync;

assign r[3:0] = (((VBP < cnt) && (cnt < VVID)) && ((HBP < (cnt % HTOTAL)) && ((cnt % HTOTAL) < HVID))) ? 4'b1111 : 4'b0000;

assign g[3:0] = (((VBP < cnt) && (cnt < VVID)) && ((HBP < (cnt % HTOTAL)) && ((cnt % HTOTAL) < HVID))) ? 4'b1111 : 4'b0000;

assign b[3:0] = (((VBP < cnt) && (cnt < VVID)) && ((HBP < (cnt % HTOTAL)) && ((cnt % HTOTAL) < HVID))) ? 4'b1111 : 4'b0000;

assign hsync = ((cnt % HTOTAL) < HSYNC)? 0 : 1;

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


endmodule 


다시 보니.. 비디오 출력 하는 부분에서 &&대신 & 쓰지 않나

조건식 비교 범위를 반대로 하지 않나(그러니 계속 0이지) 완전 난리 부르스. ㄷㄷ


타이밍이 잘못되었나.. 왜 안나올까...


Posted by 구차니

댓글을 달아 주세요

usec 단위로 했었는데.. Hysnc의 길이가 왜.. 3.77usec?

아무튼.. 다시 아래 문서대로 계산을 해보니 값이 좀 많이 다르게 나온다.

vga_640x480.xlsx

2018/06/05 - [모종의 음모/DE0-Nano VGA] - vga 640x480 실패중 그리고 800x600x60


---

VESA DMT 문서에 의하면(공식인지 모르겠지만)



흐음.. 여전히 안되네...

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 = 190;

parameter HBP = (190 + 96);

parameter HVID = (190 + 96 + 1271);

parameter HFP = (190 + 96 + 1271 + 32);

parameter HTOTAL = 1589;


parameter VSYNC = 3200;

parameter VBP = (3200 + 52400);

parameter VVID = (3200 + 52400 + 762650);

parameter VFP = (3200 + 52400 + 762650 + 15900);

parameter VTOTAL = 834150;


reg [19:0] cnt;


always @ (posedge clk or negedge rst)

begin

if (~rst)

begin

cnt <= 0;

end

else

begin

if(cnt < VTOTAL)

begin

cnt <= cnt + 1;

/*

if((cnt % HTOTAL) < HSYNC)

hsync <= 0;

else hsync <= 1;

if(cnt < VSYNC)

vsync <= 0;

else vsync <= 1;


if(vsync & hsync)

begin

r <= 4'b1111;

g <= 4'b1111;

b <= 4'b1111;

end

else

begin

r <= 4'b0000;

g <= 4'b0000;

b <= 4'b0000;

end

*/

end

else

cnt <= 0;

end

end


assign LED[0] = ~vsync;

assign LED[1] = ~hsync;

assign r[3:0] = ((VVID < cnt & VFP < cnt) & (HVID < (cnt % HTOTAL) && (cnt % HTOTAL) < HFP)) ? 4'b1111 : 4'b0000;

assign g[3:0] = ((VVID < cnt & VFP < cnt) & (HVID < (cnt % HTOTAL) && (cnt % HTOTAL) < HFP)) ? 4'b1111 : 4'b0000;

assign b[3:0] = ((VVID < cnt & VFP < cnt) & (HVID < (cnt % HTOTAL) && (cnt % HTOTAL) < HFP)) ? 4'b1111 : 4'b0000;

assign hsync = ((cnt % HTOTAL) < HSYNC)? 0 : 1;

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


endmodule 




Posted by 구차니

댓글을 달아 주세요

DE0-nano에 LemonLite RGB 보드 사용

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

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

SAMSUNG | SHV-E250S | Aperture priority | Center-weighted average | 1/30sec | F/2.6 | 0.00 EV | 3.7mm | ISO-100 | Flash did not fire | 2018:06:05 13:41:20

SAMSUNG | SHV-E250S | Aperture priority | Center-weighted average | 1/30sec | F/2.6 | 0.00 EV | 3.7mm | ISO-100 | Flash did not fire | 2018:06:05 13:42:05



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 이고

SAMSUNG | SHV-E250S | Aperture priority | Center-weighted average | 1/15sec | F/2.6 | 0.00 EV | 3.7mm | ISO-200 | Flash did not fire | 2018:06:05 12:26:55


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

Vsync 60us 근처

Hsync 4us 근처

SAMSUNG | SHV-E250S | Aperture priority | Center-weighted average | 1/15sec | F/2.6 | 0.00 EV | 3.7mm | ISO-250 | Flash did not fire | 2018:06:05 12:27:42

SAMSUNG | SHV-E250S | Aperture priority | Center-weighted average | 1/15sec | F/2.6 | 0.00 EV | 3.7mm | ISO-160 | Flash did not fire | 2018:06:05 12:29:24


왜 안될까...



+

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 구차니

댓글을 달아 주세요

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

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


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

SAMSUNG | SHV-E250S | Aperture priority | Center-weighted average | 1/30sec | F/2.6 | 0.00 EV | 3.7mm | ISO-125 | Flash did not fire | 2018:06:05 09:54:39


800x600 72Hz 라고 출력된다.

SAMSUNG | SHV-E250S | Aperture priority | Center-weighted average | 1/24sec | F/2.6 | 0.00 EV | 3.7mm | ISO-125 | Flash did not fire | 2018:06:05 09:54:48



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 구차니

댓글을 달아 주세요

하다 보면 언젠간 언어도 익히고 작동도 하겠지머..

일단 sync만 인식을 하는지 절전모드였던 모니터가 살아나기는 하는데 해상도 정보까진 못 띄우네

DE0-nano에 시도중

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

);


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)

cnt <= 0;

else

begin

if(cnt < 834000)

begin

cnt <= cnt + 1;

if((cnt % 1590) < HSYNC)

hsync <= 1;

else hsync <= 0;

if(cnt < VSYNC)

vsync <= 1;

else vsync <= 0;

end

else

cnt <= 0;

end

end


assign LED[0] = vsync;

assign LED[1] = hsync;


endmodule 


위의 수치는 아래의 계산에 의해서 나온 것 임.

vga_640x480.xlsx


+

parameter는 이전 값을 더해서 쓸수는 없는건가..

HFP를 이용해서 % 연산을 하면 정상적으로 작동하지 않는 것으로 보이네..



+

sync 구간에만 0이고 나머지는 1로 vsync/hsync 출력해야 하네?

[링크 : https://ws0.org/how-to-generate-a-vga-signal-with-a-fpga/]

[링크 : http://www.cs.ucr.edu/~jtarango/cs122a_lab4.html]

[링크 : https://www.nandland.com/goboard/vga-introduction-test-patterns.html]


+

단순하게 데이터만 출력한다고 나오는게 아닌가?

아무튼.. modelsim 쓰는법 배워서 출력 시그널 확인을 할 필요가 있을 듯...

module vga640x480(

input clk,

input rst,

output [7:0] LED,

output reg hsync,

output reg vsync,

output reg [3:0] r,

output reg [3:0] g,

output reg [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;

hsync <= 1;

vsync <= 1;

end

else

begin

if(cnt < 834000)

begin

cnt <= cnt + 1;

if((cnt % 1590) < HSYNC)

hsync <= 0;

else hsync <= 1;

if(cnt < VSYNC)

vsync <= 0;

else vsync <= 1;

if(vsync & hsync)

begin

r <= 4'b1111;

g <= 4'b1111;

b <= 4'b1111;

end

else

begin

r <= 4'b0000;

g <= 4'b0000;

b <= 4'b0000;

end

end

else

cnt <= 0;

end

end


assign LED[0] = ~vsync;

assign LED[1] = ~hsync;


endmodule 


+

2018.06.04

하드웨어 구조는 모르겠지만 동일 셋트 예제 발견

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

Posted by 구차니

댓글을 달아 주세요

  1. 성탁

    형 우선 clk 50ns로 아래처럼 대충 계산해서 clk 2분주해서 sync만드는거 짜봤는데 함 해보셔~

    0.00002 ms 640x480
    HBP 50
    HACTIVE 640
    HFP 50
    VBP 40
    VACTIVE 480
    VFP 40 414400

    reg [9:0] dot_cnt;
    reg [9:0] h_cnt;
    reg hsync;
    reg vsync;
    reg clk_div;

    always@(posedge clk or negedge rst)
    if(!rst)
    clk_div <= 0;
    else
    clk_div <= clk_div + 1;

    always@(posedge clk or negedge rst)
    if(!rst)
    dot_cnt <= 0;
    else if (dot_cnt == 10'd739)
    dot_cnt <= 0;
    else if (clk_div == 1'b1)
    dot_cnt <= dot_cnt + 1;

    always@(posedge clk or negedge rst)
    if(!rst)
    h_cnt <= 0;
    else if (dot_cnt == 10'd739) begin
    if(h_cnt == 10'd559)
    h_cnt <= 0;
    else
    h_cnt <= h_cnt + 1;
    end

    always@(posedge clk or negedge rst)
    if(!rst)
    hsync <= 1;
    else if (dot_cnt == 10'd739)
    hsync <= 0;
    else
    hsync <= 1;

    always@(posedge clk or negedge rst)
    if(!rst)
    vsync <= 1;
    else if (h_cnt == 10'd559)
    vsync <= 0;
    else
    vsync <= 1;

    2018.06.04 10:18 [ ADDR : EDIT/ DEL : REPLY ]

VGA Test Pattern Generator 만들기 준비중

일단 핀배열은 다음과 같고..


핀 배열상 어쩔수 없으니 Blue3는 포기(회로도 확인하니 두번째로 작은 비트)

그래서 GPIO1 번의 왼쪽에서 첫 핀은 빼고 연결하도록 일단 구상 중

SAMSUNG | SHV-E250S | Aperture priority | Center-weighted average | 1/17sec | F/2.6 | 0.00 EV | 3.7mm | ISO-125 | Flash did not fire | 2018:05:30 19:15:02


회로는 공개할 수 없으니 비슷한거 검색해서 걸기!

[링크 : https://electronics.stackexchange.com/...-pattern-to-generate-vga-signal-with-micro-controller]

Posted by 구차니

댓글을 달아 주세요

먼가 무진장 헷갈리는 단어다.

가시광선은 인간이 잘 보는 빨간색 부터 보라색까지의 영역

Visible Spectrum / Light / Ray wavelength 등 용어도 참 다양하다


엄밀하게 우리가 말하는 영화상/열영상/열상 이나

CCTV 등에서 말하는 적외선 카메라나 모두

Infrared 영역을 사용하니 적(Red)외(infra)선(ray) 은 맞는데

NIR SWIR/MWIR/LWIR로 조금 더 세분화 되어


CMOS나 CCD 센서가 가시광선 + NIR 영역을 보기에

단순하게 IR Cut Filter로 광학적/기계적으로 구분한다면

SWIR/MWIR/LWIR은 센서 자체가 달라지는 듯?


아무튼 FLIR로 대변되는(?) 열영상은 micro-Bolometer 로 촬영한다.

bolometer is a device for measuring the power of incident electromagnetic radiation via the heating of a material with a temperature-dependent electrical resistance. It was invented in 1878 by the American astronomer Samuel Pierpont Langley. 

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

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


스펠링이 비슷해서 헷갈렸는데 얘는 Barometer 기압계

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


[링크 : ftp://ftp.stemmer-imaging.com/...-SIWR-and-LWIR-camera-technology-KAVTO36-201306.pdf]


적외선 영상

나무잎은 반사되서 하얗게 나오고 몸체는 회색이나 검은색으로 나온다.

[링크 :http://mstecker.com/pages/irgallery_fp.htm]


가시광선 & 열영상

일반 카메라와 FLIR 촬영했는데, 나무잎이 없어서 머라고 표현하기 애매한 상황..

[링크 :https://www.youtube.com/watch?v=_bS6Yd_Ay7Q]

    [링크 : http://www.bowsite.com/BOWSITE/features/articles/equipment/FLIR/]


가시광선 & 열영상

추가적인 정보가 없어서 모르겠지만.. 하늘은 검고(우주는 추우니까?)

나무는 땅보다 열이 적어서 검게 나온다. 그러니까 반사되는 빛을 찍는게 아닌 듯


[링크 : https://youtu.be/wuc-sHVSV8M?t=36]


[링크 : https://www.scoutbasecamp.com/content/flir-scout-faq.html]

Posted by 구차니

댓글을 달아 주세요



[링크 : https://www.korean.go.kr/hangeul/principle/001.html]

[링크 : https://www.korean.go.kr/nkview/news/12/128.htm]

'모종의 음모 > 폰트 생성기' 카테고리의 다른 글

한글의 구성  (2) 2017.07.26
opentype font format  (0) 2017.07.26
폰트제작 프로그램  (0) 2017.07.26
fontforge - 벡터 폰트 제작기  (0) 2013.02.14
Posted by 구차니

댓글을 달아 주세요

  1. 어우 다양한 방면으로 공부를 하시네요?
    이건 왜? 폰트 만드시나요?

    2017.07.27 10:43 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 예전에 해보려고 했던것들 중에 하나라 다시 해보려고 하는거죠 ㅋㅋ
      한글 폰트 생성기 하나 만들어 볼까 해서요 ^^;

      2017.07.27 13:15 신고 [ ADDR : EDIT/ DEL ]


[링크 : https://www.microsoft.com/typography/otspec/otff.htm]

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

[링크 : https://superuser.com/questions/96390/difference-between-otf-open-type-or-ttf-true-type-font-formats]

'모종의 음모 > 폰트 생성기' 카테고리의 다른 글

한글의 구성  (2) 2017.07.26
opentype font format  (0) 2017.07.26
폰트제작 프로그램  (0) 2017.07.26
fontforge - 벡터 폰트 제작기  (0) 2013.02.14
Posted by 구차니

댓글을 달아 주세요