Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблема с двунаправленной шиной
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Faton_11
Добрый вечер!
Использую альтеровский примитив двунаправленной шины, смысл которого вот в чем:
Код
//Input Ports Declaration
input i;
input oe;
//Output Ports Declaration
output o;
inout io;

//IMPLEMENTATION BEGIN
assign o = io;
assign io = (oe == 1'b1) ? i : 1'bz;


Анализатор Signal Tap, встроенный в квартус, выдает такую картинку:
Нажмите для просмотра прикрепленного файла

На i и o видим разное. И действительно, данные, которые на i и o совпали, в ПЛИС правильно записываются. Которые не совпали - записываются в 3-м варианте. В чем может быть причина?
krux
Цитата
assign io = ...

io - это у вас нога ПЛИС или что-то ещё?

Цитата
данные, которые на i и o совпали, в ПЛИС правильно записываются. Которые не совпали - записываются в 3-м варианте. В чем может быть причина?

что подаете на oe?
каким клоком защёлкиваете данные, получаемые с o? и какой клок используете для тактирования сигналтапа?

зы. сигналтап - инвазивный инструмент, и способен вносить существенные изменения в наблюдаемые сигналы, если использовать его без осознания того, какие коррективы он способен привнести.
короче, это не осцил ;-)
Faton_11
io - это шина данных SRAMa. На oe подаю единицу, если хочу записать в шину.

И то, и другое клоком 24 MHz.

С коррективами сигнал тапа уже пришлось столкнуться. Но если на диаграмме в сигнал тапе получу что надо, то и в железке все нормально будет. Вот новая картинка, кстати
Нажмите для просмотра прикрепленного файла
На ней проблема видна с новыми подробностями, мне ни о чем не говорящими
Faton_11
Теперь на диаграмме все хорошо, но в реальности данные все же записываются не правильно
Stewart Little
По фрагменту Вашего исходника, увы, ничего не понятно.
Сделайте вот так: http://www.altera.com/support/examples/ver...er_bidirec.html
Faton_11
Урра! Стал записывать, спасибо! =)

Можно ещё посоветоваться на счет буфера. Использую мегафункцию, в настройках выбираю вместимость 128 слов.

Код
module FIFO (
    clock,
    data,
    rdreq,// ставим в 1, если читаем из фифо
    wrreq,// ставим в 1 если пишем в фифо
    empty,// буфер пуст
    full, //буфер заполнен
    q,// выход буфера
    usedw);


Если 128 слов, значит 256 байт можно в него записать. Посылаю 256 данных (числа от 1 до 256), однако после 128 вижу, что буфер заполнился (full=1). На выходе буфера могу видеть числа от 1 до 128

Делаю сброс и снова посылаю эти же данные, но вижу что в буфер записался остаток от прошлой отправки - числа от 128 до 256.

Значит, вместимость буфера все же 256 байт? Тогда почему сигнал "full" выставляется после 128?

Или это особенность Сom Port Toolkit, через который я отправляю?

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.