Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Оператор FOR GENERATE



Оператор FOR GENERATE (оператор циклу) дозволяє спростити запис послідовності подібних логічних рівнянь і операторів, мови AHDL.

Оператор циклу має вигляд:

FOR __index_variable IN __range GENERATE

_ __statement;

_ __statement;

END GENERATE;.

Оператор задається в такий спосіб:

■ За ключовим словом FOR вказується символічне ім'я внутрішньої змінної оператора. Це ім'я не може збігатися з ім'ям констант, параметрів або змінних, використовуваних у текстовому описі.

■ Ключові слова IN... ТО... визначають границі зміни значень внутрішньої змінної оператора.

■ Границі задаються арифметичними виразами.

■ За ключовим словом GENERATE слідують логічні рівняння й оператори мови AHDL.

■ Оператор кінчається ключовими словами END GENERATE, за яким слідує крапка з комою (;).

Проілюструємо використання оператора FOR GENERATE для опису на вентильному рівні N-розрядного суматора, що має вхід і вихід переносу.

CONSTANT NUM_OF_ADDERS=8;

SUBDESIGN FOR_GEN

(

a[NUM_OF_ADDERS..1], b[NUM_OF_ADDERS..1], cin: INPUT;

c[NUM_OF_ADDERS..1], cout: OUTPUT;

)

VARIABLE

carry_out [(NUM_OF_ADDERS+1)..1]: NODE;

BEGIN

carry_out[1]=cin;

FOR i IN 1 TO NUM_OF_ADDERS GENERATE

c[i]=(a[i] $ b[i]) $ carry_out[i];

carry_out[i+1] = a[i] & b[i] # carry_out[i] & (a[i] $ b[i]);

END GENERATE;

cout = carry_out[NUM_OF_ADDERS+1];

END;

Опис, заданий оператором FOR GENERATE при NUM_OF_ADDERS = 4 відповідає наступним рівнянням:

c[1] = a[1] $ b[1] $ carry_out[1];

carry_out[2] = a[1] & b[1] # carry_out[1] & (a[1] $ b[1]);

с[2] = a[2] $ b[2] $ carry_out[2];

carry _out[3] = a[2] & b[2] # carry_out[2] & (a[2] $ b[2]);

с[3] = a[3] $ b[3] $ carry_out[3];

carry _out[4] = a[3] & b[3] # carry_out[3] & (a[3] $ b[3]);

c[4] = a[4] $ b[4] $ carry_out[4];

carry_out[5] = a[4] & b[4] # carry_out[4] & (a[4] $ b[4]);

Результати моделювання описаного суматора при NUM_0F_ADDERS=8 наведені на рис. 15

Рис. 15.

Відмітимо, що для зміни розрядності суматора досить у текстовому описі змінити значення константи NUM_OF_ADDERS.





Дата публикования: 2014-11-29; Прочитано: 203 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...