Тоновый набор

Feb 26, 2004 Last reply: 22 years ago 612 Replies

Привет, Ruslan! Вы писали для Leha Bishletov , Fri, 14 May 2004 20:30:10 +0400:

LB>> Обычная ситуация использования ТМ2 - вход сброса заведен на LB>> сигнал сброса системы на вход S подается сигнал, тактируемый LB>> какой-то частотой. При подаче сигнала сброса очень может быть, что [skip ...] LB>> не "заклинит" схему. И что, "грамотный разработчик" будет городить LB>> схему, исключающую такую ситуацию? Конкретнее, ты будешь добавлять LB>> элементы? RM> Hу, я эти элементы горожу . Делаю это для того, чтобы всегда знать, RM> что за сигналы будут на выходе, при любом сочетании входов. Это RM> позволяет избежать гонок и иголок в схеме. Благодаря дополнительным RM> элементам легко предсказать работу схемы. И еще. Если для какого-то RM> состояния производитель указал, что это состояние "Illegal", то я RM> спроектирую схему так, чтобы этого состояния физически невозможно RM> было достигнуть.

RM> Пример- примитив DFF (это триггер ) в ПЛМ от Альтеры. Там сочетание RM> активного сброса и активной установки определено как "Illegal". RM> Кто-то из спорщиков может мне сказать, что будет на выходе? какой RM> логический уровень?

Если следующим элементам в этом состоянии входов важно, что на выходе или если производитель предупреждает, что это опасно для физического или логического состояния элемента, то, конечно такое состояние надо исключать. Кстати, а как ты относишься к "одновременной" смене сигналов на R и S, т.е. один переходит 1->0, другой 0->1?

LB>>>> Запрет - звучит угрожающе, чем же мы рискуем? GS>>> Рискуем неправильной работой разрабатываемой схемы, в диапазоне GS>>> от редких "подглюкиваний" и вплоть до полной неработоспособности. GS>>> Доходчивый пример: с выхода этого триггера могут управляться GS>>> транзисторы мостового усилителя, не факт, что эта схема переживёт GS>>> некорректное состояние на его выходах...

LB>> Я тебе другой пример привел. Где риск? RM> То есть в твоем примере частота появляется только тогда, когда RM> сигнал сброса неактивен? RM> Тогда у тебя такого состояния просто не может возникнуть, пример RM> некорректен. RM> А вот если у тебя ресет может возникнуть асинхронно (ну, скажем, от RM> кнопки), и придет на триггер раньше, чем снимется активный SET, то RM> лучше подумай, как этого избежать.

Нет, генератор работает всегда, некоторые сигналы тактируются им. В итоге, сигналы S и R могут присутствовать одновременно, но S будет снят раньше чем R.

WBR, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

Привет, George! Вы писали для Leha Bishletov , Sat, 15 May 2004 19:35:32 +0400:

LB>>>> Hу вот, новый термин - "корректность"/"не корректность" ... GS>>> Очень старый, общеизвестный термин. Жаль, что ты его до сих пор GS>>> не знаешь ;) LB>> Если я попрошу дать его определение, ты ответишь "иди книжки LB>> читать"? ;) GS> Синонимы "грамотность"/"неграмотность" ;)

А все же определение, как ты его понимаешь ...

LB>>>> И все же, при подаче таких состояний, схема не выходит из строя LB>>>> физически, GS>>> Угу, зато переходит в некорректное (неопределённое - по GS>>> даташиту) состояние. Грамотный разработчик постарается избежать GS>>> такой ситуации. LB>> Обычная ситуация использования ТМ2 - вход сброса заведен на LB>> сигнал сброса системы на вход S подается сигнал, тактируемый LB>> какой-то частотой. При подаче сигнала сброса очень может быть, что LB>> сигнал на входе S будет в активном состоянии, GS> А это может привести к "дребезгу" по линии сброса системы, GS> некоторым узлам это может не понравиться. Ты это учёл?

Сигнал сброса - входной сигнал для ТМ2 и мы, вроде бы, договорились, что одновременная подача S и R не влияет на входные параметры. Откуда дребезг?

LB>> но точно известно, что он будет снят до окончания сигнала на R и LB>> точно известно, что при активном сигнале сброса любое состояние на LB>> выходе не спалит и не "заклинит" схему. GS> Отнюдь не факт, кстати! Есть контроллеры, требующие соблюдать GS> длительность импульса сброса.

Речь идет не о контроллере, а схеме на "мелкой логике", где можно легко проследить что с чем и как связано. И, обычно, такие схемы проектируются так, что сигнал сброса выводит ее из любого состояния в исходное. Т.е. "заклинивание" исключено.

LB>> И что, "грамотный разработчик" будет городить схему, исключающую LB>> такую ситуацию? Конкретнее, ты будешь добавлять элементы? GS> Буду разбираться с конкретной схемой, может вообще выкину этот GS> элемент и подам сигнал сброса напрямую, а может заведу тактовую GS> частоту на вход C и подам "единичку" на D (ещё кондёрчик на вход -R GS> добавлю, чтобы сигнал сброса не оказался слишком коротким). GS> Зависит!

Опять же, речь идет не о том, что схему надо перепроектировать, а о том, надо ли добавлять элементы, исключающие одновременную подачу S и R, при описанных ранее условиях.

LB>>>> не нагружает больше обычного входные сигналы, не создает на LB>>>> своих выходах уровень сигнала выходящий за рамки лог. 0 или 1, LB>>>> почему же ты выбрал для этой ситуации термин "запрещенное LB>>>> состояние"? GS>>> Это не я выбрал, это до меня сделали авторы многих книг и GS>>> статей. Очень жаль, что некоторые пытаются разрабатывать схемы, GS>>> не читая книг и не разбираясь в основах грамотной работы. LB>> Hе так важно, как это состояние называть, важно как к нему LB>> относиться. Ты предлагаешь его избегать, GS> Да, рекомендую избегать, особенно людям, которые не очень хорошо GS> представляют особенности работы цифровых схем.

Таким людям я бы рекомендовал учиться, в том числе на собственном опыте, и не бояться загадочной фразы "запрещенное состояние".

LB>> как перегрузки выхода. А мне кажется, что оно не страшнее, чем LB>> любое другое. GS> Я уже насмотрелся на работу ламерских схемок, разработанных GS> людьми, переоценивающими свои знания. Которые любили глючить то GS> из-за "гонок фронтов", а то из-за ухода в непредусмотренные GS> состояния... :-/

А я видел схемы людей, недооценивающих свои знания, где вместо триггера используется эквивалент на элементах И-НЕ ...

WBR, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

Hello,Leha!

LB> А я видел схемы людей, недооценивающих свои знания, где вместо триггера LB> используется эквивалент на элементах И-НЕ ...

И что это, крамола ? А если у тебя свободно полкорпуса ла3... И вообще, из за чего сыр-бор ? Запрещенное состояние - это, пожалуй, не слишком правильно, а запрещенный переход - я специально перелистал одну из своих 2 книжек :-) дык там это черным по белому. И запрещенный не в смысле нарушающий конституцию или дэкрэт Прэзiдэнта Л., а выводящий в неопределенное состояние, и если даже самим мелкосхемам ничего не станет, то неопределенное поведение всего устройстова чревато и должно быть запрещено. Правилами грамотного проектирования, как монтажное ИЛИ 2 активных выходов.

WBR E.G.

Mon, 17 May 2004 09:03:02 +0400 Ruslan Mohniuc wrote to Leha Bishletov:

[...]

LB>> Кстати, а как ты относишься к "одновременной" смене сигналов LB>> на R и S, т.е. один переходит 1->0, другой 0->1? RM> Hикак не отношусь. Делаю как правило синхронные схемы, где развожу эти RM> сигналы по разным фронтам клока. То есть всегда имею зазор по времени.

А, кстати, что используешь в качестве средств разработки? Какое входное описание? Какие средства верификации (симулятор)?

Hello, Eugene Gavruk !

Бред. Монтажное ИЛИ двух активных выходов нарушает обычно предельно допустимые параметры элемента. А триггер просто вернется в состояние, которое определяется тем какой сигнал раньше будет снят. И ничего запрещенного в предыдущем состоянии нет.

С уважением, Дима Орлов.

Hello, Ruslan Mohniuc !

Запрещенное, это которое в таблице предельно допустимых параметров приводится. А которое в таблице истиности, так оно вполне себе разрешенное и может быть использовано, если это зачем-то нужно.

Важно что под этим понимается, а не как называется.

Hужно знать только одно. Допустимо такое состояние, и декларировано как выходящее за рамки предельно допустимых.

С уважением, Дима Орлов.

Привет, Eugene! Вы писали для Leha Bishletov , Mon, 17 May 2004 08:25:18 +0000 (UTC):

LB>> А я видел схемы людей, недооценивающих свои знания, где вместо EG> триггера LB>> используется эквивалент на элементах И-НЕ ... EG> И что это, крамола ?

Нет, не крамола. Очень трудно оценивать какой-то фрагмент схемы, не видя ее целиком. Это относится как к моему высказыванию, так и к тому, что ты стер перед ним.

EG> А если у тебя свободно полкорпуса ла3...

Из полкорпуса ЛА3 аналог 1/2 от ТМ2 не получится ...

EG> И вообще, из за чего сыр-бор ?

Да все про "запрещенное состояние" в ТМ2. Можно ли подавать одновременно R и S и что при этом будет.

EG> Запрещенное состояние - это, пожалуй, не слишком EG> правильно, а запрещенный переход

Еще один термин :)

EG> - я специально перелистал одну из EG> своих 2 книжек :-) дык там это черным по белому. И запрещенный не в EG> смысле нарушающий конституцию или дэкрэт Прэзiдэнта Л., а выводящий EG> в неопределенное состояние, и если даже самим мелкосхемам EG> ничего не станет, то неопределенное поведение всего устройстова EG> чревато и должно быть запрещено.

Неопределенное состояние какого-то фрагмента схемы вовсе не обязательно признак плохого проектирования. Например регистр типа ИР23 после включения питания находится в неопределенном состоянии, и что, надо запретить его использование?

EG> Правилами грамотного проектирования, как монтажное ИЛИ 2 активных EG> выходов.

Наверное предполагается два выхода с ОК, хотя говорится об ИЛИ ... А если два "обычных" выхода, то конечно нельзя их объединять

WBR, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

Привет, Ruslan! Вы писали для Leha Bishletov , Mon, 17 May 2004 09:03:02 +0400:

RM>>> Пример- примитив DFF (это триггер ) в ПЛМ от Альтеры. Там RM>>> сочетание активного сброса и активной установки определено как RM>>> "Illegal". Кто-то из спорщиков может мне сказать, что будет на RM>>> выходе? какой логический уровень? LB>> Если следующим элементам в этом состоянии входов важно, что на LB>> выходе RM> Угу. LB>> или если производитель предупреждает, что это опасно для LB>> физического или логического состояния элемента, RM> Тут и загвоздка. Все, о чем мне производитель сообщил- что это RM> нелегальное состояние. Я уверен, что физически ничего не сгорит, но RM> на себя эту ответственность брать не хочу.

У тебя совсем другая ситуация. И схеме важно что на выходах и, самое главное, нет четкого указания, что оно не сгорит. А мы договорились о других исходных условиях.

LB>> то, конечно такое состояние надо исключать. RM> Вот я и исключаю. Мне так дешевле (времени и сил уходит меньше, чем RM> на исследование последствий от возникновения "нелегальной" RM> ситуации).

Разумно.

LB>> Кстати, а как ты относишься к "одновременной" смене сигналов LB>> на R и S, т.е. один переходит 1->0, другой 0->1? RM> Hикак не отношусь. Делаю как правило синхронные схемы, где развожу RM> эти сигналы по разным фронтам клока. То есть всегда имею зазор по RM> времени.

Это хорошо, если есть такая возможность.

RM> Иногда просто ставлю логику для обеспечения приоритетности (сброс RM> проходит при активном SET, при этом SET становится неактивным). Тут RM> да, возможны задержки на логическом элементе и ситуация, когда на RM> время этой задержки возникнет нерегламентированное производителем RM> состояние входов. Практически проблем не замечал, либо все ж это RM> время значительно меньше "времени реакции" триггера, либо возникший RM> эффект глушится следующими каскадами схемы.

:) Видишь, ты не шарахаешься от очень похожей ситуации.

WBR, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

Hi Vladislav !

Совсем недавно 17 May 04 10:05, Vladislav Baliasov писал к Ruslan Mohniuc:

VB> Прочитай документацию, все четко описано. VB> 7474 любой серии, любого производителя работает так, только так и VB> никак иначе. Ладно, с ТМ2 разобрались. (Завистливо): вам хорошо, у вас вот ТМ2... :)

WBRgrds Ruslan

Hi Harry !

Совсем недавно 17 May 04 12:43, Harry Zhurov писал к Ruslan Mohniuc:

HZ> А, кстати, что используешь в качестве средств разработки? Максплюс версии 10.0, от сентября 2000 года. Далее версии не обновлял по причине ненужности. По-моему, дальше происходило только расширение списка поддерживаемых микросхем. Так что я остановился на устраивающей меня версии (ну и лечилка к ней есть, спасибо добрым людям :).

HZ> Какое входное описание? Только принципиальная схема (файлы с расширением *.gdf). Понимаю, что бедно, но мне вполне хватает. Изучение AHDL планирую, но никак не доползу до этого. Кстати, я как-то интересовался, есть ли экономия в случае перехода на HDL со схемного ввода. Так знающие люди сказали, что разницы может не быть вовсе, особенно если схема рисуется с использованием альтеровских мегафункций. А мне схема все ж понятнее, чем программное описание. Может, в будущем изменю свое мнение и перейду на AHDL, но это нужен повод. А еще видел ситуацию, когда использование мегафункции резко увеличивает элементоемкость схемы по сравнению с лепкой этой же функции ручками из примитивов- ну не может оно соптимизировать так же, как я :)

HZ> Какие средства верификации (симулятор)? А там в максплюсе все в одном флаконе. Его симулятором и пользуюсь. Hу и конечно очень удобно выводить какие-то промежуточные состояния на незадействованные ноги ПЛМ, чтобы можно было осциллографом ткнуть при окончательной проверке.

Кстати, пару раз нарывался на несоответствие симулятора результату. То есть симулятор соответствовал тому, как с моей точки зрения должна вести себя схема, а вот осциллографом я видел несколько иное. Hо это была довольно специфичная ситуация, причем только в составе большой схемы и вылечилась без бубна, просто дополнительной синхронизацией (которая и с моей точки зрения, и с точки зрения симулятора- была не нужна). Если кому интересно- я бы мог здесь привести тот кусочек схемы и как поборол, может гуру и объяснят, отчего так произошло.

WBRgrds Ruslan

Hi Leha !

Совсем недавно 17 May 04 18:53, Leha Bishletov писал к Ruslan Mohniuc:

LB>>> Кстати, а как ты относишься к "одновременной" смене сигналов LB>>> на R и S, т.е. один переходит 1->0, другой 0->1?

RM>> Иногда просто ставлю логику для обеспечения приоритетности (сброс RM>> проходит при активном SET, при этом SET становится неактивным).

LB> :) Видишь, ты не шарахаешься от очень похожей ситуации.

:) А шо делать? Мыши плакали, кололись, но продолжали жрать кактус...

Вот и мы как те мыши..

WBRgrds Ruslan

17-May-04 06:16 Leha Bishletov wrote to George Shepelev:

LB>>> Hе так важно, как это состояние называть, важно как к нему LB>>> относиться. Ты предлагаешь его избегать, GS>> Да, рекомендую избегать, особенно людям, которые не очень хорошо GS>> представляют особенности работы цифровых схем. А они пусть .чайник читают. И "рекомендуя" избегать обычно объясняют на примерах, почему надо относится осторожно, а не аппелируют к книжкам, в которых написано "низзя, ибо запрещено".

LB> Таким людям я бы рекомендовал учиться, в том числе на собственном LB> опыте, и не бояться загадочной фразы "запрещенное состояние".

"нужно отдавать себе отчёт в том, с то есть зоны явно допустимых решений и зоны явно недопустимых, а граница между ними не определена. Каждый разработчик определяет её индивидуально в зависимости от опыта, соотношения поощрения за экономичную схему и наказания за сбои в ней из-за гонок, от своего темперамента и других факторов. Проблема из технической становится психологической, организационной... В инженерной практике так или иначе пользуются этим приёмом и строят схемы, в которых в принципе, юридически, гонки возможны, но по утверждению разработчика их "наверняка" не будет. Рекомендовать этот приём молодым схемотехникам не следует: у них, как правило, темперамент превалирует над опытом."

И.С. Потёмкин "Функциональные узлы цифровой автоматики". Энергоатомиздат, 1988

Книга, которая не кричит "низзя", а объясняет что случится если. А дальше (тем кто умеет) надо просто думать головой. Таблички "запрещено" ставят для тех "вечно молодых", у кого не просто "темперамент превалирует над опытом", а ещё и думалка выключена. Но в этом состоянии и из "гарантированно безглючных" примеров из учебника можно сделать абсолютно неработоспособную схему :-)

wbr,

Hello,Leha ! LB> Из полкорпуса ЛА3 аналог 1/2 от ТМ2 не получится ...

Козе понятно :-) D-триггер не получится, а асинхронный RS будет ничем не хуже. Кстати, мне приходилось видеть схемы, где сброс в 0 - нулем на R, а установка в 1 - одновременной подачей на D и C импульса. Вот это, по-моему - дурной тон, сами себе гонку фронтов устраиваем.

LB> Еще один термин :)

Не мной придуман. Классика. Говорю же - цитата из книжки 76г. :-)) (Предвижу реплику - 'ты еще Доливо-Добровольского за 1890г процитируй' :-)

LB> Неопределенное состояние какого-то фрагмента схемы вовсе не обязательно LB> признак плохого проектирования. Например регистр типа ИР23 после LB> включения питания находится в неопределенном состоянии, и что, надо LB> запретить его использование?

Кто спорит ? Даже то же пресловутое 2 нуля на R-S не крамола, если из него выход не на 2 единицы сразу или же это неопределенное состояние, в которое попадаем, в данный момент некритично для выходов устройства.

LB> Наверное предполагается два выхода с ОК, хотя говорится об ИЛИ ...

Ну да, в отрицательной логике - ИЛИ, в положительной - И :-)

LB> если два "обычных" выхода, то конечно нельзя их объединять ^^^^^^^ Это где в верхнем плече транзистор.

WBR Eugene

Tue, 18 May 2004 07:03:22 +0400 Ruslan Mohniuc wrote to Harry Zhurov:

HZ>> А, кстати, что используешь в качестве средств разработки? RM> Максплюс версии 10.0, от сентября 2000 года. RM> Далее версии не обновлял по причине ненужности. По-моему, дальше RM> происходило только расширение списка поддерживаемых микросхем. Так что я RM> остановился на устраивающей меня версии (ну и лечилка к ней есть, спасибо RM> добрым людям :).

Пришла пора перейти на более новый тул. Quartus II 4.0 рулит однозначно. В нем появились такие порой необходимые средства, как RTL Viewver и Chip Editor (насчет 3-го не знаю, а в 2.х этого вроде не было). Первый позволяет посмотреть оттранслированный дизайн на уровне формальной логики, с помощью второго вообще можно посмотреть, как логика внутри LE реализована, включая разбиение LUT'ов, задействование триггеров, цепи ускоренного и каскадного переносов - словом то, что раньше ты мог только по выходным уравнениям как-то посмотреть без детализации. А тут все прямо чуть-ли не на уровне гейтов. Т.е. оба средства являются чем-то вроде "листинга" логики. Для отладки, особенно когда что-то где-то не работает или вызывает сомнения, очень кстати возможность посмотреть конкретную реализацию.

HZ>> Какое входное описание? RM> Только принципиальная схема (файлы с расширением *.gdf). RM> Понимаю, что бедно, но мне вполне хватает. Изучение AHDL планирую, но никак RM> не доползу до этого. RM> Кстати, я как-то интересовался, есть ли экономия в случае перехода на HDL RM> со схемного ввода. Так знающие люди сказали, что разницы может не быть RM> вовсе, особенно если схема рисуется с использованием альтеровских RM> мегафункций.

Если все на мегафункциях, то разницы, ессно, никакой нет и быть не может. Только редко бывает, когда все на мегафункциях.

RM> А мне схема все ж понятнее, чем программное описание.

Схема рулит в верхнем уровне, где только более-менее крупные блоки - тут наглядность есть. Т.е. это нечто вроде структурной/функциональной схемы. А вот при реализации самих блоков схемный ввод против языкового пролетает! Схема все равно не соответствует реализации в том смысле, как схема электрическая принципиальная соответствуют своей реализации - печатной плате. А функциональное описание на языке делается гораздо проще и обладает значительно бОльшей гибкостью. Например, вот надо нам строб сформировать - на 34 такте (счетчик такты считает) надо строб включить, на 69-м такте - выключить. На том же AHDL это делается одной строкой (cnt - счетчик):

strobe = srff(cnt.q[] == 34, cnt.q[] == 69, clk, vcc, vcc);

или (что то же самое)

strobe = srff(.s(cnt.q[] == 34), .r(cnt.q[] == 69), clk);

При графическом вводе ты должен будешь нарисовать два lpm_compare (или родить свои компараторы, которые тоже проще делаются на языке :), триггер и несколько проводников. Оно и место занимает приличное, и реализуется дольше и воспринимается не лучше.

Кроме того, на языке можно реализовывать вещи, которые при графическом вводе вообще невозможно сделать. Например, всякие штуки с помощью for ... generate, if ... generate.

Или хотя бы когда надо сгенерить логику по известным значениям входов и выходов. На языке для этого можно использовать таблицу или case ... when (или switch ... case в том же Verilog'е). Логику синтезатор родит быстро и без ошибок. И оптимально, т.к. такие вещи легко поддаются формальной оптимизации (карты Карно, диаграммы Вейча), и синтезатор этим владеет, обычно, куда лучше человека. Тем более, что человеку и так всегда есть над чем подумать. :)

Третий момент: при языковом вводе доступно т.н. поведенческое описание устройства, когда ты только пишешь, что тебе надо, а генерацию логики делает компилятор. Современные синтезаторы кода генерят очень хороший код. И при работе с достаточно большими проектами (а более 1100 ячеек - это уже вполне прилично, имхо) этот подход начинает рулить безоговорочно... Классический пример: есть шина, нужно сделать устройство, которое будет выдавать количество единиц на шине. На языке это можно сделать, к примеру, с помощью языковой конструкции for, где в цикле описывается подсчет единиц. Синтезатор родит соответствующую логику... А как это будет выглядеть на уровне вентилей, даже сходу и не соображу (да, и неохота это соображать :).

RM> Может, в будущем изменю свое мнение и перейду на AHDL, но это нужен повод.

Поводов и даже причин я тебе выше привел пачку. Не пренебрегай. AHDL - язык очень простой и стройный, имхо. Он осваивается до уровня, когда уже можно серьезно работать, в течение месяца точно - это тебе не С (и тем более С++) какой-нибудь. Т.ч. не сомевайся, окупится он тебе сторицей.

К сожалению, у AHDL есть два серьезных недостатка.

Первое - это то, что он поддерживает только синтезируемую часть, т.е. на нем можно только сгородить потроха ПЛИС. А вот промоделировать все это на уровне системы нельзя. И приходится извращаться-рисовать входные сигналы, подстраиваясь порой под выходную реакцию. Геморрой, одним словом. Более продвинутые языки - VHDL/Verilog позволяют описать и все окружение, где твоя синтезируемая часть является просто одним из объектов. Так например, легко описать систему, где есть АЦП, с которого валятся данные на вход твоего устройства, микроконтроллер, кидающий команды по SPI, и кучу других внешних устройств. Причем все это можно промоделировать, как единую целостную систему - ту, которая у тебя имеется в конечном итоге. Конечно поведение внешних устройств можно задать только с известной степенью точности, но ведь и не требуется точность соответствия объектов объектам реального мира - к примеру, АЦП можно описать как модуль, который про сигналу с задержкой в эн тактов выдает на свою выходную шину новое значение. Этого вполне достаточно для того, чтобы отладить интерфейс между ПЛИС и АЦП. В случае МК с его SPI ситуация аналогичная. Короче, мощная это штука, и AHDL очень проигрывает из-за того, что не поддерживает такую возможность. Хотя, имхо, не очень сложно было бы ввести ее.

Второе - это то, AHDL ограничен рамками одной фирмы Альтера. Пока сидишь внутри Альтеровских семейств, все хорошо и комфортно. Но когда по какой-либо причине придется пользоваться микросхемами других фирм, то тут в полной мере ощутишь себя "голым"! Я вот с этим не так давно столкнулся: потребовалась мне мелкая логика с малым потреблением. Частота не высокая, в пределах одного мегагерца, а каждый миллиампер на счету. FPGA не подошли - у них в статике от единиц до десятков мА, да и избыточные они, да и загрузка им нужна, а девайс малогабаритный. Альтеровские МАКСы в статике жрут как сволочи - десятки мА. Поискал, нашел то, что надо - семейство CoolRunner от Xilinx. И вот тут-то началось самое "приятное". У Xilinx нет такой простой и законченной оболочки вроде Максплюса, где есть все в одном флаконе. Например, в Xilinx'овском ISE нет симулятора. Вообще. Они предлагают ModelSim XE (Xilinx Edition). Симулятор, конечно, мощный, слов нет, но оседлать его сходу практически невозможно. Главная причина, имхо, в том, что заточен он на входное описание все на тех же Verilog/VHDL, и пока ты их не знаешь, будешь как слепой котенок барахтаться. Другой момент: что использовать в качестве входного описания? Схемный редактор в составе ISE - убожество редкое! Максовский аналог на две головы выше. Оно и объяснимо - все это рассчитано на то, что входное описание на языке надо делать. Из языков там поддерживается Verilog, VHDL и некий ABEL. Последний я сразу откинул - во-первых, показался он мне горбатее гораздо того же AHDL, во-вторых, большой разницы нет - учить ли, к примеру, Verilog или ABEL. Остановился на Verilog'е. Чем больше вникал во всю эту "кухню", тем более убеждался, что не зря - действительно мощное средство для разработки и моделирования. Сейчас и на Альтере пытаюсь потихоньку пользоваться этим.

К чему все это? К тому, что AHDL, конечно, знать надо - его освоение не занимает много времени и сил, а дивиденды все-таки значительны. Но если уже работаешь с ПЛИСами, то надо самое пристальное внимание обращать на более "взрослые" средства - языки (Verilog/VHDL, а сейчас уже появились языки нового поколения - SystemC, HandleC), синтезаторы (Synplify, Leonardo Spectrum, FPGA Compiler и др.), симуляторы (ModelSim, Verilog XL, Active-HDL - это вообще целая оболочка управления разработкой и верификацией проекта). К сожалению, вся эта "кухня" совсем из другой весовой категории, но для серьезной работы это единственно правильный путь.

RM> А еще видел ситуацию, когда использование мегафункции резко увеличивает RM> элементоемкость схемы по сравнению с лепкой этой же функции ручками из RM> примитивов- ну не может оно соптимизировать так же, как я :)

Например?

[...]

RM> Кстати, пару раз нарывался на несоответствие симулятора результату. То есть RM> симулятор соответствовал тому, как с моей точки зрения должна вести себя RM> схема, а вот осциллографом я видел несколько иное. Hо это была довольно RM> специфичная ситуация, причем только в составе большой схемы и вылечилась RM> без бубна, просто дополнительной синхронизацией (которая и с моей точки RM> зрения, и с точки зрения симулятора- была не нужна). Если кому интересно- я RM> бы мог здесь привести тот кусочек схемы и как поборол, может гуру и RM> объяснят, отчего так произошло.

Ну, расскажи?

Ruslan, ты ещё здесь сидишь?

Воскресенье Май 16 2004 19:53, Ruslan Mohniuc wrote to Dima Orlov:

DO>> Хотя обсуждался конкретно 7474... RM> Тогда сорри. RM> Мне показалось, что речь идет о терминах запрещенное-некорректное-итд RM> состоянии входов триггера и его реакции (состоянии выхода) на это.

Именно о терминах речь и зашла. Жаль, но в фидо принято цепляться именно к терминам, когда больше прицепиться не к чему...

RM> Вот и решил упомянуть о документации, в которой такое состояние для RM> триггера определено как "нелегальное", и рассказать, как я с этим RM> борюсь. RM> А про 7474 мне кажется, что разные производители могут по-разному RM> назвать состояние входов, приводящее к отсутствию однозначности RM> состояния его выхода.

Состояние самого триггера при этом - неопределённое (см. цитировавшийся даташит), некорректное, запрещённое - выбирай термин по вкусу.

RM> Как бы они это не назвали- думаю, что нужно либо очень хорошо RM> представлять себе как оно внутри работает или избегать возможности RM> возникновения этого состояния.

Одно другому не мешает! ;-)

Георгий

Vladislav, ты ещё здесь сидишь?

Понедельник Май 17 2004 10:05, Vladislav Baliasov wrote to Ruslan Mohniuc:

RM>> состояния его выхода. Как бы они это не назвали- думаю, что нужно RM>> либо очень хорошо представлять себе как оно внутри работает или RM>> избегать возможности возникновения этого состояния. VB> Hе нужно - производители об этом позаботились, расписали все VB> состояния, максимально подробно. Достаточно просто прочитать VB> документацию.

А ты её читал? Я кидал цитатку, там это состояние названо достаточно недвусмыслено ;-)

RM>> Это чем-то напоминает RM>> использование недокументированных команд в процессоре Z80: да, RM>> можно использовать, но будет ли это работать у всех остальных- RM>> еще вопрос. VB> Hе уподобляйся Шепелеву.

Переходом на личности ты свои <глупые> тезисы не обоснуешь. Зато можно "награду" от модератора схлопотать ;)

Георгий

Leha, ты ещё здесь сидишь?

Понедельник Май 17 2004 10:16, Leha Bishletov wrote to Alexander Sharov:

LB> Да я стараюсь к терминам не цепляться. Hо появилась такая логическая LB> цепочка: состояние заперещенное (так в книжках написано) ->

LB> использовать его запрещено (ведь оно запрещенное).

Именно так. Для сравнения, улицу на красный свет светофора переходить тоже запрещено. Как я уже говорил, этот запрет можно нарушить если: а) абсолютно уверен, что не произойдёт неприятностей; б) абсолютно наплевать на результат.

Кто хочет - может продолжать искать неприятности на свою задницу. Предупредили...

Георгий

Leha, ты ещё здесь сидишь?

Понедельник Май 17 2004 10:16, Leha Bishletov wrote to George Shepelev:

LB>>>>> Hу вот, новый термин - "корректность"/"не корректность" ... GS>>>> Очень старый, общеизвестный термин. Жаль, что ты его до сих пор GS>>>> не знаешь ;) LB>>> Если я попрошу дать его определение, ты ответишь "иди книжки LB>>> читать"? ;) GS>> Синонимы "грамотность"/"неграмотность" ;) LB> А все же определение, как ты его понимаешь ...

Дай определение понимания ;)

Я абсолютно не собираюсь затевать здесь терминологический спор, либо ты понимаешь смысл того, о чём я говорю, либо тебе действительно нужно повышать образование (книжки читать).

LB>>> Обычная ситуация использования ТМ2 - вход сброса заведен на LB>>> сигнал сброса системы на вход S подается сигнал, тактируемый LB>>> какой-то частотой. При подаче сигнала сброса очень может быть, LB>>> что сигнал на входе S будет в активном состоянии, GS>> А это может привести к "дребезгу" по линии сброса системы, GS>> некоторым узлам это может не понравиться. Ты это учёл? LB> Сигнал сброса - входной сигнал для ТМ2

Он у тебя с кнопочки берётся? А ты в курсе, как работает механический контакт?

LB> и мы, вроде бы, договорились, что одновременная подача S и R не LB> влияет на входные параметры. Откуда дребезг?

Почитай в книжках на тему "антидребезга", там будет ответ...

LB>>> но точно известно, что он будет снят до окончания сигнала на R и LB>>> точно известно, что при активном сигнале сброса любое состояние LB>>> на выходе не спалит и не "заклинит" схему. GS>> Отнюдь не факт, кстати! Есть контроллеры, требующие соблюдать GS>> длительность импульса сброса. LB> Речь идет не о контроллере, а схеме на "мелкой логике", где можно LB> легко проследить что с чем и как связано.

Тогда почему ты на такую схему не подаёшь сигнал сброса "напрямую"? Зачем триггер понадобился?

LB> И, обычно, такие схемы проектируются так, что сигнал сброса выводит LB> ее из любого состояния в исходное.

Желание проектировщика и полученный реальный результат - две очень большие разницы ;)

LB> Т.е. "заклинивание" исключено.

Я рад, что ты пока не берёшься за разработку схем, достаточно сложных для того, чтобы их могло "заклинить".

LB>>> И что, "грамотный разработчик" будет городить схему, исключающую LB>>> такую ситуацию? Конкретнее, ты будешь добавлять элементы? GS>> Буду разбираться с конкретной схемой, может вообще выкину этот GS>> элемент и подам сигнал сброса напрямую, а может заведу тактовую GS>> частоту на вход C и подам "единичку" на D (ещё кондёрчик на вход GS>> -R добавлю, чтобы сигнал сброса не оказался слишком GS>> коротким). Зависит! LB> Опять же, речь идет не о том, что схему надо перепроектировать, а о LB> том, надо ли добавлять элементы, исключающие одновременную подачу S и LB> R, при описанных ранее условиях.

Поскольку твоего описания условий явно недостаточно, грамотный вывод о конкретном узле схемы сделать нельзя.

LB>>> Hе так важно, как это состояние называть, важно как к нему LB>>> относиться. Ты предлагаешь его избегать, GS>> Да, рекомендую избегать, особенно людям, которые не очень хорошо GS>> представляют особенности работы цифровых схем. LB> Таким людям я бы рекомендовал учиться, в том числе на собственном LB> опыте, и не бояться загадочной фразы "запрещенное состояние".

Таким людям будет гораздо полезнее читать умные книжки, а не набивать постоянно шишки, набираясь "собственного опыта". И если они будут "бояться загадочной фразы" - у них гораздо чаще будут получаться правильно работающие устройства ;)

LB>>> как перегрузки выхода. А мне кажется, что оно не страшнее, чем LB>>> любое другое. GS>> Я уже насмотрелся на работу ламерских схемок, разработанных GS>> людьми, переоценивающими свои знания. Которые любили глючить то GS>> из-за "гонок фронтов", а то из-за ухода в непредусмотренные GS>> состояния... :-/ LB> А я видел схемы людей, недооценивающих свои знания, где вместо LB> триггера используется эквивалент на элементах И-HЕ ...

И что в этом плохого? Важно получить правильный результат, затратив разумные усилия...

Георгий

Hello All.

Тема объявляется оффтопиком

С уважением, Co-Moderator <mailto:andy coбaкa svrw.ru>

formatting link

Eugene, ты ещё здесь сидишь?

Вторник Май 18 2004 13:57, Eugene Gavruk wrote to Leha Bishletov:

EG> Кстати, мне приходилось видеть схемы, где сброс в 0 - нулем на R, а EG> установка в 1 - одновременной подачей на D и C импульса. Вот это, EG> по-моему - дурной тон,

Хуже. Это саботаж ;)

Георгий

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required