Перейти к содержанию
    

декодер шины ISA

Вот нарыл в инете примерчик(не помню где именно)

 
-- 8-bit PC ISA Parallel I/O Port Design (VHDL Based)
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY ioport IS

    PORT
-- ISA Bus Signals
    (    AEN,IOR,IOW        : IN    STD_LOGIC;
        ADDRESS            : IN    STD_LOGIC_VECTOR(9 DOWNTO 0);
        DATA            : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
-- Output Address Decoder output signal for use in simulations
        PORT_IO_DECODE_OUT : OUT STD_LOGIC;
-- 8-bit Parallel Input port data from external device
        PORT_DATA_IN    : IN     STD_LOGIC_VECTOR(7 DOWNTO 0);
-- 8-bit Parallel Output port data to external device
        PORT_DATA_OUT    : OUT     STD_LOGIC_VECTOR(7 DOWNTO 0));
    
END ioport;
ARCHITECTURE a OF ioport IS
SIGNAL PORT_IO_DECODE : STD_LOGIC;
BEGIN
-- Address Decoder for 0x3E0 
-- PC uses 10 low bits of ISA address bus for an I/O address)
-- AEN='0' needed to make sure it does not respond to a DMA bus cycle
    PORT_IO_DECODE <= '1' WHEN ADDRESS = B"1111100000" AND AEN='0' ELSE '0';
    PORT_IO_DECODE_OUT <= PORT_IO_DECODE;
-- I/O Input Port - must use tri state buffers
        DATA <= PORT_DATA_IN WHEN (PORT_IO_DECODE = '1') AND (IOR ='0')
        ELSE "ZZZZZZZZ";
-- I/O Output Port - save data in register (DFFs)
    PROCESS
    BEGIN
-- clock on positive edge of ISA IOW
        WAIT UNTIL IOW'EVENT AND IOW='1';
-- use address decoder output for clock enable
        IF PORT_IO_DECODE = '1' THEN
-- save data on ISA data bus in register
            PORT_DATA_OUT <= DATA;
        END IF;
    END PROCESS;
END a;

Беспокоит вот эта часть

-- clock on positive edge of ISA IOW
        WAIT UNTIL IOW'EVENT AND IOW='1';

на сколько я помню,запись в порт происходит по низкому уровню сигнала IOW, т.е. по спаду фронта,или такая конструкция катируется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот нарыл в инете примерчик(не помню где именно)

 
-- 8-bit PC ISA Parallel I/O Port Design (VHDL Based)
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY ioport IS

    PORT
-- ISA Bus Signals
    (    AEN,IOR,IOW        : IN    STD_LOGIC;
        ADDRESS            : IN    STD_LOGIC_VECTOR(9 DOWNTO 0);
        DATA            : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
-- Output Address Decoder output signal for use in simulations
        PORT_IO_DECODE_OUT : OUT STD_LOGIC;
-- 8-bit Parallel Input port data from external device
        PORT_DATA_IN    : IN     STD_LOGIC_VECTOR(7 DOWNTO 0);
-- 8-bit Parallel Output port data to external device
        PORT_DATA_OUT    : OUT     STD_LOGIC_VECTOR(7 DOWNTO 0));
    
END ioport;
ARCHITECTURE a OF ioport IS
SIGNAL PORT_IO_DECODE : STD_LOGIC;
BEGIN
-- Address Decoder for 0x3E0 
-- PC uses 10 low bits of ISA address bus for an I/O address)
-- AEN='0' needed to make sure it does not respond to a DMA bus cycle
    PORT_IO_DECODE <= '1' WHEN ADDRESS = B"1111100000" AND AEN='0' ELSE '0';
    PORT_IO_DECODE_OUT <= PORT_IO_DECODE;
-- I/O Input Port - must use tri state buffers
        DATA <= PORT_DATA_IN WHEN (PORT_IO_DECODE = '1') AND (IOR ='0')
        ELSE "ZZZZZZZZ";
-- I/O Output Port - save data in register (DFFs)
    PROCESS
    BEGIN
-- clock on positive edge of ISA IOW
        WAIT UNTIL IOW'EVENT AND IOW='1';
-- use address decoder output for clock enable
        IF PORT_IO_DECODE = '1' THEN
-- save data on ISA data bus in register
            PORT_DATA_OUT <= DATA;
        END IF;
    END PROCESS;
END a;

Беспокоит вот эта часть

-- clock on positive edge of ISA IOW
        WAIT UNTIL IOW'EVENT AND IOW='1';

на сколько я помню,запись в порт происходит по низкому уровню сигнала IOW, т.е. по спаду фронта,или такая конструкция катируется?

 

 

Запись происходит по нарастающему фронту IOW, т.е. здесь написано правильно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запись происходит по нарастающему фронту IOW, т.е. здесь написано правильно

 

Адрес действительный по спаду IOW, данные по подъему.

 

Если в системе присутствует PCI шина то декодирование адреса лучше сделать полным 16 бит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...