diff options
-rw-r--r-- | fpga/ebaz4205/src/ebaz4205-zynq7.dts | 1 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/Makefile | 8 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/artix7.mk | 3 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/common.vhdl | 20 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/ebaz4205.xdc | 106 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/fifo_to_axi.vhdl | 8 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/hp_lcd_driver.vhdl | 2 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/tmds_output_artix7.vhdl | 2 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/tmds_phy_artix7.vhdl | 8 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/vnc_serializer.vhdl | 45 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/zynq7.mk | 4 | ||||
-rw-r--r-- | fpga/hp_lcd_driver/zynq7_wrapper.vhdl | 85 |
12 files changed, 197 insertions, 95 deletions
diff --git a/fpga/ebaz4205/src/ebaz4205-zynq7.dts b/fpga/ebaz4205/src/ebaz4205-zynq7.dts index 0d3a7c1..9283b09 100644 --- a/fpga/ebaz4205/src/ebaz4205-zynq7.dts +++ b/fpga/ebaz4205/src/ebaz4205-zynq7.dts @@ -24,6 +24,7 @@ compatible = "jmm,video-capture-device"; status = "okay"; gpios = <&gpio0 56 0>; + reg = <0xfffc0000 0x40000>; }; diff --git a/fpga/hp_lcd_driver/Makefile b/fpga/hp_lcd_driver/Makefile index 8c0c55d..6b72967 100644 --- a/fpga/hp_lcd_driver/Makefile +++ b/fpga/hp_lcd_driver/Makefile @@ -1,11 +1,13 @@ -TARGETS= ebaz4205 rando_a7 #smh-ac415b #spartan6 #ep4ce6 smh-ac415 +DIP=10.16.66.113 +TARGETS= ebaz4205 #rando_a7 #smh-ac415b #spartan6 #ep4ce6 smh-ac415 #fish:smh-ac415 #better_default: build_rando_a7/hp_lcd_driver.svf # ./prog_a7 -#better_default: build_ebaz4205/out/hp_lcd_driver.bin -# scp build_ebaz4205/out/hp_lcd_driver.bin 10.16.66.163:/boot/uboot/hp_lcd_driver.bin +better_default: ${TARGETS:%=build_%/hp_lcd_driver.svf} + scp build_ebaz4205/out/hp_lcd_driver.bin ${DIP}:/boot/uboot/hp_lcd_driver.bin + ssh -n ${DIP} reboot < /dev/null & default: ${TARGETS:%=build_%/hp_lcd_driver.svf} diff --git a/fpga/hp_lcd_driver/artix7.mk b/fpga/hp_lcd_driver/artix7.mk index 218797c..c20c11d 100644 --- a/fpga/hp_lcd_driver/artix7.mk +++ b/fpga/hp_lcd_driver/artix7.mk @@ -51,3 +51,6 @@ ${BUILD}/ip/%/stamp:artix7_ip/%.tcl ${BIT}: ${BUILD}/build.stamp + +clean: + /bin/rm -rf ${BUILD} diff --git a/fpga/hp_lcd_driver/common.vhdl b/fpga/hp_lcd_driver/common.vhdl index df58203..7275184 100644 --- a/fpga/hp_lcd_driver/common.vhdl +++ b/fpga/hp_lcd_driver/common.vhdl @@ -84,8 +84,8 @@ architecture Behavioral of common is signal c : natural; signal t : std_logic; - - signal wr_index: std_logic; + + signal wr_index : std_logic; begin @@ -250,19 +250,19 @@ begin - r <=x"ff" when rd_data(0) = '1' else - x"00"; + r <= x"ff" when rd_data(0) = '1' else + x"00"; -- r<=x"ff" when rd_data(0)='1' and rd_data(3)='1' else -- x"80" when rd_data(0)='1' else -- x"00"; - g <=x"ff" when rd_data(1) = '1' and rd_data(3) = '1' else - x"80" when rd_data(1) = '1' else - x"00"; - b <=x"ff" when rd_data(2) = '1' and rd_data(3) = '1' else - x"80" when rd_data(2) = '1' else - x"00"; + g <= x"ff" when rd_data(1) = '1' and rd_data(3) = '1' else + x"80" when rd_data(1) = '1' else + x"00"; + b <= x"ff" when rd_data(2) = '1' and rd_data(3) = '1' else + x"80" when rd_data(2) = '1' else + x"00"; diff --git a/fpga/hp_lcd_driver/ebaz4205.xdc b/fpga/hp_lcd_driver/ebaz4205.xdc index f5e5c93..64660eb 100644 --- a/fpga/hp_lcd_driver/ebaz4205.xdc +++ b/fpga/hp_lcd_driver/ebaz4205.xdc @@ -33,14 +33,18 @@ set_property IOSTANDARD LVCMOS33 [get_ports *_led] #set_property PACKAGE_PIN T1 [get_ports {led_1}] #set_property IOSTANDARD LVCMOS33 [get_ports {led_1}] -set_property PACKAGE_PIN G19 [get_ports {hdmi_r_p}]; #data2-5 -set_property PACKAGE_PIN G20 [get_ports {hdmi_r_n}]; #data2-7 +set_property PACKAGE_PIN G19 [get_ports {hdmi_b_p}]; #data2-5 +set_property PACKAGE_PIN G20 [get_ports {hdmi_b_n}]; #data2-7 set_property PACKAGE_PIN K19 [get_ports {hdmi_g_p}]; #data2-13 set_property PACKAGE_PIN J19 [get_ports {hdmi_g_n}]; #data2-9 -set_property PACKAGE_PIN L19 [get_ports {hdmi_b_p}]; #data2-16 -set_property PACKAGE_PIN L20 [get_ports {hdmi_b_n}]; #data2-18 +#set_property PACKAGE_PIN T20 [get_ports {hdmi_g_p}]; #data3-16 +#set_property PACKAGE_PIN U20 [get_ports {hdmi_g_n}]; #data3-17 +set_property PACKAGE_PIN L19 [get_ports {hdmi_r_p}]; #data2-16 +set_property PACKAGE_PIN L20 [get_ports {hdmi_r_n}]; #data2-18 set_property PACKAGE_PIN L16 [get_ports {hdmi_c_p}]; #data2-15 set_property PACKAGE_PIN L17 [get_ports {hdmi_c_n}]; #data2-20 +#set_property PACKAGE_PIN N17 [get_ports {hdmi_c_p}]; #data3-9 +#set_property PACKAGE_PIN P18 [get_ports {hdmi_c_n}]; #data3-7 set_property IOSTANDARD TMDS_33 [get_ports {hdmi_c_p}] set_property IOSTANDARD TMDS_33 [get_ports {hdmi_c_n}] @@ -59,7 +63,7 @@ set_property IOSTANDARD TMDS_33 [get_ports {hdmi_b_n}] ##set_property DRIVE 16 [get_ports {hdmi_g_n}] ##set_property DRIVE 16 [get_ports {hdmi_b_p}] # -set_property PACKAGE_PIN H20 [get_ports {hdmi_vcc}]; #data2-8 +set_property PACKAGE_PIN K18 [get_ports {hdmi_vcc}]; #data2-11 (12 is gnd) set_property IOSTANDARD LVCMOS33 [get_ports {hdmi_vcc}] # # @@ -72,14 +76,14 @@ set_property IOSTANDARD LVCMOS33 [get_ports {hdmi_vcc}] ##set_property IOSTANDARD LVCMOS33 [get_ports key] # set_property PACKAGE_PIN A20 [get_ports {video[0]}]; #data1-5 -set_property PACKAGE_PIN B19 [get_ports {video[1]}]; #data1-7 -set_property PACKAGE_PIN C20 [get_ports {video[2]}]; #data1-9 -set_property PACKAGE_PIN H17 [get_ports {video[3]}]; #data1-11 +set_property PACKAGE_PIN H16 [get_ports {video[1]}]; #data1-6 +set_property PACKAGE_PIN B19 [get_ports {video[2]}]; #data1-7 +set_property PACKAGE_PIN B20 [get_ports {video[3]}]; #data1-8 set_property PACKAGE_PIN D20 [get_ports {video[4]}]; #data1-13 -set_property PACKAGE_PIN H18 [get_ports {video[5]}]; #data1-15 -set_property PACKAGE_PIN F20 [get_ports {video[6]}]; #data1-17 -set_property PACKAGE_PIN F19 [get_ports {video[7]}]; #data1-19 -# +set_property PACKAGE_PIN D18 [get_ports {video[5]}]; #data1-14 +set_property PACKAGE_PIN H18 [get_ports {video[6]}]; #data1-15 +set_property PACKAGE_PIN D19 [get_ports {video[7]}]; #data1-16 +## set_property IOSTANDARD LVCMOS33 [get_ports {video[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {video[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {video[2]}] @@ -89,9 +93,10 @@ set_property IOSTANDARD LVCMOS33 [get_ports {video[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {video[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {video[7]}] # -set_property PACKAGE_PIN H16 [get_ports {pclk_in}]; #data1-6 -set_property PACKAGE_PIN D18 [get_ports {vsync_in}]; #data1-14 -set_property PACKAGE_PIN D19 [get_ports {hsync_in}]; #data1-16 +set_property PACKAGE_PIN H17 [get_ports {pclk_in}]; #data1-11 (12 is gnd) + +set_property PACKAGE_PIN F19 [get_ports {vsync_in}]; #data1-19 +set_property PACKAGE_PIN K17 [get_ports {hsync_in}]; #data1-20 # #set_property PACKAGE_PIN P16 [get_ports {r_out}] #set_property PACKAGE_PIN V18 [get_ports {g_out}] @@ -119,7 +124,11 @@ set_property IOSTANDARD LVCMOS33 [get_ports {hsync_in}] ##set_false_path -from [get_ports pci_exp_rst_n] # -set_false_path -from [get_clocks clk_out4_mmcm_0] -to [get_clocks clk_out1_mmcm_0] +#set_false_path -from [get_clocks clk_out4_mmcm_0] -to [get_clocks clk_out1_mmcm_0] +# + + +exit @@ -138,5 +147,70 @@ set_property CONFIG_VOLTAGE 3.3 [current_design] set_property CFGBVS VCCO [current_design] +set_max_delay -from [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[*]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[*]/D}] 9 +set_max_delay -from [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[*]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[*]/D}] 9 +set_max_delay -from [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[*]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[*]/D}] 9 +set_max_delay -from [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[*]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[*]/D}] 9 + +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[0]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[0]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[0]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[0]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[0]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[0]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[0]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[0]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[1]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[1]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[1]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[1]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[1]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[1]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[1]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[1]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[2]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[2]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[2]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[2]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[2]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[2]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[2]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[2]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[3]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[3]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[3]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[3]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[3]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[3]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[3]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[3]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[4]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[4]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[4]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[4]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[4]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[4]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[4]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[4]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[5]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[5]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[5]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[5]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[5]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[5]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[5]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[5]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[6]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[6]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[6]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[6]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[6]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[6]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[6]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[6]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[7]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[7]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[7]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[7]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[7]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[7]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[7]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[7]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[8]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[8]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[8]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[8]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[8]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[8]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[8]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[8]/D}] +# +# +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_r/ld_reg[9]/C}] -to [get_pins {common_i/output0/tmds_o/phy_r/ld2_reg[9]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_g/ld_reg[9]/C}] -to [get_pins {common_i/output0/tmds_o/phy_g/ld2_reg[9]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_b/ld_reg[9]/C}] -to [get_pins {common_i/output0/tmds_o/phy_b/ld2_reg[9]/D}] +#set_multicycle_path 5 -setup -from [get_pins {common_i/output0/tmds_o/phy_c/ld_reg[9]/C}] -to [get_pins {common_i/output0/tmds_o/phy_c/ld2_reg[9]/D}] +# +# diff --git a/fpga/hp_lcd_driver/fifo_to_axi.vhdl b/fpga/hp_lcd_driver/fifo_to_axi.vhdl index 64da115..c527ea1 100644 --- a/fpga/hp_lcd_driver/fifo_to_axi.vhdl +++ b/fpga/hp_lcd_driver/fifo_to_axi.vhdl @@ -87,10 +87,10 @@ begin elsif do_bus_cycle = '0' then if fifo_empty = '0' then - data <= fifo_rdata (63 downto 0); - if fifo_rdata(64)='1' then - addr <= std_logic_vector(START); - end if; + data <= fifo_rdata (63 downto 0); + if fifo_rdata(64) = '1' then + addr <= std_logic_vector(START); + end if; fifo_rd_en <= '1'; do_bus_cycle <= '1'; axi_awvalid <= '1'; diff --git a/fpga/hp_lcd_driver/hp_lcd_driver.vhdl b/fpga/hp_lcd_driver/hp_lcd_driver.vhdl index 491ccf3..15fe76f 100644 --- a/fpga/hp_lcd_driver/hp_lcd_driver.vhdl +++ b/fpga/hp_lcd_driver/hp_lcd_driver.vhdl @@ -71,7 +71,7 @@ begin hdmi_vcc => hdmi_vcc, i_clk_out => i_clk_out, led => led, - video_out_clk => open, + video_out_clk => open, video_out_index => open, video_out_data => open, video_out_valid => open diff --git a/fpga/hp_lcd_driver/tmds_output_artix7.vhdl b/fpga/hp_lcd_driver/tmds_output_artix7.vhdl index 6c91041..8749d3f 100644 --- a/fpga/hp_lcd_driver/tmds_output_artix7.vhdl +++ b/fpga/hp_lcd_driver/tmds_output_artix7.vhdl @@ -35,7 +35,7 @@ end tmds_output; architecture beh of tmds_output is signal phy_reset : std_logic; - signal b : natural := 0; + signal b : natural range 0 to 9:= 0; begin diff --git a/fpga/hp_lcd_driver/tmds_phy_artix7.vhdl b/fpga/hp_lcd_driver/tmds_phy_artix7.vhdl index 8c8106e..604ec23 100644 --- a/fpga/hp_lcd_driver/tmds_phy_artix7.vhdl +++ b/fpga/hp_lcd_driver/tmds_phy_artix7.vhdl @@ -22,6 +22,7 @@ end tmds_phy_artix7; architecture beh of tmds_phy_artix7 is signal ld : std_logic_vector(9 downto 0); + signal ld2 : std_logic_vector(9 downto 0); signal sr : std_logic_vector(9 downto 0); signal s : std_logic; @@ -32,7 +33,7 @@ begin process(pix_clk) begin if rising_edge(pix_clk) then - ld <= din; + ld2 <= din; end if; end process; @@ -69,11 +70,14 @@ begin process(phy_clk) begin if rising_edge(phy_clk) then + if b=5 then + ld<=ld2; + end if; if b = 0 then sr <= ld; else sr(8 downto 0) <= sr (9 downto 1); - s <=sr(0); + s <= sr(0); end if; end if; end process; diff --git a/fpga/hp_lcd_driver/vnc_serializer.vhdl b/fpga/hp_lcd_driver/vnc_serializer.vhdl index ce4b951..9ec89a8 100644 --- a/fpga/hp_lcd_driver/vnc_serializer.vhdl +++ b/fpga/hp_lcd_driver/vnc_serializer.vhdl @@ -18,38 +18,50 @@ end vnc_serializer; architecture Behavioural of vnc_serializer is - type REGS is array (0 to 7) of std_logic_vector(video_width -1 downto 0); + --type REGS is array (0 to 7) of std_logic_vector(video_width-1 downto 0); + type REGS is array (0 to 7) of std_logic_vector(7 downto 0); signal reg : REGS; signal i : natural := 0; signal wren : std_logic; signal next_index : std_logic; - signal index : std_logic; + signal index : std_logic; + signal rgb : std_logic_vector(7 downto 0); begin + rgb(2 downto 0) <= "111" when vnc_data(0)='1' else + "000"; + rgb(5 downto 3) <= "111" when vnc_data(1)='1' and vnc_data(3)='1' else + "100" when vnc_data(1)='1' else + "000"; + rgb(7 downto 6) <= "11" when vnc_data(2)='1' and vnc_data(3)='1' else + "10" when vnc_data(2)='1' else + "00"; + + process (clk) begin if rising_edge(clk) then if vnc_valid = '1' then if vnc_index = '1' then - reg(0) <= vnc_data; + reg(0)<=rgb; next_index <= '1'; - i <=1; - wren <= '0'; + i <= 1; + wren <= '0'; else - reg(i) <= vnc_data; + reg(i) <=rgb; if i /= 7 then - i <=i+1; + i <= i+1; wren <= '0'; else - i <=0; - wren <= '1'; - index <= next_index; - next_index <= '0'; + i <= 0; + wren <= '1'; + index <= next_index; + next_index <= '0'; end if; - end if; + end if; else - wren <= '0'; + wren <= '0'; end if; end if; end process; @@ -57,11 +69,12 @@ begin g_j : for j in 0 to 7 generate - fifo_data(((j*8)+video_width-1) downto (j*8)) <= reg(j); - fifo_data(((j*8)+7) downto ((j*8)+video_width)) <= (others =>'0'); +-- fifo_data(((j*8)+video_width-1) downto (j*8)) <= reg(j); +-- fifo_data(((j*8)+7) downto ((j*8)+video_width)) <= (others => '0'); + fifo_data(((j*8)+7) downto (j*8)) <= reg(j); end generate g_j; - fifo_data(64)<=index; + fifo_data(64) <= index; fifo_wren <= wren; diff --git a/fpga/hp_lcd_driver/zynq7.mk b/fpga/hp_lcd_driver/zynq7.mk index c99e325..e6acad8 100644 --- a/fpga/hp_lcd_driver/zynq7.mk +++ b/fpga/hp_lcd_driver/zynq7.mk @@ -58,3 +58,7 @@ ${BUILD}/ip/%/stamp:zynq7_ip/%.tcl ${BIT}: ${BUILD}/build.stamp + +clean: + /bin/rm -rf ${BUILD} + diff --git a/fpga/hp_lcd_driver/zynq7_wrapper.vhdl b/fpga/hp_lcd_driver/zynq7_wrapper.vhdl index 1fde3c8..529a1b1 100644 --- a/fpga/hp_lcd_driver/zynq7_wrapper.vhdl +++ b/fpga/hp_lcd_driver/zynq7_wrapper.vhdl @@ -129,12 +129,12 @@ architecture arch of zynq7_wrapper is signal fifo_rst_cnt : natural; - signal fifo_rst: std_logic; - signal fifo_wr_en : std_logic; - signal fifo_wdata : std_logic_vector(64 downto 0); - signal fifo_rd_en : std_logic; - signal fifo_rdata : std_logic_vector(64 downto 0); - signal fifo_empty : std_logic; + signal fifo_rst : std_logic; + signal fifo_wr_en : std_logic; + signal fifo_wdata : std_logic_vector(64 downto 0); + signal fifo_rd_en : std_logic; + signal fifo_rdata : std_logic_vector(64 downto 0); + signal fifo_empty : std_logic; signal run : std_logic; @@ -309,43 +309,44 @@ begin vnc_serializer_i : entity work.vnc_serializer - generic map ( - video_width => video_width - ) - port map ( - clk => vnc_clk, - vnc_valid => vnc_valid, - vnc_data => vnc_data, - vnc_index => vnc_index, - - fifo_data => fifo_wdata, - fifo_wren => fifo_wr_en); - - -process (clk_50m) begin -if rising_edge(clk_50m) then -if sys_rst_n='0' then - fifo_rst_cnt <= 20; - fifo_rst <='1'; -elsif fifo_rst_cnt /= 0 then - fifo_rst_cnt <= fifo_rst_cnt -1; -else - fifo_rst <='0'; -end if; -end if; -end process; + generic map ( + video_width => video_width + ) + port map ( + clk => vnc_clk, + vnc_valid => vnc_valid, + vnc_data => vnc_data, + vnc_index => vnc_index, + + fifo_data => fifo_wdata, + fifo_wren => fifo_wr_en); + + + process (clk_50m) + begin + if rising_edge(clk_50m) then + if sys_rst_n = '0' then + fifo_rst_cnt <= 20; + fifo_rst <= '1'; + elsif fifo_rst_cnt /= 0 then + fifo_rst_cnt <= fifo_rst_cnt -1; + else + fifo_rst <= '0'; + end if; + end if; + end process; fifo_i : entity work.fifo_generator_0 - port map ( - rst => fifo_rst, - wr_clk => vnc_clk, - din => fifo_wdata, - wr_en => fifo_wr_en, - rd_clk=>hp0_aclk, - rd_en =>fifo_rd_en, - dout => fifo_rdata, - empty => fifo_empty - ); + port map ( + rst => fifo_rst, + wr_clk => vnc_clk, + din => fifo_wdata, + wr_en => fifo_wr_en, + rd_clk => hp0_aclk, + rd_en => fifo_rd_en, + dout => fifo_rdata, + empty => fifo_empty + ); @@ -363,7 +364,7 @@ end process; axi_bvalid => hp0_bvalid, axi_bready => hp0_bready, - run => run, + run => run, fifo_empty => fifo_empty, fifo_rdata => fifo_rdata, |