inited signal added to cpld

This commit is contained in:
freitz85 2017-08-27 12:21:26 +02:00
parent f3751b90fb
commit 19632c05dc
3 changed files with 2239 additions and 571 deletions

1
.gitignore vendored
View File

@ -160,7 +160,6 @@ VHDL/appleiisd_html*
VHDL/*.vhf VHDL/*.vhf
VHDL/*.dhp VHDL/*.dhp
VHDL/*.gyd VHDL/*.gyd
VHDL/*.jed
VHDL/*.mfd VHDL/*.mfd
VHDL/*.pnx VHDL/*.pnx
VHDL/*.rpt VHDL/*.rpt

View File

@ -46,35 +46,35 @@ use AddressDecoder.ALL;
--use UNISIM.VComponents.all; --use UNISIM.VComponents.all;
entity AppleIISd is entity AppleIISd is
Port ( data : inout STD_LOGIC_VECTOR (7 downto 0); Port ( data : inout STD_LOGIC_VECTOR (7 downto 0);
nrw : in STD_LOGIC; nrw : in STD_LOGIC;
nirq : out STD_LOGIC; nirq : out STD_LOGIC;
nreset : in STD_LOGIC; nreset : in STD_LOGIC;
addr : in STD_LOGIC_VECTOR (1 downto 0); addr : in STD_LOGIC_VECTOR (1 downto 0);
nphi2 : in STD_LOGIC; nphi2 : in STD_LOGIC;
ndev_sel : in STD_LOGIC; ndev_sel : in STD_LOGIC;
extclk : in STD_LOGIC; extclk : in STD_LOGIC;
spi_miso: in std_logic; spi_miso: in std_logic;
spi_mosi : out STD_LOGIC; spi_mosi : out STD_LOGIC;
spi_sclk : out STD_LOGIC; spi_sclk : out STD_LOGIC;
spi_Nsel : out STD_LOGIC; spi_Nsel : out STD_LOGIC;
wp : in STD_LOGIC; wp : in STD_LOGIC;
card : in STD_LOGIC; card : in STD_LOGIC;
led : out STD_LOGIC; led : out STD_LOGIC;
a8 : in std_logic; a8 : in std_logic;
a9 : in std_logic; a9 : in std_logic;
a10 : in std_logic; a10 : in std_logic;
nio_sel : in std_logic; nio_sel : in std_logic;
nio_stb : in std_logic; nio_stb : in std_logic;
b8 : out std_logic; b8 : out std_logic;
b9 : out std_logic; b9 : out std_logic;
b10 : out std_logic; b10 : out std_logic;
noe : out std_logic; noe : out std_logic;
ng : out std_logic ng : out std_logic
); );
constant DIV_WIDTH : integer := 3; constant DIV_WIDTH : integer := 3;
end AppleIISd; end AppleIISd;
@ -97,6 +97,7 @@ architecture Behavioral of AppleIISd is
signal spidatain: std_logic_vector (7 downto 0); signal spidatain: std_logic_vector (7 downto 0);
signal spidataout: std_logic_vector (7 downto 0); signal spidataout: std_logic_vector (7 downto 0);
signal spiint: std_logic; -- spi interrupt state signal spiint: std_logic; -- spi interrupt state
signal inited: std_logic; -- card initialized
-- spi register flags -- spi register flags
signal tc: std_logic; -- transmission complete; cleared on spi data read signal tc: std_logic; -- transmission complete; cleared on spi data read
@ -133,7 +134,7 @@ architecture Behavioral of AppleIISd is
A9 : in std_logic; A9 : in std_logic;
A10 : in std_logic; A10 : in std_logic;
CLK : in std_logic; CLK : in std_logic;
NDEV_SEL : in std_logic; NDEV_SEL : in std_logic;
NIO_SEL : in std_logic; NIO_SEL : in std_logic;
NIO_STB : in std_logic; NIO_STB : in std_logic;
B8 : out std_logic; B8 : out std_logic;
@ -324,7 +325,7 @@ begin
-- cpu read -- cpu read
cpu_read: process (is_read, addr, cpu_read: process (is_read, addr,
spidatain, tc, ier, bsy, frx, tmo, ece, cpol, cpha, divisor, spidatain, tc, ier, bsy, frx, tmo, ece, cpol, cpha, divisor,
slavesel, slaveinten, wp, card) slavesel, slaveinten, wp, card, inited)
begin begin
if (is_read = '1') then if (is_read = '1') then
case addr is case addr is
@ -348,7 +349,7 @@ begin
int_dout(4) <= slaveinten; int_dout(4) <= slaveinten;
int_dout(5) <= wp; int_dout(5) <= wp;
int_dout(6) <= card; int_dout(6) <= card;
int_dout(7) <= '0'; int_dout(7) <= inited;
when others => when others =>
int_dout <= (others => '0'); int_dout <= (others => '0');
end case; end case;
@ -358,7 +359,7 @@ begin
end process; end process;
-- cpu write -- cpu write
cpu_write: process(reset, selected, nrw, addr, int_din) cpu_write: process(reset, selected, nrw, addr, int_din, inited)
begin begin
if (reset = '1') then if (reset = '1') then
cpha <= '0'; cpha <= '0';
@ -369,6 +370,7 @@ begin
ier <= '0'; ier <= '0';
slavesel <= '1'; slavesel <= '1';
slaveinten <= '0'; slaveinten <= '0';
inited <= '0';
divisor <= (others => '0'); divisor <= (others => '0');
elsif (falling_edge(selected) and nrw = '0') then elsif (falling_edge(selected) and nrw = '0') then
--elsif (falling_edge(cpu_phi2) and selected='1' and nrw='0') then --elsif (falling_edge(cpu_phi2) and selected='1' and nrw='0') then
@ -389,6 +391,7 @@ begin
when "11" => -- write slave select / slave interrupt enable when "11" => -- write slave select / slave interrupt enable
slavesel <= int_din(0); slavesel <= int_din(0);
slaveinten <= int_din(4); slaveinten <= int_din(4);
inited <= int_din(7);
when others => when others =>
end case; end case;
end if; end if;

1666
VHDL/appleiisd.jed Normal file

File diff suppressed because it is too large Load Diff