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

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

만사 귀찮네

접기에는 아깝고 

방문자 보고 시작한것도 아니긴 하지만

관리자 페이지에서 방문자 통계좀 없앴으면..


자꾸 너무 신경쓰이네..

Posted by 구차니
embeded/FPGA - ALTERA2018. 6. 2. 22:36

카운터 증가 하는데

클럭에 연계해서 작동시키는 부분에서

클럭 엣지 트리거 부분에 여러개 작성하니 에러 발생..


 always @ (posedge clk or negedge rst)

begin

if (~rst)

cnt <= 0;

else

begin

if(cnt < 834000)

cnt <= cnt + 1;

else

cnt <= 0;

end

if(cnt < HSYNC)

hsync <= 1;

else hsync <= 0;

if(cnt < VSYNC)

vsync <= 1;

else vsync <= 0;

end


아래는 해결 한 것

음.. 자세한 내용은 나중에 찾아봐야지.. 이해를 못하고 있음 ㅠㅠ

 always @ (posedge clk or negedge rst)

begin

if (~rst)

cnt <= 0;

else

begin

if(cnt < 834000)

begin

cnt <= cnt + 1;

if(cnt < HSYNC)

hsync <= 1;

else hsync <= 0;

if(cnt < VSYNC)

vsync <= 1;

else vsync <= 0;

end

else

cnt <= 0;

end

end


[링크 : https://www.edaboard.com/showthread.php?326768...-enclosing]

Posted by 구차니

피곤피곤..

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

체력 방전  (0) 2018.06.09
체력 오링..  (0) 2018.06.06
월차, 아내님 병원 그리고 드론  (8) 2018.05.28
주말이 머했는데 끝나냐...  (0) 2018.05.27
대충대충 한쪽벽면 보온벽지 시공  (0) 2018.05.26
Posted by 구차니
개소리 왈왈/독서2018. 6. 1. 22:08

책 쓰고 싶어지는 책

그리고 블로그 접고 위키에 본격적으로 집필을 해서

완전히 다 쓰고 나서 출판사 접촉을 해봐야 하나 생각이 드네


그나저나 쓴다면 멀 주제로 써야 할까...


[링크 : http://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9788998294366]


+

처음 글을 쓰려는 사람에게 이런이런 과정이 있으니

이런식으로 따라오면 출판이 용이할 것이다. 라는 내용과

출판사 측의 의견들도 포함되서 책을 출판해보고 싶으나 해본적은 없는 사람에게 상당히 도움이 되는 책이다.

다만 책을 너무 쓰라고 종용(?) 하는 느낌이 조금 부담이 가고

뒤로 갈수록 책을 쓰는 이유가 현실적이긴 하지만 너무 금전적인 부분에 강조하는 게 거부감이 드는 정도?


나쁘게 말하자면 저자가 책에서도 말했듯

이런 정도 밖에 안되는 책도 출판되니 도전은 해보자!

내돈내고 하는것도 아니고 출판사가 위험을 짊어지고 하는거니 질러나 봐라 정도?


+

근데 동일 제목으로 다른 저자의 책이 또 있네?

Posted by 구차니

귀찮으니 내일 사진찍어야지..

간만에 자전거 타니 다리가 후덜후덜

25km 좀 잠시 냈다고 돌아올때 쥐날뻔 ㅠㅠ


+


먼가 내용물이 많이 부실해졌네?

그리고 이전에 한번 사용했떤 흰색이라니..


Posted by 구차니

vga 관련 문서를 찾다 보니 구현했는데 안되요~ 라는 말이 있어서 스펙을 좀더 찾아 보는중.

아래는 front porch - sync - back porch - data 순서인데

중간에 문장을 보면.. data 에서만 HSync가 High로 나오고 나머지는 Low로 해주면 될 듯


ParameterValueUnit
Pixel clock frequency25.175MHz[10]
Horizontal frequency31.469kHz
Horizontal pixels640
Horizontal sync polarityNegative
Total time for each line31.778µs
Front porch (A)0.636µs
Sync pulse length (B)3.813µs
Back porch (C)1.907µs
Active video (D)25.422µs

(Total horizontal sync and blanking time = 6.356 µs; equivalent to pixel widths of A = 16, B = 96, C = 48, D = 640 and each complete line = 800)

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


기존의 아날로그 영상의 경우에는 sync - back porch - data - front porch 순서로 되어있다.

편의상 front - sync - back - data 순서로 하다보니 처음에 sync가 아닌 front가 와서 인식 못하는건 아닐까?

[링크 : https://en.wikipedia.org/wiki/Analog_television#Structure_of_a_video_signal]


+

[링크 : http://www.mcamafia.de/pdf/ibm_vgaxga_trm2.pdf] VGA 표준?


VSync는 가장 첫줄 할때만

[링크 : http://www.ccm.ece.vt.edu:8444/twiki/pub/Main/LectureNotes/23-VGA.pdf]

[링크 : http://www.eng.utah.edu/~cs3710/labs/VGA.pdf]


타이밍 정보

Sync만 보고, porch는 Data에 붙여 버렸네?

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


"VGA industry standard" 640x480 pixel mode

Clock frequency 25.175 MHz

Line  frequency 31469 Hz

Field frequency 59.94 Hz


One line

  8 pixels front porch

96 pixels horizontal sync

 40 pixels back porch

  8 pixels left border

640 pixels video

  8 pixels right border

---

800 pixels total per line


One field

  2 lines front porch

  2 lines vertical sync

 25 lines back porch

  8 lines top border

480 lines video

  8 lines bottom border

---

525 lines total per field               


[링크 : https://courses.cs.washington.edu/courses/cse467/00wi/lectures/ppt/VGAinterface.ppt]



+


[링크 : https://timetoexplore.net/blog/arty-fpga-vga-verilog-01]

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


50MHz = 0.02us

[링크 : https://www.unitjuggler.com/convert-frequency-from-MHz-to-%C2%B5s(p).html?val=50]

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

VGA DMT 스펙  (0) 2018.06.11
vga 타이밍  (0) 2018.06.08
VGA(RGB) 파형 측정  (0) 2018.05.30
VGA Pattern Generator 관련 검색  (0) 2018.05.30
hdmi pinout  (0) 2018.05.29
Posted by 구차니

국내 출장은 빡셈

하도 긴장하고 몰아서(바람도 심하게 불어서)

팔목 아픈건 안유머. -_-

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

오랫만에 똥차 세대를 보네  (0) 2018.06.22
지방출장?  (2) 2018.06.07
kb 파인테크 신용카드..  (2) 2018.05.11
멘탈 와사삭  (2) 2018.05.03
어제 장거리 외근... 기아 레이 밴  (0) 2018.05.01
Posted by 구차니

VGA Test Pattern Generator 만들기 준비중

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


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

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


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

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

Posted by 구차니
embeded/FPGA - ALTERA2018. 5. 30. 15:14

DE0-nano에 실습중

일단.. module 선언이 아래 있던 위에있던 상관이 없나 보네..

머가 잘못되서 안되었던건지 모르겠지만 아무튼 책 보고 따라 치니 작동은 한다.


//=======================================================

//  This code is generated by Terasic System Builder

//=======================================================

module PwmCtrl(RST_N, CLK, LED0);

input RST_N, CLK;

output LED0;

reg[27:0] counter0;

always @(negedge RST_N or posedge CLK)

begin

if(RST_N == 1'b0)

begin

counter0 <= 0;

end else begin

counter0 <= counter0 + 1;

end

end

assign LED0 = counter0[26];

endmodule


module DE0_NANO(

//////////// CLOCK //////////

CLOCK_50,

//////////// LED //////////

LED,

//////////// KEY //////////

KEY 

);


//=======================================================

//  PARAMETER declarations

//=======================================================



//=======================================================

//  PORT declarations

//=======================================================


//////////// CLOCK //////////

input           CLOCK_50;

//////////// LED //////////

output      [7:0] LED;

//////////// KEY //////////

input      [1:0] KEY;


//=======================================================

//  REG/WIRE declarations

//=======================================================


//=======================================================

//  Structural coding

//=======================================================

PwmCtrl pwm(KEY[0],

CLOCK_50,

LED[0]);

endmodule 


원래는 counter0[27] 인데 너무 느려서 counter0[26]으로 변경


그리고 signalTap 이용해서 데이터 받아봄

(PLL 사용해서 클럭 분주하고 그걸 이용해 샘플링 주기를 변경해 봐야 할 듯)

2018/05/30 - [embeded/FPGA - ALTERA] - signal Tap 2와 talkback?

2018/05/24 - [embeded/FPGA - ALTERA] - altera signalTap <<

Posted by 구차니