Перейти к содержанию
    

О философии HDL-дизайнера

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

На само деле вопрос как обычно задан не о том...

Как получить самый быстрый проект - вот вопрос. И такой проект получите, если уберете параллельные вычисления и множественные глобальные связи.

А вот это - " каждые 5 тактов генерирует одиночный импульс" - это обычный сдвиговый регистр, причем у Ксайлинкса есть SRL16 и SRL32, а это вообще одна ячейка. И как Вы это опишите, синтезатору все равно. На скорости работы проекта это практически не отразится. А вот если рядом сделать что-то вроде "определителя своего адреса для Ethernet" на параллельных регистрах, то проекту сразу поплохеет.

Но и это не главное. Можно взять более быстрый кристалл, но сделать проект на пару месяцев быстрее. Посчитайте, что выгоднее при партии 1 тыс шт. в год... Увидите разницу...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На само деле вопрос как обычно задан не о том...

Как получить самый быстрый проект - вот вопрос. И такой проект получите, если уберете параллельные вычисления и множественные глобальные связи.

А вот это - " каждые 5 тактов генерирует одиночный импульс" - это обычный сдвиговый регистр, причем у Ксайлинкса есть SRL16 и SRL32, а это вообще одна ячейка. И как Вы это опишите, синтезатору все равно. На скорости работы проекта это практически не отразится. А вот если рядом сделать что-то вроде "определителя своего адреса для Ethernet" на параллельных регистрах, то проекту сразу поплохеет.

Но и это не главное. Можно взять более быстрый кристалл, но сделать проект на пару месяцев быстрее. Посчитайте, что выгоднее при партии 1 тыс шт. в год... Увидите разницу...

Не понял. Если я опишу счнтчик + компаратор/дешифратор, то синтезатор не сделает схему на основе сдвигового регистра

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Т.е в одном случае разработчик абстрактно опишет модуль, и отдасть все на откуп синтезатору.

Во втором случае разработчик опишет модуль на уровне схемотехники...

Квартус, например, в большинстве случаев просто не даст опуститься до уровня схемотехники (даже если описать все примитивами) - переделает на свой лад.

Поэтому лучше говорить не про описание "на уровне схемотехники", а про описание с учетом как схемотехники используемой ПЛИС, так и используемого синтезатора.

И в некоторых простых задачах может дать существенный выйгрыш (до 2х раз), как по частоте, так и по ресурсам.

Такие узкие места лучше специально выделять из проекта для индивидуальной оптимизации.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понял. Если я опишу счнтчик + компаратор/дешифратор, то синтезатор не сделает схему на основе сдвигового регистра

Да потому что обычно в проекте всегда есть какой-то узел, который и ограничивает скорость всего проекта. И это точно не сдвиговый регистр на 5 позиций. И не счетчик на 3 разряда с дешифратором на 1 ячейке.

Все эти изыскания - полнейший бред любителя.

Быстродействие проекта определяется еще до того как написан первый HDL файл. Воткните в проект НИОС или Микроблэйз и дешифратор команд сожрет все быстродействие. Сделайте схему сравнения двух 32 разрядных чисел и не задумывайтесь обо всем остальном... И какая после этого разница, как сделать генератор импульса "1 из 5"?

Вот же приводил я пример про адрес в Ethernet. Можно принять из линии 6 байт в параллельные регистры и сравнивать параллельно 6 байт с регистрами адреса. А можно регистр адреса по-кольцу сдвигать в темпе приема, а схему сравнения сделать на 4 бита для 10/100. Разницу ощущаете? Проблема не в том, как компилятор переведет описание в список связей, а том, как разработчик смог оптимально представить структуру железа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот же приводил я пример про адрес в Ethernet. Можно принять из линии 6 байт в параллельные регистры и сравнивать параллельно 6 байт с регистрами адреса. А можно регистр адреса по-кольцу сдвигать в темпе приема, а схему сравнения сделать на 4 бита для 10/100. Разницу ощущаете? Проблема не в том, как компилятор переведет описание в список связей, а том, как разработчик смог оптимально представить структуру железа.

Вы хотите сказать, что среди плисоводов тоже полно гавнокодеров? :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы хотите сказать, что среди плисоводов тоже полно гавнокодеров? :(

Тут интересен критерий успеха...

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

Да, там будет все красиво, но решение будет не самым быстрым.

Именно поэтому я вижу аналогию VHDL с ассемблером. ВСЕ делается руцями!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы хотите сказать, что среди плисоводов тоже полно гавнокодеров? :(

вы название темы читали? они не кодеры.

надо применять расововыверенный термин- дизайнеры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут интересен критерий успеха...

Самое время провести соц-опрос на предмет достигнутых успехов в HDL-дизайне..

 

Ну, просто чтобы видеть, чего стоят многочисленные эксперты HDL-дизайна, настрочившие уже семь страниц пустопорожней болтовни.. :biggrin:

 

Успехи можно озвучить в формате:

 

Название & Функция модуля на HDL, Кол-во строк кода, Тип FPFA, Рабочая частота модуля..

 

Кто рискнет? :laughing:

 

А судьи кто? − За древностию лет

К свободной жизни их вражда непримирима,

Сужденья черпают из забытых газет

Времен Очаковских и покоренья Крыма;

Всегда готовые к журьбе,

Поют все песнь одну и ту же,

Не замечая об себе:

Что старее, то хуже.

Где, укажите нам, отечества отцы,

Которых мы должны принять за образцы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поэтому лучше говорить не про описание "на уровне схемотехники", а про описание с учетом как схемотехники используемой ПЛИС, так и используемого синтезатора. И в некоторых простых задачах может дать существенный выйгрыш (до 2х раз), как по частоте, так и по ресурсам.

Надо же, прям как и при написании кода на процессорах, когда учет особенностей архитектуры и наличие ускорителей, да даже FPU, может дать выигрыш или наоборот провал производительности :)

Вот можно написать код для разных процессоров, но он может не достигать максимума на какой-то одной из них. Равно как и IP-ядра можно делать для разных ПЛИС, но они не будут оптимальны на каких-то. А можно сделать опции оптимизации под конкретные семейства ПЛИС. Прямо как и в коде для процессоров.

А если смотреть, что код процессора зашивается один раз (прошивка), не как в персональных компьютерах, то выходит что и тут оно сродни ПЛИС.

Можно неверно спроектировать схему и будет медленно, а можно не задействовать DMA на процессоре и тоже будет медленно, но в обоих случаях работать будет.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое время провести соц-опрос на предмет достигнутых успехов в HDL-дизайне..

Ну, просто чтобы видеть, чего стоят многочисленные эксперты HDL-дизайна, настрочившие уже семь страниц пустопорожней болтовни.. :biggrin:

Успехи можно озвучить в формате:

Название & Функция модуля на HDL, Кол-во строк кода, Тип FPFA, Рабочая частота модуля..

Кто рискнет? :laughing:

Легко...

Простой пример. UART на скорость 25Мбит.Сек на частоте 200МГц с мажоритированием отсчетов 2 из 3х в лоб не решить.

Тут надо разворачивать ВСЕ счетчики, накопители бит только на сдвиговых регистрах!!!

Код вырос раза в 3.

Синтезатору пришлось показывать как строить сдвиговые регистры. В лоб он лепит обратные связи между триггерами неприемлемо... Тормоз страшный!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Легко...

Простой пример. UART на скорость 25Мбит.Сек на частоте 200МГц с мажоритированием отсчетов 2 из 3х в лоб не решить.

Тут надо разворачивать ВСЕ счетчики, накопители бит только на сдвиговых регистрах!!!

Код вырос раза в 3.

Синтезатору пришлось показывать как строить сдвиговые регистры. В лоб он лепит обратные связи между триггерами неприемлемо... Тормоз страшный!

Под UART Вы имеете ввиду только приёмная часть (определение старт\стоп, и приём данных) или полный аналог микросхемы 16с550 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Легко...

Но мимо..

 

Пытаетесь ответить на вопросы, которые я не задавал..

 

На мой же вопрос ответов я пока не вижу.. :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самое время провести соц-опрос на предмет достигнутых успехов в HDL-дизайне..

 

Ну, просто чтобы видеть, чего стоят многочисленные эксперты HDL-дизайна, настрочившие уже семь страниц пустопорожней болтовни.. :biggrin:

 

Успехи можно озвучить в формате:

 

Название & Функция модуля на HDL, Кол-во строк кода, Тип FPFA, Рабочая частота модуля..

 

Кто рискнет? :laughing:

Ну тут тогда ещё важно ввести такие критерии сравнения:

Время отладки проекта.

Партия серийной продукции(по количеству штук).

Количество исправлений после выпуска серийной продукции...

UPD

Ну и конечно же срок жизни изделия !

Изменено пользователем Flip-fl0p

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Под UART Вы имеете ввиду только приёмная часть (определение старт\стоп, и приём данных) или полный аналог микросхемы 16с550 ?

Да. Речь о приемнике. Передатчик проще. Полный аналог не к чему...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну тут тогда ещё важно ввести такие критерии сравнения:

Не возражаю! Вводите! :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...