Симуляція на функціональному рівні

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2005
Тип роботи:
Лабораторна робота
Предмет:
Проектуванння периферійних комп’ютерних мікросистем
Група:
СКС

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України НУ „Львівська політехніка” ІКТА Кафедра ЕОМ Лабораторна робота №1 з курсу „Проектуванння периферійних комп’ютерних мікросистем” на тему: „Симуляція на функціональному рівні” Львів-2005 Мета роботи: Створення і перевірка функціональної VHDL-моделі кристалу. Проектування кристалу починається з його функціонального опису на мові VHDL. Отже, за допомогою текстового редактора створюється файл, в якому описується VHDL-модель майбутнього кристалу. Часові затримки не вказуються - це, так звана, функціональна часово-незалежна VHDL-модель. На цьому етапі також створюється файл з тестовими наборами для перевірки правильності роботи описаної моделі. Цей файл можна створити за допомогою текстового редактора, або за допомогою спеціальної програми-генератора GENPAT. Далі за допомогою VHDL-симулятора ASIMUT перевіряється робота тестових наборів на функціональній VHDL-моделі проектованого кристалу. При наявності помилок слід перевірити правильність моделі та тестових наборів. Виконання роботи. Розглядається схема 8-розрядного перемножувача 555ИП9 (рис.1), який приймає один операнд в паралельному вигляді (Х), а другий – в послідовному (по входу У), причому спочатку подається молодший байт. Результат з’являється на виході S в послідовному вигляді (спочатку з’являється молодший біт). В результаті множення n-розрядного на m-розрядне число отримуємо n+m – розрядне число, тобто необхідно n+m тактових імпульсів. Входи паралельного операнду контролюються сигналом Cl. Якщо цей сигнал рівний логічному „0”, то всі внутрішні тригери скидаються і можна записувати нове слово, якщо ж Cl рівний логічній „1” – входи Хі закриті. Вхід К призначений для каскадування, при якому на нього подається вихід суми більш старшого пристрою. Для визначення найстаршого пристрою на його вхід М подається „L”, а на інші – „Н”.  рис. 1. принципова схема перемножувача 555ИП9 В таблиці наведені режими роботи перемножувача: Входы Внутр Y-1 Выход S Функция   Cl  Cк  K  M  Xi  Y      -  -  L  L  -  -   -   - Найстарший множник   -  -  CS  H  -  -   -   - Пристрої послідовно об’єднані   L  -  -  -  OP  -   L   L Завантажити новий операнд і почистити внутр.суму і перенос   H _/~  -  -  -  L   L  LB Зсув регістра суми вправо   H _/~  -  -  -  L   H  LB Добавити операнд до регістра суми у зсунути результат вправо   H _/~  -  -  -  H   L  LB Відняти операнд від регістра суми і зсунути результат вправо   H _/~  -  -  -  H   H  LB Зсув регістра суми вправо   CS – приєднання з виходом суми старшого пристрою ОР – входи відкриті для нових даних LB – молодший розряд результату  рис.2. функціональна схема перемножувача За допомогою текстового редактора створила файл multiplier.vbe, в якому задала функціональний VHDL-опис наведеної схеми перемножувача: ENTITY multiplier IS PORT( X : IN BIT_VECTOR(7 DOWNTO 0); Y : IN BIT; CL : IN BIT; CK : IN BIT; M : IN BIT; K : IN BIT; vdd : IN BIT; vss : IN BIT; S : OUT BIT ); END multiplier; --}} End of automatically maintained section ARCHITECTURE multiplier OF multiplier IS SIGNAL sum: BIT_VECTOR(7 DOWNTO 0); SIGNAL carry_a:BIT_VECTOR(6 DOWNTO 0); SIGNAL carry_d:BIT_VECTOR(6 DOWNTO 0); SIGNAL prev_Y: BIT; SIGNAL res: BIT_VECTOR(7 DOWNTO 0); SIGNAL sh_res: BIT_VECTOR(7 DOWNTO 0); SIGNAL op_res: BIT_VECTOR(7 DOWNTO 0); SIGNAL add: BIT_VECTOR(7 DOWNTO 0); SIGNAL red: BIT_VECTOR(7 DOWNTO 0); BEGIN -- L0:BLOCK(Ck='1' AND Ck'EVENT) -- BEGIN ASSERT (vdd='1'AND vss='0') REPORT "Wrong power supplies" SEVERITY WARNING; --мультиплексор1 WITH (Y XOR prev_Y) SELECT res<=sum WHEN '0',op_res WHEN '1'; --мультиплексор2 WITH Y SELECT op_res<=add WHEN '0',red WHEN '1'; --зсув L1: BLOCK (Cl='1') BEGIN sh_res<="0" & res(7 DOWNTO 1); END BLOCK L1; --регістр суми sum<=sh_res; S<=sh_res(0); --операція додавання add(0)<=sum(0) XOR X(0); carry_a(0)<=sum(0) AND X(0); add(1)<=sum(1) XOR X(1) XOR carry_a(0); carry_a(1)<=(sum(1)AND X(1)) OR (sum(1) AND carry_a(0)) OR (X(1) AND carry_a(0)); add(2)<=sum(2) XOR X(2) XOR carry_a(1); carry_a(2)<=(sum(2)AND X(2)) OR (sum(2) AND carry_a(1)) OR (X(2) AND carry_a(1)); add(3)<=sum(3) XOR X(3) XOR carry_a(2); carry_a(3)<=(sum(3)AND X(3)) OR (sum(3) AND carry_a(2)) OR (X(3) AND carry_a(2)); add(4)<=sum(4) XOR X(4) XOR carry_a(3); carry_a(4)<=(sum(4)AND X(4)) OR (sum(4) AND carry_a(3)) OR (X(4) AND carry_a(3)); add(5)<=sum(5) XOR X(5) XOR carry_a(4); carry_a(5)<=(sum(5)AND X(5)) OR (sum(5) AND carry_a(4)) OR (X(5) AND carry_a(4)); add(6)<=sum(6) XOR X(6) XOR carry_a(5); carry_a(6)<=(sum(6)AND X(6)) OR (sum(6) AND carry_a(5)) OR (X(6) AND carry_a(5)); add(7)<=sum(7) XOR X(7) XOR carry_a(6); --операція віднімання red(0)<=sum(0) XOR X(0); carry_d(0)<=sum(0)OR X(0); red(1)<=sum(1) XOR X(1) XOR carry_d(0); carry_d(1)<=(sum(1)OR X(1)) OR (sum(1) OR carry_d(0)) OR (X(1) OR carry_d(0)); red(2)<=sum(2) XOR X(2) XOR carry_d(1); carry_d(2)<=(sum(2)OR X(2)) OR (sum(2) OR carry_d(1)) OR (X(2) OR carry_d(1)); red(3)<=sum(3) XOR X(3) XOR carry_d(2); carry_d(3)<=(sum(3)OR X(3)) OR (sum(3) OR carry_d(2)) OR (X(3) OR carry_d(2)); red(4)<=sum(4) XOR X(4) XOR carry_d(3); carry_d(4)<=(sum(4)OR X(4)) OR (sum(4) OR carry_d(3)) OR (X(4) OR carry_d(3)); red(5)<=sum(5) XOR X(5) XOR carry_d(4); carry_d(5)<=(sum(5)OR X(5)) OR (sum(5) OR carry_d(4)) OR (X(5) OR carry_d(4)); red(6)<=sum(6) XOR X(6) XOR carry_d(5); carry_d(6)<=(sum(6)OR X(6)) OR (sum(6) OR carry_d(5)) OR (X(6) OR carry_d(5)); red(7)<=sum(7) XOR X(7) XOR carry_d(6); L2:BLOCK (Ck='1' AND Ck'STABLE) BEGIN prev_Y<=Y; END BLOCK L2; --END BLOCK L0; END multiplier; Для перевірки правильності функціонального опису VHDL-симулятор запустила в спеціальному режимі без симуляції: > asimut -b -c multiplier [0] multiplier.vbe - розширення в програмах пакету Alliance не вказуються (використовуються змінні оточення) лише компіляція без симуляції (для симуляції необхідні тестові набори) функціональний опис (behavioural description) VHDL-симулятор Для симуляції спочатку створила файл з тестовими наборами multiplier.pat з наступним вмістом: IN vdd; IN vss; IN X(7 to 0); IN CL; IN Y; IN K; IN M; IN CK; OUT S; BEGIN pat_1:1 0 00000000 0 0 0 0 0 ?0; pat_2:1 0 00000101 1 1 0 0 0 ?0; pat_3:1 0 00000101 1 0 0 0 0 ?0; pat_4:1 0 00000101 1 0 0 0 0 ?0; pat_5:1 0 00000101 1 0 0 0 0 ?0; pat_6:1 0 00000101 1 0 0 0 1 ?1; pat_7:1 0 00000101 1 0 0 0 1 ?0; pat_8:1 0 00000101 1 0 0 0 1 ?1; pat_9:1 0 00000101 1 0 0 0 1 ?0; END; Симулюю роботу схеми паралельно-послідовного перемножувача на тестових наборах: # ###-------------------------------------------------------------------------### # check the correctness of specifications (Data-FLow VHDL) # # running the logic simulation # # ###------------------------------------------------------------------------### asimut -b multiplier multiplier specifications [1] Вихідний файл з результатами тестування multiplier.pat multiplier.vbe Функціональний опис, симуляція на функціональному рівні VHDL-симулятор Результати роботи подані в електронному варіанті. Висновок. На лабораторній роботі я ознайомилася з системою автоатизованого проектування НВІС Alliance, основними етапами проектування кристаллу. Виконала перший етап розробки кристалу паралельно-послідовного перемножувача – симуляцію на функціональному рівні, для чого створила VHDL- опис заданої схеми та файл з тестовими наборами для перевірки правильності роботи описаної моделі. Тобто на етапі симуляції на функціональному рівні відлагодила функціональний опис схеми та сформулювала правильний та достатній набір тестових комбінацій.
Антиботан аватар за замовчуванням

31.03.2013 14:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!