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

 
 
> inout шины в Verilog, для MAX+plus II
Волощенко
сообщение Jun 8 2007, 08:29
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 347
Регистрация: 16-02-06
Из: г.Николаев, Украина
Пользователь №: 14 377



Привет всем!
Есть двунаправленная шина ввода-вывода для FPGA типа FLEX10KA, с декларацией на Verilog как:
inout [31:0] IO;
MAX+plus II запретил применить следующую запись (выдача DATA единицей на OE):
assign IO = OE ? DATA : {32{1'bz}};
а вместо неё рекомендовал применить примитив TRI (с тремя состояниями) или OPNDRN (открытый коллектор).
Тогда, следуя рекомендациям, и используя TRI, получил:
TRI aaa(DATA, OE, IO);
Однако, на выходах IO почему-то всегда нули, хотя код на DATA есть, что проверил контрольным считыванием по центру сигнала OE (его длительность 30нс), во вспомогательные регистры R1 и R2:
always @ (posedge CLK) R1<=DATA;
always @ (posedge CLK) R2<=IO;

Аналогичная ситуация с использованием OPNDRN, с конструкцией:
assign DATAx = OE ? DATA : {32{1'b1}};
OPNDRN bbb(DATAx, IO);
При этом была установлена опция "Automatic Open-Drain Pins"

Вопрос: Кто сталкивался с подобным, почему так происходит, почему не выдается информация в шину?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sazh
сообщение Jun 11 2007, 13:45
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



У меня такое ощущение, что я вас окончательно запутал. Нет никакой разницы, каким образом вы описываете проект, в графике или текстом. Как я понял FPGA сидит на шине PCI. Озу сидит на локальной шине, сформированной в FPGA. Ну какие тут могут быть пробемы. перенос описания шины взаимодействия ОЗУ с FPGA (это двунаправленный порт и буфер по третьему состоянию) из вашего сима на верхний уровень иерархии может говорить только о том, что на локальной шине вместе с ОЗУ еще кто то сидит. При таком раскладе управление шиной делают на верхнем уровне проекта.
Еще раз повторю. Синтезатор ничего никому не запрещает. Он может что то выкинуть, если считает, что это что то не имеет смысла (ведь у Вас по умолчанию включена оптимизация проекта). или указать, что чего то не хватает. И тоже скажет об этом.
Не надо вам думать о том как переходить от одного буфера к другому. Все опции в синтезаторе имеют совсем другой смысл.
Итак у вас есть память на которой присутствуют состояния 0,1,Z. Вы описываете как общепринято. Если что то не получилось это Ваша ошибка. потому что синтезатор не ошибается.
(Что касается Я изменял опцию Assign-> Global Project Logic Synthesis -> Automatic Open-Drain Pins, но это ничего не меняло. При Вашем описании шины и не должно было что то меняться. Еще раз повторю. Это опция относиться только к пинам, которые Вы хотите описать как пин с открытым стоком. Такое описание автоматом будет реализоваться на примитиве открытого стока. А если такой примитив нельзя реализовать в кристалле, он будет имтитроваться на притиве tri. И все равно Вы получите открытый сток. )
В Вашем случае нет описания открытого стока . Значит и физически его не будет. Нет смысла что то смотреть осциллографом. (Кстати все эти Ваши нули при исследовании вполне могут оказаться Z состоянием. У МОП структур этот уровень ближе к нулю и отличен от уровней ТТЛ структур.)
Все это должно моделироваться. А результаты моделирования получите в железе однозначно. Нет понятия старая микросхема. И пакет MAX+ тоже не причем. Все проходили pci шину в MAX+
Go to the top of the page
 
+Quote Post



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

 


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


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