start of flexbus_register implementation to simplify that
This commit is contained in:
@@ -276,7 +276,8 @@ ARCHITECTURE rtl OF ddr_ctr IS
|
|||||||
SIGNAL VRAS : std_logic;
|
SIGNAL VRAS : std_logic;
|
||||||
SIGNAL VCAS : std_logic;
|
SIGNAL VCAS : std_logic;
|
||||||
SIGNAL LINE : std_logic;
|
SIGNAL LINE : std_logic;
|
||||||
|
SIGNAL v_bash : std_logic_vector(7 DOWNTO 0);
|
||||||
|
SIGNAL v_bash_cs : std_logic;
|
||||||
-- Sub Module Interface Section
|
-- Sub Module Interface Section
|
||||||
|
|
||||||
|
|
||||||
@@ -573,6 +574,25 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
|
i_vbash : work.flexbus_register
|
||||||
|
GENERIC MAP
|
||||||
|
(
|
||||||
|
reg_width => 8,
|
||||||
|
match_address => x"ffff8604",
|
||||||
|
match_mask => x"0000fffe", -- byte register
|
||||||
|
match_fbcs => 1
|
||||||
|
)
|
||||||
|
PORT MAP
|
||||||
|
(
|
||||||
|
clk => clk33m,
|
||||||
|
fb_addr => fb_adr,
|
||||||
|
fb_data => fb_ad,
|
||||||
|
fb_cs => ('0', '0', nfb_cs3, nfb_cs2, nfb_cs1),
|
||||||
|
fb_wr_n => nfb_wr,
|
||||||
|
data => v_bash,
|
||||||
|
cs => v_bash_cs
|
||||||
|
);
|
||||||
|
|
||||||
-- Start of original equations
|
-- Start of original equations
|
||||||
LINE <= FB_SIZE0 and FB_SIZE1;
|
LINE <= FB_SIZE0 and FB_SIZE1;
|
||||||
|
|
||||||
|
|||||||
@@ -270,11 +270,14 @@ ARCHITECTURE rtl OF video_mod_mux_clutctr IS
|
|||||||
SIGNAL FALCON_SHIFT_MODE0_clk_ctrl : std_logic;
|
SIGNAL FALCON_SHIFT_MODE0_clk_ctrl : std_logic;
|
||||||
SIGNAL FALCON_SHIFT_MODE8_ena_ctrl : std_logic;
|
SIGNAL FALCON_SHIFT_MODE8_ena_ctrl : std_logic;
|
||||||
SIGNAL FALCON_SHIFT_MODE0_ena_ctrl : std_logic;
|
SIGNAL FALCON_SHIFT_MODE0_ena_ctrl : std_logic;
|
||||||
|
|
||||||
SIGNAL ACP_VCTR0_clk_ctrl : std_logic;
|
SIGNAL ACP_VCTR0_clk_ctrl : std_logic;
|
||||||
SIGNAL ACP_VCTR24_ena_ctrl : std_logic;
|
SIGNAL ACP_VCTR24_ena_ctrl : std_logic;
|
||||||
SIGNAL ACP_VCTR16_ena_ctrl : std_logic;
|
SIGNAL ACP_VCTR16_ena_ctrl : std_logic;
|
||||||
SIGNAL ACP_VCTR8_ena_ctrl : std_logic;
|
SIGNAL ACP_VCTR8_ena_ctrl : std_logic;
|
||||||
|
SIGNAL ACP_VCTR6_ena_ctrl : std_logic;
|
||||||
SIGNAL ACP_VCTR0_ena_ctrl : std_logic;
|
SIGNAL ACP_VCTR0_ena_ctrl : std_logic;
|
||||||
|
|
||||||
SIGNAL ATARI_HH0_clk_ctrl : std_logic;
|
SIGNAL ATARI_HH0_clk_ctrl : std_logic;
|
||||||
SIGNAL ATARI_HH24_ena_ctrl : std_logic;
|
SIGNAL ATARI_HH24_ena_ctrl : std_logic;
|
||||||
SIGNAL ATARI_HH16_ena_ctrl : std_logic;
|
SIGNAL ATARI_HH16_ena_ctrl : std_logic;
|
||||||
@@ -299,7 +302,6 @@ ARCHITECTURE rtl OF video_mod_mux_clutctr IS
|
|||||||
SIGNAL VR_DOUT0_ena_ctrl : std_logic;
|
SIGNAL VR_DOUT0_ena_ctrl : std_logic;
|
||||||
SIGNAL VR_FRQ0_clk_ctrl : std_logic;
|
SIGNAL VR_FRQ0_clk_ctrl : std_logic;
|
||||||
SIGNAL VR_FRQ0_ena_ctrl : std_logic;
|
SIGNAL VR_FRQ0_ena_ctrl : std_logic;
|
||||||
SIGNAL ACP_VCTR6_ena_ctrl : std_logic;
|
|
||||||
SIGNAL CCSEL0_clk_ctrl : std_logic;
|
SIGNAL CCSEL0_clk_ctrl : std_logic;
|
||||||
SIGNAL BORDER_COLOR0_clk_ctrl : std_logic;
|
SIGNAL BORDER_COLOR0_clk_ctrl : std_logic;
|
||||||
SIGNAL BORDER_COLOR16_ena_ctrl, BORDER_COLOR8_ena_ctrl,
|
SIGNAL BORDER_COLOR16_ena_ctrl, BORDER_COLOR8_ena_ctrl,
|
||||||
@@ -580,49 +582,23 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ACP_VCTR0_clk_ctrl) BEGIN
|
PROCESS (ACP_VCTR0_clk_ctrl)
|
||||||
if ACP_VCTR0_clk_ctrl'EVENT and ACP_VCTR0_clk_ctrl='1' THEN
|
BEGIN
|
||||||
if ACP_VCTR24_ena_ctrl='1' THEN
|
IF rising_edge(ACP_VCTR0_clk_ctrl) THEN
|
||||||
(ACP_VCTR_q(31), ACP_VCTR_q(30), ACP_VCTR_q(29), ACP_VCTR_q(28),
|
IF ACP_VCTR24_ena_ctrl = '1' THEN
|
||||||
ACP_VCTR_q(27), ACP_VCTR_q(26), ACP_VCTR_q(25),
|
ACP_VCTR_q(31 DOWNTO 24) <= ACP_VCTR_d(31 DOWNTO 24);
|
||||||
ACP_VCTR_q(24)) <= ACP_VCTR_d(31 DOWNTO 24);
|
|
||||||
END IF;
|
END IF;
|
||||||
|
IF ACP_VCTR16_ena_ctrl = '1' THEN
|
||||||
|
ACP_VCTR_q(23 DOWNTO 16) <= ACP_VCTR_d(23 DOWNTO 16);
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
IF ACP_VCTR8_ena_ctrl = '1' THEN
|
||||||
|
ACP_VCTR_q(15 DOWNTO 8) <= ACP_VCTR_d(15 DOWNTO 8);
|
||||||
PROCESS (ACP_VCTR0_clk_ctrl) BEGIN
|
|
||||||
if ACP_VCTR0_clk_ctrl'EVENT and ACP_VCTR0_clk_ctrl='1' THEN
|
|
||||||
if ACP_VCTR16_ena_ctrl='1' THEN
|
|
||||||
(ACP_VCTR_q(23), ACP_VCTR_q(22), ACP_VCTR_q(21), ACP_VCTR_q(20),
|
|
||||||
ACP_VCTR_q(19), ACP_VCTR_q(18), ACP_VCTR_q(17),
|
|
||||||
ACP_VCTR_q(16)) <= ACP_VCTR_d(23 DOWNTO 16);
|
|
||||||
END IF;
|
END IF;
|
||||||
|
IF ACP_VCTR6_ena_ctrl = '1' THEN
|
||||||
|
ACP_VCTR_q(7 DOWNTO 6) <= ACP_VCTR_d(7 DOWNTO 6);
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
IF ACP_VCTR0_ena_ctrl = '1' THEN
|
||||||
|
ACP_VCTR_q(5 DOWNTO 0) <= ACP_VCTR_d(5 DOWNTO 0);
|
||||||
PROCESS (ACP_VCTR0_clk_ctrl) BEGIN
|
|
||||||
if ACP_VCTR0_clk_ctrl'EVENT and ACP_VCTR0_clk_ctrl='1' THEN
|
|
||||||
if ACP_VCTR8_ena_ctrl='1' THEN
|
|
||||||
(ACP_VCTR_q(15), ACP_VCTR_q(14), ACP_VCTR_q(13), ACP_VCTR_q(12),
|
|
||||||
ACP_VCTR_q(11), ACP_VCTR_q(10), ACP_VCTR_q(9), ACP_VCTR_q(8))
|
|
||||||
<= ACP_VCTR_d(15 DOWNTO 8);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (ACP_VCTR0_clk_ctrl) BEGIN
|
|
||||||
if ACP_VCTR0_clk_ctrl'EVENT and ACP_VCTR0_clk_ctrl='1' THEN
|
|
||||||
if ACP_VCTR6_ena_ctrl='1' THEN
|
|
||||||
(ACP_VCTR_q(7), ACP_VCTR_q(6)) <= ACP_VCTR_d(7 DOWNTO 6);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (ACP_VCTR0_clk_ctrl) BEGIN
|
|
||||||
if ACP_VCTR0_clk_ctrl'EVENT and ACP_VCTR0_clk_ctrl='1' THEN
|
|
||||||
if ACP_VCTR0_ena_ctrl='1' THEN
|
|
||||||
(ACP_VCTR_q(5), ACP_VCTR_q(4), ACP_VCTR_q(3), ACP_VCTR_q(2),
|
|
||||||
ACP_VCTR_q(1), ACP_VCTR_q(0)) <= ACP_VCTR_d(5 DOWNTO 0);
|
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
@@ -841,218 +817,116 @@ BEGIN
|
|||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ATARI_HH0_clk_ctrl) BEGIN
|
PROCESS (ATARI_HH0_clk_ctrl)
|
||||||
if ATARI_HH0_clk_ctrl'EVENT and ATARI_HH0_clk_ctrl='1' THEN
|
BEGIN
|
||||||
if ATARI_HH24_ena_ctrl='1' THEN
|
IF rising_edge(ATARI_HH0_clk_ctrl) THEN
|
||||||
(ATARI_HH_q(31), ATARI_HH_q(30), ATARI_HH_q(29), ATARI_HH_q(28),
|
IF ATARI_HH24_ena_ctrl = '1' THEN
|
||||||
ATARI_HH_q(27), ATARI_HH_q(26), ATARI_HH_q(25),
|
ATARI_HH_q(31 DOWNTO 24) <= ATARI_HH_d(31 DOWNTO 24);
|
||||||
ATARI_HH_q(24)) <= ATARI_HH_d(31 DOWNTO 24);
|
END IF;
|
||||||
|
IF ATARI_HH16_ena_ctrl = '1' THEN
|
||||||
|
ATARI_HH_q(23 DOWNTO 16) <= ATARI_HH_d(23 DOWNTO 16);
|
||||||
|
END IF;
|
||||||
|
IF ATARI_HH8_ena_ctrl = '1' THEN
|
||||||
|
ATARI_HH_q(15 DOWNTO 8) <= ATARI_HH_d(15 DOWNTO 8);
|
||||||
|
END IF;
|
||||||
|
IF ATARI_HH0_ena_ctrl = '1' THEN
|
||||||
|
ATARI_HH_q(7 DOWNTO 0) <= ATARI_HH_d(7 DOWNTO 0);
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ATARI_HH0_clk_ctrl) BEGIN
|
PROCESS (ATARI_VH0_clk_ctrl)
|
||||||
if ATARI_HH0_clk_ctrl'EVENT and ATARI_HH0_clk_ctrl='1' THEN
|
BEGIN
|
||||||
if ATARI_HH16_ena_ctrl='1' THEN
|
IF rising_edge(ATARI_VH0_clk_ctrl) THEN
|
||||||
(ATARI_HH_q(23), ATARI_HH_q(22), ATARI_HH_q(21), ATARI_HH_q(20),
|
IF ATARI_VH24_ena_ctrl = '1' THEN
|
||||||
ATARI_HH_q(19), ATARI_HH_q(18), ATARI_HH_q(17),
|
ATARI_VH_q(31 DOWNTO 24) <= ATARI_VH_d(31 DOWNTO 24);
|
||||||
ATARI_HH_q(16)) <= ATARI_HH_d(23 DOWNTO 16);
|
|
||||||
END IF;
|
END IF;
|
||||||
|
IF ATARI_VH16_ena_ctrl = '1' THEN
|
||||||
|
ATARI_VH_q(23 DOWNTO 16) <= ATARI_VH_d(23 DOWNTO 16);
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
IF ATARI_VH8_ena_ctrl = '1' THEN
|
||||||
|
ATARI_VH_q(15 DOWNTO 8) <= ATARI_VH_d(15 DOWNTO 8);
|
||||||
PROCESS (ATARI_HH0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_HH0_clk_ctrl'EVENT and ATARI_HH0_clk_ctrl='1' THEN
|
|
||||||
if ATARI_HH8_ena_ctrl='1' THEN
|
|
||||||
(ATARI_HH_q(15), ATARI_HH_q(14), ATARI_HH_q(13), ATARI_HH_q(12),
|
|
||||||
ATARI_HH_q(11), ATARI_HH_q(10), ATARI_HH_q(9), ATARI_HH_q(8))
|
|
||||||
<= ATARI_HH_d(15 DOWNTO 8);
|
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
IF ATARI_VH0_ena_ctrl='1' THEN
|
||||||
END PROCESS;
|
ATARI_VH_q(7 DOWNTO 0) <= ATARI_VH_d(7 DOWNTO 0);
|
||||||
|
|
||||||
PROCESS (ATARI_HH0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_HH0_clk_ctrl'EVENT and ATARI_HH0_clk_ctrl='1' THEN
|
|
||||||
if ATARI_HH0_ena_ctrl='1' THEN
|
|
||||||
(ATARI_HH_q(7), ATARI_HH_q(6), ATARI_HH_q(5), ATARI_HH_q(4),
|
|
||||||
ATARI_HH_q(3), ATARI_HH_q(2), ATARI_HH_q(1), ATARI_HH_q(0))
|
|
||||||
<= ATARI_HH_d(7 DOWNTO 0);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (ATARI_VH0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_VH0_clk_ctrl'EVENT and ATARI_VH0_clk_ctrl='1' THEN
|
|
||||||
if ATARI_VH24_ena_ctrl='1' THEN
|
|
||||||
(ATARI_VH_q(31), ATARI_VH_q(30), ATARI_VH_q(29), ATARI_VH_q(28),
|
|
||||||
ATARI_VH_q(27), ATARI_VH_q(26), ATARI_VH_q(25),
|
|
||||||
ATARI_VH_q(24)) <= ATARI_VH_d(31 DOWNTO 24);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (ATARI_VH0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_VH0_clk_ctrl'EVENT and ATARI_VH0_clk_ctrl='1' THEN
|
|
||||||
if ATARI_VH16_ena_ctrl='1' THEN
|
|
||||||
(ATARI_VH_q(23), ATARI_VH_q(22), ATARI_VH_q(21), ATARI_VH_q(20),
|
|
||||||
ATARI_VH_q(19), ATARI_VH_q(18), ATARI_VH_q(17),
|
|
||||||
ATARI_VH_q(16)) <= ATARI_VH_d(23 DOWNTO 16);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (ATARI_VH0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_VH0_clk_ctrl'EVENT and ATARI_VH0_clk_ctrl='1' THEN
|
|
||||||
if ATARI_VH8_ena_ctrl='1' THEN
|
|
||||||
(ATARI_VH_q(15), ATARI_VH_q(14), ATARI_VH_q(13), ATARI_VH_q(12),
|
|
||||||
ATARI_VH_q(11), ATARI_VH_q(10), ATARI_VH_q(9), ATARI_VH_q(8))
|
|
||||||
<= ATARI_VH_d(15 DOWNTO 8);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (ATARI_VH0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_VH0_clk_ctrl'EVENT and ATARI_VH0_clk_ctrl='1' THEN
|
|
||||||
if ATARI_VH0_ena_ctrl='1' THEN
|
|
||||||
(ATARI_VH_q(7), ATARI_VH_q(6), ATARI_VH_q(5), ATARI_VH_q(4),
|
|
||||||
ATARI_VH_q(3), ATARI_VH_q(2), ATARI_VH_q(1), ATARI_VH_q(0))
|
|
||||||
<= ATARI_VH_d(7 DOWNTO 0);
|
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ATARI_HL0_clk_ctrl) BEGIN
|
PROCESS (ATARI_HL0_clk_ctrl) BEGIN
|
||||||
if ATARI_HL0_clk_ctrl'EVENT and ATARI_HL0_clk_ctrl='1' THEN
|
IF rising_edge(ATARI_HL0_clk_ctrl) THEN
|
||||||
if ATARI_HL24_ena_ctrl='1' THEN
|
IF ATARI_HL24_ena_ctrl = '1' THEN
|
||||||
(ATARI_HL_q(31), ATARI_HL_q(30), ATARI_HL_q(29), ATARI_HL_q(28),
|
ATARI_HL_q(31 DOWNTO 24) <= ATARI_HL_d(31 DOWNTO 24);
|
||||||
ATARI_HL_q(27), ATARI_HL_q(26), ATARI_HL_q(25),
|
END IF;
|
||||||
ATARI_HL_q(24)) <= ATARI_HL_d(31 DOWNTO 24);
|
IF ATARI_HL16_ena_ctrl = '1' THEN
|
||||||
|
ATARI_HL_q(23 DOWNTO 16) <= ATARI_HL_d(23 DOWNTO 16);
|
||||||
|
END IF;
|
||||||
|
IF ATARI_HL8_ena_ctrl = '1' THEN
|
||||||
|
ATARI_HL_q(15 DOWNTO 8) <= ATARI_HL_d(15 DOWNTO 8);
|
||||||
|
END IF;
|
||||||
|
IF ATARI_HL0_ena_ctrl = '1' THEN
|
||||||
|
ATARI_HL_q(7 DOWNTO 0) <= ATARI_HL_d(7 DOWNTO 0);
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ATARI_HL0_clk_ctrl) BEGIN
|
PROCESS (ATARI_VL0_clk_ctrl)
|
||||||
if ATARI_HL0_clk_ctrl'EVENT and ATARI_HL0_clk_ctrl='1' THEN
|
BEGIN
|
||||||
if ATARI_HL16_ena_ctrl='1' THEN
|
IF rising_edge(ATARI_VL0_clk_ctrl) THEN
|
||||||
(ATARI_HL_q(23), ATARI_HL_q(22), ATARI_HL_q(21), ATARI_HL_q(20),
|
IF ATARI_VL24_ena_ctrl = '1' THEN
|
||||||
ATARI_HL_q(19), ATARI_HL_q(18), ATARI_HL_q(17),
|
ATARI_VL_q(31 DOWNTO 24) <= ATARI_VL_d(31 DOWNTO 24);
|
||||||
ATARI_HL_q(16)) <= ATARI_HL_d(23 DOWNTO 16);
|
END IF;
|
||||||
|
IF ATARI_VL16_ena_ctrl = '1' THEN
|
||||||
|
ATARI_VL_q(23 DOWNTO 16) <= ATARI_VL_d(23 DOWNTO 16);
|
||||||
|
END IF;
|
||||||
|
IF ATARI_VL8_ena_ctrl = '1' THEN
|
||||||
|
ATARI_VL_q(15 DOWNTO 8) <= ATARI_VL_d(15 DOWNTO 8);
|
||||||
|
END IF;
|
||||||
|
IF ATARI_VL0_ena_ctrl = '1' THEN
|
||||||
|
ATARI_VL_q(7 DOWNTO 0) <= ATARI_VL_d(7 DOWNTO 0);
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ATARI_HL0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_HL0_clk_ctrl'EVENT and ATARI_HL0_clk_ctrl='1' THEN
|
PROCESS (HHT0_clk_ctrl)
|
||||||
if ATARI_HL8_ena_ctrl='1' THEN
|
BEGIN
|
||||||
(ATARI_HL_q(15), ATARI_HL_q(14), ATARI_HL_q(13), ATARI_HL_q(12),
|
IF rising_edge(HHT0_clk_ctrl) THEN
|
||||||
ATARI_HL_q(11), ATARI_HL_q(10), ATARI_HL_q(9), ATARI_HL_q(8))
|
IF HHT8_ena_ctrl = '1' THEN
|
||||||
<= ATARI_HL_d(15 DOWNTO 8);
|
HHT_q(11 DOWNTO 8) <= HHT_d(11 DOWNTO 8);
|
||||||
|
END IF;
|
||||||
|
IF HHT0_ena_ctrl = '1' THEN
|
||||||
|
HHT_q(7 DOWNTO 0) <= HHT_d(7 DOWNTO 0);
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ATARI_HL0_clk_ctrl) BEGIN
|
PROCESS (HBE0_clk_ctrl)
|
||||||
if ATARI_HL0_clk_ctrl'EVENT and ATARI_HL0_clk_ctrl='1' THEN
|
BEGIN
|
||||||
if ATARI_HL0_ena_ctrl='1' THEN
|
IF rising_edge(HBE0_clk_ctrl) THEN
|
||||||
(ATARI_HL_q(7), ATARI_HL_q(6), ATARI_HL_q(5), ATARI_HL_q(4),
|
IF HBE8_ena_ctrl = '1' THEN
|
||||||
ATARI_HL_q(3), ATARI_HL_q(2), ATARI_HL_q(1), ATARI_HL_q(0))
|
HBE_q(11 DOWNTO 8) <= HBE_d(11 DOWNTO 8);
|
||||||
<= ATARI_HL_d(7 DOWNTO 0);
|
END IF;
|
||||||
|
IF HBE0_ena_ctrl = '1' THEN
|
||||||
|
HBE_q(7 DOWNTO 0) <= HBE_d(7 DOWNTO 0);
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ATARI_VL0_clk_ctrl) BEGIN
|
PROCESS (HDB0_clk_ctrl)
|
||||||
if ATARI_VL0_clk_ctrl'EVENT and ATARI_VL0_clk_ctrl='1' THEN
|
BEGIN
|
||||||
if ATARI_VL24_ena_ctrl='1' THEN
|
IF rising_edge(HDB0_clk_ctrl) THEN
|
||||||
(ATARI_VL_q(31), ATARI_VL_q(30), ATARI_VL_q(29), ATARI_VL_q(28),
|
IF HDB8_ena_ctrl = '1' THEN
|
||||||
ATARI_VL_q(27), ATARI_VL_q(26), ATARI_VL_q(25),
|
HDB_q(11 DOWNTO 8) <= HDB_d(11 DOWNTO 8);
|
||||||
ATARI_VL_q(24)) <= ATARI_VL_d(31 DOWNTO 24);
|
END IF;
|
||||||
|
IF HDB0_ena_ctrl = '1' THEN
|
||||||
|
HDB_q(7 DOWNTO 0) <= HDB_d(7 DOWNTO 0);
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END PROCESS;
|
END PROCESS;
|
||||||
|
|
||||||
PROCESS (ATARI_VL0_clk_ctrl) BEGIN
|
PROCESS (HDE0_clk_ctrl)
|
||||||
if ATARI_VL0_clk_ctrl'EVENT and ATARI_VL0_clk_ctrl='1' THEN
|
BEGIN
|
||||||
if ATARI_VL16_ena_ctrl='1' THEN
|
|
||||||
(ATARI_VL_q(23), ATARI_VL_q(22), ATARI_VL_q(21), ATARI_VL_q(20),
|
|
||||||
ATARI_VL_q(19), ATARI_VL_q(18), ATARI_VL_q(17),
|
|
||||||
ATARI_VL_q(16)) <= ATARI_VL_d(23 DOWNTO 16);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (ATARI_VL0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_VL0_clk_ctrl'EVENT and ATARI_VL0_clk_ctrl='1' THEN
|
|
||||||
if ATARI_VL8_ena_ctrl='1' THEN
|
|
||||||
(ATARI_VL_q(15), ATARI_VL_q(14), ATARI_VL_q(13), ATARI_VL_q(12),
|
|
||||||
ATARI_VL_q(11), ATARI_VL_q(10), ATARI_VL_q(9), ATARI_VL_q(8))
|
|
||||||
<= ATARI_VL_d(15 DOWNTO 8);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (ATARI_VL0_clk_ctrl) BEGIN
|
|
||||||
if ATARI_VL0_clk_ctrl'EVENT and ATARI_VL0_clk_ctrl='1' THEN
|
|
||||||
if ATARI_VL0_ena_ctrl='1' THEN
|
|
||||||
(ATARI_VL_q(7), ATARI_VL_q(6), ATARI_VL_q(5), ATARI_VL_q(4),
|
|
||||||
ATARI_VL_q(3), ATARI_VL_q(2), ATARI_VL_q(1), ATARI_VL_q(0))
|
|
||||||
<= ATARI_VL_d(7 DOWNTO 0);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (HHT0_clk_ctrl) BEGIN
|
|
||||||
if HHT0_clk_ctrl'EVENT and HHT0_clk_ctrl='1' THEN
|
|
||||||
if HHT8_ena_ctrl='1' THEN
|
|
||||||
(HHT_q(11), HHT_q(10), HHT_q(9), HHT_q(8)) <= HHT_d(11 DOWNTO 8);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (HHT0_clk_ctrl) BEGIN
|
|
||||||
if HHT0_clk_ctrl'EVENT and HHT0_clk_ctrl='1' THEN
|
|
||||||
if HHT0_ena_ctrl='1' THEN
|
|
||||||
(HHT_q(7), HHT_q(6), HHT_q(5), HHT_q(4), HHT_q(3), HHT_q(2),
|
|
||||||
HHT_q(1), HHT_q(0)) <= HHT_d(7 DOWNTO 0);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (HBE0_clk_ctrl) BEGIN
|
|
||||||
if HBE0_clk_ctrl'EVENT and HBE0_clk_ctrl='1' THEN
|
|
||||||
if HBE8_ena_ctrl='1' THEN
|
|
||||||
(HBE_q(11), HBE_q(10), HBE_q(9), HBE_q(8)) <= HBE_d(11 DOWNTO 8);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (HBE0_clk_ctrl) BEGIN
|
|
||||||
if HBE0_clk_ctrl'EVENT and HBE0_clk_ctrl='1' THEN
|
|
||||||
if HBE0_ena_ctrl='1' THEN
|
|
||||||
(HBE_q(7), HBE_q(6), HBE_q(5), HBE_q(4), HBE_q(3), HBE_q(2),
|
|
||||||
HBE_q(1), HBE_q(0)) <= HBE_d(7 DOWNTO 0);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (HDB0_clk_ctrl) BEGIN
|
|
||||||
if HDB0_clk_ctrl'EVENT and HDB0_clk_ctrl='1' THEN
|
|
||||||
if HDB8_ena_ctrl='1' THEN
|
|
||||||
(HDB_q(11), HDB_q(10), HDB_q(9), HDB_q(8)) <= HDB_d(11 DOWNTO 8);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (HDB0_clk_ctrl) BEGIN
|
|
||||||
if HDB0_clk_ctrl'EVENT and HDB0_clk_ctrl='1' THEN
|
|
||||||
if HDB0_ena_ctrl='1' THEN
|
|
||||||
(HDB_q(7), HDB_q(6), HDB_q(5), HDB_q(4), HDB_q(3), HDB_q(2),
|
|
||||||
HDB_q(1), HDB_q(0)) <= HDB_d(7 DOWNTO 0);
|
|
||||||
END IF;
|
|
||||||
END IF;
|
|
||||||
END PROCESS;
|
|
||||||
|
|
||||||
PROCESS (HDE0_clk_ctrl) BEGIN
|
|
||||||
if HDE0_clk_ctrl'EVENT and HDE0_clk_ctrl='1' THEN
|
if HDE0_clk_ctrl'EVENT and HDE0_clk_ctrl='1' THEN
|
||||||
if HDE8_ena_ctrl='1' THEN
|
if HDE8_ena_ctrl='1' THEN
|
||||||
(HDE_q(11), HDE_q(10), HDE_q(9), HDE_q(8)) <= HDE_d(11 DOWNTO 8);
|
(HDE_q(11), HDE_q(10), HDE_q(9), HDE_q(8)) <= HDE_d(11 DOWNTO 8);
|
||||||
@@ -1362,10 +1236,11 @@ BEGIN
|
|||||||
ACP_VCTR0_clk_ctrl <= MAIN_CLK;
|
ACP_VCTR0_clk_ctrl <= MAIN_CLK;
|
||||||
|
|
||||||
-- $400/4
|
-- $400/4
|
||||||
ACP_VCTR_CS <= to_std_logic(((not nFB_CS2)='1') and FB_ADR(27 DOWNTO 2) =
|
ACP_VCTR_CS <= to_std_logic(((not nFB_CS2)='1') and FB_ADR(27 DOWNTO 2) = "00000000000000000100000000");
|
||||||
"00000000000000000100000000");
|
|
||||||
ACP_VCTR_d(31 DOWNTO 8) <= FB_AD(31 DOWNTO 8);
|
ACP_VCTR_d(31 DOWNTO 8) <= FB_AD(31 DOWNTO 8);
|
||||||
ACP_VCTR_d(5 DOWNTO 0) <= FB_AD(5 DOWNTO 0);
|
ACP_VCTR_d(5 DOWNTO 0) <= FB_AD(5 DOWNTO 0);
|
||||||
|
|
||||||
ACP_VCTR24_ena_ctrl <= ACP_VCTR_CS and FB_B(0) and (not nFB_WR);
|
ACP_VCTR24_ena_ctrl <= ACP_VCTR_CS and FB_B(0) and (not nFB_WR);
|
||||||
ACP_VCTR16_ena_ctrl <= ACP_VCTR_CS and FB_B(1) and (not nFB_WR);
|
ACP_VCTR16_ena_ctrl <= ACP_VCTR_CS and FB_B(1) and (not nFB_WR);
|
||||||
ACP_VCTR8_ena_ctrl <= ACP_VCTR_CS and FB_B(2) and (not nFB_WR);
|
ACP_VCTR8_ena_ctrl <= ACP_VCTR_CS and FB_B(2) and (not nFB_WR);
|
||||||
@@ -1465,9 +1340,8 @@ BEGIN
|
|||||||
ACP_VCTR_d(7) <= FALCON_SHIFT_MODE_CS and (not nFB_WR) and (not
|
ACP_VCTR_d(7) <= FALCON_SHIFT_MODE_CS and (not nFB_WR) and (not
|
||||||
ACP_VIDEO_ON);
|
ACP_VIDEO_ON);
|
||||||
ACP_VCTR_d(6) <= ST_SHIFT_MODE_CS and (not nFB_WR) and (not ACP_VIDEO_ON);
|
ACP_VCTR_d(6) <= ST_SHIFT_MODE_CS and (not nFB_WR) and (not ACP_VIDEO_ON);
|
||||||
ACP_VCTR6_ena_ctrl <= (FALCON_SHIFT_MODE_CS and (not nFB_WR)) or
|
|
||||||
(ST_SHIFT_MODE_CS and (not nFB_WR)) or (ACP_VCTR_CS and FB_B(3) and
|
ACP_VCTR6_ena_ctrl <= (FALCON_SHIFT_MODE_CS and (not nFB_WR)) or (ST_SHIFT_MODE_CS and (not nFB_WR)) or (ACP_VCTR_CS and FB_B(3) and (not nFB_WR) and FB_AD(0));
|
||||||
(not nFB_WR) and FB_AD(0));
|
|
||||||
FALCON_VIDEO <= ACP_VCTR_q(7);
|
FALCON_VIDEO <= ACP_VCTR_q(7);
|
||||||
FALCON_CLUT <= FALCON_VIDEO and (not ACP_VIDEO_ON) and (not COLOR16);
|
FALCON_CLUT <= FALCON_VIDEO and (not ACP_VIDEO_ON) and (not COLOR16);
|
||||||
ST_VIDEO <= ACP_VCTR_q(6);
|
ST_VIDEO <= ACP_VCTR_q(6);
|
||||||
@@ -1661,19 +1535,16 @@ BEGIN
|
|||||||
|
|
||||||
-- VCNTRL
|
-- VCNTRL
|
||||||
-- $82C2 / 2 Falcon resolution control register VCNTRL
|
-- $82C2 / 2 Falcon resolution control register VCNTRL
|
||||||
VCNTRL_CS <= to_std_logic(((not nFB_CS1)='1') and FB_ADR(19 DOWNTO 1) =
|
VCNTRL_CS <= to_std_logic(((not nFB_CS1)='1') and FB_ADR(19 DOWNTO 1) = "1111100000101100001");
|
||||||
"1111100000101100001");
|
|
||||||
VCNTRL0_clk_ctrl <= MAIN_CLK;
|
VCNTRL0_clk_ctrl <= MAIN_CLK;
|
||||||
VCNTRL_d <= FB_AD(19 DOWNTO 16);
|
VCNTRL_d <= FB_AD(19 DOWNTO 16);
|
||||||
VCNTRL0_ena_ctrl <= VCNTRL_CS and (not nFB_WR) and FB_B(3);
|
VCNTRL0_ena_ctrl <= VCNTRL_CS and (not nFB_WR) and FB_B(3);
|
||||||
|
|
||||||
-- - REGISTER OUT
|
-- - REGISTER OUT
|
||||||
-- low word register access
|
-- low word register access
|
||||||
u0_data <= (sizeIt(ST_SHIFT_MODE_CS,16) and std_logic_vector'("000000" &
|
u0_data <= (sizeIt(ST_SHIFT_MODE_CS,16) and std_logic_vector'("000000" & ST_SHIFT_MODE_q & "00000000")) or
|
||||||
ST_SHIFT_MODE_q & "00000000")) or (sizeIt(FALCON_SHIFT_MODE_CS,16) and
|
(sizeIt(FALCON_SHIFT_MODE_CS,16) and std_logic_vector'("00000" & FALCON_SHIFT_MODE_q)) or
|
||||||
std_logic_vector'("00000" & FALCON_SHIFT_MODE_q)) or
|
(sizeIt(SYS_CTR_CS,16) and std_logic_vector'("100000000" & SYS_CTR_q(6 DOWNTO 4) & (not BLITTER_RUN) & SYS_CTR_q(2 DOWNTO 0))) or
|
||||||
(sizeIt(SYS_CTR_CS,16) and std_logic_vector'("100000000" & SYS_CTR_q(6
|
|
||||||
DOWNTO 4) & (not BLITTER_RUN) & SYS_CTR_q(2 DOWNTO 0))) or
|
|
||||||
(sizeIt(LOF_CS,16) and LOF_q) or (sizeIt(LWD_CS,16) and LWD_q) or
|
(sizeIt(LOF_CS,16) and LOF_q) or (sizeIt(LWD_CS,16) and LWD_q) or
|
||||||
(sizeIt(HBE_CS,16) and std_logic_vector'("0000" & HBE_q)) or
|
(sizeIt(HBE_CS,16) and std_logic_vector'("0000" & HBE_q)) or
|
||||||
(sizeIt(HDB_CS,16) and std_logic_vector'("0000" & HDB_q)) or
|
(sizeIt(HDB_CS,16) and std_logic_vector'("0000" & HDB_q)) or
|
||||||
@@ -1688,23 +1559,19 @@ BEGIN
|
|||||||
(sizeIt(VSS_CS,16) and std_logic_vector'("00000" & VSS_q)) or
|
(sizeIt(VSS_CS,16) and std_logic_vector'("00000" & VSS_q)) or
|
||||||
(sizeIt(VFT_CS,16) and std_logic_vector'("00000" & VFT_q)) or
|
(sizeIt(VFT_CS,16) and std_logic_vector'("00000" & VFT_q)) or
|
||||||
(sizeIt(VCO_CS,16) and std_logic_vector'("0000000" & VCO_q)) or
|
(sizeIt(VCO_CS,16) and std_logic_vector'("0000000" & VCO_q)) or
|
||||||
(sizeIt(VCNTRL_CS,16) and std_logic_vector'("000000000000" &
|
(sizeIt(VCNTRL_CS,16) and std_logic_vector'("000000000000" & VCNTRL_q)) or
|
||||||
VCNTRL_q)) or (sizeIt(ACP_VCTR_CS,16) and ACP_VCTR_q(31 DOWNTO 16)) or
|
(sizeIt(ACP_VCTR_CS,16) and ACP_VCTR_q(31 DOWNTO 16)) or
|
||||||
(sizeIt(ATARI_HH_CS,16) and ATARI_HH_q(31 DOWNTO 16)) or
|
(sizeIt(ATARI_HH_CS,16) and ATARI_HH_q(31 DOWNTO 16)) or
|
||||||
(sizeIt(ATARI_VH_CS,16) and ATARI_VH_q(31 DOWNTO 16)) or
|
(sizeIt(ATARI_VH_CS,16) and ATARI_VH_q(31 DOWNTO 16)) or
|
||||||
(sizeIt(ATARI_HL_CS,16) and ATARI_HL_q(31 DOWNTO 16)) or
|
(sizeIt(ATARI_HL_CS,16) and ATARI_HL_q(31 DOWNTO 16)) or
|
||||||
(sizeIt(ATARI_VL_CS,16) and ATARI_VL_q(31 DOWNTO 16)) or
|
(sizeIt(ATARI_VL_CS,16) and ATARI_VL_q(31 DOWNTO 16)) or
|
||||||
(sizeIt(BORDER_COLOR_CS,16) and std_logic_vector'("00000000" &
|
(sizeIt(BORDER_COLOR_CS,16) and std_logic_vector'("00000000" & BORDER_COLOR_q(23 DOWNTO 16))) or
|
||||||
BORDER_COLOR_q(23 DOWNTO 16))) or (sizeIt(VIDEO_PLL_CONFIG_CS,16) and
|
(sizeIt(VIDEO_PLL_CONFIG_CS,16) and std_logic_vector'("0000000" & VR_DOUT_q)) or
|
||||||
std_logic_vector'("0000000" & VR_DOUT_q)) or
|
(sizeIt(VIDEO_PLL_RECONFIG_CS,16) and std_logic_vector'(VR_BUSY & "0000" & VR_WR_q & VR_RD & VIDEO_RECONFIG_q & "11111010"));
|
||||||
(sizeIt(VIDEO_PLL_RECONFIG_CS,16) and std_logic_vector'(VR_BUSY &
|
|
||||||
"0000" & VR_WR_q & VR_RD & VIDEO_RECONFIG_q & "11111010"));
|
u0_enabledt <= (ST_SHIFT_MODE_CS or FALCON_SHIFT_MODE_CS or ACP_VCTR_CS or BORDER_COLOR_CS or SYS_CTR_CS or LOF_CS or LWD_CS or HBE_CS or HDB_CS or
|
||||||
u0_enabledt <= (ST_SHIFT_MODE_CS or FALCON_SHIFT_MODE_CS or ACP_VCTR_CS or
|
HDE_CS or HBB_CS or HSS_CS or HHT_CS or ATARI_HH_CS or ATARI_VH_CS or ATARI_HL_CS or ATARI_VL_CS or VIDEO_PLL_CONFIG_CS or
|
||||||
BORDER_COLOR_CS or SYS_CTR_CS or LOF_CS or LWD_CS or HBE_CS or HDB_CS
|
VIDEO_PLL_RECONFIG_CS or VBE_CS or VDB_CS or VDE_CS or VBB_CS or VSS_CS or VFT_CS or VCO_CS or VCNTRL_CS) and (not nFB_OE);
|
||||||
or HDE_CS or HBB_CS or HSS_CS or HHT_CS or ATARI_HH_CS or ATARI_VH_CS
|
|
||||||
or ATARI_HL_CS or ATARI_VL_CS or VIDEO_PLL_CONFIG_CS or
|
|
||||||
VIDEO_PLL_RECONFIG_CS or VBE_CS or VDB_CS or VDE_CS or VBB_CS or
|
|
||||||
VSS_CS or VFT_CS or VCO_CS or VCNTRL_CS) and (not nFB_OE);
|
|
||||||
FB_AD(31 DOWNTO 16) <= u0_tridata;
|
FB_AD(31 DOWNTO 16) <= u0_tridata;
|
||||||
|
|
||||||
-- high word register access
|
-- high word register access
|
||||||
@@ -1714,49 +1581,44 @@ BEGIN
|
|||||||
(sizeIt(ATARI_HL_CS,16) and ATARI_HL_q(15 DOWNTO 0)) or
|
(sizeIt(ATARI_HL_CS,16) and ATARI_HL_q(15 DOWNTO 0)) or
|
||||||
(sizeIt(ATARI_VL_CS,16) and ATARI_VL_q(15 DOWNTO 0)) or
|
(sizeIt(ATARI_VL_CS,16) and ATARI_VL_q(15 DOWNTO 0)) or
|
||||||
(sizeIt(BORDER_COLOR_CS,16) and BORDER_COLOR_q(15 DOWNTO 0));
|
(sizeIt(BORDER_COLOR_CS,16) and BORDER_COLOR_q(15 DOWNTO 0));
|
||||||
u1_enabledt <= (ACP_VCTR_CS or BORDER_COLOR_CS or ATARI_HH_CS or ATARI_VH_CS
|
u1_enabledt <= (ACP_VCTR_CS or BORDER_COLOR_CS or ATARI_HH_CS or ATARI_VH_CS or ATARI_HL_CS or ATARI_VL_CS) and (not nFB_OE);
|
||||||
or ATARI_HL_CS or ATARI_VL_CS) and (not nFB_OE);
|
|
||||||
FB_AD(15 DOWNTO 0) <= u1_tridata;
|
FB_AD(15 DOWNTO 0) <= u1_tridata;
|
||||||
VIDEO_MOD_TA <= CLUT_TA_q or ST_SHIFT_MODE_CS or FALCON_SHIFT_MODE_CS or
|
|
||||||
ACP_VCTR_CS or SYS_CTR_CS or LOF_CS or LWD_CS or HBE_CS or HDB_CS or
|
VIDEO_MOD_TA <= CLUT_TA_q or ST_SHIFT_MODE_CS or FALCON_SHIFT_MODE_CS or ACP_VCTR_CS or SYS_CTR_CS or LOF_CS or LWD_CS or HBE_CS or HDB_CS or
|
||||||
HDE_CS or HBB_CS or HSS_CS or HHT_CS or ATARI_HH_CS or ATARI_VH_CS or
|
HDE_CS or HBB_CS or HSS_CS or HHT_CS or ATARI_HH_CS or ATARI_VH_CS or ATARI_HL_CS or ATARI_VL_CS or VBE_CS or VDB_CS or VDE_CS or VBB_CS or
|
||||||
ATARI_HL_CS or ATARI_VL_CS or VBE_CS or VDB_CS or VDE_CS or VBB_CS or
|
|
||||||
VSS_CS or VFT_CS or VCO_CS or VCNTRL_CS;
|
VSS_CS or VFT_CS or VCO_CS or VCNTRL_CS;
|
||||||
|
|
||||||
-- VIDEO AUSGABE SETZEN
|
-- VIDEO AUSGABE SETZEN
|
||||||
CLK17M_clk <= CLK33M;
|
CLK17M_clk <= CLK33M;
|
||||||
CLK17M_d <= not CLK17M_q;
|
CLK17M_d <= not CLK17M_q;
|
||||||
|
|
||||||
CLK13M_clk <= CLK25M;
|
CLK13M_clk <= CLK25M;
|
||||||
CLK13M_d <= not CLK13M_q;
|
CLK13M_d <= not CLK13M_q;
|
||||||
|
|
||||||
-- 320 pixels, 32 MHz,
|
-- 320 pixels, 32 MHz,
|
||||||
-- 320 pixels, 25.175 MHz,
|
-- 320 pixels, 25.175 MHz,
|
||||||
-- 640 pixels, 32 MHz, VGA monitor
|
-- 640 pixels, 32 MHz, VGA monitor
|
||||||
-- 640 pixels, 25.175 MHz, VGA monitor
|
-- 640 pixels, 25.175 MHz, VGA monitor
|
||||||
PIXEL_CLK <= (CLK13M_q and (not ACP_VIDEO_ON) and (FALCON_VIDEO or ST_VIDEO)
|
PIXEL_CLK <= (CLK13M_q and (not ACP_VIDEO_ON) and (FALCON_VIDEO or ST_VIDEO) and ((VCNTRL_q(2) and VCO_q(2)) or VCO_q(0))) or
|
||||||
and ((VCNTRL_q(2) and VCO_q(2)) or VCO_q(0))) or (CLK17M_q and (not
|
(CLK17M_q and (not ACP_VIDEO_ON) and (FALCON_VIDEO or ST_VIDEO) and ((VCNTRL_q(2) and (not VCO_q(2))) or VCO_q(0))) or
|
||||||
ACP_VIDEO_ON) and (FALCON_VIDEO or ST_VIDEO) and ((VCNTRL_q(2) and
|
(CLK25M and (not ACP_VIDEO_ON) and (FALCON_VIDEO or ST_VIDEO) and (not VCNTRL_q(2)) and VCO_q(2) and (not VCO_q(0))) or
|
||||||
(not VCO_q(2))) or VCO_q(0))) or (CLK25M and (not ACP_VIDEO_ON) and
|
(CLK33M and (not ACP_VIDEO_ON) and (FALCON_VIDEO or ST_VIDEO) and (not VCNTRL_q(2)) and (not VCO_q(2)) and (not VCO_q(0))) or
|
||||||
(FALCON_VIDEO or ST_VIDEO) and (not VCNTRL_q(2)) and VCO_q(2) and (not
|
(to_std_logic((CLK25M and ACP_VIDEO_ON)='1' and ACP_VCTR_q(9 DOWNTO 8) = "00")) or
|
||||||
VCO_q(0))) or (CLK33M and (not ACP_VIDEO_ON) and (FALCON_VIDEO or
|
(to_std_logic((CLK33M and ACP_VIDEO_ON)='1' and ACP_VCTR_q(9 DOWNTO 8) = "01")) or
|
||||||
ST_VIDEO) and (not VCNTRL_q(2)) and (not VCO_q(2)) and (not VCO_q(0)))
|
(CLK_VIDEO and ACP_VIDEO_ON and ACP_VCTR_q(9));
|
||||||
or (to_std_logic((CLK25M and ACP_VIDEO_ON)='1' and ACP_VCTR_q(9 DOWNTO
|
|
||||||
8) = "00")) or (to_std_logic((CLK33M and ACP_VIDEO_ON)='1' and
|
|
||||||
ACP_VCTR_q(9 DOWNTO 8) = "01")) or (CLK_VIDEO and ACP_VIDEO_ON and
|
|
||||||
ACP_VCTR_q(9));
|
|
||||||
|
|
||||||
-- ------------------------------------------------------------
|
-- ------------------------------------------------------------
|
||||||
-- HORIZONTALE SYNC LÄNGE in PIXEL_CLK
|
-- HORIZONTALE SYNC LÄNGE in PIXEL_CLK
|
||||||
-- --------------------------------------------------------------
|
-- --------------------------------------------------------------
|
||||||
-- HSY_LEN[].CLK = MAIN_CLK;
|
-- HSY_LEN[].CLK = MAIN_CLK;
|
||||||
-- check if this is better (mfro)
|
-- check if this is better (mfro)
|
||||||
HSY_LEN0_clk_ctrl <= PIXEL_CLK;
|
HSY_LEN0_clk_ctrl <= PIXEL_CLK;
|
||||||
|
|
||||||
-- 320 pixels, 32 MHz, RGB
|
-- 320 pixels, 32 MHz, RGB
|
||||||
-- 320 pixels, 25.175 MHz, VGA
|
-- 320 pixels, 25.175 MHz, VGA
|
||||||
-- 640 pixels, 32 MHz, RGB
|
-- 640 pixels, 32 MHz, RGB
|
||||||
-- 640 pixels, 25.175 MHz, VGA
|
-- 640 pixels, 25.175 MHz, VGA
|
||||||
-- hsync pulse length in pixeln = frequenz / = 500ns
|
-- hsync pulse length in pixeln = frequenz / = 500ns
|
||||||
HSY_LEN_d <= ("00001110" and sizeIt(not ACP_VIDEO_ON,8) and
|
HSY_LEN_d <= ("00001110" and sizeIt(not ACP_VIDEO_ON,8) and
|
||||||
(sizeIt(FALCON_VIDEO,8) or sizeIt(ST_VIDEO,8)) and
|
(sizeIt(FALCON_VIDEO,8) or sizeIt(ST_VIDEO,8)) and
|
||||||
((sizeIt(VCNTRL_q(2),8) and sizeIt(VCO_q(2),8)) or
|
((sizeIt(VCNTRL_q(2),8) and sizeIt(VCO_q(2),8)) or
|
||||||
|
|||||||
@@ -675,6 +675,9 @@ set_global_assignment -name OPTIMIZE_HOLD_TIMING "IO PATHS AND MINIMUM TPD PATHS
|
|||||||
set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING ON
|
set_global_assignment -name OPTIMIZE_MULTI_CORNER_TIMING ON
|
||||||
set_global_assignment -name AUTO_DELAY_CHAINS_FOR_HIGH_FANOUT_INPUT_PINS OFF
|
set_global_assignment -name AUTO_DELAY_CHAINS_FOR_HIGH_FANOUT_INPUT_PINS OFF
|
||||||
set_global_assignment -name OPTIMIZE_FOR_METASTABILITY OFF
|
set_global_assignment -name OPTIMIZE_FOR_METASTABILITY OFF
|
||||||
|
set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_video|i_video_mod_mux_clutctr|CLK13M_q
|
||||||
|
set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_video|i_video_mod_mux_clutctr|CLK17M_q
|
||||||
|
set_global_assignment -name AHDL_FILE altpll4.tdf
|
||||||
set_global_assignment -name SDC_FILE firebee_groups.sdc
|
set_global_assignment -name SDC_FILE firebee_groups.sdc
|
||||||
set_global_assignment -name VHDL_FILE Video/video.vhd
|
set_global_assignment -name VHDL_FILE Video/video.vhd
|
||||||
set_global_assignment -name VHDL_FILE Video/video_mod_mux_clutctr.vhd
|
set_global_assignment -name VHDL_FILE Video/video_mod_mux_clutctr.vhd
|
||||||
@@ -857,6 +860,5 @@ set_global_assignment -name QIP_FILE lpm_mux0.qip
|
|||||||
set_global_assignment -name QIP_FILE lpm_shiftreg0.qip
|
set_global_assignment -name QIP_FILE lpm_shiftreg0.qip
|
||||||
set_global_assignment -name QIP_FILE lpm_counter1.qip
|
set_global_assignment -name QIP_FILE lpm_counter1.qip
|
||||||
set_global_assignment -name QIP_FILE altiobuf_bidir0.qip
|
set_global_assignment -name QIP_FILE altiobuf_bidir0.qip
|
||||||
set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_video|i_video_mod_mux_clutctr|CLK13M_q
|
set_global_assignment -name VHDL_FILE flexbus_register.vhd
|
||||||
set_instance_assignment -name GLOBAL_SIGNAL "GLOBAL CLOCK" -to i_video|i_video_mod_mux_clutctr|CLK17M_q
|
|
||||||
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top
|
||||||
@@ -205,90 +205,90 @@ ARCHITECTURE rtl OF firebee1 IS
|
|||||||
COMPONENT altpll_reconfig1
|
COMPONENT altpll_reconfig1
|
||||||
PORT
|
PORT
|
||||||
(
|
(
|
||||||
clock : IN STD_LOGIC ;
|
clock : IN std_logic ;
|
||||||
counter_param : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
|
counter_param : IN std_logic_vector (2 DOWNTO 0);
|
||||||
counter_type : IN STD_LOGIC_VECTOR (3 DOWNTO 0);
|
counter_type : IN std_logic_vector (3 DOWNTO 0);
|
||||||
data_in : IN STD_LOGIC_VECTOR (8 DOWNTO 0);
|
data_in : IN std_logic_vector (8 DOWNTO 0);
|
||||||
pll_areset_in : IN STD_LOGIC := '0';
|
pll_areset_in : IN std_logic := '0';
|
||||||
pll_scandataout : IN STD_LOGIC ;
|
pll_scandataout : IN std_logic ;
|
||||||
pll_scandone : IN STD_LOGIC ;
|
pll_scandone : IN std_logic ;
|
||||||
read_param : IN STD_LOGIC ;
|
read_param : IN std_logic ;
|
||||||
reconfig : IN STD_LOGIC ;
|
reconfig : IN std_logic ;
|
||||||
reset : IN STD_LOGIC ;
|
reset : IN std_logic ;
|
||||||
write_param : IN STD_LOGIC ;
|
write_param : IN std_logic ;
|
||||||
busy : OUT STD_LOGIC ;
|
busy : OUT std_logic ;
|
||||||
data_out : OUT STD_LOGIC_VECTOR (8 DOWNTO 0);
|
data_out : OUT std_logic_vector (8 DOWNTO 0);
|
||||||
pll_areset : OUT STD_LOGIC ;
|
pll_areset : OUT std_logic ;
|
||||||
pll_configupdate : OUT STD_LOGIC ;
|
pll_configupdate : OUT std_logic ;
|
||||||
pll_scanclk : OUT STD_LOGIC ;
|
pll_scanclk : OUT std_logic ;
|
||||||
pll_scanclkena : OUT STD_LOGIC ;
|
pll_scanclkena : OUT std_logic ;
|
||||||
pll_scandata : OUT STD_LOGIC
|
pll_scandata : OUT std_logic
|
||||||
);
|
);
|
||||||
END COMPONENT altpll_reconfig1;
|
END COMPONENT altpll_reconfig1;
|
||||||
|
|
||||||
COMPONENT altpll4
|
COMPONENT altpll4
|
||||||
PORT
|
PORT
|
||||||
(
|
(
|
||||||
areset : IN STD_LOGIC := '0';
|
areset : IN std_logic := '0';
|
||||||
configupdate : IN STD_LOGIC := '0';
|
configupdate : IN std_logic := '0';
|
||||||
inclk0 : IN STD_LOGIC := '0';
|
inclk0 : IN std_logic := '0';
|
||||||
scanclk : IN STD_LOGIC := '1';
|
scanclk : IN std_logic := '1';
|
||||||
scanclkena : IN STD_LOGIC := '0';
|
scanclkena : IN std_logic := '0';
|
||||||
scandata : IN STD_LOGIC := '0';
|
scandata : IN std_logic := '0';
|
||||||
c0 : OUT STD_LOGIC ;
|
c0 : OUT std_logic ;
|
||||||
locked : OUT STD_LOGIC ;
|
locked : OUT std_logic ;
|
||||||
scandataout : OUT STD_LOGIC ;
|
scandataout : OUT std_logic ;
|
||||||
scandone : OUT STD_LOGIC
|
scandone : OUT std_logic
|
||||||
);
|
);
|
||||||
END COMPONENT altpll4;
|
END COMPONENT altpll4;
|
||||||
|
|
||||||
COMPONENT Video
|
COMPONENT video
|
||||||
PORT
|
PORT
|
||||||
(
|
(
|
||||||
FB_ADR : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
|
FB_ADR : IN std_logic_vector(31 DOWNTO 0);
|
||||||
MAIN_CLK : IN STD_LOGIC;
|
MAIN_CLK : IN std_logic;
|
||||||
nFB_CS1 : IN STD_LOGIC;
|
nFB_CS1 : IN std_logic;
|
||||||
nFB_CS2 : IN STD_LOGIC;
|
nFB_CS2 : IN std_logic;
|
||||||
nFB_CS3 : IN STD_LOGIC;
|
nFB_CS3 : IN std_logic;
|
||||||
nFB_WR : IN STD_LOGIC;
|
nFB_WR : IN std_logic;
|
||||||
FB_SIZE0 : IN STD_LOGIC;
|
FB_SIZE0 : IN std_logic;
|
||||||
FB_SIZE1 : IN STD_LOGIC;
|
FB_SIZE1 : IN std_logic;
|
||||||
nRSTO : IN STD_LOGIC;
|
nRSTO : IN std_logic;
|
||||||
nFB_OE : IN STD_LOGIC;
|
nFB_OE : IN std_logic;
|
||||||
FB_ALE : IN STD_LOGIC;
|
FB_ALE : IN std_logic;
|
||||||
DDRCLK : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
|
DDRCLK : IN std_logic_vector(3 DOWNTO 0);
|
||||||
DDR_SYNC_66M : IN STD_LOGIC;
|
DDR_SYNC_66M : IN std_logic;
|
||||||
CLK33M : IN STD_LOGIC;
|
CLK33M : IN std_logic;
|
||||||
CLK25M : IN STD_LOGIC;
|
CLK25M : IN std_logic;
|
||||||
CLK_VIDEO : IN STD_LOGIC;
|
CLK_VIDEO : IN std_logic;
|
||||||
VR_D : IN STD_LOGIC_VECTOR(8 DOWNTO 0);
|
VR_D : IN std_logic_vector(8 DOWNTO 0);
|
||||||
VR_BUSY : IN STD_LOGIC;
|
VR_BUSY : IN std_logic;
|
||||||
VG : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
|
VG : OUT std_logic_vector(7 DOWNTO 0);
|
||||||
VB : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
|
VB : OUT std_logic_vector(7 DOWNTO 0);
|
||||||
VR : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
|
VR : OUT std_logic_vector(7 DOWNTO 0);
|
||||||
nBLANK : OUT STD_LOGIC;
|
nBLANK : OUT std_logic;
|
||||||
VA : OUT STD_LOGIC_VECTOR(12 DOWNTO 0);
|
VA : OUT std_logic_vector(12 DOWNTO 0);
|
||||||
nVWE : OUT STD_LOGIC;
|
nVWE : OUT std_logic;
|
||||||
nVCAS : OUT STD_LOGIC;
|
nVCAS : OUT std_logic;
|
||||||
nVRAS : OUT STD_LOGIC;
|
nVRAS : OUT std_logic;
|
||||||
nVCS : OUT STD_LOGIC;
|
nVCS : OUT std_logic;
|
||||||
VDM : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
|
VDM : OUT std_logic_vector(3 DOWNTO 0);
|
||||||
nPD_VGA : OUT STD_LOGIC;
|
nPD_VGA : OUT std_logic;
|
||||||
VCKE : OUT STD_LOGIC;
|
VCKE : OUT std_logic;
|
||||||
VSYNC : OUT STD_LOGIC;
|
VSYNC : OUT std_logic;
|
||||||
HSYNC : OUT STD_LOGIC;
|
HSYNC : OUT std_logic;
|
||||||
nSYNC : OUT STD_LOGIC;
|
nSYNC : OUT std_logic;
|
||||||
VIDEO_TA : OUT STD_LOGIC;
|
VIDEO_TA : OUT std_logic;
|
||||||
PIXEL_CLK : OUT STD_LOGIC;
|
PIXEL_CLK : OUT std_logic;
|
||||||
BA : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
|
BA : OUT std_logic_vector(1 DOWNTO 0);
|
||||||
VIDEO_RECONFIG : OUT STD_LOGIC;
|
VIDEO_RECONFIG : OUT std_logic;
|
||||||
VR_WR : OUT STD_LOGIC;
|
VR_WR : OUT std_logic;
|
||||||
VR_RD : OUT STD_LOGIC;
|
VR_RD : OUT std_logic;
|
||||||
VDQS : INOUT STD_LOGIC_VECTOR(3 DOWNTO 0);
|
VDQS : INOUT std_logic_vector(3 DOWNTO 0);
|
||||||
FB_AD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0);
|
FB_AD : INOUT std_logic_vector(31 DOWNTO 0);
|
||||||
VD : INOUT STD_LOGIC_VECTOR(31 DOWNTO 0)
|
VD : INOUT std_logic_vector(31 DOWNTO 0)
|
||||||
);
|
);
|
||||||
END COMPONENT;
|
END COMPONENT video;
|
||||||
BEGIN
|
BEGIN
|
||||||
nDREQ1 <= nDACK1;
|
nDREQ1 <= nDACK1;
|
||||||
|
|
||||||
|
|||||||
@@ -112,8 +112,8 @@ create_generated_clock -divide_by 2 -source i_atari_clk_pll|altpll_component|aut
|
|||||||
# Set Clock Uncertainty
|
# Set Clock Uncertainty
|
||||||
#**************************************************************
|
#**************************************************************
|
||||||
|
|
||||||
set_clock_uncertainty -rise_from [get_clocks {MAIN_CLK}] -rise_to [get_clocks {MAIN_CLK}] 0.5
|
set_clock_uncertainty -rise_from [get_clocks {MAIN_CLK}] -rise_to [get_clocks {MAIN_CLK}] 4.5
|
||||||
set_clock_uncertainty -rise_from [get_clocks {MAIN_CLK}] -fall_to [get_clocks {MAIN_CLK}] 0.5
|
set_clock_uncertainty -rise_from [get_clocks {MAIN_CLK}] -fall_to [get_clocks {MAIN_CLK}] 4.5
|
||||||
derive_clock_uncertainty
|
derive_clock_uncertainty
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
48
FPGA_Quartus_13.1/flexbus_register.vhd
Normal file
48
FPGA_Quartus_13.1/flexbus_register.vhd
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
LIBRARY ieee;
|
||||||
|
USE ieee.std_logic_1164.all;
|
||||||
|
USE ieee.numeric_std.all;
|
||||||
|
|
||||||
|
ENTITY flexbus_register IS
|
||||||
|
GENERIC
|
||||||
|
(
|
||||||
|
reg_width : integer := 11;
|
||||||
|
match_address : std_logic_vector(31 DOWNTO 0) := (OTHERS => '0');
|
||||||
|
match_mask : std_logic_vector(31 DOWNTO 0) := (OTHERS => '1');
|
||||||
|
match_fbcs : integer := 0
|
||||||
|
);
|
||||||
|
PORT
|
||||||
|
(
|
||||||
|
clk : IN std_logic;
|
||||||
|
fb_addr : IN std_logic_vector(31 DOWNTO 0);
|
||||||
|
fb_data : IN std_logic_vector(31 DOWNTO 0);
|
||||||
|
fb_cs : IN std_logic_vector(5 DOWNTO 1);
|
||||||
|
fb_wr_n : IN std_logic;
|
||||||
|
data : OUT std_logic_vector(reg_width - 1 DOWNTO 0);
|
||||||
|
cs : OUT std_logic := '0'
|
||||||
|
);
|
||||||
|
END ENTITY flexbus_register;
|
||||||
|
|
||||||
|
ARCHITECTURE rtl OF flexbus_register IS
|
||||||
|
SIGNAL fbcs_match : std_logic;
|
||||||
|
SIGNAL address_match : std_logic;
|
||||||
|
SIGNAL reg_value : std_logic_vector(reg_width - 1 DOWNTO 0) := (OTHERS => '0');
|
||||||
|
BEGIN
|
||||||
|
fbcs_match <= '1' WHEN fb_cs(match_fbcs) = '1' ELSE '0';
|
||||||
|
address_match <= '1' WHEN (fb_addr and match_mask) = (match_address and match_mask) ELSE '0';
|
||||||
|
|
||||||
|
p_register_access : PROCESS(ALL)
|
||||||
|
BEGIN
|
||||||
|
IF rising_edge(clk) THEN
|
||||||
|
IF fbcs_match = '1' and address_match = '1' THEN
|
||||||
|
cs <= '1';
|
||||||
|
IF fb_wr_n = '0' THEN -- write access
|
||||||
|
reg_value <= fb_data(reg_width - 1 DOWNTO 0);
|
||||||
|
ELSE -- read access
|
||||||
|
data <= reg_value;
|
||||||
|
END IF;
|
||||||
|
ELSE
|
||||||
|
cs <= '0';
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
END PROCESS p_register_access;
|
||||||
|
END ARCHITECTURE rtl;
|
||||||
Reference in New Issue
Block a user