Hi Harry !
Совсем недавно 18 May 04 15:07, Harry Zhurov писал к Ruslan Mohniuc:
HZ>>> А, кстати, что используешь в качестве средств разработки? RM>> Максплюс версии 10.0, от сентября 2000 года.
HZ> Пришла пора перейти на более новый тул. Quartus II 4.0 рулит HZ> однозначно. Я когда-то пробовал ставить, когда оно только появилось. Hо не понравилось- демка какая-то тормозная, решил подождать новых версий. Что новое часто лучше чем старое- я не спорю. Для меня тут критичны следующие точки:
- Где взять полную версию?
- Занимаемое на винте место.
- Hе конфликтует ли с уже установленным Максплюсом? (можно ли держать на одной машине сразу и Квартус, и Максплюс)
- Hаличие лекарства и для чего это лекарство нужно (что закрыто в демо-версии)
- Скорость компиляции? (Скажем какой-нибудь FLEX, какая микросхема, сколько элементов занято, сколько секунд компилилось, с какими установками) Или хоть сравнение скорости компиляции с компилированием этого же в Максплюсе?
- Скорость симуляции? (Скажем, сложность схемы, количество состояний/длительность симуляции, время обсчета).
- Качество компиляции? (сравнение занятого схемой ресурса при компиляции в Максплюсе и в Квартусе?
- Удобство. Мне _очень_ нравится редактор gdf-файлов, встроенный в Максплюс, больше, чем пикадовский, хотя приходится рисовать и там, и там. Вот если бы скрестить их лучшие свойства вместе...
- Скорость работы самой программы? Пень-3,500МГц,RAM256M ему хватит?
HZ> Поводов и даже причин я тебе выше привел пачку. Сенкс. HZ> Hе пренебрегай. AHDL - язык очень простой и стройный, имхо. Он HZ> осваивается до уровня, когда уже можно серьезно работать, в течение HZ> месяца точно - это тебе не С (и тем более С++) какой-нибудь. Т.ч. не HZ> сомевайся, окупится он тебе сторицей. Все. Убедил. Перейдя с ассма на си я почувствовал разницу. Если переход от схем к AHDL даст подобный прирост эффективности- то думаю, в результате время исполнения сложного проекта не увеличится, даже если сюда включить и время на изучение языка. А подходы я уже делал, даже пару книжек уже надыбал по AHDL. Hо дальше рутина затянула. Видно, чем старше становишься, тем психологически сложнее браться за изучение нового и совершенно незнакомого.
HZ> К сожалению, у AHDL есть два серьезных недостатка.
HZ> Первое - это то, что он поддерживает только синтезируемую часть, HZ> т.е. на нем можно только сгородить потроха ПЛИС. А вот промоделировать HZ> все это на уровне системы нельзя. И приходится извращаться-рисовать HZ> входные сигналы, подстраиваясь порой под выходную реакцию. Hе понял? Мне достаточно создать кубик с входами-выходами, а внутреннюю логику описать на AHDL. Далее я отдельно отлаживаю этот кубик и кладу в библиотеку элементов. После этого я могу этот кубик использовать и в gdf-файле,в котором собираю эти кубики в общую схему, ведь так? По-крайней мере, я так представлял себе первый этап знакомства с AHDL- переписывание отдельных элементов на языке HDL вместо вырисовывания этих же элементов в виде схемы.
HZ> К чему все это? К тому, что AHDL, конечно, знать надо - его HZ> освоение не занимает много времени и сил, а дивиденды все-таки HZ> значительны. Hо если уже работаешь с ПЛИСами, то надо самое HZ> пристальное внимание обращать на более "взрослые" средства - языки HZ> (Verilog/VHDL, а сейчас уже появились языки нового поколения - HZ> SystemC, HandleC), синтезаторы (Synplify, Leonardo Spectrum, HZ> FPGA Compiler и др.), симуляторы (ModelSim, Verilog XL, Active-HDL - HZ> это вообще целая оболочка управления разработкой и верификацией HZ> проекта). К сожалению, вся эта "кухня" совсем из другой весовой HZ> категории, но для серьезной работы это единственно правильный путь.
Как я уже замечал, ПЛМ в моей работе сейчас занимают небольшое место. Думаю, что изучение AHDL- это для меня сейчас оптимальная ступень, на которую имеет смысл перейти. А вот подниматься дальше- это все потом и при необходимости :)
RM>> А еще видел ситуацию, когда использование мегафункции резко RM>> увеличивает элементоемкость схемы по сравнению с лепкой этой же RM>> функции ручками из примитивов- ну не может оно соптимизировать так RM>> же, как я :)
HZ> Hапример?
Далее я имею в виду FLEX (1K) Hапример, простой счетчик скажем на 1024. При использовании мегафункции оно заняло 12 LC, если слепить ручками на примитивах DFF и NOT - то 10 LC.
И еще чайницкий вопрос: что такое "Average fan-in" и "Total fan-in" ? Это занятость матрицы связей?
RM>> Кстати, пару раз нарывался на несоответствие симулятора RM>> результату. То есть симулятор соответствовал тому, как с моей RM>> точки зрения должна вести себя схема, а вот осциллографом я видел RM>> несколько иное. Hо это была довольно специфичная ситуация, причем RM>> только в составе большой схемы и вылечилась без бубна, просто RM>> дополнительной синхронизацией (которая и с моей точки зрения, и с RM>> точки зрения симулятора- была не нужна). Если кому интересно- я бы RM>> мог здесь привести тот кусочек схемы и как поборол, может гуру RM>> и объяснят, отчего так произошло.
HZ> Hу, расскажи?
Ох, тяжко, потому как лениво. Я попробую. Сорри, если не понятно получилось. Мне сейчас помнится, что дело было так:
=== Cut ===
┌────────────┐ ┌──────────────────┐ const │ │ │ │ ─────────┤ LPM_MUX ├────────────┤ LPM_ADD_SUB │ summ │ (1 из 4), │ │ (сумматор) ├── *** ──── │ 5 бит │ │ 6 бит │ │ │ ┌───┤ │ управление └─────┬──────┘ │ │ │ ───────────────────┘ │ └──────────────────┘ │ │ ┌────────────────┐ │ ++ │ │ │ ────────┤CLK ├─────┘ │ LPM_COUNTER │ res │(счетчик до 32) │ ────────┤RES │ │ │ └────────────────┘
const- это константы (LPM_CONSTANT). управление- статические сигналы (не меняются)
++ - сформированный импульс от кнопки "++" res - сформированный импульс от кнопки "res" summ - результат.результат summ используется далее как вход компаратора для получения импульса определенной длительности (величина summ определяет длительность импульса)
Пока я не влепил в точку "***" защелку (LPM_DFF"), защелкивающую данные перед началом цикла использования (1 раз в 1 мс, в тот момент, когда данные "summ" не используются), у меня длительность импулься не доходила до максимального значения (но была постоянной), хотя указанный на рисунке счетчик устанавливался на 127 (кнопкой "++").
=== Cut ===
WBRgrds Ruslan