Ю. Хапочкин Суета вокруг RESETa. Или ответ на незаданные вопросыОт РедакцииВскоре после выхода из печати "Chip News" ╧ 1 в редакцию пришло письмо. Здравствуйте редакция, прочитал статью ╚Технический минимум пользователя САПР MAX+PLUS II╩ в ╧ 1 за 2001 год, и у меня возникло недоумение. Фактические ошибки:
Соответственно, вызывает большие сомнения квалификация автора, допускающего столь грубые ошибки. А также падает престиж вашего, весьма уважаемого мною, журнала. Думаю, стоило бы в одном из последующих номеров опубликовать "уточнения" к данной статье. Так как наверняка не я один заметил подобное несоответствие. С уважением, Юрий Хапочкин. Понимая, что сугубо специальные ошибки или неточности, которые действительно встречаются в присылаемых материалах, нам никогда полностью не "выловить", мы решили обратиться за комментариями к автору статьи. Однако, пока мы ожидали ответ, пришло ещ╦ одно письмо. Уважаемая редакция. Уверен, что Вы уже получили подобные письма, тем не менее считаю своим долгом написать Вам, а не звонить тов. Лобанову. Причина следующая. В журнале CHIP NEWS #1 2001 в статье тов. Лобанова "Технический минимум пользователя САПР MAX+plus II" содержится неверная информация об указанном пакете. Цитирую: "Симулятор и в данном случае подтвердил промашку фирмы. После анализа огрехов фирмы ALTERA был найден способ автоматического решения проблемы. Это фундаментальная ошибка, поскольку она не позволяет использовать формальный синтез МПА". Мой опыт работы с MAX+plus II - две недели. Однако такой ошибки в MAX-е я не наш╦л (что, конечно, не означает е╦ отсутствие). Однако я сразу наш╦л ошибку тов. Лобанова. Состоит она в том, что активным уровнем сброса является высокой уровень, а не низкий, как указано на диаграммах. Если сигнал сброса задать правильно, то и автомат заработает как надо. Не исключаю, что тов. Лобанов об этом знает, и его "ошибку" просто "заказали". Если же я не прав, и он в самом деле ошибся, то прежде чем извергать патриотизм, гнать пену и стебаться над чужой продукцией, стоит проверить в первую очередь себя. И несколько раз проверить себя перед тем, как дать информацию в журнал. С уважением, Киселев И.В. И вот приш╦л долгожданный ответ автора, который мы тут же переадресовали читателям. Автор выражает читателям глубокую признательность за внимательное прочтение своей статьи ("Chip News", ╧ 1, 2001 г., с. 56√58). Отвечая на письма, выскажу следующие соображения.
С уважением, В.И. Лобанов Результатом явились личная встреча одного из авторов писем с автором статьи и коментарий, который мы приводим ниже. Данная заметка является попыткой разобраться, насколько правомерны заявления в статье В. Лобанова "Технический минимум пользователя САПР MAX+PLUS II" в журнале "Chip News" ╧ 1 за 2001 год (в дальнейшем "статья"). В статье утверждается, что САПР "MAX+PLUS II" неправильно моделирует работу конечных автоматов, и привед╦н пример "неправильного" моделирования. Поскольку столь серь╦зные ошибки в САПР могут привести к большим потерям времени инженера-разработчика, стоит внимательно проанализировать этот пример и попытаться понять, кто ошибается - САПР или автор статьи. Как показал мой опыт проектирования самых разнообразных устройств, когда программа работает неправильно, не надо торопиться искать ошибки в компиляторе. Сначала стоит внимательно проверить текст программы, прочитать ещ╦ раз описание компилятора, обратиться к справочной системе, не один раз подумать и только в самую последнюю очередь грешить на компилятор. На рис. 1 привед╦н исходный текст программы на языке AHDL из комплекта поставки САПР, рассматриваемый в статье. Рисунок 1. Исходный текст программы на языке AHDL из комплекта поставки САПР.
Данная программа состоит из конечного автомата "ss", вспомогательной переменной "zd" и D-триггера. Согласно правилам AHDL, сигнал "reset" не инвертируется. Рассмотрим, каким должно быть поведение данной программы при входном сигнале "reset" = "1". В соответствии со строками reset : INPUT; конечный автомат "ss" при активном "reset" должен находиться в состоянии "s0". Согласно таблице состояний, если автомат "ss" находится в состоянии "s0", значение промежуточной переменной "zd" будет асинхронно совпадать с состоянием входной переменной "y", независимо от состояния сигнала "clk", то есть несмотря на то, что состояние конечного автомата неизменно, промежуточная переменная "zd" будет изменяться. После прохождения сигнала через D-триггер, в соответствии со строкой z = DFF(zd, clk, VCC, VCC); состояние выхода "z" будет равно значению "zd", синхронизированному с фронтом сигнала CLK. При запуске симулятора мы получим временные диаграммы. Именно такими они и должны быть, прич╦м в полном соответствии из статьи. Несмотря на то, что на схему подан активный сигнал "reset" и конечный автомат постоянно находится в состоянии "s0", выход схемы будет зависеть от входного сигнала "y", что, возможно, и послужило поводом для "обнаружения ошибки" в статье. Для того, чтобы проверить работу конечного автомата, естественно, надо установить входной сигнал "reset" = "0", то есть в неактивное состояние. Запустив симулятор, получим результаты моделирования работы конечного автомата. Опять же, в полном соответствии с результатами ручного моделирования и статьи, с точностью до значения сигнала "reset". По-видимому, при ручном моделировании поведения програмы в статье использовался правильный алгоритм работы, но с инвертированным сигналом "reset" с активным "0" (что не соответствует исходному тексту). Стоит заметить, что в зависимости от выбранного семейства ПЛИС и опции "One-Shot State Machine Encoding", конечный автомат может быть реализован как на двух триггерах с состояниями "00", "01", "10", "11", так и на четыр╦х с состояниями "1000", "0100", "0010", "0001". Для полноты картины на рис. 4 приведена схемная интерпретация этой программы. Здесть SSi обозначает вход таблицы (current state), SSo - выход (next state). Таким образом, можно сделать вывод, что симулятор корректно моделирует работу конечного автомата в данном примере, на рисунках статьи приведены правильные результаты, однако их интерпретация была неверна. В результате, как и ожидалось, проблема не в САПР, а в недостаточно внимательном изучении текста примера или документации на САПР. P.S. Обещание В.И. Лобанова о "ликбезе" по формальному синтезу цифровых автоматов оста╦тся в силе. |
Ваш комментарий к статье | ||||