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

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

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

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

Лабораторна робота №1: Дослідження і проектування надвеликих інтегральних схем

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

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

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

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Дослідження і проектування надвеликих інтегральних схем
Група:
КН-1
Коротко про документ

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

У роботі розроблено структурну схему спеціалізованого перемножувача на константу без оптимізації згідно заданого варіанту. Проведено опис розробленої структури за допомогою мови VHDL та виконано функціональну симуляцію проекту.

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

  • Проектування надвеликих інтегральних схем
  • Множення двійкових чисел на константу
  • Мова опису апаратури VHDL
  • Структурні схеми цифрових пристроїв
  • Функціональна симуляція
  • Апаратна складність цифрових схем

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

  1. Теоретичні відомості
  2. Алгоритм множення числа на константу
  3. Формат вхідних чисел
  4. Базова структура перемножувача
  5. VHDL-код не оптимізованої структури
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають проектування цифрових пристроїв та надвеликих інтегральних схем.
Викладачі:Клим

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

перемножувач на константуVHDLрозрядністьсимуляціяінтегральні схемидвійковий кодапаратна складністьструктурна схема

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра СКС / ЛАБОРАТОРНА РОБОТА №1 з дисципліни: “ Дослідження і проектування надвеликих інтегральних схем” Львів – 2016 Тема роботи: Розробка структури спеціалізованого перемножувача на константу без оптимізації. Мета роботи: Згідно заданого варіанту розробити структурну схему перемножувача на константу без оптимізації, та за допомогою мови VHDL описати розроблену структуру пристрою та провести функціональну симуляція проекту. 1. ТЕОРЕТИЧНІ ВІДОМОСТІ 1.1. Алгоритм множення числа на константу. Перед тим, як почати описувати базову структуру спеціалізованого перемножувача на константу, слід, перш за все, розглянути математичні основи множення двійкових чисел. Нехай нам потрібно отримати добуток (Z) двох восьмирозрядних двійкових чисел X та H: X: X7 X6 X5 X4 X3 X2 X1 X0 H: H7 H6 H5 H4 H3 H2 H1 H0   Їхнім добутком буде сума чисел, які утворює один із співмножників, зсунутий вправо на таку кількість розрядів, яка дорівнює порядковому номеру відповідного біту іншого співмножника (порядкові номери бітів рахуються з права на ліво, порядковий номер крайнього правого біту дорівнює нулю). 0 0 0 0 0 0 0 X7 X6 X5 X4 X3 X2 X1 X0 *H0  0 0 0 0 0 0 X7 X6 X5 X4 X3 X2 X1 X0 0 *H1  0 0 0 0 0 X7 X6 X5 X4 X3 X2 X1 X0 0 0 *H2  0 0 0 0 X7 X6 X5 X4 X3 X2 X1 X0 0 0 0 *H3  0 0 0 X7 X6 X5 X4 X3 X2 X1 X0 0 0 0 0 *H4  0 0 X7 X6 X5 X4 X3 X2 X1 X0 0 0 0 0 0 *H5  0 X7 X6 X5 X4 X3 X2 X1 X0 0 0 0 0 0 0 *H6  X7 X6 X5 X4 X3 X2 X1 X0 0 0 0 0 0 0 0 *H7   Z: Z15 Z14 Z13 Z12 Z10 Z9 Z8 Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0   Рис. 1. Схема множення двох восьмирозрядних чисел. Число зсунуте на к розрядів вправо доповнюється к нулями справа і м –1 нулями зліва, де м – ширина розрядної сітки співмножників (в нашому випадку дорівнює 8). Як бачимо, розрядність результату є в два рази більша за розрядність вхідних даних, плюс один біт на можливість переповнення. Згідно наведеного прикладу результат множення двох чисел Z=X*H можна записати: Z = (H0*X.L0) + (H1*X.L1) + (H2*X.L2) +…+ (H7*X.L7) ( 2.1 ) де Нк – к-ий розряд числа Н, X.Lk – число Х зсунуте вліво на к розрядів. Оскільки мова йде про множення числа Х на константу Н, то розряди числа Н наперед відомі і формула ( 2.1 ) спрощується. Приклад: H(2)= 10011000 Z = (0*X.L0) + (0*X.L1) + (0*X.L2) + (1*X.L3) + (1*X.L4) + (0*X.L5) + (0*X.L6) + (1*X.L7) = X.L3 + X.L4 + X.L7 1.1.2. Формат вхідних чисел. Вхідні числа є 32-розрядними числами в діапазоні 0≤X<1, та мають наступний формат: 31 0  0 X31, X30 . . . X1, X0   32 Для прикладу розглянемо константу: cos() Десяткове представлення константи: Н(10)= 1135025548 Двійкове представлення константи в заданому форматі: Н(2)= 0,01000011101001110001110110001100 Шістнадцяткове представлення константи в заданому форматі: Н(16)= 43A71D8C 1.1.3. Базова структура перемножувача. Таким чином, Z = x.L2 + x.L3+ x.L7 + x.L8 + x.L10 + x.L11 + x.L12 + x.L16 + x.L17 + x.L18 + x.L21 + x.L23 + x.L24 + x.L25+ x.L30. Групуючи доданки попарно, отримаємо таку структуру:  Рис. 2. Базова структура перемножувача. Апаратна складність пристрою визначається кількістю ’1’ в константі. Кількість одиниць – 15. Кількість суматорів – 14. Нижче подано vhdl-код не оптимізованої структури перемножувача на константу: library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity my_mult is port( DIN : in STD_LOGIC_VECTOR(31 downto 0); DOUT : out STD_LOGIC_VECTOR(31 downto 0) ); end my_mult; architecture my_mult of my_mult is signal X_L2,X_L3,X_L7,X_L8,X_L10,X_L11,X_L12,X_L16,X_L17,X_L18,X_L21,X_L23,X_L24,X_L25,X_L30: STD_LOGIC_VECTOR(63 downto 0); signal X_L2_X_L3,X_L7_X_L8,X_L10_X_L11,X_L12_X_L16,X_L17_X_L18,X_L21_X_L23,X_L24_X_L25: STD_LOGIC_VECTOR(63 downto 0); signal X_L2_X_L3_X_L7_X_L8,X_L10_X_L11_X_L12_X_L16,X_L17_X_L18_X_L21_X_L23,X_L24_X_L25_X_L30: STD_LOGIC_VECTOR(63 downto 0); signal X_L2_X_L3_X_L7_X_L8_X_L10_X_L11_X_L12_X_L16,X_L17_X_L18_X_L21_X_L23_X_L24_X_L25_X_L30: STD_LOGIC_VECTOR(63 downto 0); signal X_4: STD_LOGIC_VECTOR(63 downto 0); begin -- X with shift X_L2 <= "000000000000000000000000000000" & DIN & "00"; X_L3 <= "00000000000000000000000000000" & DIN & "000"; X_L7 <= "0000000000000000000000000" & DIN & "0000000"; X_L8 <= "000000000000000000000000" & DIN & "00000000"; X_L10 <= "0000000000000000000000" & DIN & "0000000000"; X_L11 <= "000000000000000000000" & DIN & "00000000000"; X_L12 <= "00000000000000000000" & DIN & "000000000000"; X_L16 <= "0000000000000000" & DIN & "0000000000000000"; X_L17 <= "000000000000000" & DIN & "00000000000000000"; X_L18 <= "00000000000000" & DIN & "000000000000000000"; X_L21 <= "00000000000" & DIN & "000000000000000000000"; X_L23 <= "000000000" & DIN & "00000000000000000000000"; X_L24 <= "00000000" & DIN & "000000000000000000000000"; X_L25 <= "0000000" & DIN & "0000000000000000000000000"; X_L30 <= "00" & DIN & "000000000000000000000000000000"; -- the first register line X_L2_X_L3 <= X_L2 + X_L3; X_L7_X_L8 <= X_L7 + X_L8; X_L10_X_L11 <= X_L10 + X_L11; X_L12_X_L16 <= X_L12 + X_L16; X_L17_X_L18 <= X_L17 + X_L18; X_L21_X_L23 <= X_L21 + X_L23; X_L24_X_L25 <= X_L24 + X_L25; -- the second register line X_L2_X_L3_X_L7_X_L8 <= X_L2_X_L3 + X_L7_X_L8; X_L10_X_L11_X_L12_X_L16 <= X_L10_X_L11 + X_L12_X_L16; X_L17_X_L18_X_L21_X_L23 <= X_L17_X_L18 + X_L21_X_L23; X_L24_X_L25_X_L30 <= X_L24_X_L25 + X_L30; -- the third register line X_L2_X_L3_X_L7_X_L8_X_L10_X_L11_X_L12_X_L16 <= X_L2_X_L3_X_L7_X_L8 + X_L10_X_L11_X_L12_X_L16; X_L17_X_L18_X_L21_X_L23_X_L24_X_L25_X_L30 <= X_L17_X_L18_X_L21_X_L23 + X_L24_X_L25_X_L30; -- the forth register line X_4 <= X_L2_X_L3_X_L7_X_L8_X_L10_X_L11_X_L12_X_L16 + X_L17_X_L18_X_L21_X_L23_X_L24_X_L25_X_L30; DOUT <= X_4(63 downto 32); end my_mult;/ Рис. 3. Функціональна діаграма роботи перемножувача на константу без оптимізації. На діаграмі на вхід DIN подаються вхідні значення для множення на задану константу а на виході DOUT зображено результат роботи данного множення.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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