[an error occurred while processing this directive]
Насчет того, что AHDL - ассеблер не согласен. (+)
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено dxp 02 июня 2005 г. 09:00
В ответ на: AHDL - это как ассемблер. Если его знаешь, то знаешь, что внутри ПЛИС. Верилог - абстракция от внутренностей, как С. отправлено SM 01 июня 2005 г. 15:57

Когда пишете на асме, вы получаете ровно то, что написали. Какие команды применили, то и получили. На AHDL ситуация не такая. Вспомните тот пример с арбитром!? :) Вы сделали две похожих реализации и получили в одном случае 19 ячеек, в другом 14. Причем до синтеза сказать, какой из них что даст, было нельзя (а потом еще пошаманили и получили 12 ячеек. И опять же не понятно, от чего это зависело и по исходному тексту нельзя нечего предсказать). И даже после синтеза было непонятно, почему так получалось. Т.е. входное описание на AHDL - это тоже функциональное описание, которое подвергается синтезу, в результате которого далеко не все так, как в исходном описании.

А вот ассеблер (или его аналог) - это когда вы будете вводить описание на уровне ячеек-атомов (типа как в vqm), например:


cyclone_lcell un1_count_add2_cZ (
.combout(un1_count_add2),
.cout(un1_count_carry_2),
.dataa(count_2),
.datab(un1_count22_1_i_0),
.cin(un1_count_carry_1)
);
defparam un1_count_add2_cZ.cin_used="true";
defparam un1_count_add2_cZ.operation_mode="arithmetic";
defparam un1_count_add2_cZ.output_mode="comb_only";
defparam un1_count_add2_cZ.lut_mask="96e8";
defparam un1_count_add2_cZ.synch_mode="off";
defparam un1_count_add2_cZ.sum_lutc_input="cin";

Т.е. где вы прямо на уровне примитивов чипа и оперируете, задавая режимы LUT'а, его маску, явно задействуя ресурсы ввода/вывода ячейки и т.д.. Вот тогда будет та самая предсказуемость - будет однозначно ясно, откуда берутся эти ячейки. Только трудоемкость этого процесса такая, что, понятно, ну его на фиг. :)

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

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

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru