DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Розробка порівнювача 32х розрядних чисел засобами мови VHDL

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
Комп’ютерних та інформаційних технологій
Кафедра:
Кафедра електронних обчислювальних машин

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

Рік:
2014
Тип роботи:
Лабораторна робота
Предмет:
Реконфігуровані комп ютери
Група:
КН-11
Варіант:
7
Коротко про документ

Про що ця робота

У роботі розроблено та протестовано схему порівняння 32-розрядних чисел засобами мови VHDL. Описано логіку роботи спецобчислювача без використання вбудованих елементів порівняння.

У роботі розглядаються

  • VHDL
  • Реконфігуровані комп'ютери
  • Проєктування апаратного забезпечення
  • Спецобчислювач
  • Тестування схем

Зміст і розділи

  1. Мета роботи
  2. Виконання роботи
  3. Повний VHDL код компаратора
  4. Наповнення testbench
  5. Моделювання
  6. Висновок
Для кого:Студенти технічних спеціальностей та викладачі комп'ютерної інженерії
Викладачі:Не вказано

Ключові поняття

VHDL32-розрядне числоспецобчислювачконкатенаціяtestbenchсутністьархітектурасигналпроцес

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

/ Звіт до лабораторної роботи №1 з дисципліни «Реконфігуровані комп’ютери» на тему: «Розробка порівнювача 32х розрядних чисел засобами мови VHDL» Львів-2014 Лабораторна робота #1 На тему: Розробка порівнювача 32х розрядних чисел засобами мови VHDL Мета: Розробити схему порівняння 32-ох розрядних чисел. Все це реалізувати на Verilog (бажано), без використання уже вбудованого порівняльного елемента (тобто - створити свій порівняльний елемент, описати його логіку роботи). А на виході елемента отримати три сигнали: рівне, менше, або більше. При створенні схеми можна зробити синхронну, чи асинхронну. Виконання роботи: Маючи залишкові знання із мови VHDL я вирішив працювати саме з нею. Оскільки використовувати готові елементи порівнювання на більше-менше не можна, мені довелось придумати спосіб їх заміни. За умовою мій спецобчислювач складається із двох вхідних портів по 32 біти і одного вихідного на чотири біти ( для отримання результату). constant equal:bit_vector(3 downto 0):="1111"; -- Числа, що ввелись є рівними constant low:bit_vector(3 downto 0):="0000"; -- А є меншим ніж число B constant high:bit_vector(3 downto 0):="0001"; -- А є більшим ніж число B Мій компаратор базується на функції конкатенації і вибірки з кейсу результатів, котрі підходять. З двох чисел я виділяю по два старших біта і обєдную їх, опісля чого шукаю відповідну комбінацію в «кейсі» і виводжу результат. Наповнення CASE: when "0000"=>Result<=equal; when "0101"=>Result<=equal; when "1010"=>Result<=equal; when "1111"=>Result<=equal; when "0001"=>Result<= low;exit; when "0010"=>Result<= low;exit; when "0011" =>Result<=low; exit; when "0100" =>Result<=high; exit; when "0110" =>Result<=low; exit; when "0111" =>Result<=low;exit; when "1000" =>Result<=high;exit; when "1001" =>Result<=high; exit; when "1011" =>Result<=low; exit; when "1100" =>Result<=high;exit; when "1101" =>Result<=high; exit; when "1110" =>Result<=high; exit; Повний VHDL код компаратора: library IEEE; use IEEE.STD_LOGIC_1164.all; entity CALC is port( A : in BIT_VECTOR(31 downto 0); B : in BIT_VECTOR(31 downto 0); Clock:in bit; RESULT : inout BIT_vector(3 downto 0) ); end CALC; architecture CALC of CALC is constant equal:bit_vector(3 downto 0):="1111"; constant low:bit_vector(3 downto 0):="0000"; constant high:bit_vector(3 downto 0):="0001"; begin PROCESS(A,B) variable temp1:bit_VECTOR(3 downto 0); BEGIN for CNTR IN 31 downto 0 loop if cntr=0 THEN EXIT; end if; temp1:=A(cntr downTO (cntr-1)) & B(cntr DOWNTO (cntr-1)); case temp1 is when "0000"=>Result<=equal; when "0101"=>Result<=equal; when "1010"=>Result<=equal; when "1111"=>Result<=equal; when "0001"=>Result<= low;exit; when "0010"=>Result<= low;exit; when "0011" =>Result<=low; exit; when "0100" =>Result<=high; exit; when "0110" =>Result<=low; exit; when "0111" =>Result<=low;exit; when "1000" =>Result<=high;exit; when "1001" =>Result<=high; exit; when "1011" =>Result<=low; exit; when "1100" =>Result<=high;exit; when "1101" =>Result<=high; exit; when "1110" =>Result<=high; exit; when others=>Result<="0101"; end case; end loop; -- enter your statements here -- END PROCESS; end CALC; Наповнення TestBench: calc_32:process begin wait for 50 ns; A<="00000000000000000000000000000001"; B<="00000000000000000000000000000000"; wait for 50 ns; A<="00000000000000000000000000000010"; B<="00000000000000000000000101010101"; wait for 50 ns; A<="11111111111111111111111111111111"; B<="11111111111111111111111111111111"; wait for 50 ns; A<="11111111111111111111111111111111"; B<="11111111111111111111111111111111"; end process; Моделювання: / При A=0 та B=0 результат F, тобто числа рівні. При A=1 та B=0 результат 1, тобто число А є більшим. При A=2 та B=155 результат 0, тобто число А є меншим. Висновок: на даній лабораторній роботі я навчився використовувати засоби мови VHDL для створення спецобчислювача, що порівнює 32х розрядні числа. Створив даний спецобчислювач і протестував його роботу.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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