OpenCores
URL https://opencores.org/ocsvn/npigrctrl/npigrctrl/trunk

Subversion Repositories npigrctrl

[/] [npigrctrl/] [tags/] [arelease/] [npi_vga_v1_00_b/] [hdl/] [vhdl/] [dvi_out.vhd] - Rev 5

Compare with Previous | Blame | View Log

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
library UNISIM;
use UNISIM.VComponents.all;
 
entity dvi_out is
Generic (
   C_FAMILY : string := "spartan3adsp");
    Port ( clk        : in  STD_LOGIC;
           ce         : in  STD_LOGIC;
           de_i       : in  STD_LOGIC;
           vsync_i    : in  STD_LOGIC;
           hsync_i    : in  STD_LOGIC;
           red_i      : in  STD_LOGIC_VECTOR (7 downto 0);
           green_i    : in  STD_LOGIC_VECTOR (7 downto 0);
           blue_i     : in  STD_LOGIC_VECTOR (7 downto 0);
           de         : out STD_LOGIC;
           vsync      : out STD_LOGIC;
           hsync      : out STD_LOGIC;
           dvi_data   : out STD_LOGIC_VECTOR (11 downto 0);
           dvi_clk_p  : out STD_LOGIC;
           dvi_clk_n  : out STD_LOGIC;
           reset_n    : out STD_LOGIC);
end dvi_out;
 
architecture Behavioral of dvi_out is
 
   signal d1        : STD_LOGIC_VECTOR (11 downto 0);
   signal d2        : STD_LOGIC_VECTOR (11 downto 0);
   signal d2_r      : STD_LOGIC_VECTOR (11 downto 0);
 
begin
 
   reset_n <= '1';
 
   d1    <= green_i(3 downto 0) & blue_i;
   d2    <= red_i & green_i(7 downto 4);
 
   OUT_Reg : process (clk)
   begin
      if clk'event and clk = '1' then
         de    <= de_i;
         vsync <= vsync_i;
         hsync <= hsync_i;
      end if;
   end process;
 
   V5_GEN : if (C_FAMILY /= "spartan3adsp") generate
      R1: for I in 0 to 11 generate
         ODDR_inst : ODDR
         generic map(
            DDR_CLK_EDGE => "SAME_EDGE")
         port map(
            Q  => dvi_data(I),
            C  => clk,
            CE => '1', 
            D1 => d1(I),
            D2 => d2(I),
            R  => '0',
            S  => '0');
      end generate R1;
 
      ODDR_dvi_clk_p : ODDR
      generic map(
         DDR_CLK_EDGE => "OPPOSITE_EDGE")
      port map (
         Q  => dvi_clk_p,
         C  => clk,
         CE => '1',
         D1 => '0',
         D2 => '1',
         R  => '0',
         S  => '0');
 
      ODDR_dvi_clk_n : ODDR
      generic map(
         DDR_CLK_EDGE => "OPPOSITE_EDGE")
      port map (
         Q  => dvi_clk_n,
         C  => clk,
         CE => '1',
         D1 => '1',
         D2 => '0',
         R  => '0',
         S  => '0');
 
   end generate V5_GEN;
 
   S3ADSP_GEN : if (C_FAMILY = "spartan3adsp") generate
 
      Delay_Reg : process (clk)
      begin
         if (clk'event and (clk = '1')) then
            d2_r <= d2;
         end if;
      end process;
 
      R1: for I in 0 to 11 generate
         ODDR_inst : ODDR2 
           generic map (
              DDR_ALIGNMENT => "NONE", -- "NONE", "C0" or "C1" 
              INIT => '1',             -- Sets initial state of Q  
              SRTYPE => "ASYNC")       -- Reset type
            port map (
               Q  => dvi_data(I),
               C0 => clk,
               C1 => not clk,
               CE => '1',
               D0 => d1(I), 
               D1 => d2_r(I), 
               R  => '0', 
               S  => '0');
      end generate R1;
 
      ODDR_dvi_clk_p : ODDR2 
         generic map (
            DDR_ALIGNMENT => "NONE", -- "NONE", "C0" or "C1" 
            INIT => '1',             -- Sets initial state of Q  
            SRTYPE => "ASYNC")       -- Reset type     
         port map (
            Q  => dvi_clk_p,
            C0 => clk,
            C1 => not clk,
            CE => '1',
            D0 => '0', 
            D1 => '1', 
            R  => '0', 
            S  => '0');
 
      ODDR_dvi_clk_n : ODDR2 
         generic map (
            DDR_ALIGNMENT => "NONE", -- "NONE", "C0" or "C1" 
            INIT => '1',             -- Sets initial state of Q  
            SRTYPE => "ASYNC")       -- Reset type
         port map (
            Q  => dvi_clk_n,
            C0 => clk,
            C1 => not clk,
            CE => '1',
            D0 => '1', 
            D1 => '0', 
            R  => '0', 
            S  => '0');
 
    end generate S3ADSP_GEN;
 
end Behavioral;
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.