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

 
 
 
Reply to this topicStart new topic
> глюк в автомате
_Anatoliy
сообщение May 5 2016, 14:33
Сообщение #1


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Прямо первый раз у меня такое...
Код
    
    case state is
                 .........    
                 when 3 =>
            if (iData = x"ff") then
                cmp_adr2 <= cmp_adr2+1;
            else
                cmp_adr2 <= cmp_adr2+16;
            end if;
            state <= state+1;
        when 4 =>
            if (iData = x"ff") then
                cmp_adr2 <= cmp_adr2+1;
            else
                cmp_adr2 <= cmp_adr2+16;
            end if;
            state <= state+1;
        when 5 =>
                ...........


Есть компаратор MAC-адреса протокола ARP, ведёт себя неадекватно(см.картинку).Счётчик должен увеличивать значение на единичку,но почему-то первый раз прибавляется 16. Естественно есть констрейны, слэк сетапа +1,2нс, слэк холда +0,8нс... Есть ли какие мысли,коллеги?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение May 5 2016, 15:28
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



я бы расковырял Technology mapper и посмотрел что он нагенерировал. Потом бы уже разбирался почему.


--------------------
Go to the top of the page
 
+Quote Post
FakeDevice
сообщение May 5 2016, 16:14
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 31-10-14
Из: Воронеж
Пользователь №: 83 452



а целиком весь процесс можете показать? можно и в ПМ, я никому больше не покажу, честное слово.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 5 2016, 16:34
Сообщение #4


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(des00 @ May 5 2016, 18:28) *
я бы расковырял Technology mapper и посмотрел что он нагенерировал. Потом бы уже разбирался почему.

Спасибо,завтра гляну. Хотя что бы он там не нагенерировал, STA обязан был отследить все пакости. Если STA не верить то как жить?
Go to the top of the page
 
+Quote Post
novartis
сообщение May 5 2016, 17:09
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



А "when others =>" для "case state " у вас имеется? Даже если перебрали все значения, его нужно добавить.
И state <=state + 1; я бы заменил на константные значения, как то ловил на этом перескоки.
Go to the top of the page
 
+Quote Post
Inanity
сообщение May 5 2016, 17:23
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 221
Регистрация: 6-07-12
Пользователь №: 72 653



Здравствуйте.

Не знаю систему в целом, буду исходить из того, что вижу. Если iData - внешняя шина, т.е. заходит в ПЛИС по какому-то синхронному интерфейсу и обрабатывается вашим автоматом по тому же тактовому сигналу, то в этому случае возможно не все биты iData успевают дойти до компаратора. По сути нарушается OFFSET IN. Необходимо дополнительно защёлкивать шину iData, прежде, чем отправлять на компаратор. Желательно защёлки запаковать в IOB (буферы вход\выход), чтобы не заботиться об OFFSET IN/OUT.

Есть ещё вариант, что iData приходит из другого домена. В этом случае синхронизацию нужно делать тоже очень аккуратно, поскольку простой синхронизатор из триггеров опять не может гарантировать, что все биты шины защёлкнутся одновременно. Нужен некий строб разрешения, валидности.

Сообщение отредактировал Inanity - May 5 2016, 17:30
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 5 2016, 17:32
Сообщение #7


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(novartis @ May 5 2016, 20:09) *
А "when others =>" для "case state " у вас имеется? Даже если перебрали все значения, его нужно добавить.
И state <=state + 1; я бы заменил на константные значения, как то ловил на этом перескоки.

Имеется. Перескоков нет,видно на картинке.
Go to the top of the page
 
+Quote Post
des00
сообщение May 5 2016, 17:35
Сообщение #8


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Inanity @ May 6 2016, 00:23) *
Если iData - внешняя шина, т.е. заходит в ПЛИС по какому-то синхронному интерфейсу и обрабатывается вашим автоматом по тому же тактовому сигналу, то в этому случае возможно не все биты iData успевают дойти до компаратора.

ИМХО регистры ТС перетактировал. воробей стрелянный sm.gif

Цитата(_Anatoliy @ May 5 2016, 23:34) *
Спасибо,завтра гляну. Хотя что бы он там не нагенерировал, STA обязан был отследить все пакости. Если STA не верить то как жить?

Не факт что STA тут причем. Мне порой квартус проекты разваливает, причем совершенно не объяснимым образом (удаляются задержки, регистры скачут по слоям логики, хотя ретайминг запрещен и т.д.) . Лечиться удалением increment_db/db и пересборкой. Правда это занимает до пары часов sad.gif


--------------------
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 5 2016, 17:41
Сообщение #9


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(Inanity @ May 5 2016, 20:23) *

Защёлка на входе есть,input delay здесь ни причём. И домен всего один. Я пока не могу придумать логичного объяснения этого феномена.
Go to the top of the page
 
+Quote Post
FakeDevice
сообщение May 5 2016, 18:16
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 81
Регистрация: 31-10-14
Из: Воронеж
Пользователь №: 83 452



Гадать можно долго и безрезультатно. Нужно как минимум процесс целиком видеть. Достаточно ведь ниже по тексту еще раз переприсвоить сигналу другое значение (в vhdl только последнее присвоение имеет силу). Но это первое, что на уме.
Опять же, iData -- это переменная или сигнал? Тоже зависит, запросто можно "додумать" ситуацию, если не видно, что по краям отрезка кода находится. Список чувствительности. Много чего можно навыдумывать в одном только синтаксисе языка.

Сообщение отредактировал FakeDevice - May 5 2016, 18:18
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение May 6 2016, 08:18
Сообщение #11


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(des00 @ May 5 2016, 20:35) *
ИМХО регистры ТС перетактировал. воробей стрелянный sm.gif

Это таки да. Свой первый триггер я собирал на тиратронах - транзисторов ещё не было. И тем не менее это не помешало мне оказаться в лыжах на асфальте. Угадал Inanity, я ему отвечал из дома по памяти. Вывод : больше двух проектов одновременно в моей старой голове уже не помещается laughing.gif

Цитата(FakeDevice @ May 5 2016, 19:14) *
а целиком весь процесс можете показать?

Отправил в личку. Поддерживаются ARP,ICMP,UDP протоколы.
Go to the top of the page
 
+Quote Post

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

 


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


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