fixed earlier misunderstandings, but still doesn't work
This commit is contained in:
@@ -387,67 +387,6 @@ set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON
|
||||
set_global_assignment -name RTLV_REMOVE_FANOUT_FREE_REGISTERS OFF
|
||||
set_global_assignment -name RTLV_SIMPLIFIED_LOGIC OFF
|
||||
set_global_assignment -name USE_SIGNALTAP_FILE output_files/stp.stp
|
||||
set_global_assignment -name SDC_FILE firebee.sdc
|
||||
set_global_assignment -name SOURCE_FILE firebee.qsf
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/Firebee.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DDR/DDR_CTRL.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Video/Video_Top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/RTC/rtc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_soc_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_registers.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_control.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_usart_tx.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_usart_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_usart_rx.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_top_soc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_timers.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_interrupts.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_gpio.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_transmit.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_top_soc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_receive.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_ctrl_status.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_transceiver.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_top_soc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_registers.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_digital_pll.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_crc_logic.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_control.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_am_detector.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_SND2149_IP/wf2149ip_wave.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_SND2149_IP/wf2149ip_top_soc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_SND2149_IP/wf2149ip_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_SND2149_IP/wf2149ip_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DSP/DSP.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Peripherals/ide_cf_sd_rom.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DMA/fbee_dma.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Blitter/Blitter_WF.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Interrupt/interrupt.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Video/VIDEO_CTRL.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DMA/dcfifo1.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DMA/dcfifo0.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Video/lpm_fifoDZ.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Video/lpm_fifoDZ.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Video/lpm_fifo_dc0.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Video/lpm_fifo_dc0.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll_reconfig1.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll4.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll3.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Firebee/altpll3.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll2.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Firebee/altpll2.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll1.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Firebee/altpll1.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/Firebee_pkg.vhd
|
||||
set_global_assignment -name QIP_FILE ../../../rtl/vhdl/Firebee/altpll_reconfig1.qip
|
||||
|
||||
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
|
||||
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
|
||||
@@ -684,7 +623,6 @@ set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to IRQ_n[2]
|
||||
set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to IRQ_n[3]
|
||||
set_instance_assignment -name IO_STANDARD "3.0-V LVCMOS" -to IRQ_n[4]
|
||||
set_global_assignment -name FLOW_ENABLE_IO_ASSIGNMENT_ANALYSIS ON
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/io_register.vhd
|
||||
set_global_assignment -name EDA_TEST_BENCH_NAME firebee_tb -section_id eda_simulation
|
||||
set_global_assignment -name EDA_DESIGN_INSTANCE_NAME firebee_tb -section_id firebee_tb
|
||||
set_global_assignment -name EDA_TEST_BENCH_RUN_SIM_FOR "10 ms" -section_id firebee_tb
|
||||
@@ -696,4 +634,66 @@ set_global_assignment -name EDA_TEST_BENCH_FILE ../../../testbenches/ddr_ram_mod
|
||||
set_global_assignment -name EDA_TEST_BENCH_FILE ../../../testbenches/ddr_ctlr_tb.vhd -section_id ddr_ctlr_tb
|
||||
set_global_assignment -name EDA_TEST_BENCH_FILE ../../../testbenches/ddr_ram_model.vhd -section_id firebee_tb
|
||||
set_global_assignment -name EDA_TEST_BENCH_FILE ../../../testbenches/firebee_tb.vhd -section_id firebee_tb
|
||||
set_global_assignment -name SDC_FILE firebee.sdc
|
||||
set_global_assignment -name SOURCE_FILE firebee.qsf
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/Firebee.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DDR/DDR_CTRL.vhd -hdl_version VHDL_2008
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Video/Video_Top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/RTC/rtc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_soc_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_registers.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF5380/wf5380_control.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_usart_tx.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_usart_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_usart_rx.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_usart_ctrl.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_top_soc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_timers.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_interrupts.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_MFP68901_IP/wf68901ip_gpio.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_transmit.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_top_soc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_receive.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_UART6850_IP/wf6850ip_ctrl_status.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_transceiver.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_top_soc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_registers.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_digital_pll.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_crc_logic.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_control.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_FDC1772_IP/wf1772ip_am_detector.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_SND2149_IP/wf2149ip_wave.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_SND2149_IP/wf2149ip_top_soc.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_SND2149_IP/wf2149ip_top.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/WF_SND2149_IP/wf2149ip_pkg.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DSP/DSP.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Peripherals/ide_cf_sd_rom.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DMA/fbee_dma.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Blitter/Blitter_WF.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Interrupt/interrupt.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Video/VIDEO_CTRL.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DMA/dcfifo1.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/DMA/dcfifo0.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Video/lpm_fifoDZ.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Video/lpm_fifoDZ.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Video/lpm_fifo_dc0.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Video/lpm_fifo_dc0.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll_reconfig1.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll4.vhd
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll3.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Firebee/altpll3.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll2.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Firebee/altpll2.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/altpll1.vhd
|
||||
set_global_assignment -name SOURCE_FILE ../../../rtl/vhdl/Firebee/altpll1.cmp
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/Firebee/Firebee_pkg.vhd
|
||||
set_global_assignment -name QIP_FILE ../../../rtl/vhdl/Firebee/altpll_reconfig1.qip
|
||||
set_global_assignment -name VHDL_FILE ../../../rtl/vhdl/io_register.vhd
|
||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||
@@ -13,7 +13,7 @@
|
||||
---- ----
|
||||
---- Author(s): ----
|
||||
---- - Wolfgang Foerster, wf@experiment-s.de; wf@inventronik.de ----
|
||||
---- K ----
|
||||
---- ----
|
||||
----------------------------------------------------------------------
|
||||
---- ----
|
||||
---- Copyright (C) 2012 Fredi Aschwanden, Wolfgang Förster ----
|
||||
@@ -25,13 +25,13 @@
|
||||
---- version. ----
|
||||
---- ----
|
||||
---- This program is distributed in the hope that it will be ----
|
||||
---- useful, but WITHOUT ANY WARRANTY; WITHout even the implied ----
|
||||
---- useful, but WITHOUT ANY WARRANTY; without even the implied ----
|
||||
---- warranty of MERCHANTABILITY OR FITNESS FOR A PARTICULAR ----
|
||||
---- PURPOSE. See the GNU General Public License for more ----
|
||||
---- details. ----
|
||||
---- ----
|
||||
---- You should have received a copy of the GNU General Public ----
|
||||
---- License along WITH this program; IF not, write to the Free ----
|
||||
---- License along with this program; If not, write to the Free ----
|
||||
---- Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ----
|
||||
---- Boston, MA 02110-1301, USA. ----
|
||||
---- ----
|
||||
@@ -48,50 +48,50 @@ LIBRARY IEEE;
|
||||
|
||||
ENTITY DDR_CTRL IS
|
||||
PORT(
|
||||
clk_main : IN STD_LOGIC;
|
||||
ddr_sync_66m : IN STD_LOGIC;
|
||||
fb_adr : IN UNSIGNED (31 DOWNTO 0);
|
||||
fb_cs1_n : IN STD_LOGIC;
|
||||
fb_oe_n : IN STD_LOGIC;
|
||||
fb_size0 : IN STD_LOGIC;
|
||||
fb_size1 : IN STD_LOGIC;
|
||||
fb_ale : IN STD_LOGIC;
|
||||
fb_wr_n : IN STD_LOGIC;
|
||||
fifo_clr : IN STD_LOGIC;
|
||||
video_control_register : IN UNSIGNED (15 DOWNTO 0);
|
||||
blitter_adr : IN UNSIGNED (31 DOWNTO 0);
|
||||
blitter_sig : IN STD_LOGIC;
|
||||
blitter_wr : IN STD_LOGIC;
|
||||
clk_main : IN std_logic;
|
||||
ddr_sync_66m : IN std_logic;
|
||||
fb_adr : IN unsigned(31 DOWNTO 0);
|
||||
fb_cs1_n : IN std_logic;
|
||||
fb_oe_n : IN std_logic;
|
||||
fb_size0 : IN std_logic;
|
||||
fb_size1 : IN std_logic;
|
||||
fb_ale : IN std_logic;
|
||||
fb_wr_n : IN std_logic;
|
||||
fifo_clr : IN std_logic;
|
||||
video_control_register : IN unsigned(15 DOWNTO 0);
|
||||
blitter_adr : IN unsigned(31 DOWNTO 0);
|
||||
blitter_sig : IN std_logic;
|
||||
blitter_wr : IN std_logic;
|
||||
|
||||
ddrclk0 : IN STD_LOGIC;
|
||||
clk_33m : IN STD_LOGIC;
|
||||
fifo_mw : IN UNSIGNED (8 DOWNTO 0);
|
||||
ddrclk0 : IN std_logic;
|
||||
clk_33m : IN std_logic;
|
||||
fifo_mw : IN unsigned(8 DOWNTO 0);
|
||||
|
||||
va : OUT UNSIGNED (12 DOWNTO 0); -- video Adress bus at the DDR chips
|
||||
vwe_n : OUT STD_LOGIC; -- video memory write enable
|
||||
vras_n : OUT STD_LOGIC; -- video memory RAS
|
||||
vcs_n : OUT STD_LOGIC; -- video memory chip SELECT
|
||||
vcke : OUT STD_LOGIC; -- video memory clock enable
|
||||
vcas_n : OUT STD_LOGIC; -- video memory CAS
|
||||
va : OUT unsigned(12 DOWNTO 0); -- video Adress bus at the DDR chips
|
||||
vwe_n : OUT std_logic; -- video memory write enable
|
||||
vras_n : OUT std_logic; -- video memory RAS
|
||||
vcs_n : OUT std_logic; -- video memory chip SELECT
|
||||
vcke : OUT std_logic; -- video memory clock enable
|
||||
vcas_n : OUT std_logic; -- video memory CAS
|
||||
|
||||
fb_le : OUT UNSIGNED (3 DOWNTO 0);
|
||||
fb_vdoe : OUT UNSIGNED (3 DOWNTO 0);
|
||||
fb_le : OUT unsigned(3 DOWNTO 0);
|
||||
fb_vdoe : OUT unsigned(3 DOWNTO 0);
|
||||
|
||||
sr_fifo_wre : OUT STD_LOGIC;
|
||||
sr_ddr_fb : OUT STD_LOGIC;
|
||||
sr_ddr_wr : OUT STD_LOGIC;
|
||||
sr_ddrwr_d_sel : OUT STD_LOGIC;
|
||||
sr_vdmp : OUT UNSIGNED (7 DOWNTO 0);
|
||||
sr_fifo_wre : OUT std_logic;
|
||||
sr_ddr_fb : OUT std_logic;
|
||||
sr_ddr_wr : OUT std_logic;
|
||||
sr_ddrwr_d_sel : OUT std_logic;
|
||||
sr_vdmp : OUT unsigned(7 DOWNTO 0);
|
||||
|
||||
video_ddr_ta : OUT STD_LOGIC;
|
||||
sr_blitter_dack : OUT STD_LOGIC;
|
||||
ba : OUT UNSIGNED (1 DOWNTO 0);
|
||||
ddrwr_d_sel1 : OUT STD_LOGIC;
|
||||
vdm_sel : OUT UNSIGNED (3 DOWNTO 0);
|
||||
data_in : IN UNSIGNED (31 DOWNTO 0);
|
||||
data_out : OUT UNSIGNED (31 DOWNTO 16);
|
||||
data_en_h : OUT STD_LOGIC;
|
||||
data_en_l : OUT STD_LOGIC
|
||||
video_ddr_ta : OUT std_logic;
|
||||
sr_blitter_dack : OUT std_logic;
|
||||
ba : OUT unsigned(1 DOWNTO 0);
|
||||
ddrwr_d_sel1 : OUT std_logic;
|
||||
vdm_sel : OUT unsigned(3 DOWNTO 0);
|
||||
data_in : IN unsigned(31 DOWNTO 0);
|
||||
data_out : OUT unsigned(31 DOWNTO 16);
|
||||
data_en_h : OUT std_logic;
|
||||
data_en_l : OUT std_logic
|
||||
);
|
||||
END ENTITY DDR_CTRL;
|
||||
|
||||
@@ -101,7 +101,7 @@ ARCHITECTURE BEHAVIOUR of DDR_CTRL IS
|
||||
CONSTANT FIFO_MWM : INTEGER := 200; -- medium water mark
|
||||
CONSTANT FIFO_HWM : INTEGER := 500; -- high water mark
|
||||
|
||||
-- DDR2 RAM controller bits:
|
||||
-- DDR RAM controller bits:
|
||||
-- $F0000400:
|
||||
-- BIT 0: vcke;
|
||||
-- 1: NOT nVC
|
||||
@@ -114,7 +114,7 @@ ARCHITECTURE BEHAVIOUR of DDR_CTRL IS
|
||||
ALIAS vmem_config_enable IS video_control_register(3);
|
||||
ALIAS vmem_fifo_enable IS video_control_register(8);
|
||||
|
||||
TYPE access_width_t IS (long_access, word_access, byte_access);
|
||||
TYPE access_width_t IS (long_access, word_access, byte_access, line_access);
|
||||
TYPE ddr_access_t IS (ddr_access_cpu, ddr_access_fifo, ddr_access_blitter, ddr_access_none);
|
||||
TYPE fb_regddr_t IS (fr_wait, fr_s0, fr_s1, fr_s2, fr_s3);
|
||||
TYPE ddr_sm_t IS (ds_t1, ds_t2a, ds_t2b, ds_t3, ds_n5, ds_n6, ds_n7, ds_n8, -- Start (normal 8 cycles total = 60ns).
|
||||
@@ -131,86 +131,92 @@ ARCHITECTURE BEHAVIOUR of DDR_CTRL IS
|
||||
SIGNAL ddr_access : ddr_access_t;
|
||||
SIGNAL ddr_state : ddr_sm_t;
|
||||
SIGNAL ddr_next_state : ddr_sm_t;
|
||||
SIGNAL byte_sel : UNSIGNED (3 DOWNTO 0);
|
||||
SIGNAL sr_fifo_wre_i : STD_LOGIC;
|
||||
SIGNAL vcas : STD_LOGIC;
|
||||
SIGNAL vras : STD_LOGIC;
|
||||
SIGNAL vwe : STD_LOGIC;
|
||||
SIGNAL mcs : UNSIGNED (1 DOWNTO 0);
|
||||
SIGNAL bus_cyc : STD_LOGIC;
|
||||
SIGNAL bus_cyc_end : STD_LOGIC;
|
||||
SIGNAL blitter_req : STD_LOGIC;
|
||||
SIGNAL blitter_row_adr : UNSIGNED (12 DOWNTO 0);
|
||||
SIGNAL blitter_ba : UNSIGNED (1 DOWNTO 0);
|
||||
SIGNAL blitter_col_adr : UNSIGNED (9 DOWNTO 0);
|
||||
SIGNAL cpu_ddr_sync : STD_LOGIC;
|
||||
SIGNAL cpu_row_adr : UNSIGNED (12 DOWNTO 0);
|
||||
SIGNAL cpu_ba : UNSIGNED (1 DOWNTO 0);
|
||||
SIGNAL cpu_col_adr : UNSIGNED (9 DOWNTO 0);
|
||||
SIGNAL cpu_req : STD_LOGIC;
|
||||
SIGNAL ddr_sel : STD_LOGIC;
|
||||
SIGNAL ddr_cs : STD_LOGIC;
|
||||
SIGNAL fifo_req : STD_LOGIC;
|
||||
SIGNAL fifo_row_adr : UNSIGNED (12 DOWNTO 0);
|
||||
SIGNAL fifo_ba : UNSIGNED (1 DOWNTO 0);
|
||||
SIGNAL byte_sel : unsigned(3 DOWNTO 0);
|
||||
SIGNAL sr_fifo_wre_i : std_logic;
|
||||
SIGNAL vcas : std_logic;
|
||||
SIGNAL vras : std_logic;
|
||||
SIGNAL vwe : std_logic;
|
||||
SIGNAL mcs : unsigned(1 DOWNTO 0);
|
||||
SIGNAL bus_cyc : std_logic;
|
||||
SIGNAL bus_cyc_end : std_logic;
|
||||
SIGNAL blitter_req : std_logic;
|
||||
SIGNAL blitter_row_adr : unsigned(12 DOWNTO 0);
|
||||
SIGNAL blitter_ba : unsigned(1 DOWNTO 0);
|
||||
SIGNAL blitter_col_adr : unsigned(9 DOWNTO 0);
|
||||
SIGNAL cpu_ddr_sync : std_logic;
|
||||
SIGNAL cpu_row_adr : unsigned(12 DOWNTO 0);
|
||||
SIGNAL cpu_ba : unsigned(1 DOWNTO 0);
|
||||
SIGNAL cpu_col_adr : unsigned(9 DOWNTO 0);
|
||||
SIGNAL cpu_req : std_logic;
|
||||
SIGNAL ddr_sel : std_logic;
|
||||
SIGNAL ddr_cs : std_logic;
|
||||
SIGNAL fifo_req : std_logic;
|
||||
SIGNAL fifo_row_adr : unsigned(12 DOWNTO 0);
|
||||
SIGNAL fifo_ba : unsigned(1 DOWNTO 0);
|
||||
SIGNAL fifo_col_adr : UNSIGNED(9 DOWNTO 0);
|
||||
SIGNAL fifo_clr_sync : STD_LOGIC;
|
||||
SIGNAL vdm_sel_i : UNSIGNED (3 DOWNTO 0);
|
||||
SIGNAL clear_fifo_cnt : STD_LOGIC;
|
||||
SIGNAL stop : STD_LOGIC;
|
||||
SIGNAL fifo_bank_ok : STD_LOGIC;
|
||||
SIGNAL fifo_clr_sync : std_logic;
|
||||
SIGNAL vdm_sel_i : unsigned(3 DOWNTO 0);
|
||||
SIGNAL clear_fifo_cnt : std_logic;
|
||||
SIGNAL stop : std_logic;
|
||||
SIGNAL fifo_bank_ok : std_logic;
|
||||
SIGNAL ddr_refresh_cnt : UNSIGNED(10 DOWNTO 0) := "00000000000";
|
||||
SIGNAL ddr_refresh_req : STD_LOGIC;
|
||||
SIGNAL ddr_refresh_req : std_logic;
|
||||
SIGNAL ddr_refresh_sig : UNSIGNED(3 DOWNTO 0);
|
||||
SIGNAL need_refresh : STD_LOGIC;
|
||||
SIGNAL video_base_l_d : UNSIGNED (7 DOWNTO 0);
|
||||
SIGNAL video_base_l : STD_LOGIC;
|
||||
SIGNAL video_base_m_d : UNSIGNED (7 DOWNTO 0);
|
||||
SIGNAL video_base_m : STD_LOGIC;
|
||||
SIGNAL video_base_h_d : UNSIGNED (7 DOWNTO 0);
|
||||
SIGNAL video_base_h : STD_LOGIC;
|
||||
SIGNAL video_base_x_d : UNSIGNED (2 DOWNTO 0);
|
||||
SIGNAL need_refresh : std_logic;
|
||||
SIGNAL video_base_l_d : unsigned(7 DOWNTO 0);
|
||||
SIGNAL video_base_l : std_logic;
|
||||
SIGNAL video_base_m_d : unsigned(7 DOWNTO 0);
|
||||
SIGNAL video_base_m : std_logic;
|
||||
SIGNAL video_base_h_d : unsigned(7 DOWNTO 0);
|
||||
SIGNAL video_base_h : std_logic;
|
||||
SIGNAL video_base_x_d : unsigned(2 DOWNTO 0);
|
||||
SIGNAL video_adr_cnt : UNSIGNED(22 DOWNTO 0);
|
||||
SIGNAL video_cnt_l : STD_LOGIC;
|
||||
SIGNAL video_cnt_m : STD_LOGIC;
|
||||
SIGNAL video_cnt_h : STD_LOGIC;
|
||||
SIGNAL video_base_adr : UNSIGNED (22 DOWNTO 0);
|
||||
SIGNAL video_act_adr : UNSIGNED (26 DOWNTO 0);
|
||||
SIGNAL fb_adr_i : UNSIGNED (32 DOWNTO 0);
|
||||
SIGNAL video_cnt_l : std_logic;
|
||||
SIGNAL video_cnt_m : std_logic;
|
||||
SIGNAL video_cnt_h : std_logic;
|
||||
SIGNAL video_base_adr : unsigned(22 DOWNTO 0);
|
||||
SIGNAL video_act_adr : unsigned(26 DOWNTO 0);
|
||||
SIGNAL fb_adr_i : unsigned(32 DOWNTO 0);
|
||||
|
||||
|
||||
SIGNAL va_s : UNSIGNED (12 DOWNTO 0);
|
||||
SIGNAL va_p : UNSIGNED (12 DOWNTO 0);
|
||||
SIGNAL ba_s : UNSIGNED (1 DOWNTO 0) ;
|
||||
SIGNAL ba_p : UNSIGNED (1 DOWNTO 0);
|
||||
SIGNAL tsiz : UNSIGNED (1 DOWNTO 0);
|
||||
SIGNAL va_s : unsigned(12 DOWNTO 0);
|
||||
SIGNAL va_p : unsigned(12 DOWNTO 0);
|
||||
SIGNAL ba_s : unsigned(1 DOWNTO 0) ;
|
||||
SIGNAL ba_p : unsigned(1 DOWNTO 0);
|
||||
BEGIN
|
||||
tsiz <= fb_size1 & fb_size0;
|
||||
WITH tsiz SELECT
|
||||
access_width <= long_access WHEN "11",
|
||||
word_access WHEN "00",
|
||||
byte_access WHEN OTHERS;
|
||||
access_width <= long_access WHEN fb_size1 = '0' AND fb_size0 = '0' ELSE
|
||||
word_access WHEN fb_size1 = '1' AND fb_size0 = '0' ELSE
|
||||
byte_access WHEN fb_size1 = '0' AND fb_size0 = '1' ELSE
|
||||
line_access;
|
||||
|
||||
-- Byte selectors:
|
||||
byte_sel(0) <= '1' WHEN access_width = long_access OR access_width = word_access ELSE
|
||||
'1' WHEN fb_adr(1 DOWNTO 0) = "00" ELSE '0'; -- Byte 0.
|
||||
byte_sel(0) <= '1' WHEN fb_adr(1 DOWNTO 0) = "00" OR
|
||||
access_width = line_access OR
|
||||
access_width = long_access
|
||||
ELSE '0';
|
||||
|
||||
byte_sel(1) <= '1' WHEN access_width = long_access OR access_width = word_access ELSE
|
||||
'1' WHEN access_width = byte_access AND fb_adr(1) = '0' ELSE -- High word_access.
|
||||
'1' WHEN fb_adr(1 DOWNTO 0) = "01" ELSE '0'; -- Byte 1.
|
||||
byte_sel(1) <= '1' WHEN fb_adr(1 DOWNTO 0) = "01" OR
|
||||
(access_width = word_access AND fb_adr(1) = '0') OR
|
||||
access_width = line_access OR
|
||||
access_width = long_access
|
||||
ELSE '0';
|
||||
|
||||
byte_sel(2) <= '1' WHEN access_width = long_access OR access_width = word_access ELSE
|
||||
'1' WHEN fb_adr(1 DOWNTO 0) = "10" ELSE '0'; -- Byte 2.
|
||||
byte_sel(2) <= '1' WHEN fb_adr(1 DOWNTO 0) = "10" OR
|
||||
access_width = line_access OR
|
||||
access_width = long_access
|
||||
ELSE '0';
|
||||
|
||||
byte_sel(3) <= '1' WHEN access_width = long_access OR access_width = word_access ELSE
|
||||
'1' WHEN access_width = byte_access AND fb_adr(1) = '1' ELSE -- Low word_access.
|
||||
'1' WHEN fb_adr(1 DOWNTO 0) = "11" ELSE '0'; -- Byte 3.
|
||||
byte_sel(3) <= '1' WHEN fb_adr(1 DOWNTO 0) = "11" OR
|
||||
(access_width = word_access AND fb_adr(1) = '1') OR
|
||||
access_width = line_access OR
|
||||
access_width = long_access
|
||||
ELSE '0';
|
||||
|
||||
---------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
------------------------------------ ddr_access_cpu READ (REG DDR => ddr_access_cpu) AND WRITE (ddr_access_cpu => REG DDR) ---------------------------------------------------------------------
|
||||
fbctrl_reg : PROCESS
|
||||
BEGIN
|
||||
WAIT UNTIL RISING_EDGE(clk_33m);
|
||||
WAIT UNTIL rising_edge(clk_main);
|
||||
fb_regddr <= fb_regddr_next;
|
||||
END PROCESS FBCTRL_REG;
|
||||
|
||||
@@ -283,12 +289,12 @@ BEGIN
|
||||
------------------------------------------------------ DDR State Machine --------------------------------------------------------------------------------------
|
||||
ddr_state_reg: PROCESS
|
||||
BEGIN
|
||||
WAIT UNTIL RISING_EDGE(ddrclk0);
|
||||
WAIT UNTIL rising_edge(ddrclk0);
|
||||
ddr_state <= ddr_next_state;
|
||||
END PROCESS ddr_state_reg;
|
||||
|
||||
ddr_state_dec: PROCESS(ddr_state, ddr_refresh_req, cpu_ddr_sync, vmem_config_enable, fb_wr_n, ddr_access, blitter_wr, fifo_req, fifo_bank_ok,
|
||||
fifo_mw, cpu_req, video_adr_cnt, ddr_sel, tsiz, data_in, fifo_ba, ddr_refresh_sig)
|
||||
fifo_mw, cpu_req, video_adr_cnt, ddr_sel, data_in, fifo_ba, ddr_refresh_sig)
|
||||
BEGIN
|
||||
CASE ddr_state IS
|
||||
WHEN ds_t1 =>
|
||||
@@ -304,7 +310,7 @@ BEGIN
|
||||
ddr_next_state <= ds_t1; -- Synchronize.
|
||||
END IF;
|
||||
|
||||
WHEN ds_t2a => -- Fast access, IN this CASE page IS always NOT ok.
|
||||
WHEN ds_t2a => -- Fast access, in this case page is always not ok.
|
||||
ddr_next_state <= ds_t3;
|
||||
|
||||
WHEN ds_t2b =>
|
||||
@@ -330,7 +336,7 @@ BEGIN
|
||||
ddr_next_state <= ds_t5r;
|
||||
|
||||
WHEN ds_t5r =>
|
||||
IF fifo_req = '1' AND fifo_bank_ok = '1' THEN -- Insert ddr_access_fifo read, WHEN bank ok.
|
||||
IF fifo_req = '1' AND fifo_bank_ok = '1' THEN -- Insert ddr_access_fifo read, when bank ok.
|
||||
ddr_next_state <= ds_t6f;
|
||||
ELSE
|
||||
ddr_next_state <= ds_cb6;
|
||||
@@ -401,7 +407,7 @@ BEGIN
|
||||
END IF;
|
||||
|
||||
WHEN ds_t10f =>
|
||||
IF ddr_sel = '1' AND (fb_wr_n = '1' OR tsiz /= "11") AND data_in(13 DOWNTO 12) /= fifo_ba THEN
|
||||
IF ddr_sel = '1' AND (fb_wr_n = '1' OR access_width = line_access) AND data_in(13 DOWNTO 12) /= fifo_ba THEN
|
||||
ddr_next_state <= ds_t3;
|
||||
ELSE
|
||||
ddr_next_state <= ds_t7f;
|
||||
@@ -474,7 +480,7 @@ BEGIN
|
||||
|
||||
p_clk0 : PROCESS
|
||||
BEGIN
|
||||
WAIT UNTIL RISING_EDGE(ddrclk0);
|
||||
WAIT UNTIL rising_edge(ddrclk0);
|
||||
|
||||
-- Default assignments;
|
||||
ddr_access <= ddr_access_none;
|
||||
@@ -592,7 +598,7 @@ BEGIN
|
||||
va_s(9 DOWNTO 0) <= cpu_col_adr;
|
||||
ba_s <= cpu_ba;
|
||||
ELSIF vmem_fifo_enable = '1' THEN
|
||||
va_s(9 DOWNTO 0) <= UNSIGNED (fifo_col_adr);
|
||||
va_s(9 DOWNTO 0) <= unsigned(fifo_col_adr);
|
||||
ba_s <= fifo_ba;
|
||||
ELSIF ddr_access = ddr_access_blitter THEN
|
||||
va_s(9 DOWNTO 0) <= blitter_col_adr;
|
||||
@@ -607,7 +613,7 @@ BEGIN
|
||||
END IF;
|
||||
ELSIF ddr_state = ds_t5r AND fifo_req = '1' AND fifo_bank_ok = '1' THEN
|
||||
va_s(10) <= '0';
|
||||
va_s(9 DOWNTO 0) <= UNSIGNED (fifo_col_adr);
|
||||
va_s(9 DOWNTO 0) <= unsigned(fifo_col_adr);
|
||||
ba_s <= fifo_ba;
|
||||
ELSIF ddr_state = ds_t5r THEN
|
||||
va_s(10) <= '1';
|
||||
@@ -646,7 +652,7 @@ BEGIN
|
||||
sr_ddrwr_d_sel <= '1';
|
||||
ELSIF ddr_state = ds_t9w AND fifo_req = '1' AND fifo_bank_ok = '1' THEN
|
||||
va_s(10) <= '0';
|
||||
va_s(9 DOWNTO 0) <= UNSIGNED (fifo_col_adr);
|
||||
va_s(9 DOWNTO 0) <= unsigned(fifo_col_adr);
|
||||
ba_s <= fifo_ba;
|
||||
ELSIF ddr_state = ds_t9w THEN
|
||||
va_s(10) <= '0';
|
||||
@@ -656,7 +662,7 @@ BEGIN
|
||||
va_s(10) <= '1';
|
||||
ELSIF ddr_state = ds_t5f AND fifo_req = '1' THEN
|
||||
va_s(10) <= '0';
|
||||
va_s(9 DOWNTO 0) <= UNSIGNED (fifo_col_adr + "100");
|
||||
va_s(9 DOWNTO 0) <= unsigned(fifo_col_adr + "100");
|
||||
ba_s <= fifo_ba;
|
||||
ELSIF ddr_state = ds_t5f THEN
|
||||
va_s(10) <= '0';
|
||||
@@ -668,7 +674,7 @@ BEGIN
|
||||
va_s(10) <= '1';
|
||||
ELSIF ddr_state = ds_t7f AND fifo_req = '1' THEN
|
||||
va_s(10) <= '0';
|
||||
va_s(9 DOWNTO 0) <= UNSIGNED (fifo_col_adr + "100");
|
||||
va_s(9 DOWNTO 0) <= unsigned(fifo_col_adr + "100");
|
||||
ba_s <= fifo_ba;
|
||||
ELSIF ddr_state = ds_t7f THEN
|
||||
va_s(10) <= '1';
|
||||
@@ -676,7 +682,7 @@ BEGIN
|
||||
va_s(10) <= '1';
|
||||
ELSIF ddr_state = ds_t9f AND fifo_req = '1' THEN
|
||||
va_p(10) <= '0';
|
||||
va_p(9 DOWNTO 0) <= UNSIGNED (fifo_col_adr + "100");
|
||||
va_p(9 DOWNTO 0) <= unsigned(fifo_col_adr + "100");
|
||||
ba_p <= fifo_ba;
|
||||
ELSIF ddr_state = ds_t9f THEN
|
||||
va_s(10) <= '1';
|
||||
@@ -705,7 +711,7 @@ BEGIN
|
||||
|
||||
p_ddr_cs: PROCESS
|
||||
BEGIN
|
||||
WAIT UNTIL RISING_EDGE(clk_main);
|
||||
WAIT UNTIL rising_edge(clk_main);
|
||||
IF fb_ale = '1' THEN
|
||||
ddr_cs <= ddr_sel;
|
||||
END IF;
|
||||
@@ -713,7 +719,7 @@ BEGIN
|
||||
|
||||
p_cpu_req: PROCESS
|
||||
BEGIN
|
||||
WAIT UNTIL RISING_EDGE(ddr_sync_66m);
|
||||
WAIT UNTIL rising_edge(ddr_sync_66m);
|
||||
|
||||
IF ddr_sel = '1' AND fb_wr_n = '1' AND vmem_config_enable = '0' THEN
|
||||
cpu_req <= '1';
|
||||
@@ -732,12 +738,22 @@ BEGIN
|
||||
-- Refresh: Always 8 at a time every 7.8us.
|
||||
-- 7.8us x 8 = 62.4us = 2059 -> 2048 @ 33MHz.
|
||||
BEGIN
|
||||
WAIT UNTIL RISING_EDGE(clk_33m);
|
||||
WAIT UNTIL rising_edge(clk_33m);
|
||||
ddr_refresh_cnt <= ddr_refresh_cnt + 1; -- Count from 0 to 2047
|
||||
END PROCESS p_refresh;
|
||||
|
||||
sr_fifo_wre <= sr_fifo_wre_i;
|
||||
|
||||
-- IF ddr_sel = '1' AND (fb_wr_n = '1' OR access_width = line_access) THEN
|
||||
-- BEGIN
|
||||
-- vras <= '1';
|
||||
-- va <= data_in(26 DOWNTO 14);
|
||||
-- ba <= data_in(13 DOWNTO 12);
|
||||
-- va_s(10) <= '1';
|
||||
-- ELSE
|
||||
-- -- vras = (fifo_ac )
|
||||
-- END;
|
||||
|
||||
va <= data_in(26 DOWNTO 14) WHEN ddr_state = ds_t2a AND ddr_sel = '1' AND fb_wr_n = '0' ELSE
|
||||
data_in(26 DOWNTO 14) WHEN ddr_state = ds_t2a AND ddr_sel = '1' AND (fb_size0 = '0' OR fb_size1= '0') ELSE
|
||||
va_p WHEN ddr_state = ds_t2a ELSE
|
||||
@@ -815,7 +831,7 @@ BEGIN
|
||||
p_video_regs : PROCESS
|
||||
-- Video registers.
|
||||
BEGIN
|
||||
WAIT UNTIL RISING_EDGE(clk_33m);
|
||||
WAIT UNTIL rising_edge(clk_main);
|
||||
IF video_base_l = '1' AND fb_wr_n = '0' AND byte_sel(1) = '1' THEN
|
||||
video_base_l_d <= data_in(23 DOWNTO 16); -- 16 byte borders
|
||||
END IF;
|
||||
|
||||
@@ -48,194 +48,194 @@ LIBRARY IEEE;
|
||||
|
||||
ENTITY video_ctrl IS
|
||||
PORT(
|
||||
clk_main : IN STD_LOGIC;
|
||||
fb_cs_n : IN STD_LOGIC_VECTOR (2 DOWNTO 1);
|
||||
fb_wr_n : IN STD_LOGIC;
|
||||
fb_oe_n : IN STD_LOGIC;
|
||||
fb_size : IN STD_LOGIC_VECTOR (1 DOWNTO 0);
|
||||
fb_adr : IN STD_LOGIC_VECTOR (31 DOWNTO 0);
|
||||
clk33m : IN STD_LOGIC;
|
||||
clk25m : IN STD_LOGIC;
|
||||
blitter_run : IN STD_LOGIC;
|
||||
clk_video : IN STD_LOGIC;
|
||||
vr_d : IN UNSIGNED (8 DOWNTO 0);
|
||||
vr_busy : IN STD_LOGIC;
|
||||
color8 : OUT STD_LOGIC;
|
||||
fbee_clut_rd : OUT STD_LOGIC;
|
||||
COLOR1 : OUT STD_LOGIC;
|
||||
falcon_clut_rdh : OUT STD_LOGIC;
|
||||
falcon_clut_rdl : OUT STD_LOGIC;
|
||||
falcon_clut_wr : OUT UNSIGNED (3 DOWNTO 0);
|
||||
clut_st_rd : OUT STD_LOGIC;
|
||||
clut_st_wr : OUT UNSIGNED (1 DOWNTO 0);
|
||||
clut_mux_adr : OUT UNSIGNED (3 DOWNTO 0);
|
||||
hsync : OUT STD_LOGIC;
|
||||
vsync : OUT STD_LOGIC;
|
||||
blank_n : OUT STD_LOGIC;
|
||||
sync_n : OUT STD_LOGIC;
|
||||
pd_vga_n : OUT STD_LOGIC;
|
||||
fifo_rde : OUT STD_LOGIC;
|
||||
color2 : OUT STD_LOGIC;
|
||||
color4 : OUT STD_LOGIC;
|
||||
clk_pixel : OUT STD_LOGIC;
|
||||
clut_off : OUT UNSIGNED (3 DOWNTO 0);
|
||||
blitter_on : OUT STD_LOGIC;
|
||||
video_ram_ctr : OUT UNSIGNED (15 DOWNTO 0);
|
||||
video_mod_ta : OUT STD_LOGIC;
|
||||
ccr : OUT UNSIGNED (23 DOWNTO 0);
|
||||
ccsel : OUT UNSIGNED (2 DOWNTO 0);
|
||||
fbee_clut_wr : OUT UNSIGNED (3 DOWNTO 0);
|
||||
inter_zei : OUT STD_LOGIC;
|
||||
dop_fifo_clr : OUT STD_LOGIC;
|
||||
video_reconfig : OUT STD_LOGIC;
|
||||
vr_wr : OUT STD_LOGIC;
|
||||
vr_rd : OUT STD_LOGIC;
|
||||
fifo_clr : OUT STD_LOGIC;
|
||||
data_in : IN UNSIGNED (31 DOWNTO 0);
|
||||
data_out : OUT UNSIGNED (31 DOWNTO 0);
|
||||
data_en_h : OUT STD_LOGIC;
|
||||
data_en_l : OUT STD_LOGIC
|
||||
clk_main : IN std_logic;
|
||||
fb_cs_n : IN std_logic_vector(2 DOWNTO 1);
|
||||
fb_wr_n : IN std_logic;
|
||||
fb_oe_n : IN std_logic;
|
||||
fb_size : IN std_logic_vector(1 DOWNTO 0);
|
||||
fb_adr : IN std_logic_vector(31 DOWNTO 0);
|
||||
clk33m : IN std_logic;
|
||||
clk25m : IN std_logic;
|
||||
blitter_run : IN std_logic;
|
||||
clk_video : IN std_logic;
|
||||
vr_d : IN unsigned(8 DOWNTO 0);
|
||||
vr_busy : IN std_logic;
|
||||
color8 : OUT std_logic;
|
||||
fbee_clut_rd : OUT std_logic;
|
||||
COLOR1 : OUT std_logic;
|
||||
falcon_clut_rdh : OUT std_logic;
|
||||
falcon_clut_rdl : OUT std_logic;
|
||||
falcon_clut_wr : OUT unsigned(3 DOWNTO 0);
|
||||
clut_st_rd : OUT std_logic;
|
||||
clut_st_wr : OUT unsigned(1 DOWNTO 0);
|
||||
clut_mux_adr : OUT unsigned(3 DOWNTO 0);
|
||||
hsync : OUT std_logic;
|
||||
vsync : OUT std_logic;
|
||||
blank_n : OUT std_logic;
|
||||
sync_n : OUT std_logic;
|
||||
pd_vga_n : OUT std_logic;
|
||||
fifo_rde : OUT std_logic;
|
||||
color2 : OUT std_logic;
|
||||
color4 : OUT std_logic;
|
||||
clk_pixel : OUT std_logic;
|
||||
clut_off : OUT unsigned(3 DOWNTO 0);
|
||||
blitter_on : OUT std_logic;
|
||||
video_ram_ctr : OUT unsigned(15 DOWNTO 0);
|
||||
video_mod_ta : OUT std_logic;
|
||||
ccr : OUT unsigned(23 DOWNTO 0);
|
||||
ccsel : OUT unsigned(2 DOWNTO 0);
|
||||
fbee_clut_wr : OUT unsigned(3 DOWNTO 0);
|
||||
inter_zei : OUT std_logic;
|
||||
dop_fifo_clr : OUT std_logic;
|
||||
video_reconfig : OUT std_logic;
|
||||
vr_wr : OUT std_logic;
|
||||
vr_rd : OUT std_logic;
|
||||
fifo_clr : OUT std_logic;
|
||||
data_in : IN unsigned(31 DOWNTO 0);
|
||||
data_out : OUT unsigned(31 DOWNTO 0);
|
||||
data_en_h : OUT std_logic;
|
||||
data_en_l : OUT std_logic
|
||||
);
|
||||
END ENTITY video_ctrl;
|
||||
|
||||
ARCHITECTURE behaviour OF video_ctrl IS
|
||||
SIGNAL clk17m : STD_LOGIC;
|
||||
SIGNAL clk13m : STD_LOGIC;
|
||||
SIGNAL fbee_clut_cs : STD_LOGIC;
|
||||
SIGNAL fbee_clut : STD_LOGIC;
|
||||
SIGNAL video_pll_config_cs : STD_LOGIC;
|
||||
SIGNAL vr_wr_i : STD_LOGIC;
|
||||
SIGNAL vr_dout : UNSIGNED (8 DOWNTO 0);
|
||||
SIGNAL vr_frq : UNSIGNED (7 DOWNTO 0);
|
||||
SIGNAL video_pll_reconfig_cs : STD_LOGIC;
|
||||
SIGNAL video_reconfig_i : STD_LOGIC;
|
||||
SIGNAL falcon_clut_cs : STD_LOGIC;
|
||||
SIGNAL falcon_clut : STD_LOGIC;
|
||||
SIGNAL st_clut_cs : STD_LOGIC;
|
||||
SIGNAL st_clut : STD_LOGIC;
|
||||
SIGNAL fb_b : UNSIGNED (3 DOWNTO 0);
|
||||
SIGNAL fb_16b : UNSIGNED (1 DOWNTO 0);
|
||||
SIGNAL st_shift_mode : UNSIGNED (1 DOWNTO 0);
|
||||
SIGNAL st_shift_mode_cs : STD_LOGIC;
|
||||
SIGNAL falcon_shift_mode : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL falcon_shift_mode_cs : STD_LOGIC;
|
||||
SIGNAL clut_mux_av_1 : UNSIGNED (3 DOWNTO 0);
|
||||
SIGNAL clut_mux_av_0 : UNSIGNED (3 DOWNTO 0);
|
||||
SIGNAL fbee_vctr_cs : STD_LOGIC;
|
||||
SIGNAL fbee_vctr : UNSIGNED (31 DOWNTO 0);
|
||||
SIGNAL ccr_cs : STD_LOGIC;
|
||||
SIGNAL ccr_i : UNSIGNED (23 DOWNTO 0);
|
||||
SIGNAL fbee_video_on : STD_LOGIC;
|
||||
SIGNAL sys_ctr : UNSIGNED (6 DOWNTO 0);
|
||||
SIGNAL sys_ctr_cs : STD_LOGIC;
|
||||
SIGNAL vdl_lof : UNSIGNED (15 DOWNTO 0);
|
||||
SIGNAL vdl_lof_cs : STD_LOGIC;
|
||||
SIGNAL VDL_LWD : UNSIGNED (15 DOWNTO 0);
|
||||
SIGNAL VDL_LWD_CS : STD_LOGIC;
|
||||
SIGNAL clk17m : std_logic;
|
||||
SIGNAL clk13m : std_logic;
|
||||
SIGNAL fbee_clut_cs : std_logic;
|
||||
SIGNAL fbee_clut : std_logic;
|
||||
SIGNAL video_pll_config_cs : std_logic;
|
||||
SIGNAL vr_wr_i : std_logic;
|
||||
SIGNAL vr_dout : unsigned(8 DOWNTO 0);
|
||||
SIGNAL vr_frq : unsigned(7 DOWNTO 0);
|
||||
SIGNAL video_pll_reconfig_cs : std_logic;
|
||||
SIGNAL video_reconfig_i : std_logic;
|
||||
SIGNAL falcon_clut_cs : std_logic;
|
||||
SIGNAL falcon_clut : std_logic;
|
||||
SIGNAL st_clut_cs : std_logic;
|
||||
SIGNAL st_clut : std_logic;
|
||||
SIGNAL fb_b : unsigned(3 DOWNTO 0);
|
||||
SIGNAL fb_16b : unsigned(1 DOWNTO 0);
|
||||
SIGNAL st_shift_mode : unsigned(1 DOWNTO 0);
|
||||
SIGNAL st_shift_mode_cs : std_logic;
|
||||
SIGNAL falcon_shift_mode : unsigned(10 DOWNTO 0);
|
||||
SIGNAL falcon_shift_mode_cs : std_logic;
|
||||
SIGNAL clut_mux_av_1 : unsigned(3 DOWNTO 0);
|
||||
SIGNAL clut_mux_av_0 : unsigned(3 DOWNTO 0);
|
||||
SIGNAL fbee_vctr_cs : std_logic;
|
||||
SIGNAL fbee_vctr : unsigned(31 DOWNTO 0);
|
||||
SIGNAL ccr_cs : std_logic;
|
||||
SIGNAL ccr_i : unsigned(23 DOWNTO 0);
|
||||
SIGNAL fbee_video_on : std_logic;
|
||||
SIGNAL sys_ctr : unsigned(6 DOWNTO 0);
|
||||
SIGNAL sys_ctr_cs : std_logic;
|
||||
SIGNAL vdl_lof : unsigned(15 DOWNTO 0);
|
||||
SIGNAL vdl_lof_cs : std_logic;
|
||||
SIGNAL VDL_LWD : unsigned(15 DOWNTO 0);
|
||||
SIGNAL VDL_LWD_CS : std_logic;
|
||||
|
||||
-- Miscellaneous control registers:
|
||||
SIGNAL clut_ta : STD_LOGIC; -- Requires one wait state.
|
||||
SIGNAL hsync_i : UNSIGNED (7 DOWNTO 0);
|
||||
SIGNAL hsync_len : UNSIGNED (7 DOWNTO 0); -- Length of a hsync pulse IN clk_pixel cycles.
|
||||
SIGNAL hsync_start : STD_LOGIC;
|
||||
SIGNAL last : STD_LOGIC; -- Last pixel of a line indicator.
|
||||
SIGNAL vsync_start : STD_LOGIC;
|
||||
SIGNAL vsync_i : UNSIGNED (2 DOWNTO 0);
|
||||
SIGNAL blank_i_n : STD_LOGIC;
|
||||
SIGNAL disp_on : STD_LOGIC;
|
||||
SIGNAL dpo_zl : STD_LOGIC;
|
||||
SIGNAL dpo_on : STD_LOGIC;
|
||||
SIGNAL dpo_off : STD_LOGIC;
|
||||
SIGNAL vdtron : STD_LOGIC;
|
||||
SIGNAL vdo_zl : STD_LOGIC;
|
||||
SIGNAL vdo_on : STD_LOGIC;
|
||||
SIGNAL vdo_off : STD_LOGIC;
|
||||
SIGNAL vhcnt : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL sub_pixel_cnt : UNSIGNED (6 DOWNTO 0);
|
||||
SIGNAL vvcnt : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL verz_2 : UNSIGNED (9 DOWNTO 0);
|
||||
SIGNAL verz_1 : UNSIGNED (9 DOWNTO 0);
|
||||
SIGNAL verz_0 : UNSIGNED (9 DOWNTO 0);
|
||||
SIGNAL border : UNSIGNED (6 DOWNTO 0);
|
||||
SIGNAL border_on : STD_LOGIC;
|
||||
SIGNAL start_zeile : STD_LOGIC;
|
||||
SIGNAL sync_pix : STD_LOGIC;
|
||||
SIGNAL sync_pix1 : STD_LOGIC;
|
||||
SIGNAL sync_pix2 : STD_LOGIC;
|
||||
SIGNAL clut_ta : std_logic; -- Requires one wait state.
|
||||
SIGNAL hsync_i : unsigned(7 DOWNTO 0);
|
||||
SIGNAL hsync_len : unsigned(7 DOWNTO 0); -- Length of a hsync pulse IN clk_pixel cycles.
|
||||
SIGNAL hsync_start : std_logic;
|
||||
SIGNAL last : std_logic; -- Last pixel of a line indicator.
|
||||
SIGNAL vsync_start : std_logic;
|
||||
SIGNAL vsync_i : unsigned(2 DOWNTO 0);
|
||||
SIGNAL blank_i_n : std_logic;
|
||||
SIGNAL disp_on : std_logic;
|
||||
SIGNAL dpo_zl : std_logic;
|
||||
SIGNAL dpo_on : std_logic;
|
||||
SIGNAL dpo_off : std_logic;
|
||||
SIGNAL vdtron : std_logic;
|
||||
SIGNAL vdo_zl : std_logic;
|
||||
SIGNAL vdo_on : std_logic;
|
||||
SIGNAL vdo_off : std_logic;
|
||||
SIGNAL vhcnt : unsigned(11 DOWNTO 0);
|
||||
SIGNAL sub_pixel_cnt : unsigned(6 DOWNTO 0);
|
||||
SIGNAL vvcnt : unsigned(10 DOWNTO 0);
|
||||
SIGNAL verz_2 : unsigned(9 DOWNTO 0);
|
||||
SIGNAL verz_1 : unsigned(9 DOWNTO 0);
|
||||
SIGNAL verz_0 : unsigned(9 DOWNTO 0);
|
||||
SIGNAL border : unsigned(6 DOWNTO 0);
|
||||
SIGNAL border_on : std_logic;
|
||||
SIGNAL start_zeile : std_logic;
|
||||
SIGNAL sync_pix : std_logic;
|
||||
SIGNAL sync_pix1 : std_logic;
|
||||
SIGNAL sync_pix2 : std_logic;
|
||||
|
||||
-- Legacy ATARI resolutions:
|
||||
SIGNAL atari_sync : STD_LOGIC;
|
||||
SIGNAL atari_hh : UNSIGNED (31 DOWNTO 0); -- Horizontal timing 640x480.
|
||||
SIGNAL atari_hh_cs : STD_LOGIC;
|
||||
SIGNAL atari_vh : UNSIGNED (31 DOWNTO 0); -- Vertical timing 640x480.
|
||||
SIGNAL atari_vh_cs : STD_LOGIC;
|
||||
SIGNAL atari_hl : UNSIGNED (31 DOWNTO 0); -- Horizontal timing 320x240.
|
||||
SIGNAL atari_hl_cs : STD_LOGIC;
|
||||
SIGNAL atari_vl : UNSIGNED (31 DOWNTO 0); -- Vertical timing 320x240.
|
||||
SIGNAL atari_vl_cs : STD_LOGIC;
|
||||
SIGNAL atari_sync : std_logic;
|
||||
SIGNAL atari_hh : unsigned(31 DOWNTO 0); -- Horizontal timing 640x480.
|
||||
SIGNAL atari_hh_cs : std_logic;
|
||||
SIGNAL atari_vh : unsigned(31 DOWNTO 0); -- Vertical timing 640x480.
|
||||
SIGNAL atari_vh_cs : std_logic;
|
||||
SIGNAL atari_hl : unsigned(31 DOWNTO 0); -- Horizontal timing 320x240.
|
||||
SIGNAL atari_hl_cs : std_logic;
|
||||
SIGNAL atari_vl : unsigned(31 DOWNTO 0); -- Vertical timing 320x240.
|
||||
SIGNAL atari_vl_cs : std_logic;
|
||||
|
||||
-- Horizontal stuff:
|
||||
SIGNAL border_left : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL hdis_start : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL hdis_end : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL border_right : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL hs_start : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL h_total : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL hdis_len : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL mulf : UNSIGNED (5 DOWNTO 0);
|
||||
SIGNAL vdl_hht : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL vdl_hht_cs : STD_LOGIC;
|
||||
SIGNAL vdl_hbe : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL vdl_hbe_cs : STD_LOGIC;
|
||||
SIGNAL vdl_hdb : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL vdl_hdb_cs : STD_LOGIC;
|
||||
SIGNAL VDL_HDE : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL vdl_hde_cs : STD_LOGIC;
|
||||
SIGNAL vdl_hbb : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL vdl_hbb_cs : STD_LOGIC;
|
||||
SIGNAL vdl_hss : UNSIGNED (11 DOWNTO 0);
|
||||
SIGNAL vdl_hss_cs : STD_LOGIC;
|
||||
SIGNAL border_left : unsigned(11 DOWNTO 0);
|
||||
SIGNAL hdis_start : unsigned(11 DOWNTO 0);
|
||||
SIGNAL hdis_end : unsigned(11 DOWNTO 0);
|
||||
SIGNAL border_right : unsigned(11 DOWNTO 0);
|
||||
SIGNAL hs_start : unsigned(11 DOWNTO 0);
|
||||
SIGNAL h_total : unsigned(11 DOWNTO 0);
|
||||
SIGNAL hdis_len : unsigned(11 DOWNTO 0);
|
||||
SIGNAL mulf : unsigned(5 DOWNTO 0);
|
||||
SIGNAL vdl_hht : unsigned(11 DOWNTO 0);
|
||||
SIGNAL vdl_hht_cs : std_logic;
|
||||
SIGNAL vdl_hbe : unsigned(11 DOWNTO 0);
|
||||
SIGNAL vdl_hbe_cs : std_logic;
|
||||
SIGNAL vdl_hdb : unsigned(11 DOWNTO 0);
|
||||
SIGNAL vdl_hdb_cs : std_logic;
|
||||
SIGNAL VDL_HDE : unsigned(11 DOWNTO 0);
|
||||
SIGNAL vdl_hde_cs : std_logic;
|
||||
SIGNAL vdl_hbb : unsigned(11 DOWNTO 0);
|
||||
SIGNAL vdl_hbb_cs : std_logic;
|
||||
SIGNAL vdl_hss : unsigned(11 DOWNTO 0);
|
||||
SIGNAL vdl_hss_cs : std_logic;
|
||||
|
||||
-- Vertical stuff:
|
||||
SIGNAL border_top : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL vdis_start : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL vdis_end : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL border_bottom : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL vs_start : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL v_total : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL falcon_video : STD_LOGIC;
|
||||
SIGNAL st_video : STD_LOGIC;
|
||||
SIGNAL inter_zei_i : STD_LOGIC;
|
||||
SIGNAL dop_zei : STD_LOGIC;
|
||||
SIGNAL border_top : unsigned(10 DOWNTO 0);
|
||||
SIGNAL vdis_start : unsigned(10 DOWNTO 0);
|
||||
SIGNAL vdis_end : unsigned(10 DOWNTO 0);
|
||||
SIGNAL border_bottom : unsigned(10 DOWNTO 0);
|
||||
SIGNAL vs_start : unsigned(10 DOWNTO 0);
|
||||
SIGNAL v_total : unsigned(10 DOWNTO 0);
|
||||
SIGNAL falcon_video : std_logic;
|
||||
SIGNAL st_video : std_logic;
|
||||
SIGNAL inter_zei_i : std_logic;
|
||||
SIGNAL dop_zei : std_logic;
|
||||
|
||||
SIGNAL vdl_vbe : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL vdl_vbe_cs : STD_LOGIC;
|
||||
SIGNAL vdl_vdb : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL VDL_VDB_CS : STD_LOGIC;
|
||||
SIGNAL vdl_vde : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL vdl_vde_cs : STD_LOGIC;
|
||||
SIGNAL vdl_vbb : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL vdl_vbb_cs : STD_LOGIC;
|
||||
SIGNAL vdl_vss : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL vdl_vss_cs : STD_LOGIC;
|
||||
SIGNAL vdl_vft : UNSIGNED (10 DOWNTO 0);
|
||||
SIGNAL vdl_vft_cs : STD_LOGIC;
|
||||
SIGNAL vdl_vct : UNSIGNED (8 DOWNTO 0);
|
||||
SIGNAL vdl_vct_cs : STD_LOGIC;
|
||||
SIGNAL vdl_vmd : UNSIGNED (3 DOWNTO 0);
|
||||
SIGNAL vdl_vmd_cs : STD_LOGIC;
|
||||
SIGNAL color1_i : STD_LOGIC;
|
||||
SIGNAL color2_i : STD_LOGIC;
|
||||
SIGNAL color4_i : STD_LOGIC;
|
||||
SIGNAL color8_i : STD_LOGIC;
|
||||
SIGNAL color16_i : STD_LOGIC;
|
||||
SIGNAL color24_i : STD_LOGIC;
|
||||
SIGNAL video_mod_ta_i : STD_LOGIC;
|
||||
SIGNAL vr_rd_i : STD_LOGIC;
|
||||
SIGNAL clk_pixel_i : STD_LOGIC;
|
||||
SIGNAL mul1 : UNSIGNED (16 DOWNTO 0);
|
||||
SIGNAL mul2 : UNSIGNED (16 DOWNTO 0);
|
||||
SIGNAL mul3 : UNSIGNED (16 DOWNTO 0) := (OTHERS => 'Z');
|
||||
SIGNAL vdl_vbe : unsigned(10 DOWNTO 0);
|
||||
SIGNAL vdl_vbe_cs : std_logic;
|
||||
SIGNAL vdl_vdb : unsigned(10 DOWNTO 0);
|
||||
SIGNAL VDL_VDB_CS : std_logic;
|
||||
SIGNAL vdl_vde : unsigned(10 DOWNTO 0);
|
||||
SIGNAL vdl_vde_cs : std_logic;
|
||||
SIGNAL vdl_vbb : unsigned(10 DOWNTO 0);
|
||||
SIGNAL vdl_vbb_cs : std_logic;
|
||||
SIGNAL vdl_vss : unsigned(10 DOWNTO 0);
|
||||
SIGNAL vdl_vss_cs : std_logic;
|
||||
SIGNAL vdl_vft : unsigned(10 DOWNTO 0);
|
||||
SIGNAL vdl_vft_cs : std_logic;
|
||||
SIGNAL vdl_vct : unsigned(8 DOWNTO 0);
|
||||
SIGNAL vdl_vct_cs : std_logic;
|
||||
SIGNAL vdl_vmd : unsigned(3 DOWNTO 0);
|
||||
SIGNAL vdl_vmd_cs : std_logic;
|
||||
SIGNAL color1_i : std_logic;
|
||||
SIGNAL color2_i : std_logic;
|
||||
SIGNAL color4_i : std_logic;
|
||||
SIGNAL color8_i : std_logic;
|
||||
SIGNAL color16_i : std_logic;
|
||||
SIGNAL color24_i : std_logic;
|
||||
SIGNAL video_mod_ta_i : std_logic;
|
||||
SIGNAL vr_rd_i : std_logic;
|
||||
SIGNAL clk_pixel_i : std_logic;
|
||||
SIGNAL mul1 : unsigned(16 DOWNTO 0);
|
||||
SIGNAL mul2 : unsigned(16 DOWNTO 0);
|
||||
SIGNAL mul3 : unsigned(16 DOWNTO 0) := (OTHERS => 'Z');
|
||||
BEGIN
|
||||
vr_wr <= vr_wr_i;
|
||||
video_reconfig <= video_reconfig_i;
|
||||
|
||||
Reference in New Issue
Block a user