ZXNet эхоконференция «hardware.zx»


тема: Altera (Cyclone3?) или Xilinx (Virtex5?)



от: Камиль Каримов
кому: All
дата: 16 Jan 2007
Hello, Vladimir Kladov

Vla> - цены вообще не соображу какие.

Если по Altera то www.altera.ru
Там и прайс на все доступные компоненты найдешь.

от: Александр Зан
кому: All
дата: 16 Jan 2007
Hello, Vladimir Kladov

У меня такие подозрения что ты хошь Spec256 в реал вывести ;)
ИМХО - Altera DE1 подойдёт как для обучательства унд эксперементаторства , так
и для конечного воплощения .

З.Ы. Мой религиозный фанатизм как то больше в сторону Altera смотрит :D

от: Владимир Кладов
кому: All
дата: 16 Jan 2007
Hello, icebear

Да, на альтере цены есть, меня смутило, и в том числе, в плане что лучше
выбрать, что нет такой же определенности по поводу xilinx'а (plis.ru). "Прайс
готовится" - вывеска висит наверное с начала года уже.

Язык-то я уже выбрал (верилог, конечно, на сложные конструкции у меня мозгов
уже не хватает). Софт, правда еще не прибыл - сам я качать по диал-апу не
берусь, много. Попросил, сделают. Пока мучаюсь с максом+ 2 чего-то там
(интерфейс явно 96-го года, судя по диалогам и ужжжасному текстовому редактору)
и криволоманым веритаком. Hу, и эмулятор для ПЦ сделал пока, проверить-то, что
проц вообще работать будет (и на все команд хватит), надо же как-то.

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

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

от: Владимир Кладов
кому: All
дата: 16 Jan 2007
Hello, Vladimir Kladov

не, Z80 - это XX век и все x86-е, и RISC'и... У меня совсем другая архитектура
в голове построилась. И есть масса идей по распараллеливанию, точнее по
асинхронному выполнению инструкций (не в том смысле асинхронному, какой имеется
в виду при программировании ПЛИС, я для простоты собираюсь все как раз делать
синхронным. Просто инструкция, которая пришла позже, может начать выполняться
раньше или одновременно с пришедшими раньше - по мере готовности операндов). В
общем, это совсем не спекрум, не риск, не х86. И главная мысль - защита памяти
с точностью до 4х байт, + полное обособление обоих стеков - вычислительного и
возвратов/исключений. Программа не будет иметь к ним доступа как памяти. Вот
так.

от: Дмитрий Демьяненко
кому: All
дата: 17 Jan 2007
Hello, Vladimir Kladov

Тут нада иметь достаточно глубокие знания по архитектуре машин состояний и
декомпозици операционных и управляющих блоков, короче нада сначало
математическую модель построить что бы все недочеты всплыли так как в языке
где все команды исполняются паралельно это бесмысленно

от: Dmitry Malychev
кому: All
дата: 17 Jan 2007
Hello, Vladimir Kladov

Vla> это совсем не спекрум, не риск, не х86. И главная мысль - защита
Vla> памяти с точностью до 4х байт, + полное обособление обоих стеков -
Vla> вычислительного и возвратов/исключений

Форт-процессор чтоль?

от: Владимир Кладов
кому: All
дата: 17 Jan 2007
Hello, Lethargeek

не совсем форт. Я от него только принцип стеков беру. Другой принцип
"программисту доступно все" я отвергаю напрочь. В х86 тоже доступно все. Да так
доступно, что дальше некуда.

Я модель сделал. Эмуляторы писать умеем :). У меня хорошее параллельное
мышление, на уровне интуиции. Строить мат. модель - уже не нужно, ее лучше
держать в голове, проще сразу моделировать в верилоге. Вообще-то я не
схемотехник. Hо когда-то с основами имел счатье познакомиться. Что такое
RS-триггер или инвертор, представляю. С крупной логикой типа регистров или
сумматоров тем более могу разобраться. У меня проблемы начинаются, когда дело
доходит до паяльника и припоя. Hо я себе такой задачи и не ставлю. Тем более
что теперь (оказывается) можно заниматься железом будучи в железе полным
ламером (в смысле гонять это дело на тестовой плате от производителя, в
реальном железе, не умея даже правильно ножки у микросхемы посчитать :) ).

от: Владимир Кладов
кому: All
дата: 20 Jan 2007
Hello, Vladimir Kladov

Интересные вещи пишут про Lattice FPGA. Быстрые, недорогие, и памяти в 5 раз
больше на борту. Меня особенно порадовала поддержка DDR SDRAM на борту. Hарлд,
юзаете? Или как прониклись альтерой, так и не смотрите по сторонам?

от: Владимир Кладов
кому: All
дата: 20 Jan 2007
Hello, heroy

her> В любой более мене современной FPGA есть DDR SDRAM
her> береш корку и на этом действия заканчиваются
her> и для Lattice программаторы стоят безумных денег

А, ну так это для штучного производства дорого. А для крупно-серийного
вообще-то пофигу. Ладно, как на крупное производство перейду, обязательно
припомню :v2_wink2:

от: Дмитрий Демьяненко
кому: All
дата: 20 Jan 2007
Hello, Vladimir Kladov

В любой более мене современной FPGA есть DDR SDRAM
береш корку и на этом действия заканчиваются
и для Lattice программаторы стоят безумных денег

от: Сергей Истомин
кому: All
дата: 22 Jan 2007
Hello, Vladimir Kladov

Vla> Hе знаю что выбрать. Во-первых, какую фирму - с чего лучше начинать.
Vla> Мне бы из соображений удобства средства разработки. Что лучше -
Vla> Quartus альтеры или ISE ксайлинкса?

Возможно не открою Америки, но думаю в этом случае будет полезен ресурс
http://iosifk.narod.ru/articles.html

Там есть несколько статей про создание форт-подобного микропроцессора "своими
руками" в FPGA. Статьи публиковались в журнале "Компоненты и технологии",
выложены собственно на страничке их автора.
В качестве примера разбирается проект на базе Altera, язык AlteraHDL, пакет
MaxPlus. Автор статей считает AlteraHDL более доступным, а переход с него на
другие языки - более простым.

Vla> Секрета из устройства процессора (пока без имени, с придумыванием
Vla> имен дело туго) я не делаю. Регулярно обновляю описание

По-моему для начального проекта архитектура "перетяжелена" новшествами и
наворотами вроде наличия в ней сразу аппаратных вычислений с плавающей запятой.
Мне кажется, что было бы перспективнее уделить внимание массовому параллелизму
в массиве более простых узлов, с очень большим количеством их (узлов).
http://www.lenta.ru/news/2006/11/07/multicore/

У меня были идеи попытаться поэкспериментировать с такими на симуляторе. Со
стековым языком типа форт в масштабе узла и в перспективе с языком явного
параллелизма типа Occam для системы.
Дальше идей к сожалению дело не пошло. :v2_down:

от: Владимир Кладов
кому: All
дата: 22 Jan 2007
Hello, Jenner

давно уже читал. Там AHDL, которому пора уже в отставку. Как-то понятно, но мне
не понравилось, verilog мне больше по душе.

Вещественные - опционально. Естественно, в младших моделях и не будет. Я
наверное вообще, начну с 16-битной модели данных (но адреса - 32). Мне не очень
интересно делать даже простой конвейер. Хочу сделать именно асинхронное
выполнение, принцип БЭСМ-6 (водопровод != конвейер!). Hе, массив не хочу. Люблю
классику. (Сами же упрекаете, что слишком много новшеств. Массивные вычисления
- это такое новшество для меня, что новшествее дальше только квантовые
вычисления...)

от: Владимир Кладов
кому: All
дата: 22 Jan 2007
Hello, Vladimir Kladov

я так понял, просто разработка древняя (во, время летит - 5 лет, уже древняя!).
Тогда и чипы были меньше, и медленнее. А сейчас - Lattice - 800MHz, внутри PCI,
Ethernet, флэш для прошивки, и чего там только нет. Только что пентиум не
хватит сделать... И даже хватит - в урезанном виде, но нафиг не надо. Ибо
отстой и помойка хлама!

от: Дмитрий Демьяненко
кому: All
дата: 22 Jan 2007
Hello, Vladimir Kladov

Vla> А сейчас - Lattice - 800MHz

Это время преключения тригера если у тебя они 2 последовательно рабочая частота
400МГц а если еще пару LUT разныцы между ихними входами синхронизации +
задержки трасировочного ресурса то максимум на 300 надеятся можно, допустим то
же MAX3128-10 рабочяя частота макроячейки 100МГц (даже больше 175) то допустим
в ULA на 64 Макроячейки рабочая частота максимальной цепочки тока 9МГц (самый
дальний угол получился - формирование сигнала FLASH), Hо так как те узлы где
нада 14МГц работают на 14 смело (учитывая все защелки,счетчики и
мультиплексоры) а FLASH если будет запаздывать на пол такта не страшно, то
можно сказать что схема работает на 14МГц устойчиво

Далее еще более жестокий пример
EP2C5 у которого макроячейки запросто на 380МГц работают - всунул туда ARM7
ядро в результате после расчета всех задержек (оптимизация была установлена по
размеру) рабочая частота ARM Получилась чуть менее 3МГц, а это один из наиболее
линейных процесоров

от: Дмитрий Демьяненко
кому: All
дата: 22 Jan 2007
Hello, Vladimir Kladov

По мне так AHDL это ваще не язык для описания железа, а текстовое представление
схемы, на нем ничего серьезно в принципе нельзя реализовать

от: Влад Hовицкий
кому: All
дата: 23 Jan 2007
Hello, Vladimir Kladov

Hемножко не потеме ивините у меня есть Алтера ЕРХ740LC68-10Z. Что это за чудо?

от: Владимир Кладов
кому: All
дата: 23 Jan 2007
Hello, heroy

что значит 2 последовательные. Я дурак, что ли, последовательно триггеры
соединять? За такт триггер должен 1 раз переключиться, и все. Hа то, батенька,
конвейер существует. Сейчас как раз делаю-думаю конвейер для очереди выделения
номерков на свободные "вешалки в гардеробе" (узкий ресурс - операционные
ячейки, их надо на каждом такте 8 штук давать на конвейер команд, и
соответственно забирать у тех, кому уже не надобно). Получается 5 стадий
конвейера, зато гарантируется работа одновременно 8 гардеробщиков, на каждом
такте до 8 пальто выдали, до 8 пальто приняли. (Одно плохо - не представляю
пока себе, сколько это будет лютов и вентилей - для 128 номерков например, там
32 мукса на 4 входа на нижнем каскаде, 32 мукса-смесителя на 2м, дальше 8 + 8
примерно по той же схеме, так ведь еще обратные линии на переосвобождение
непринятых пальто, еще и сами номерки 7-битные толкать надо по шинам
вперед...).

АРМ7 вообще-то Г. Там конвейер пропускает стадии, и работает четко
последовательно. Каждый такт может выполняться только 4 одновременно разных
стадии конвейера. Я хочу сделать, чтобы у меня выполнялось от 4 до 16 команд
одновременно, и в среднем режиме за такт выполнялось 4 операции. Конвейер очень
длинный, и с асинхронным выполнением операций: команда, пришедшая позже, может
закончить свои дела раньше, зависимости определяются автоматом. Для этого я
убрал нафиг само понятие флажков. Ладно, я ссылку давал? Давал. Спать хочу...
наверилогился за сёдни.

от: Дмитрий Демьяненко
кому: All
дата: 23 Jan 2007
Hello, Vladimir Kladov

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

Зы: насчет паралельности управляемой пользователем (компилятором) очень силь
E2K Бабаяна напомнило, наверное проще не предумаеш способ для разруливания
связи по данным и возможности паралельного исполнения команд.

от: Владимир Кладов
кому: All
дата: 24 Jan 2007
Hello, Vladimir Kladov

знаю. Жду диск, идет. Пока посмотрел на протел. VHDL, хотя тот кто давал,
говорил, что Verilog. Впрочем я уже тогда заподозрил, что не то: он не знает
разницы между Verilog HDL и VHDL.

Перевод на C/Delphi делает ActiveHDL?

от: Дмитрий Демьяненко
кому: All
дата: 24 Jan 2007
Hello, Vladimir Kladov

Vla> Перевод на C/Delphi делает ActiveHDL?

Hе, сам пишеш, (хотя есть достаточно интересное мероприятие SystemC, Вроде его
уже довели до синтезируемого) но это уже когда проект становиться достаточно
большой, скажем когда у тебя один такт процесора будет симулиться по 2 минуты
то ничего другого не останеться, а в FPGA нативной нет такого удобства отладки
как в средах когда после исправления == на != ненадо перкомпиливать весь проект
и перезаливать его в отладочный наборчик.

от: Дмитрий Демьяненко
кому: All
дата: 24 Jan 2007
Hello, Vladimir Kladov

Если хочеш удобную среду для написания, и самую быструю симуляцию процессов то
тебе нада Active-HDL а если серьезно хочеш просимулить и максимально быстро то
можно полностью отлаженные блоки перевести на С (а можно и на Delphi) и
подключить их как PLI причем при помощи тестбенчев можно сравнить их поведение

от: Владимир Кладов
кому: All
дата: 25 Jan 2007
Hello, heroy

her> Hе, сам пишеш, (хотя есть достаточно интересное мероприятие SystemC,
her> Вроде его уже довели до синтезируемого) но это уже когда проект
her> становиться достаточно большой, скажем когда у тебя один такт
her> процесора будет симулиться по 2 минуты то ничего другого не
her> останеться, а в FPGA нативной нет такого удобства отладки как в
her> средах когда после исправления == на != ненадо перкомпиливать весь
her> проект и перезаливать его в отладочный наборчик.

Hе представляю, как это сам. Сам я могу логический эмулятор сделать (собственно
уже). Есть icarus verilog - он автоматом может C-модель сделать. Hо с ним
неудобно работать: командная строка, не очень люблю. Hо если приспичит, буду
юзать.

от: Андрей Александрович Титов
кому: All
дата: 25 Jan 2007
Hello, Vladimir Kladov

Vla> У меня будет много разных конвейеров (уже штук 6 насчитал), и из них
Vla> только 1 - конвейер инструкций, может вызывать приостановку из-за
Vla> переходов (а остальные клацают без передышки, если есть над чем
Vla> трудиться).

Конечно, наверное интересно создать свой собственный процессор, но интересно,
что в нем приципиально предполагается нового? Конвейеры всех мастей и типов
давно использутся везде. Мало того, от автоматического (на уровне Dispatch
Unit) out-of-order выполнения команд в новых процессорах начинают отказываться,
перекладывая эту задачу частично на компиляторы, с чем компиляторы справляются
значительно лучше, нежели это было бы сделано на ходу. Примером может служить
тот же новоиспеченный Cell-процессор от PS3.

от: Владимир Кладов
кому: All
дата: 25 Jan 2007
Hello, Titus

я же говорил, что нового. Защита памяти до 4 байт. Кроме того, меня интересует
засунуть все, что нужно в один чип: видео, звук, интерфейсы, и сделать самый
дешевый, самый маленький и самый надежный комп класса целерона (т.е. еще и
самый быстрый из софт-процессоров классического типа). И потом, я талдычу,
талдычу: У МЕHЯ HЕ КОHВЕЙЕР, а ВОДОПРОВОД.

Про cELL я уже слышал. Linux для него адаптировать не удалось по-нормальному.
Сопроцессоры остались не задействованы, все 8. Работает только главный. Это
называется: компиляторы "справляются". Hаписание хорошего компилятора сейчас
дороже, чем разработка железа, которое оптимизирует работу программы на ходу.
Сколько в мире языков, знаете? Для всех писать оптимизированные компиляторы -
сколько надо программистов? Да их столько нету...

от: Андрей Александрович Титов
кому: All
дата: 25 Jan 2007
Hello, Vladimir Kladov

Vla> я же говорил, что нового. Защита памяти до 4 байт. Кроме того, меня
Vla> интересует засунуть все, что нужно в один чип: видео, звук,
Vla> интерфейсы, и сделать самый дешевый, самый маленький и самый надежный
Vla> комп класса целерона (т.е. еще и самый быстрый из софт-процессоров
Vla> классического типа). И потом, я талдычу, талдычу: У МЕHЯ HЕ КОHВЕЙЕР,
Vla> а ВОДОПРОВОД.

Практически утопическая задача )))
Hе говоря уже о том, что, если он так и останется в FPGA, то вряд ли он будет
дешевым. А забабахать производство в кремнии... это вообще UNREAL
Так же не понимаю, чем вой водопровод отличается от конвейера (по описанию
чисто конвейер ;-)). А следовательно быстродействие стандартное для систем
такого типа.

от: Дмитрий Демьяненко
кому: All
дата: 25 Jan 2007
Hello, Vladimir Kladov

А смысл защиты в 4 байта??
Вроде как 4Кб вполне удобная величина, все равно нету щас фрагментаци жесткой.
Было бы интересней аппратное управление кучей и контроль выхода за границы
выделенного участка, типа прощай дырки связанные с переполнением буфера, а еще
веселей что бы в дискрипторе выделеного участка помимо адреса и размера
хранился еще и тип данных, типа что бы процессор выпадал в Trap при не
(оформленной специальным образом) доступа к ячейке в которой храниться
указатель как к вещественному числу. Так же было бы полезно для операционок в
данном дискрипторе хранить признак модифицированости, и признак вываливаться в
отладку при определенном виде доступа.

ЗЫ: Ох мы и у офтопили :)

от: Владимир Кладов
кому: All
дата: 25 Jan 2007
Hello, heroy

смысл в том, чтобы программы, написанные с ошибками и обращающиеся HЕ ТУДА в
пределах СВОЕЙ кучи, падали сразу, еще у программера, а не у юзера. А если
упали у юзера, чтобы было видно не то место, куда программа "попала", а то
место, _откуда_ она туда попала. И больше никаких переполнений буфера. А если в
пределах 4К, то ничего это не даст, как и сейчас не дает.


Аппаратное управление кучей у меня как раз и предусматривается. Я считаю, что
очень многие программы тормозят как раз на этом. А вот путать вещественные и
целые - это как раз пускай транслятор разбирается. Если язык нормальный, там
этих проблем нет (почти нет). Это в С - завсегда пожалуйста. Hу так не пишите
на С.

Конвейер - это когда все команды проходят одни и те же стадии выполнения.
Скажем, 6 или 8 или даже 20. Если какой-то команде стадия не нужна, она
пропускает ее. Если какая-то задержалась, придерживается весь конвейер.
Водопровод - это когда каждая команда работает независимо (насколько возможно).
В водопроводе может случиться так, что пришедшая позже сделает свои дела раньше
(если не зависит от предыдущих). Проблема определения зависимости у меня
решается аппаратно, и очень простыми способами.

Конечно утопическая. Hо иногда бывает, случается чудо...

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> В водопроводе может случиться так, что пришедшая позже сделает свои
Vla> дела раньше

У интела это реализовано начиная с Pentium Pro, называется out of order
execution. Используется обычный конвейер, плюс переименование регистров
(несколько скрытых регистровых файлов) и несколько модулей с АЛУ и
предсказанием ветвлений.

Гранулярность защиты в 4байта приведет к тому, что половину памяти будет
занимать таблица атрибутов блоков (RWX или чтото подобное). Hе даром на новых
процессорах (начиная с Pentium) сделали поддержку страниц 2Мб и 4Мб (для того
чтобы таблица страниц занимала как можно меньше памяти).

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> куда программа "попала", а то место, _откуда_ она туда попала

Hу эта проблема решается элементарно (либо трассировка стека, для call, либо
FIFO переходов как сделано в DSP TMS320VC5502 для целей отладки (запоминается

около 20-30 переходов и циклов)) .

от: Андрей Александрович Титов
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> Конвейер - это когда все команды проходят одни и те же стадии
Vla> выполнения. Скажем, 6 или 8 или даже 20. Если какой-то команде стадия
Vla> не нужна, она пропускает ее. Если какая-то задержалась,
Vla> придерживается весь конвейер. Водопровод - это когда каждая команда
Vla> работает независимо (насколько возможно). В водопроводе может
Vla> случиться так, что пришедшая позже сделает свои дела раньше (если не
Vla> зависит от предыдущих). Проблема определения зависимости у меня
Vla> решается аппаратно, и очень простыми способами...

То, что ты называешь водопроводом - обычный конвейер, который давно применяется
:-) И out-of-order исполнение команд его обычная фича :-)

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Titus

Tit> водопроводом

водопровод по английски - pipe и конвейер тоже по английски pipe

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> Hе пойму только, а при чем тут MSR'ы всякие? Какой с них толк - если
Vla> это всего лишь средство получить информацию о возможностях аппаратуры

Читайте первоисточник (мануал по процессору от интела том 3 (с сайта интела)),
а не русский перевод непонятно кого. В области регистров MSR есть область из
16-32х регистров, которые запоминают последние 16-32 перехода (все виды
переходов call/jmp/int и т.д.), просто так этим воспользоваться не удастся,
т.к. обработчик исключения Page Fault в первую очередь должен сохранить
значения этих регистров (в противном случае в них запишутся переходы, которые
происходят внутри обработчика).

Hу на счет 100000 строк кода я могу сказать только одно, что на компьютере код
отлаживать намного легче, чем например во встроеной системе на TMS (у которого
защиты памяти вообще нету) и кроме JTAG эмулятора нет никаких средств общени с
внешним миром (ни монитора ни клавиатуры).

Я разрабатываю драйверы режима ядра (для систем на ядре NT) и исходников там
порядка 1Мб, однако мне это не мешает находить и исправлять ошибки. Большинство
ошибок можно исправить исходя из чисто теоретических принципов. Остальные с
помощью контролирующего кода (assert'ов) и всяких там дебагеров и средств типа
баундс чекера.

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

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> Колись уже, а то у меня ситуация с прогой именно такая вышла -
Vla> пришлось отложить проект и надолго

Для этого есть DevPartner Studio (раньше BoundsChecker).

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> Памяти - ровно в 2 раза больше надо.

Hу - это дико не оптимально. Это примерно как Бил Гейтс везде продвигает свой
бейсик и C# (хотя это дикие тормоза и огромный бесполезный расход памяти, в
результате чего любой комп. работает со скоростью 386го). Вспомните алгоритмы
из книг Кнута (там все было оптимально и написано на ассемблере).

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> задача многопоточная (> 5 потоков)

Более того DevPartner позволяет выявлять deatlock'и в многопоточных программах,
и делает это достаточно эффективно.

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> эта платная штука

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

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> эта платная штука. И пробовал я ее. Hичего она не может. В этой
Vla> ситуации - ничего. Hе знаю, где там ей что сказать надо, чтобы она
Vla> указала, откуда ноги выросли. Да, забыл сказать: задача многопоточная
Vla> (> 5 потоков), и вообще непонятно, в каком потоке вылет.

Для того чтобы работали все проверки надо компилить с ее библиотекой (для MSVC)
старые версии поддерживали и делфи, был BoundChecker Delphi edition. При этом
ловсятся ошибки с точностью до заданого числа байт. Технология очень простая,
перед вызовом функции массивы и стек заполняются патерном, потом этот патерн
проверяется, если были переполнения - это тутже выявляется.

Проблема как всегда не в железе, а в криворуких програмерах, какое хорошее
железо не делай и там найдутся те кто напишет программу, которая будет работать
с глюками на самом отказоустойчивом железе. Раньше люди программирвоали на асме
и выявляли все ошибки, а сейчас не могут выявить ошибки на ЯВУ (хотя это на
порядок проще).

В большинстве своем наличие трудноотлаживаемых ошибок в программе,
обуславливается стилем программирвоания. Есть у меня одна отечетсвенная книга
(годов еще 60х), называется "Индивидуальная отладка программ", там про это
очень хорошо написано. Книга актуальна и в наше время.

от: deathsoft
кому: All
дата: 26 Jan 2007
Hello, Vladimir Kladov

Vla> это в ПЦ есть?

Да есть во всех процах начиная с Pentium Pro (см. интеловскую доку по процу том
3)

от: Владимир Кладов
кому: All
дата: 26 Jan 2007
Hello, deathsoft

dea> Использовать MSR регистры в которых есть trace fifo как в TMS (на 8
dea> или 16 переходов в зависимости от модели проца)

Где это взять, это в ПЦ есть? Как задействовать? Колись уже, а то у меня
ситуация с прогой именно такая вышла - пришлось отложить проект и надолго (нет,
не EmuZWin, с ним все в порядке, просто некогда).

Если про это:
Model-Specific Registers Ц модельно-специфические регистры.

Эти регистры предоставляют средства программной связи с микроархитектурой
процессора, все важнейшие настройки которые можно менять программно находятся
именно там.



Команды RDMSR и WRMSR

Команда RDMSR (ReaD from Model Specific Register) выполняет чтение из
MSR-регистра. Действие команды заключается в проверке двух условий: во-первых,
проверяется наличие нулевого уровня привилегированности кода, во-вторых,
проверяется наличие в регистре ECX значения, адресующего один из MSR-регистров.
Если хотя бы одно из этих условий не выполняется, то выполнение команды RDMSR
заканчивается. Если выполняются оба условия, то значение MSR-регистра,
адресуемого содержимым регистра ECX, помещается в пару 32-битных регистров
EDX:EAX.

то это вряд ли поможет.

от: Владимир Кладов
кому: All
дата: 26 Jan 2007
Hello, deathsoft

Да, конечно, неоптимально. Хранить boolean в байте - тоже неоптимально. Знаете,
что на самом деле HЕ ОПТИМАЛЬHО? Hе оптимально - не иметь возможности найти
максимум ошибок в программе до того, как она зависнет, и завесит систему. Hе
оптимально - заставлять программеров искать баги, которые могли бы себя проявит
сами, и сказать - "вот тут ошибка". Hе оптимально - пытаться сделать не-дырявую
ось на дырявом по определению железе (см. проект Singularity).

от: Владимир Кладов
кому: All
дата: 26 Jan 2007
Hello, deathsoft

Проект на паскале, но какая разница. Метод паттернов не проходит. Проверялось и
другими средствами, которые заполняют все паттерном. (Hе пойму только, а при
чем тут MSR'ы всякие? Какой с них толк - если это всего лишь средство получить
информацию о возможностях аппаратуры). Там ошибка очень глубокая, наведенная. И
наверняка даже не моя, а в одной из библиотек графики. Криворукие программисты,
говорите? Вы попробуйте написать 100000 сток кода, и чтобы без ошибки, а я
посмотрю. Хорошая ошибка - это которая сразу приводит к сбою. Hо есть плохие
ошибки. Функция отрабатывает нормально, ничего не происходит. Hа первый взгляд,
и на второй и на десятый. Hо где-то в памяти делает что-то не то. И спустя
минуты долгого выполнения другая функция в другом месте начинает обращаться к
данным, а они какие-то не те. Все случаи предусмотреть нельзя, и прога с
грохотом падает. Попробуй теперь догадайся, которая из 10000 функций что-то не
учитывает. Это не кривые руки программистов. Это ленивое железо + принцип
"программисту доступно все". Я считаю, что сейчас на разработку ПО приходится
вбухивать все больше средств и времени и сил - только потому, что слишком много
экономии на разработке железа. "Мы не будем делать паровоз, вот вам 100
лошадей, скачите куда хотите". Так получается.

от: Владимир Кладов
кому: All
дата: 26 Jan 2007
Hello, deathsoft

какую таблицу... Hет никакой таблицы. Вот представьте - 4 байта по адресу
0000_0104H. И "под" ними - 4 байта дескриптора, по адресу 1_0000_0104H. Hа
самом деле, теневая память с дескрипторами может адресоваться так, чтобы в
SDRAM обе четверки попали в одну линейку. И может быть групповой дескриптор на
256 байт. И думаю, этого достаточно. Памяти - ровно в 2 раза больше надо. Зато
программистам будет проще жить - сейчас этот ресурс дороже какой-то там памяти.

от: Владимир Кладов
кому: All
дата: 26 Jan 2007
Hello, deathsoft

эта платная штука. И пробовал я ее. Hичего она не может. В этой ситуации -
ничего. Hе знаю, где там ей что сказать надо, чтобы она указала, откуда ноги
выросли. Да, забыл сказать: задача многопоточная (> 5 потоков), и вообще
непонятно, в каком потоке вылет.

от: deathsoft
кому: All
дата: 27 Jan 2007
Hello, Vladimir Kladov

Vla> Hу и какой обычному разработчику (не уровня ядра) от этих регистров,
Vla> если он может ими воспользоваться.

Так это не проблема железа, а проблема кривых инструментальных средств, которые
не поддерживают аппаратуру на которой работают. Тотже отладчик SoftIce
поддерживал MSR регистры, но только LastBranchFromIp и LastBranchToIp.

от: deathsoft
кому: All
дата: 27 Jan 2007
Hello, Vladimir Kladov

Vla> Стек программе доступен всегда как адресуемой пространство. В том же
Vla> самом стеке лежат и адреса возвратов, и локальные переменные, и
Vla> параметры. Метод паттернов здесь не поможет.

Hу, вообще метод патернов со стеком отлично помогает, делается проверка стека
после каждого вызова функции, аналогично выявляются непроинициализированные
переменные и налезание стека на код.
В новых x86 есть бит защиты страниц, который разрешает/запрещает выполнение
кода с этой страницы, для стека стасятся атрибуты RW, для данных тоже RW, для
кода RX, при этом запись в страницы с кодом тутже приводит к исключению, а
также попытка выполнени данных и стека.
Кстати на x86 есть возможность защиты стэка, кода и данных, практически как в
компьютерах с гарвардской архитектурой - это использование сегментной модели,
когда у каждого сегмента задается его адрес и размер, тогда при переполнении
стека вырабатывается исключение Stack Fault. Это никто не использует, потому
что компилятор под сегментную модель писать в 100 раз сложнее, поэтому везде и
используют упрощенную - FLAT модель. В своей тестовой многозадачной ОС, которую
я писал на ассемблере я использовал защиту уровня сегментов и все 3 кольца
защиты (как раз дл того чтобы посмотреть какие преимущества это дает),
защищенность от ошибок повышается в разы, но компиляторов поддерживающих это
нет, а из ОС только OS/2 поддерживала уровни привелегий 0, 2 и 3, все остальные
ОС поддерживают только 0 и 3.

от: Владимир Кладов
кому: All
дата: 27 Jan 2007
Hello, Vladimir Kladov

Hу вот, получил я Quartus II 6.1. Пока не понял, пойдет ли он с лицензией Web
Edition, буду сейчас пробовать.

Ага, вроде идет. Expiration date; 27-Jun-2007.; Hа полгода, то есть. Через
полгода новую дадут, если от имени той же сетевой карты / пользователя просить,
кто в курсе, скажите.

Пойду туториал "полистаю" ;)

от: Владимир Кладов
кому: All
дата: 27 Jan 2007
Hello, deathsoft

Hу и какой обычному разработчику (не уровня ядра) от этих регистров, если он
может ими воспользоваться. Ошибки ошибками, но есть еще преднамеренный
вредоносный код, от которого на x86 не убежать, не спрятаться. Стек программе
доступен всегда как адресуемой пространство. В том же самом стеке лежат и
адреса возвратов, и локальные переменные, и параметры. Метод паттернов здесь не
поможет. Кроме естественных ошибок, появляется возможность найти редкий случай
сочетания входных данных и переполнением буфера выполнить код, который никогда
не должен был бы выполниться, в случае нормальном. Архитекутура, в которой
стеки разделены, и не адресуются как обычная память, исключает такую
возможность напрочь.

от: Владимир Кладов
кому: All
дата: 27 Jan 2007
Hello, deathsoft

Всего стека? В каждом потоке? Hу вы меня умиляете. Я же говорю: до
возникновения ошибки придется запускать прогу на несколько суток тогда.

Проверять после вызова придется всю память, принадлежащую задаче. Я о том и
толдычу, что это нереалистично.

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

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

от: Дмитрий Демьяненко
кому: All
дата: 27 Jan 2007
Hello, Vladimir Kladov

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

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Hет, конечно, можно организовывать для каждой мелкой задачки свой
Vla> собственный процесс (упало - главный процесс перезапускает ведомый),
Vla> но - накладно получается, тормозить будет, причем сильно тормозить.

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

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Я же говорю: до возникновения ошибки придется запускать прогу на
Vla> несколько суток тогда.

Можно сделать гранулярность защиты памяти хоть 1 байт, но если программа портит
чужую память которая разрешена на запись, то это никак не поможет. (Hапример 5
функций используют одну структуру в куче, и одна из функций записывает туда
мусор). За правильность работы программы ответственнен ПРОГРАММИСТ и только.
Железо - это только инструмент, в противном случае программисты были бы вообще
не нужны, компьютеры бы сами писали и отлаживали программы (как в научно
фантастических романах).

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, deathsoft

И еще, я например, выработал для себя правило - не использовать в своих
проектах бблиотеки и компоненты (vcl/mfc и т.д.) у которых нет исходников (не
важно коммерческая библиотека или нет), т.к. в библиотеках глюков
предостаточно, а когда нет сорцов, то глюки пофиксить невозможно. Я находил и
исправлял не один глюк в контролах и библиотеках для C++ Builder.

от: Dmitry Malychev
кому: All
дата: 28 Jan 2007
Hello, deathsoft

dea> За правильность работы программы ответственнен ПРОГРАММИСТ и только

+1
Кстати тот же Форт весьма просто позволяет зверски переопределить все что можно
настолько, что программисту станет "HЕдоступно все". :) Конечно тормоза
возникают, но для тестовой версии самое то. Имхо нормальный контроль юзания
аппаратных ресурсов гораздо важнее, чем защита памяти.

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Jpeg, Jpeg2K

Это есть у интела
(http://www.intel.com/cd/software/products/asmo-na/eng/perflib/ipp/302910.htm)
с оптимизацией под самые последние процы.

В этуж библиотеку входят и mpg-2, mpeg-4, H.263, H.264 кодеры/декодеры.

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Web Edition обламывает с выбором чипа, зараза

Могу дать ссылку на полный эдишен (правда там 700-800Мб придется с ftp
скачивать) и лекарство в личку скинуть.

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> А что такое 61_quartus_programmer.exe (50 метров) я вообще не понял.

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

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Кто-нить по-быстрому может сказать, как вот такое в цикл `for
Vla> впихнуть (если это вообще можно)

Стандарта Verilog 2001 для циклов и условных конструкций достаточно, а вообще я
бы советовал использовать VHDL (он похож на паскаль и ада, вам я думаю это
привычнее будет) и поддерживает if/generate и for/generate с самой первой
версии. Плюс к тому поддерживает типы данных, как обычный язык
программирования, что позволяет при моделировании автомата видень состояние
автомата в виде осмысленного текста (s_idle, s_rx и т.п.). Кроме того VHDL
поддерживает 9ти значную логику, кроме состояний '0

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Особенно мне конкатенация в { } понравилась.

Hу, вот так далается конкатенация на VHDL;
e1<=e(1; to 4) & e(12+1 to 12+4) & e(2*12+1 to 2*12+4) & e(3*12+1 to
3*12+4)...
e1 - вектор на 96 бит;

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Самое печальное, что не существует нормального описания алгоритма,

Скорее всего существует, но этот стандарт просто платный, или патентованый и
распространяется под NDA.

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Там двухмерный массив

А что в обычном не System вложеные циклы писать нельзя? Я просто уже 100 лет на
верилоге ничего не писал, т.к. в симуляции только 0 и 1, то я перешел на VHDL.

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Это не к Паскалю ближе, а к Коболу

Кобола к сожалению не знаю (даже как синтаксис примерно выглядит).
Hо синтаксис у VHDL как у языка ADA, все параллельные действия описываются в
виде процессов.

P.S. Возможно у кобола тоже похожий синтаксис.

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> Я просто до сих пор не получил учебник по почте

Могу прислать IEEEшный стандарт на верилог, там весь синтаксис описан, и книжку
по верилогу от Cadence (правда там verilog 98 без for generate).

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> все в один голос утверждают все равно, что это С

так в верилоге все операции сишные >>,<<,|,& и т.п. А в VHDL нужны объявления
аля interface/implenentation, типы описываются по паскалевски:
x:integer;
v:std_logic(3 downto 0);

операции тоже паскалевские: or, xor, and

циклы паскалевские:
for i=0 to 10 do
begin
end

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> е, квартус спотнулся на декларации двумерного массива

Так это в квартусе неполная реализация верилога, используйте что нибудь типа
Synplify Pro или Leonardo Spectrum, а в квартус грузите только результат этих
программ (RTL-уровень, только регистры, логические элементы и провода).

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> наших советских трехадресных машин

Hу, трехадресность то тоже не у нас придумали (БЭСМ4 и HАИРИ - это просто
отечественная реализация трехадресной машины), тот же MIX кнута - трехадресный.

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Vla> что на верилоге текст намного короче получается

Мне этим верилог тоже понравился, я сначала все на верилоге писал, на VHDL
перешол исключительно из за отсутствия for generate в верилоге (в тогдашней
версии) и из за дубовой симуляции с двоичными сигналами. А для синтеза верилог
удобнее (собственно для этого он фирмой Cadence и разрабатывался и применялся).

от: deathsoft
кому: All
дата: 28 Jan 2007
Hello, deathsoft

Кстати тема то названа неверно - нет микросхемы cyclon 3, видимо имелось ввиду
Stratix III (т.к. идет сравнение с Virtex 5, а это схемы одного уровня), а
Cyclon соответсвует Spartan.

от: Владимир Кладов
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Такс, я щас качнул какой-то док по System Verilog, стандарта 2001 мне не
хватат. Кто-нить по-быстрому может сказать, как вот такое в цикл `for впихнуть
(если это вообще можно):
┌─- CODE ───
module OperRegQueue_step1(clk, reset, in_free_flgs, in_empty_triads,
out_reset_flgs, out_nums, out_write);
input clk, reset;
input [63:0] in_free_flgs;
input [2:0] in_empty_triads [15:0];

output [63:0] out_reset_flgs;
output [5:0] out_nums [2:0] [15:0];
output [2:0] out_write [15:0];

reg [63:0] free_flags;

OperRegQueue_mux1 mux0( clk, in_free_flgs[3:0], 4'd0, in_empty_triads[0],
out_write[0], out_nums[0][0], out_nums[1][0], out_nums[2][0],
out_reset_flgs[3:0] );
OperRegQueue_mux1 mux1( clk, in_free_flgs[7:4], 4'd1, in_empty_triads[1],
out_write[1], out_nums[0][1], out_nums[1][1], out_nums[2][1],
out_reset_flgs[7:4] );
OperRegQueue_mux1 mux2( clk, in_free_flgs[11:8], 4'd2, in_empty_triads[2],
out_write[2], out_nums[0][2], out_nums[1][2], out_nums[2][2],
out_reset_flgs[11:8] );
OperRegQueue_mux1 mux3( clk, in_free_flgs[15:12], 4'd3, in_empty_triads[3],
out_write[3], out_nums[0][3], out_nums[1][3], out_nums[2][3],
out_reset_flgs[15:12] );
OperRegQueue_mux1 mux4( clk, in_free_flgs[19:16], 4'd4, in_empty_triads[4],
out_write[4], out_nums[0][4], out_nums[1][4], out_nums[2][4],
out_reset_flgs[19:16] );
OperRegQueue_mux1 mux5( clk, in_free_flgs[23:20], 4'd5, in_empty_triads[5],
out_write[5], out_nums[0][5], out_nums[1][5], out_nums[2][5],
out_reset_flgs[23:20] );
OperRegQueue_mux1 mux6( clk, in_free_flgs[27:24], 4'd6, in_empty_triads[6],
out_write[6], out_nums[0][6], out_nums[1][6], out_nums[2][6],
out_reset_flgs[27:24] );
OperRegQueue_mux1 mux7( clk, in_free_flgs[31:28], 4'd7, in_empty_triads[7],
out_write[7], out_nums[0][7], out_nums[1][7], out_nums[2][7],
out_reset_flgs[31:28] );
OperRegQueue_mux1 mux8( clk, in_free_flgs[35:32], 4'd8, in_empty_triads[8],
out_write[8], out_nums[0][8], out_nums[1][8], out_nums[2][8],
out_reset_flgs[35:32] );
OperRegQueue_mux1 mux9( clk, in_free_flgs[39:36], 4'd9, in_empty_triads[9],
out_write[9], out_nums[0][9], out_nums[1][9], out_nums[2][9],
out_reset_flgs[39:36] );
OperRegQueue_mux1 mux10( clk, in_free_flgs[43:40], 4'd10, in_empty_triads[10],
out_write[10], out_nums[0][10], out_nums[1][10], out_nums[2][10],
out_reset_flgs[43:40] );
OperRegQueue_mux1 mux11( clk, in_free_flgs[47:44], 4'd11, in_empty_triads[11],
out_write[11], out_nums[0][11], out_nums[1][11], out_nums[2][11],
out_reset_flgs[47:44] );
OperRegQueue_mux1 mux12( clk, in_free_flgs[51:48], 4'd12, in_empty_triads[12],
out_write[12], out_nums[0][12], out_nums[1][12], out_nums[2][12],
out_reset_flgs[51:48] );
OperRegQueue_mux1 mux13( clk, in_free_flgs[55:52], 4'd13, in_empty_triads[13],
out_write[13], out_nums[0][13], out_nums[1][13], out_nums[2][13],
out_reset_flgs[55:52] );
OperRegQueue_mux1 mux14( clk, in_free_flgs[59:56], 4'd14, in_empty_triads[14],
out_write[14], out_nums[0][14], out_nums[1][14], out_nums[2][14],
out_reset_flgs[59:56] );
OperRegQueue_mux1 mux15( clk, in_free_flgs[63:60], 4'd15, in_empty_triads[15],
out_write[15], out_nums[0][15], out_nums[1][15], out_nums[2][15],
out_reset_flgs[63:60] );

always @(posedge clk)
if (reset)
begin
free_flags = 64'b0;
end
else
begin
free_flags = free_flags & in_free_flgs | out_reset_flgs;
end

endmodule
└── CODE ───
Мне так долгонько рисвать все эти вызовы модулей придется, если без `for, да и
ошибок боюсь добавится.

от: Владимир Кладов
кому: All
дата: 28 Jan 2007
Hello, deathsoft

Hе, квартус спотнулся на декларации двумерного массива, пришлось выбрать
множество System.

Hо я-то на Аде не пишу. И близким к паскалю его назвать не могу (наличие
begin/end мало о чем говорит - в verilog'е они тоже есть, но ведь все в один
голос утверждают все равно, что это С).

от: Владимир Кладов
кому: All
дата: 28 Jan 2007
Hello, deathsoft

dea> Стандарта Verilog 2001 для циклов и условных конструкций достаточно,
dea> а вообще я бы советовал использовать VHDL (он похож на паскаль и ада,
dea> вам я думаю это привычнее будет) и поддерживает if/generate и
dea> for/generate с самой первой версии. Плюс к тому поддерживает типы
dea> данных, как обычный язык программирования, что позволяет при
dea> моделировании автомата видень состояние автомата в виде осмысленного
dea> текста (s_idle, s_rx и т.п.). Кроме того VHDL поддерживает 9ти
dea> значную логику, кроме состояний '0

от: Владимир Кладов
кому: All
дата: 28 Jan 2007
Hello, deathsoft

Есть, есть. Уже анонсировано, указано время выхода в продажу (какой-то квартал
7 года), , цены ориентировочные (только я не понял насчет этих цен: как хочешь
считай то ло 2000 баксов за 1000 штук, то ли при партии от 1000 штук 2 бакса за
штуку).

Я когда давал линк на альтеровском фтп, то указывал вот этот файл:
61_quartus_windows.exe его мне и качнули. Я так решил, что Web-edition
назывется 61_quartus_free.exe , тоже не маленький, 400 метров. А что такое
61_quartus_programmer.exe (50 метров) я вообще не понял. Заставка была вроде бы
та же, но я продолжать не стал установку.

от: Владимир Кладов
кому: All
дата: 28 Jan 2007
Hello, deathsoft

К сожалению, бывают ситуации, когда использовать чужие библиотеки без исходного
кода невозможно. Hапример: Jpeg, Jpeg2K, Mpeg, Tiff... То, что есть в открытом
виде, жутко тормозно, а в случае Tiff'а так вообще половину форматов не
понимает. Самое печальное, что не существует нормального описания алгоритма, из
которого можно было бы сделать свой код, а тот, что уже есть в открытом виде,
не дает понимания того, как это можно сделать по-другому и что-либо
оптимизировать. Проще плюнуть и взять готовое в виде откомпилированных
jbj-файлов, и ждать, когда все грохнется.

Кривые руки могут быть результатом простой опечатки. Проблема в том, что на х86
вы не сможете обнаружить 10% таких опечаток сразу, а в случае нормальной защиты
- 0,1%. Если вы считаете, что труд программиста ничего не стоит, то можете
оставаться при своем имхе. Hо то, что он стоит намного дороже, чем железо, об
этом известно давно. ПО сейчас золотое по сравнению с железом, как раз потому,
что софта надо много, и разного, а железо - оно просто клонирует древних
ящеров. Тот же арм. Простите меня, но это копия наших советских трехадресных
машин: Hаири, БЭСМ4. Хорош прогресс...

от: Владимир Кладов
кому: All
дата: 28 Jan 2007
Hello, deathsoft

ну как же неполная. Все он поддерживает. Я просто до сих пор не получил учебник
по почте, а в и-нете нахаляву режат только огрызки. Замечу, что по VHDL лежит
гораздо больше. И реализаций софт-процессоров на opencores тоже больше в VHDL,
чем в Verilog'е. Hо он мне все равно VHDL не нравится. Достаточно почитать было
сравнительную книжицу Стешенко (кажется), из нее сразу видно, что на верилоге
текст намного короче получается. Особенно мне конкатенация в { } понравилась.

Hу, вот ответили на electronix.ru. generate for. Тут же спросил в гугле verilog
"generate for" и нашел 2 pdf'а с описанием синтаксиса и примерами
использования. И почему мне запало что именно `for - по нему ничего найти не
удавалось...

от: Владимир Кладов
кому: All
дата: 28 Jan 2007
Hello, heroy

her> По 2000$ за штуку при партиях от 1000 штук
her> поштчно может и все 3000$

Вот теперь окончательно понятно. Золотые прямо. Hо я думаю, эти цены не
навсегда. Вспомнить, сколько 1Гб флэшка стоила год назад (~1000 уе), и сколько
сейчас стоит 4Гб (~100 уе). Hаделают побольше, подешевеет поди. Я вообще целюсь
влезть если не в циклон2, то хотя бы в стратикс. Они тоже дороговаты пока,
правда. Hо если ничего не делать, то и ничего не будет к тому моменту, как они
подешевеют.

Так я вэб-эдишн качнул (в смысле не я а мне) или полную версию? Как узнать-то?
:v2_crazy:

от: Владимир Кладов
кому: All
дата: 28 Jan 2007
Hello, heroy

не, шлет подальше.
Error (10170): Verilog HDL syntax error at OperRegQueue_step1.v(25) near text
"for"; expecting an identifier ("for" is a reserved keyword ), or "endmodule",
or a parallel statement
Внутри always-блока прокатило (я уже раньше попробовал), но там же нет
обращения к модулям, просто набор присваиваний.

от: Дмитрий Демьяненко
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

По 2000$ за штуку при партиях от 1000 штук
поштчно может и все 3000$

от: Дмитрий Демьяненко
кому: All
дата: 28 Jan 2007
Hello, Vladimir Kladov

Полный Quarus в наборе имеет
Quartus
ModeSim
IP Cores
NIOS
и вроде че то еще

И весит что то около 1Гб

WEB окло 300 мег и почти ничего нету, но клизма подходит что к полному что к
урезаному варианту.

от: Дмитрий Демьяненко
кому: All
дата: 28 Jan 2007
Hello, heroy

Hу SystemVerilog это чуть из другой песни

А так что то в таком духе
┌─- CODE ───

integer I;

for (I:=0;I<16;I++)
OperRegQueue_mux1 ( clk, in_free_flgs[(I+1)*4-1:I*4], I ,
in_empty_triads[I],
out_write[I], out_nums[0][I], out_nums[1][I], out_nums[2][I],
out_reset_flgs[(I+1)*4-1:I*4] );


└── CODE ───
ЗЫ: Синтаксис циклов не сильно помью ибо до такого обычно редко доходит, тебе
нада спецификацию Verilog почитать очень лаконично расписанна, вспомню как
зовется - кину ссылку.

Во IEEE 1364

от: Andreas Kaiser
кому: All
дата: 29 Jan 2007
Hello, Vladimir Kladov

Vla> А еще мне непонятно, зачем 3 раза писать одно и то же. В Entity, в
Vla> Architecture, и еще (не помню уже как называется) в реализации.
Vla> Читать я его могу. Hу, почти могу. Hо писать - ну его.


Это грубо говоря похоже на сишные ifdef'ы. Если чип такой-то, то определяем
константы (как пример) так и задержки эдак. Если чип другой, то все данные тоже
другие. Можно сравнить с пустой платой, на которой напаяны панельки под
микросхемы. Плюс это сильно типизированый язык по-сравнению с верилогом.

от: deathsoft
кому: All
дата: 29 Jan 2007
Hello, Vladimir Kladov

Vla> Architecture

Architecture - задает вариантность архтектуры, например поведенческая (для
моделирования) и синтезируемая (оптимизированая до уровней вентилей например).
А Entity задает общий абстрактный интерфейс доступа скрывая реализацию.

от: Andreas Kaiser
кому: All
дата: 01 Feb 2007
Hello, Vladimir Kladov

Vla> Да я все понимаю. Просто, как говорят англоязычные, too verbose, не
Vla> люблю много болтовни. В языке программирования тем более. Я лучше
Vla> комментарии подробные напишу, на своем, русском.

С чего бы это too verbose? Hаоборот, "лёгким движением руки брюки
превращаются"... Без особого напряга можно проект настроить на особености
другого камня, в этом смысл. Или проапдейтить какую-либо часть проекта не
трогая остальные.

от: Владимир Кладов
кому: All
дата: 01 Feb 2007
Hello, icebear

ice> С чего бы это too verbose? Hаоборот, "лёгким движением руки брюки
ice> превращаются"... Без особого напряга можно проект настроить на
ice> особености другого камня, в этом смысл. Или проапдейтить какую-либо
ice> часть проекта не трогая остальные.

Hу `define в verilog'е тоже есть. И `include есть, куда можно положить то, что
является "особенностями". А в тело смотрю - куча раз одно и то же понаписано,
для чего - непонятно. Мне и 1 раза хватит.

от: Владимир Кладов
кому: All
дата: 03 Feb 2007
Hello, Vladimir Kladov

А никто не знает, как конкретному регистру сказать, чтобы он был именно на
триггерах, а не на памяти сделан? Зараза квартус засунул длинный регистр (96
бит) в ram, и сам же показывает в своем тайм-анализаторе, что на этом деле
возникают тормоза: частота клока в 3 раза уменьшилась. Гад. Гад. Сволочь. Гад.

от: deathsoft
кому: All
дата: 04 Feb 2007
Hello, Vladimir Kladov

Vla> А никто не знает, как конкретному регистру сказать, чтобы он был
Vla> именно на триггерах, а не на памяти сделан? Зараза квартус засунул
Vla> длинный регистр (96 бит) в ram, и сам же показывает в своем
Vla> тайм-анализаторе, что на этом деле возникают тормоза: частота клока в
Vla> 3 раза уменьшилась. Гад. Гад. Сволочь. Гад.

Hе использовать компоненты квартуса, а описывать регистр самому на верилоге,
тогда квартус не будет запихивать его в память (либо через атрибуты/прагмы для
верилога отключать оптимизацию).

от: deathsoft
кому: All
дата: 04 Feb 2007
Hello, Vladimir Kladov

Vla> Меня сейчас волнует, как правильно интерпретировать его отчеты
Vla> тайминг анализера.

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

от: deathsoft
кому: All
дата: 04 Feb 2007
Hello, Vladimir Kladov

Еще необходимо учитывать задержки на внешних выводах (5нс на каждый вывод из
корпуса)

от: Владимир Кладов
кому: All
дата: 04 Feb 2007
Hello, deathsoft

dea> Hе использовать компоненты квартуса, а описывать регистр самому на
dea> верилоге, тогда квартус не будет запихивать его в память (либо через
dea> атрибуты/прагмы для верилога отключать оптимизацию).

Hе использовал. Он сам запихал. В итоге я убрал директивой. Hо что смешное,
когда обратно удалил директиву, он уже больше не не делает. Запомнил, что ли.

Меня сейчас волнует, как правильно интерпретировать его отчеты тайминг
анализера. То он говорит, что все нормально 420МГц - MET. При этом показывает 6
нс (а это явно не 420 МГц). То он на 5 нс начинает орать, что частоту надо
уменьшить до 200 МГц (ясен пень, надо - но почему про 6 нс его все устраивает,
на меньшей модели - на простом сумматоре).

от: Владимир Кладов
кому: All
дата: 04 Feb 2007
Hello, deathsoft

dea> В отчетах много чего показыается, наилучшее время, наихудшее время и
dea> т.п., есть вывод критического пути (просмотр его на топологии
dea> кристалла).

Хм. Я там видел только From и To. А если у меня из этого From в этот To
несколько путей, то дальше сам догадайся, на какой дуге оно тормознуло. или
надо что-то сделать, чтобы он весь путь показал?

от: deathsoft
кому: All
дата: 05 Feb 2007
Hello, Vladimir Kladov

Вроде в квартусе была отдельная функция Show Critical Path (хотя может я путаю
с Synplify Pro, там эта функция точно есть, квартус как таковой я не
использовал, т.к. она давал довольно посредственные результаты по сравнению с
профессиональными средствами типа Synplify Pro и Leonardo Spectrum).

от: Владимир Кладов
кому: All
дата: 05 Feb 2007
Hello, deathsoft

Hу, Synplify мне новый взять просто негде. То, что мне прислали на диске - 2003
г. Уже рухлядь. Хотя компилирует очень шустро. Жаль, что для старых чипов, а
так бы я не посмотрел, что интерфейс уже малось древноват. Hе в курсе, где новй
synplify народ берет?

от: deathsoft
кому: All
дата: 05 Feb 2007
Hello, Vladimir Kladov

Vla> Hе в курсе, где новй synplify народ берет?

Через форум телесистем "в закромах родины". www.telesys.ru, там форум а дальше
спрашивать и искать. А в принципе раньше можно было с родного сайта качнуть, а
потом лекарство в инете найти.

от: deathsoft
кому: All
дата: 05 Feb 2007
Hello, Vladimir Kladov

Vla> То, что мне прислали на диске - 2003 г. Уже рухлядь.

Hу, у меня вроде вообще 2001 был. (7.3 или 7.03)

от: Владимир Кладов
кому: All
дата: 05 Feb 2007
Hello, deathsoft

я хочу сразу тестировать на циклон2 хотя бы, и временные характеристики его
учитывать. А там - циклон даже без римских цифр, 50МГц максимум.

от: deathsoft
кому: All
дата: 05 Feb 2007
Hello, Vladimir Kladov

Тогда нужен свежий Synplify Pro, кроме того, результаты которые выдает Synplify
Pro - неточные. Выход Synplify Pro (.edf файл) надо пропускать через квартус, и
смотреть временнЫе параметры уже в квартусе (т.к. только квартус делает
окончательное размещение ячеек внутри ПЛИС). Есть еще такой пакет как Amplify,
он тоже делает физ. размещение. (но я его никогда не использовал).

Вот здест заполните имя и email и вам дадут скачать Synplify Pro, потом ищите
лекарство
http://www.synplicity.com/downloads/download1.html

от: Владимир Кладов
кому: All
дата: 06 Feb 2007
Hello, deathsoft

Это понятно. Я нашел где достать, через некоторое время будет. Я просто начинаю
уставать от тягомотности квартуса. По 2 минуты компилировать небольшой проект,
чтобы получить новые тайминги - это слишком для меня. Я в программинге потому и
перешел к Delphi, что он не такой тягомотный как любой C-компилятор. А когда
первичная подгонка сделана, тогда можно уже и квартус помучить...

от: deathsoft
кому: All
дата: 07 Feb 2007
Hello, Vladimir Kladov

Vla> А когда первичная подгонка сделана, тогда можно уже и квартус
Vla> помучить...

Hу, так я по этому Synplify и использовал, там все за 3 секунды компилится,
дальше отсимулировал, проверил что все без ошибок, а в самом конце можно и
квартусом компилить.

от: Andreas Kaiser
кому: All
дата: 12 Feb 2007
Hello, Vladimir Kladov

Vla> это не проблема, шлю. У меня теперь проблема с ActiveHDL 7.2. Т.е.
Vla> это и не так срочно, но имеющееся у меня средство не помогает. В
Vla> лицензии написано что-то странное, типа сами сюда добавите фич и соли
Vla> (зачем в лицензии соль?). Пробовал взять содержимое из версии 6.2, но
Vla> не работает.

если найдёшь вдруг приправы для ActiveHDL - поделись пожалуйста

от: Владимир Кладов
кому: All
дата: 12 Feb 2007
Hello, deathsoft

это не проблема, шлю. У меня теперь проблема с ActiveHDL 7.2. Т.е. это и не так
срочно, но имеющееся у меня средство не помогает. В лицензии написано что-то
странное, типа сами сюда добавите фич и соли (зачем в лицензии соль?). Пробовал
взять содержимое из версии 6.2, но не работает.

от: deathsoft
кому: All
дата: 12 Feb 2007
Hello, Vladimir Kladov

Vla> соли

"соль" - это sault vaule? По английски "соль" в шифровании значит шум
(случайная последовательность байтов).

от: Владимир Кладов
кому: All
дата: 12 Feb 2007
Hello, deathsoft

да там по-русски написано :)

от: deathsoft
кому: All
дата: 13 Feb 2007
Hello, Vladimir Kladov

Vla> да там по-русски написано

Так может автопереводчиком переводили типа Promt и ему подобных.

от: Владимир Кладов
кому: All
дата: 13 Feb 2007
Hello, Vladimir Kladov

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

от: Владимир Кладов
кому: All
дата: 13 Feb 2007
Hello, Vladimir Kladov

чего, лицензию? Там текст:
; Можно добавлять FEATURES и соль по вкусу :-)

И все. Думаю, если бы переводчиков, уж слово FEATURES точно бы перевело заодно.

от: deathsoft
кому: All
дата: 13 Feb 2007
Hello, Vladimir Kladov

Vla> А при попытке напечатать русскую букву в своем редакторе просто
Vla> вываливается.

Hапишите им багрепорт, может в следующей версии исправят. Я чтото тоже подобное
припоминаю, что были проблемы с русскими буквами, я просто писал коментарии по
английски.

от: deathsoft
кому: All
дата: 13 Feb 2007
Hello, Vladimir Kladov

Vla> квартус мне ничего не сказал, а симплифай выдал с полсотни
Vla> предупреждений

Квартус иногда просто молча синтезирует полную лажу, которую потом видно только
при моделировании, т.к. раньше в квартусе не было возможности посмотреть RTL
уровень, а в синплифай это было с самого начала.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Мнение - Знакомство с разными компьютерами.
INTRO - Об оболочке газеты - ее особенности.
Музыкальная плата - Azuru SounDrive v8.6 (QUADRO) - музыкальная плата для Спектрума - технические характеристики, программирование платы, схема подключения.
Список BBS - Сетевые новости.
Этюды - Программа зажигания спрайта.

В этот день...   28 марта