EmbDev.net

Forum: FPGA, VHDL & Verilog coding the vga port


von keith d. (Company: univ) (kth)


Rate this post
useful
not useful
im trying to display a red box on a 640 by 480 screen however nothing is 
displayed on my vga screen im using nexys 3 and these were the port used
clk v10 ns-n6 vs -p7 red1 -u7 green2 - p8 blue2 -r7 here under is my 
code which i made thanks i appriate any help
1
 library IEEE; 
2
use IEEE.std_logic_1164.all; 
3
use IEEE.std_logic_arith.all; 
4
use IEEE.std_logic_misc.all; 
5
use IEEE.std_logic_unsigned.all; 
6
7
entity vga is
8
  port(clk :in std_logic;
9
      hs : out std_logic;
10
      vs : out std_logic;
11
      red1 : out std_logic;
12
      green2 : out std_logic;
13
     
14
blue2: out std_logic
15
     
16
      );
17
            end vga;
18
19
Architecture vga_arch of vga is
20
 
21
  begin 
22
       
23
   
24
   process(CLK) 
25
           
26
         
27
      
28
      variable v :std_logic:= '0';
29
      variable h : std_logic := '1' ;
30
      variable red :std_logic:= '0';
31
      variable green :std_logic:= '0';
32
      variable blue :std_logic:= '0';
33
       variable x : std_logic_vector(9 downto 0) := "0000000000"  ;
34
       variable y  : std_logic_vector(9 downto 0) := "0000000000"  ;
35
      
36
       
37
     begin
38
39
              
40
if (CLK'EVENT and CLK = '1') then
41
 
42
      if(h = '1') then 
43
        x := x+ "0000000001" ;
44
        if(x = "1010000001") then
45
          h:= '0';
46
          v := '1';
47
          x := "0000000000";
48
        end if;
49
    elsif(v = '1') then
50
    y := y + "0000000001";
51
     V:='0';
52
     h:='1';
53
      end if;
54
      if(y = "0111100001") then 
55
        y := "0000000000";
56
      end if;
57
      hs <= h;
58
      vs<= v;
59
      red1 <='1';
60
      blue2 <='0';
61
      green2 <='0';
62
      
63
       end if;
64
    end process;
65
    end vga_arch;

von Gustl B. (-gb-)


Rate this post
useful
not useful

von keith d. (Company: univ) (kth)


Rate this post
useful
not useful
i arange the code to 60 hz clock cycle but still nothing

von Gustl B. (-gb-)


Rate this post
useful
not useful
http://tinyvga.com/vga-timing/640x480@60Hz

You have to implement everything, front-porch, back-porch, sync-pulse 
...
This is my 1024x768 pixel vga. you can us ist freely and fit it to your 
needs (adapt the timings).
In my case gave the horizontal and vertical counters OUT and generated 
in another module the bin IN signal. This draws an white pixel when bin 
is 1.
The needed 75mhz clock can be generated using an dcm.
1
--1024x768 VGA
2
--if bin='1' then pixel is white
3
4
library IEEE;
5
use IEEE.STD_LOGIC_1164.ALL;
6
use IEEE.numeric_std.all;
7
8
entity vga is
9
  port(clk75_in, bin  : in std_logic;
10
     horizontal_counter : out std_logic_vector (10 downto 0);
11
     vertical_counter   : out std_logic_vector (9 downto 0);
12
       red_out   : out std_logic_vector(2 downto 0);
13
       green_out : out std_logic_vector(2 downto 0);
14
       blue_out  : out std_logic_vector(1 downto 0);
15
       hs_out    : out std_logic;
16
       vs_out    : out std_logic);
17
end vga;
18
19
architecture Behavioral of vga is
20
21
signal hc: integer range 0 to 1328;
22
signal vc: integer range 0 to 806;
23
24
begin
25
horizontal_counter <= std_logic_vector(to_unsigned(hc,11));
26
vertical_counter <= std_logic_vector(to_unsigned(vc,10));
27
28
--Picture starts with sync-pulse
29
process
30
begin
31
  wait until rising_edge(clk75_in);
32
    if (hc >= 280 ) -- 280 = Sync-pulse + Back-porch
33
    and (hc < 1304 ) -- 1304 = Sync-pulse + Back-porch + Visible-area
34
    and (vc >= 35 ) -- 35 = Sync-pulse + Back-porch
35
    and (vc < 803 ) -- 803 = Sync-pulse + Back-porch + Visible-area
36
    then
37
    if bin = '1' then
38
      red_out <= "111";
39
      green_out <= "111";
40
      blue_out <= "11";
41
    elsif bin = '0' then
42
      red_out <= "000";
43
      green_out <= "000";
44
      blue_out <= "00";
45
    end if;
46
47
    else
48
      red_out <= "000";
49
      green_out <= "000";
50
      blue_out <= "00";
51
    end if;
52
    if (hc > 0 )
53
      and (hc < 136 ) -- 136 = Sync-pulse
54
    then
55
      hs_out <= '0';
56
    else
57
      hs_out <= '1';
58
    end if;
59
    if (vc > 0 )
60
      and (vc < 6 ) -- 6 = Sync-pulse
61
    then
62
      vs_out <= '0';
63
    else
64
      vs_out <= '1';
65
    end if;
66
    hc <= hc + 1;
67
    if (hc = 1328) then --1328 = Whole-line
68
      vc <= vc + 1;
69
      hc <= 0;
70
    end if;
71
    if (vc = 806) then  --806  = Whole-frame    
72
      vc <= 0;
73
    end if;
74
end process;
75
76
end Behavioral;

von René D. (Company: www.dossmatik.de) (dose)


Rate this post
useful
not useful
In this document is the resolution 640x480 simulated and after fitted on 
spartan3an700 board.

http://www.dossmatik.de/ghdl/ghdl_unisim.pdf              german
http://www.dossmatik.de/ghdl/ghdl_unisim_eng.pdf          english

von Kasturi K. (kasturikishore)


Rate this post
useful
not useful
anyone pls help me. I want code in vhdl for hexa decimal inputs. what is 
the port command if i like to give hexadecimal input?

von Lothar M. (Company: Titel) (lkmiller) (Moderator)


Rate this post
useful
not useful
Don't hijack an old thread with a completely different question!
Start a new thread instead!

And then post all of your information belonging to the problem:
Why do you want to read data?
Where does it come from?
Where does is go to?
What should happen with it?

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.