Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конфигурирование PCI устройства
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
Murr Von Kater
Балуюсь с отладочной платой на базе ПЛИСа. Написал от такую програмку:
Код
entity pci_test is
port(  CLK: in std_logic;
        RST_n: in std_logic;
        IDSEL: in std_logic;
        FRAME_n: in std_logic;
        CBE: in std_logic_vector(3 downto 0);
        AD8: in std_logic_vector(7 downto 0);
        AD_out: out std_logic_vector(7 downto 0));
end entity;

architecture rtl of pci_test is
signal FRAME_p: std_logic;

begin
    process(CLK, RST_n) is
        begin
            if RST_n = '0' then
                AD_out<=(others => '0');
            elsif rising_edge(CLK) then
                FRAME_p<=FRAME_n;
                if IDSEL = '1' and CBE="1010" and FRAME_p = '1' and FRAME_n = '0' then
                    AD_out<=not AD8;

                end if;
            end if;
    end process;
end architecture;


Для тех, кто не знаком с ВХДЛ объясняю - устройство сидит на шине и по фронту CLK проверяет сигналы FRAME_n, IDSEL, CBE. Если оно видит команду конфигурационного чтения (1010), обращенного к своему слоту(IDSEL в единице, FRAME_n - 0, предыдущее значение 1) то оно зажигает 8 светодиодов в соответствии со знчением первых восьми бит шины AD. При этом получается интересая вещ - первый адрес, который выставляет хост при обращении к слоту моей платы - 04h. Это меня немного удмвило. Я думал, что хост сначала опрашивает 0-й регистр конфигурационного пространства, где хранится номер вендора и девайса и, получив недопустимое значение перестает общаться с этим слотом. Но как показывает мой опыт, первый регистр, к которому идет обращение - отнюдь не первый, и пытается обратиться к плате несколько раз по разным адресам.

Если кому-то не сложно - объясните пожалуйста, как же происходит конфигурирование устройства или скажите, где это подробно описано. Заранее всем большое спасибо smile.gif
Murr Von Kater
Ошибся, первый адрес не 04h, а 0Сh.
BSV
Наверно, я Вас огорчу, если отвечу, что данные механизмы зависят от реализации BIOS и вряд ли они будут где-либо подробно описаны. Обращение по этому адресу логично, так как там лежит значение Header type. А с точки зрения последующего взаимодействия с устройством основная задача BIOS - записать в регистры базовых адресов конкретные значения и активировать нужные функции в регистре команд.
maior
Продуктивно пообщаться с PCI платой вряд-ли получится если
ранее не почитать о PCI подробнее, не реализовать какое-либо
более или менее стандартное ядро и не поисследовать его в
симуляции с хорошим тестбенчем.
makc
Цитата(maior @ Jun 9 2006, 20:17) *
Продуктивно пообщаться с PCI платой вряд-ли получится если
ранее не почитать о PCI подробнее, не реализовать какое-либо
более или менее стандартное ядро и не поисследовать его в
симуляции с хорошим тестбенчем.


Больше того, ряд современных мат. плат могут попросту отключить тактовый сигнал для слота, где по мнению BIOS'а нет активного устройства. Под активным в данном случае обычно понимается устройство с корректно реализованным пространством конфигурации.

2Murr Von Kater:

Так что если на Вашей плате не будет тактового сигнала - не удивляйтесь. Это нормально. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.