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

Отправлено SNN 14 мая 2002 г. 14:24
В ответ на: proshu prosheniya za latinskie bukvy отправлено yes 14 мая 2002 г. 12:03


Более-менее понятно. Попробую объяснить свой взгляд на эти вещи.

Начну с того чем пользуюсь в разработке - Synplify + MAX. В первой среде готовится модуль на verilog, после компиляции получается *.tdf который используется в MAX. Использование Synplify оправдано очень высоким качеством компилятора, который позволяет уменьшить кол-во требуемых ячеек иногда на 30-50% по сравнению с компилятором MAX (это мое субъективное мнение), плюс заметный выигрыш в быстродействии. В MAX оптимизация отключена.
Окончательный вариант проекта представлен в виде графического файла, в который входит модуль/модули скомпилированные в Synplify. Мне удобнее назначать ноги ввода/вывода в графике, кроме того, зачастую, я предпочитаю там же прорисовывать двунаправленные шины и регистры/триггера гарантированно! использующие асинхронное управление (это и есть ответ на один из Ваших вопросов). Описанием асинхронных сигналов в верилоге обычно не пользуюсь по след. причинам –
1)компилятор всегда самостоятельно оптимизирует такие вещи, что совсем не гарантирует использование ас.входа именно для этого сигнала, с другой стороны и хуже он не сделает, но мне спокойнее :)
2)сама форма таких описаний мне не импонирует:
//-------------------------------------------------------------
//Always Block Template with Asynchronous, Active-high Set and Reset

always @(posedge clk or posedge set or posedge reset)
begin
if (reset) begin
/* set the outputs to zero */
end else if (set) begin
/* set the outputs to one */
end else begin
/* clocked logic */
end
end
//-------------------------------------------------------------
и более короткая и упрощенная запись:
//--------------------------------
always @(posedge clk or posedge set or posedge reset)
q = reset ? 1'b0 : set ? 1'b1 : d;
//--------------------------------
примеры из хелпа Synplify.

Насчет «array instantiation».
На мой взгляд, вопрос связан с тем обстоятельством, что различные фирмы продвигаю свои, несколько различные, версии языка. И в версии Synplify для подобных целей предлагается использовать механизм параметризируемых модулей “Scalable Module” (возможно я ошибаюсь и это не совместимые понятия?, но мне кажется, что с использованием данного механизма можно получить требуемый результат). На этом и основан мой предыдущий ответ, даже достаточно сложные парам.модули нормально компилировались.


Простите за многословность – я повторил некоторые тривиальные вещи только с целью избежать неопределенности.

С уважением.
SNN

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

Ответы


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

Имя (обязательно): 
Пароль: 
E-mail: 

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

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

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


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

E-mail: info@telesys.ru