реклама на сайте
подробности

 
 
> разработка PCI target\master CORE для SPARTAN, Проблемы с которыми сталкнулся
buggy
сообщение Jan 9 2007, 23:36
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 31-10-06
Пользователь №: 21 823



Приветствую специалистов.

Сделали мы с одногрупgником плату простого PCI контроллера (Разводка во вложенном файле в Gerber, ошибки в питании и подтяжках на ПЗУ устранены поверхностным монтажом smile.gif ) в рамках курсового. SPARTAN конфигурится и работает. Стали подымать PCI и зашили мы в неё следующее для пробы:

entity pci_interface is
port(
AD: inout std_logic_vector(31 downto 0);
CBE: in std_logic_vector(3 downto 0);
clk: in std_logic;
frame: in std_logic;
irdy: inout std_logic;
devsel, interrupt: out std_logic;
trdy: inout std_logic;
par, serr, stop, perr, req, gnt, lock: inout std_logic;
rst, idsel: in std_logic;
led1,led2,led3: out std_logic
);
end pci_interface;

architecture Behavioral of pci_interface is
signal adr_ok, read, write, cfg1, cfg2, cfg3, cfg4, cfg5,cfg6,cfg7:std_logic;

signal dout, din: std_logic_vector(31 downto 0);

signal DATA:std_logic_vector(31 downto 0);

signal state:std_logic_vector(2 downto 0);

signal cfg_reg00:std_logic_vector(31 downto 0);
signal cfg_reg04:std_logic_vector(31 downto 0);
signal cfg_reg08:std_logic_vector(31 downto 0);
signal cfg_reg10:std_logic_vector(31 downto 0);

signal reg_adress:std_logic_vector(5 downto 0);

signal answer:std_logic;


begin

--U1:
--IBUF port map (I=>rst, O=>irst);

par<='Z';
serr<='Z';
stop<='Z';
perr<='Z';
req<='Z';
gnt<='Z';
lock<='Z';
interrupt<='Z';
--led2_sig<='0';
---devsel<='Z';

process(clk)

begin

if clk'event and clk='1' then

if cfg1='1' then
state<="001";
DATA<="10011011110110111001101111011011";
end if;

if cfg2='1' then
state<="010";
DATA<="00000000000000000000000000000001";
end if;

if cfg3='1' then
state<="011";
DATA<="11111111000000000000000000000001";
end if;

if cfg4='1' then
state<="100";
DATA<="11111111111111111111111111111001";
end if;

if cfg5='1' and cfg1='0' and cfg2='0' and cfg3='0'and cfg4='0' then
state<="101";
DATA<="00000000000000000000000000000000";
end if;

if cfg6='1' or cfg7='1' then
state<="110";
write<='1';
end if;

if irdy='0' then
answer<='1';
else
answer<='0';
write<='0';
end if;

if write='1' and answer='1' then
DATA<=AD;
state<="111";
end if;
--if rst='0' then
--state<="000";
---cfg_reg00<="10011011110110111001101111011011";
--cfg_reg04<="00000000000000000000000000000001";
--cfg_reg08<="11111111000000000000000000000001";
--cfg_reg10<="11111111111111111111111111111001";
--adr_ok<='0';
--read<='0';
--write<='0';
--cfg<='0';
--else


--end if;
---end if;

--if irst'event and irst='0' then

--reset<=irst;

--end if;

---if irst'event and irst='1' then

end if;

end process;

--ad<=din when adr_ok<='1' and irdy='0' and read='1' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";

--devsel<='0' when read='1' or write='1' else 'Z';
--trdy<='0' when read='1' or write='1' else 'Z';

cfg1<='1' when idsel='1' and frame='0' and CBE="1010" and AD(7 downto 2)="000000" else '0';
cfg2<='1' when idsel='1' and frame='0' and CBE="1010" and AD(7 downto 2)="000100" else '0';
cfg3<='1' when idsel='1' and frame='0' and CBE="1010" and AD(7 downto 2)="001000" else '0';
cfg4<='1' when idsel='1' and frame='0' and CBE="1010" and AD(7 downto 2)="010000" else '0';
cfg5<='1' when idsel='1' and frame='0' and CBE="1010" else '0';
cfg6<='1' when idsel='1' and frame='0' and CBE="1011" and AD(7 downto 2)="010000" else '0';
cfg7<='1' when idsel='1' and frame='0' and CBE="1011" else '0';

devsel<='0' when answer='1' else 'Z';
trdy<='0' when answer='1' else 'Z';
AD<=DATA when answer='1' and write='0' else "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";

led1<=state(2);
led2<=state(1);
led3<=state(0);
end Behavioral;


Плата вроди бы как конфигурится, но после последней транзакции CFG_WRITE комп висит мёртво и материнка не пищит о том что в ней не стоит VGA. Мы делали разводку с расчётом на то что будем делать Master и подключили выводы ПЛИС к par, serr, stop, perr, req, gnt, lock разъема PCI. Если я на данный момент не использую эти выводы то если при конфигурации ПЛИС указать что неиспользуемые выводы оставить FLOAT они будут в состоянии 'Z'? ИЛИ сразу надо писать весь CORE целиком cranky.gif ? Не судите строго - это моя первая платаbiggrin.gif . Я наверное облажался, что не включил SPARTAN в цепь JTAG? Теперь для отладки есть только три диода (не 4 - вывод P3 теперь подключен к AD(27) -B23, проводом =)). Помогите советом, а я PCI core в GPL выложу =).
Прикрепленные файлы
Прикрепленный файл  pcb.zip ( 24.25 килобайт ) Кол-во скачиваний: 44
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BSV
сообщение Jan 10 2007, 00:11
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



1) Lock в последних версиях спецификации (начиная с 2.3 кажется) использовать не рекомендуется
2) Req после снятия сброса должен быть в '1' он свой для каждого устройства на шине.
3) Par драйвить при чтении обязательно!!!! Иначе на некоторых матерях не будет работать. Читайте спецификацию.
4) На Stop пока можно забить, но он понадобится, если нужно будет завершать транзакции по инициативе Target.
5) Есть еще один момент - сигналы STOP, TRDY, IRDY, FRAME являются s/t/s сигналами, т.е. их перед снятием 1 такт нужно в '1' подержать.

6) Есть ошибка в коде:
if irdy='0' then
answer<='1';
else
answer<='0';
write<='0';
end if;
если irdy выставляется не сразу, то write сбросится и будет конфликт на шине.
7) Обращайте особое внимание на Warning'и синтезатора - наверняка он Вам Latch'ей навставлял.

Вы бы это добро помоделировали сначала что-ли, что железо-то зря палить!!! Симулятор - это наше все!!!

Для начала реализуйте автомат Target'a, похожий на тот, что в спецификации описан и им рулите - Вам же будет легче. Все сигналы шины лучше защелкивать в регистрах блоков ввода-вывода как для входных, так и для выходных сигналов, иначе тайминги будет сложно соблюсти.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016