Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Оператор 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!