|
pci интерфейс по шагам |
|
|
|
Aug 30 2011, 18:59
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Возникла необходимость изучить интерфейс pci и vhdl, прочитал спецификацию несколько раз, набрал исходников, но логические цепочки в моем мозгу не собираются. Информации много не знай с чего начать. Одна голова хорошо а много лучше, пословица старая и мудрая. Прошу помочь в этом деле, если тема пойдет может будет еще кому полезна решившего освоить pci. Цель сделать счетчик 64 разряда, интерфейс pci target 32 бита,плата с spartan3e есть, выведенные пины ad0-32;c/be0-3;par;serr;perr;stop;devsel;trdy;irdy;frame;idsel;req;gnt;clk;rst;inta устройство должно считать импульсы на входе плис по переднему фронту, а программа через драйвер должна читать и обнулить это значение. Прошу просто руководить банкетом по шагам  буду делать как скажите и выкладывать код. Первые шаги сделал, установил xilinx ISE настроил кабель связь есть, прочитал несколько раз спецификацию  , создал проект и добавил VHDL module в нем описал интерфейс Код library IEEE; use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; --******************************************************************************* entity PciInterf is port ( RST : in std_logic; -- Reset CLK : in std_logic; -- Clock AD : inout std_logic_vector(31 downto 0); -- Address/Data Bus CBE : in std_logic_vector(3 downto 0); -- Command/Byte Enable PAR : inout std_logic; -- Parity FRAME : in std_logic; -- Transaction Frame IRDY : in std_logic; -- Initiator Ready TRDY : inout std_logic; -- Target Ready DEVSEL : inout std_logic; -- Device Select STOP : inout std_logic; -- Stop transaction IDSEL : in std_logic; -- Chip Select PERR : inout std_logic; -- Parity Error (s/t/s) SERR : inout std_logic; -- System Error (o/d) INTA : inout std_logic; -- Interrupt pin (o/d) COUNTPIN : in std_logic --
); end PciInterf; --******************************************************************************* architecture Behavioral of PciInterf is
begin
end Behavioral; --******************************************************************************* В ucf файле связал интерфейс с пинам на микросхеме Код NET "AD<0>" LOC = "P50" | IOSTANDARD = PCI33_3; NET "AD<10>" LOC = "P34" | IOSTANDARD = PCI33_3; NET "AD<11>" LOC = "P33" | IOSTANDARD = PCI33_3; NET "AD<12>" LOC = "P31" | IOSTANDARD = PCI33_3; NET "AD<13>" LOC = "P30" | IOSTANDARD = PCI33_3; NET "AD<14>" LOC = "P29" | IOSTANDARD = PCI33_3; NET "AD<15>" LOC = "P28" | IOSTANDARD = PCI33_3; NET "AD<16>" LOC = "P25" | IOSTANDARD = PCI33_3; NET "AD<17>" LOC = "P24" | IOSTANDARD = PCI33_3; NET "AD<18>" LOC = "P23" | IOSTANDARD = PCI33_3; NET "AD<19>" LOC = "P22" | IOSTANDARD = PCI33_3; NET "AD<1>" LOC = "P49" | IOSTANDARD = PCI33_3; NET "AD<20>" LOC = "P19" | IOSTANDARD = PCI33_3; NET "AD<21>" LOC = "P18" | IOSTANDARD = PCI33_3; NET "AD<22>" LOC = "P16" | IOSTANDARD = PCI33_3; NET "AD<23>" LOC = "P15" | IOSTANDARD = PCI33_3; NET "AD<24>" LOC = "P12" | IOSTANDARD = PCI33_3; NET "AD<25>" LOC = "P11" | IOSTANDARD = PCI33_3; NET "AD<26>" LOC = "P9" | IOSTANDARD = PCI33_3; NET "AD<27>" LOC = "P8" | IOSTANDARD = PCI33_3; NET "AD<28>" LOC = "P5" | IOSTANDARD = PCI33_3; NET "AD<29>" LOC = "P4" | IOSTANDARD = PCI33_3; NET "AD<2>" LOC = "P48" | IOSTANDARD = PCI33_3; NET "AD<30>" LOC = "P3" | IOSTANDARD = PCI33_3; NET "AD<31>" LOC = "P2" | IOSTANDARD = PCI33_3; NET "AD<3>" LOC = "P47" | IOSTANDARD = PCI33_3; NET "AD<4>" LOC = "P42" | IOSTANDARD = PCI33_3; NET "AD<5>" LOC = "P41" | IOSTANDARD = PCI33_3; NET "AD<6>" LOC = "P40" | IOSTANDARD = PCI33_3; NET "AD<7>" LOC = "P39" | IOSTANDARD = PCI33_3; NET "AD<8>" LOC = "P36" | IOSTANDARD = PCI33_3; NET "AD<9>" LOC = "P35" | IOSTANDARD = PCI33_3;
NET "CBE<0>" LOC = "P60" | IOSTANDARD = PCI33_3; NET "CBE<1>" LOC = "P62" | IOSTANDARD = PCI33_3; NET "CBE<2>" LOC = "P202" | IOSTANDARD = PCI33_3; NET "CBE<3>" LOC = "P199" | IOSTANDARD = PCI33_3;
NET "CLK" LOC = "P186" | IOSTANDARD = PCI33_3; NET "DEVSEL" LOC = "P68" | IOSTANDARD = PCI33_3; NET "FRAME" LOC = "P203" | IOSTANDARD = PCI33_3; NET "IDSEL" LOC = "P14" | IOSTANDARD = PCI33_3; NET "INTA" LOC = "P193" | IOSTANDARD = PCI33_3; NET "IRDY" LOC = "P200" | IOSTANDARD = PCI33_3;
NET "PAR" LOC = "P45" | IOSTANDARD = PCI33_3; NET "PERR" LOC = "P64" | IOSTANDARD = PCI33_3; NET "RST" LOC = "P194" | IOSTANDARD = PCI33_3; NET "SERR" LOC = "P63" | IOSTANDARD = PCI33_3; NET "STOP" LOC = "P65" | IOSTANDARD = PCI33_3; NET "TRDY" LOC = "P205" | IOSTANDARD = PCI33_3;
NET "COUNTPIN" LOC = "P20" | IOSTANDARD = PCI33_3; Что дальше сделать подскажите ?
Сообщение отредактировал sergey sva - Aug 30 2011, 19:04
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 14)
|
Aug 31 2011, 06:26
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Цитата Я когда то писал PCI Target, но он так и остался недоотлаженным, увы. (На Verlog'е). Могу поделится, если надо (~1000 строк Verilog'а) Буду очень благодарен asv-lab@yandex.ru Цитата сигналы управления от него выведите на PCI. Лучше, видимо, для этого придумать некий регистр управления, который будет доступен со стороны PCI. Добавить в интерфейс CVALUE ? Код entity PciInterf is port ( RST : in std_logic; -- Reset CLK : in std_logic; -- Clock AD : inout std_logic_vector(31 downto 0); -- Address/Data Bus CBE : in std_logic_vector(3 downto 0); -- Command/Byte Enable PAR : inout std_logic; -- Parity FRAME : in std_logic; -- Transaction Frame IRDY : in std_logic; -- Initiator Ready TRDY : inout std_logic; -- Target Ready DEVSEL : inout std_logic; -- Device Select STOP : inout std_logic; -- Stop transaction IDSEL : in std_logic; -- Chip Select PERR : inout std_logic; -- Parity Error (s/t/s) SERR : inout std_logic; -- System Error (o/d) INTA : inout std_logic; -- Interrupt pin (o/d)
CVALUE : out std_logic_vector(7 downto 0); -- value of counter Простенький счетчик может конечно что не так, поправьте Код --******************************************************************* entity Counter is port ( RESET, COUNTPIN : in std_logic; CVALUE : out std_logic_vector(7 downto 0) ); end Counter; --******************************************************************* architecture beh of Counter is signal COUNT_VALUE : std_logic_vector(7 downto 0); begin process(RESET,COUNTPIN) begin if(RESET = '1')then COUNT_VALUE <= 0; else if(COUNTPIN'event and COUNTPIN = '1') then COUNT_VALUE <= COUNT_VALUE +1; end if;
end CVALUE <= COUNT_VALUE; end beh; --*******************************************************************
Сообщение отредактировал sergey sva - Aug 31 2011, 06:40
|
|
|
|
|
Aug 31 2011, 06:36
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(sergey sva @ Aug 30 2011, 22:59)  Возникла необходимость изучить интерфейс pci и vhdl, прочитал спецификацию несколько раз, набрал исходников, но логические цепочки в моем мозгу не собираются. Информации много не знай с чего начать. ... Что дальше сделать подскажите ? Сергей, Вы уж извините, но что за детский сад Вы здесь развели! Вам надо изучить что-то и Вы готовы всю конференцию превратить в собственную няньку. Сейчас не конец 90-х. Литературы, даже на русском полно. Читайте про интерфейсы у Гука. В каждой третьей книге именно PCI проект описан и разжеван.. Открытых проектов - полно. Посмотритте сначала их, а уже потом заводите игры в конференции. А уж про счетчик так и вовсе писать стыдно! И в Ксайлинсовском ИСЕ и в Квартусе и в Моделсиме есть шаблоны. И шаблоны счетчиков в том числе. И вообще, на кой он Вам дался, счетчик. Сделайте просто константу и читайте ее через PCI.
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Aug 31 2011, 06:50
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Можно миллион книг прочитать и толку будет мало. Цитата А уж про счетчик так и вовсе писать стыдно! Где стыд был теперь микросхема )) iosifk ,посмотрел вашу страничку, вам приходилось разрабатывать устройства с pci, просто вам показался вопрос слишком простыми и поэтому тема вызвала такую реакцию.
Сообщение отредактировал sergey sva - Aug 31 2011, 07:46
|
|
|
|
|
Aug 31 2011, 08:32
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(sergey sva @ Aug 31 2011, 10:50)  Можно миллион книг прочитать и толку будет мало. А вот это - не правда. Что же, все авторы идиоты? Пытался загрузить PCI System Arhitecture by don andersen. Но это 7 Мег, многовато... И еще "Сергей Петров, PCI, PCI express. Архитектура, дизайн, принципы функционирования"... Я то вообще делал свой проект, когда не то что книг, а даже стандарт в сети с трудом нашли... Так что ищите книги и смотрите AN у Альтеры и у Ксайлинкса, Актела... Приложенный файлик - это пример. Я его не проверял. Но на opencores должны быть проекты...
Прикрепленные файлы
PCI.ZIP ( 469.07 килобайт )
Кол-во скачиваний: 46
--------------------
www.iosifk.narod.ru
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|