summaryrefslogtreecommitdiffstats
path: root/fpga/hp_lcd_driver
diff options
context:
space:
mode:
Diffstat (limited to 'fpga/hp_lcd_driver')
-rw-r--r--fpga/hp_lcd_driver/fb_hw.vhdl41
-rw-r--r--fpga/hp_lcd_driver/zynq7.mk1
-rw-r--r--fpga/hp_lcd_driver/zynq7_hp_lcd_driver.tcl2
-rw-r--r--fpga/hp_lcd_driver/zynq7_ip/blk_mem_gen_1.tcl14
-rw-r--r--fpga/hp_lcd_driver/zynq7_wrapper.vhdl9
5 files changed, 46 insertions, 21 deletions
diff --git a/fpga/hp_lcd_driver/fb_hw.vhdl b/fpga/hp_lcd_driver/fb_hw.vhdl
index 5f2df26..f4adbc9 100644
--- a/fpga/hp_lcd_driver/fb_hw.vhdl
+++ b/fpga/hp_lcd_driver/fb_hw.vhdl
@@ -51,10 +51,9 @@ entity fb_hw is
overlay_gate : out std_logic;
overlay_r : out std_logic_vector(7 downto 0);
overlay_g : out std_logic_vector(7 downto 0);
- overlay_b : out std_logic_vector(7 downto 0)
-
-
-
+ overlay_b : out std_logic_vector(7 downto 0);
+ overlay_on : in std_logic;
+ overlay_off : in std_logic
);
end fb_hw;
architecture Behavioural of fb_hw is
@@ -62,16 +61,16 @@ architecture Behavioural of fb_hw is
type t_palette is array (0 to 15) of std_logic_vector(7 downto 0);
constant r_lut : t_palette := (
- x"00", x"00", x"00", x"00", x"AA", x"AA", x"AA", x"AA",
- x"55", x"55", x"55", x"55", x"FF", x"FF", x"FF", x"FF"
+ x"00", x"00", x"00", x"00", x"FF", x"FF", x"FF", x"FF",
+ x"00", x"00", x"00", x"00", x"FF", x"FF", x"FF", x"FF"
);
constant g_lut : t_palette := (
- x"00", x"00", x"AA", x"AA", x"00", x"00", x"55", x"AA",
- x"55", x"55", x"FF", x"FF", x"55", x"55", x"FF", x"FF"
+ x"00", x"00", x"FF", x"FF", x"00", x"00", x"FF", x"FF",
+ x"00", x"00", x"FF", x"FF", x"00", x"00", x"FF", x"FF"
);
constant b_lut : t_palette := (
- x"00", x"AA", x"00", x"AA", x"00", x"AA", x"00", x"AA",
- x"55", x"FF", x"55", x"FF", x"55", x"FF", x"55", x"FF"
+ x"00", x"FF", x"00", x"FF", x"00", x"FF", x"00", x"FF",
+ x"00", x"FF", x"00", x"FF", x"00", x"FF", x"00", x"FF"
);
@@ -92,7 +91,22 @@ architecture Behavioural of fb_hw is
begin
- fb_ram0 : entity work.blk_mem_gen_1
+-- fb_ram0 : entity work.blk_mem_gen_1
+-- port map (
+-- clka => fb_ps_clk,
+-- ena => fb_ps_en,
+-- wea => fb_ps_we,
+-- addra => fb_ps_addr (16 downto 2),
+-- dina => fb_ps_wrdata,
+-- douta => fb_ps_rddata,
+-- clkb => overlay_clk,
+-- web => "0000",
+-- addrb => fb_pl_addr,
+-- dinb => x"00000000",
+-- doutb => fb_pl_rddata
+-- );
+
+ fb_ram0 : entity work.fb_ram
port map (
clka => fb_ps_clk,
ena => fb_ps_en,
@@ -121,7 +135,10 @@ begin
overlay_data <= to_integer(unsigned(fb_pl_rddata(overlay_demux+3 downto overlay_demux)));
- overlay_gate <= '0' when overlay_data = 0 else '1';
+ overlay_gate <= '0' when overlay_off='1' else
+ '1' when overlay_on='1' else
+ '0' when overlay_data = 0 else '1';
+
overlay_r <= r_lut(overlay_data);
overlay_g <= g_lut(overlay_data);
overlay_b <= b_lut(overlay_data);
diff --git a/fpga/hp_lcd_driver/zynq7.mk b/fpga/hp_lcd_driver/zynq7.mk
index cbe9443..959e723 100644
--- a/fpga/hp_lcd_driver/zynq7.mk
+++ b/fpga/hp_lcd_driver/zynq7.mk
@@ -43,6 +43,7 @@ SRCS= ${IP} \
vnc_hw.vhdl \
vnc_serializer.vhdl \
fb_hw.vhdl \
+ fb_ram.vhdl \
kbd_uarts.vhdl
diff --git a/fpga/hp_lcd_driver/zynq7_hp_lcd_driver.tcl b/fpga/hp_lcd_driver/zynq7_hp_lcd_driver.tcl
index babb0a7..a704cfb 100644
--- a/fpga/hp_lcd_driver/zynq7_hp_lcd_driver.tcl
+++ b/fpga/hp_lcd_driver/zynq7_hp_lcd_driver.tcl
@@ -20,7 +20,7 @@ if {[llength $files] != 0} {
#read_verilog [ glob ../source/*.v ]
#read_vhdl -vhdl2008 -library work [ glob ../source/*.vhdl ]
-read_vhdl -vhdl2008 -library work { ../zynq7_wrapper.vhdl ../fifo_to_axi.vhdl ../clkgen_artix7.vhdl ../debounce.vhdl ../delay.vhdl ../edge_det.vhdl ../common.vhdl ../input_formatter.vhdl ../input_stage.vhdl ../output_analog.vhdl ../output_formatter.vhdl ../output_stage.vhdl ../synchronizer.vhdl ../tmds_encoder.vhdl ../tmds_encode.vhdl ../tmds_output_artix7.vhdl ../tmds_phy_artix7.vhdl ../vram_artix7.vhdl ../vnc_hw.vhdl ../vnc_serializer.vhdl ../fb_hw.vhdl ../kbd_uarts.vhdl }
+read_vhdl -vhdl2008 -library work { ../zynq7_wrapper.vhdl ../fifo_to_axi.vhdl ../clkgen_artix7.vhdl ../debounce.vhdl ../delay.vhdl ../edge_det.vhdl ../common.vhdl ../input_formatter.vhdl ../input_stage.vhdl ../output_analog.vhdl ../output_formatter.vhdl ../output_stage.vhdl ../synchronizer.vhdl ../tmds_encoder.vhdl ../tmds_encode.vhdl ../tmds_output_artix7.vhdl ../tmds_phy_artix7.vhdl ../vram_artix7.vhdl ../vnc_hw.vhdl ../vnc_serializer.vhdl ../fb_hw.vhdl ../fb_ram.vhdl ../kbd_uarts.vhdl }
set generics {}
append generics { } "video_width=$video_width"
diff --git a/fpga/hp_lcd_driver/zynq7_ip/blk_mem_gen_1.tcl b/fpga/hp_lcd_driver/zynq7_ip/blk_mem_gen_1.tcl
index 818d6fc..aefd1f9 100644
--- a/fpga/hp_lcd_driver/zynq7_ip/blk_mem_gen_1.tcl
+++ b/fpga/hp_lcd_driver/zynq7_ip/blk_mem_gen_1.tcl
@@ -10,14 +10,14 @@ create_ip -name blk_mem_gen -vendor xilinx.com -library ip -version 8.4 -module_
set_property -dict [list \
CONFIG.Memory_Type {True_Dual_Port_RAM} \
- CONFIG.Use_Byte_Write_Enable {true} \
- CONFIG.Byte_Size {8} \
- CONFIG.Write_Width_A {32} \
- CONFIG.Write_Depth_A {28800} \
- CONFIG.Read_Width_A {32} \
+ CONFIG.Use_Byte_Write_Enable {false} \
+ CONFIG.Byte_Size {9} \
+ CONFIG.Write_Width_A {6} \
+ CONFIG.Write_Depth_A {30720} \
+ CONFIG.Read_Width_A {6} \
CONFIG.Operating_Mode_A {WRITE_FIRST} \
- CONFIG.Write_Width_B {32} \
- CONFIG.Read_Width_B {32} \
+ CONFIG.Write_Width_B {6} \
+ CONFIG.Read_Width_B {6} \
CONFIG.Operating_Mode_B {READ_FIRST} \
CONFIG.Enable_B {Always_Enabled} \
CONFIG.Register_PortA_Output_of_Memory_Primitives {false} \
diff --git a/fpga/hp_lcd_driver/zynq7_wrapper.vhdl b/fpga/hp_lcd_driver/zynq7_wrapper.vhdl
index 6fb89d6..0107700 100644
--- a/fpga/hp_lcd_driver/zynq7_wrapper.vhdl
+++ b/fpga/hp_lcd_driver/zynq7_wrapper.vhdl
@@ -217,6 +217,8 @@ architecture arch of zynq7_wrapper is
signal run : std_logic;
+ signal overlay_off : std_logic;
+ signal overlay_on : std_logic;
signal eth0_mdio_mdio_i : std_logic;
signal eth0_mdio_mdio_o : std_logic;
@@ -557,7 +559,9 @@ begin
overlay_gate => overlay_gate,
overlay_r => overlay_r,
overlay_g => overlay_g,
- overlay_b => overlay_b
+ overlay_b => overlay_b,
+ overlay_on => overlay_on,
+ overlay_off => overlay_off
);
@@ -615,6 +619,7 @@ begin
+
hp0_araddr <= (others => '0');
hp0_arvalid <= '0';
hp0_rready <= '0';
@@ -629,6 +634,8 @@ begin
red_led <= emio_o(0);
green_led <= emio_o(1);
run <= emio_o(2);
+ overlay_off <= emio_o(3);
+ overlay_on <= emio_o(4);
end architecture arch;