summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--spartan6/hp_lcd_driver/hp_lcd_driver.ucf14
-rw-r--r--spartan6/hp_lcd_driver/hp_lcd_driver.vhdl3
-rw-r--r--spartan6/hp_lcd_driver/tmds_output.vhdl83
3 files changed, 75 insertions, 25 deletions
diff --git a/spartan6/hp_lcd_driver/hp_lcd_driver.ucf b/spartan6/hp_lcd_driver/hp_lcd_driver.ucf
index e4a5fc2..bef419f 100644
--- a/spartan6/hp_lcd_driver/hp_lcd_driver.ucf
+++ b/spartan6/hp_lcd_driver/hp_lcd_driver.ucf
@@ -12,3 +12,17 @@ NET "b_out" IOSTANDARD = LVCMOS33;
NET "g_out" IOSTANDARD = LVCMOS33;
NET "hsync_out" IOSTANDARD = LVCMOS33;
NET "vsync_out" IOSTANDARD = LVCMOS33;
+
+#NET "hdmi_c_p" LOC = P142;
+#NET "hdmi_c_n" LOC = P141;
+#NET "hdmi_r_p" LOC = P140;
+#NET "hdmi_r_n" LOC = P139;
+#NET "hdmi_g_p" LOC = P138;
+#NET "hdmi_g_n" LOC = P137;
+#NET "hdmi_b_p" LOC = P44;
+#NET "hdmi_b_n" LOC = P43;
+
+
+
+
+
diff --git a/spartan6/hp_lcd_driver/hp_lcd_driver.vhdl b/spartan6/hp_lcd_driver/hp_lcd_driver.vhdl
index a5fc8d7..a6de250 100644
--- a/spartan6/hp_lcd_driver/hp_lcd_driver.vhdl
+++ b/spartan6/hp_lcd_driver/hp_lcd_driver.vhdl
@@ -161,7 +161,8 @@ begin
g<= x"ff" when rd_data(0)='1' else
x"ff" when rd_data(1)='1' else
x"00";
- b<=x"00";
+ b<= x"ff" when rd_data(1)='1' else
+ x"00";
diff --git a/spartan6/hp_lcd_driver/tmds_output.vhdl b/spartan6/hp_lcd_driver/tmds_output.vhdl
index 3d169ee..096b5b7 100644
--- a/spartan6/hp_lcd_driver/tmds_output.vhdl
+++ b/spartan6/hp_lcd_driver/tmds_output.vhdl
@@ -41,8 +41,8 @@ signal b_p10:std_logic_vector(9 downto 0);
signal phy_reset: std_logic;
signal bufpll_lock:std_logic;
signal upper:std_logic;
-signal ioclk: std_logic;
-signal serdesstrobe:std_logic;
+signal ioclk: std_logic_vector(3 downto 0);
+signal serdesstrobe:std_logic_vector(3 downto 0);
begin
@@ -86,17 +86,54 @@ begin
);
-ioclk_buf: BUFPLL
+ioclk_buf_0: BUFPLL
generic map ( DIVIDE => 5)
port map (
PLLIN => pclk_x10,
GCLK => pclk_x2,
LOCKED => pclk_locked,
- IOCLK => ioclk,
- SERDESSTROBE => serdesstrobe
+ IOCLK => ioclk(0),
+ SERDESSTROBE => serdesstrobe(0)
);
+
+ioclk_buf_1: BUFPLL
+ generic map ( DIVIDE => 5)
+ port map (
+ PLLIN => pclk_x10,
+ GCLK => pclk_x2,
+ LOCKED => pclk_locked,
+ IOCLK => ioclk(1),
+ SERDESSTROBE => serdesstrobe(1)
+ );
+
+
+
+ioclk_buf_2: BUFPLL
+ generic map ( DIVIDE => 5)
+ port map (
+ PLLIN => pclk_x10,
+ GCLK => pclk_x2,
+ LOCKED => pclk_locked,
+ IOCLK => ioclk(2),
+ SERDESSTROBE => serdesstrobe(2)
+ );
+
+
+
+ioclk_buf_3: BUFPLL
+ generic map ( DIVIDE => 5)
+ port map (
+ PLLIN => pclk_x10,
+ GCLK => pclk_x2,
+ LOCKED => pclk_locked,
+ IOCLK => ioclk(3),
+ SERDESSTROBE => serdesstrobe(3)
+ );
+
+
+
phy_reset <= not sys_rst_n or not bufpll_lock;
process (pclk_x2) begin
@@ -108,26 +145,24 @@ ioclk_buf: BUFPLL
end process;
---phy_c : entity work.tmds_phy
--- port map (
--- reset => phy_reset,
--- pclk_x2 => pclk_x2,
--- serdesstrobe => serdesstrobe,
--- ioclk => ioclk,
--- upper => upper,
--- din => "1111100000",
--- tmds_out_p => tmds_c_out_p,
--- tmds_out_n => tmds_c_out_n
---);
-tmds_c_out_p <= '0';
-tmds_c_out_n <= '1';
+phy_c : entity work.tmds_phy
+ port map (
+ reset => phy_reset,
+ pclk_x2 => pclk_x2,
+ serdesstrobe => serdesstrobe(0),
+ ioclk => ioclk(0),
+ upper => upper,
+ din => "1111100000",
+ tmds_out_p => tmds_c_out_p,
+ tmds_out_n => tmds_c_out_n
+);
phy_r : entity work.tmds_phy
port map (
reset => phy_reset,
pclk_x2 => pclk_x2,
- serdesstrobe => serdesstrobe,
- ioclk=>ioclk,
+ serdesstrobe => serdesstrobe(1),
+ ioclk=>ioclk(1),
upper=>upper,
din => r_p10,
tmds_out_p => tmds_r_out_p,
@@ -139,8 +174,8 @@ phy_g : entity work.tmds_phy
port map (
reset => phy_reset,
pclk_x2 => pclk_x2,
- serdesstrobe => serdesstrobe,
- ioclk=>ioclk,
+ serdesstrobe => serdesstrobe(2),
+ ioclk=>ioclk(2),
upper=>upper,
din => g_p10,
tmds_out_p => tmds_g_out_p,
@@ -152,8 +187,8 @@ phy_b : entity work.tmds_phy
port map (
reset => phy_reset,
pclk_x2 => pclk_x2,
- serdesstrobe => serdesstrobe,
- ioclk=>ioclk,
+ serdesstrobe => serdesstrobe(3),
+ ioclk=>ioclk(3),
upper=>upper,
din => b_p10,
tmds_out_p => tmds_b_out_p,