|
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 86
|
||||||||||||||||
[VHDL] Реализация 32-разрядного АЛУ10.05.2010, 00:39. Показов 16251. Ответов 12
Метки нет (Все метки)
Помогите пожалуйста разобраться.
Передо мною стоит задача - описать на VHDL 32 разрядное АЛУ, с операциями:+,-,*,/ и логикой AND OR XOR NOT. Это мой первый проект, и я не совсем уверен, что правильно подхожу к его реализации. Насколько я понимаю на уровне объекта надо описать два операнда (два 32мерных вектора), некий управляющий сигнал который будет означать операцию (+,-,*,/), выходной вектор (кстати как быть с его размерностью) и прочее: что-то типа выхода и выхода для знака операндов, входа и выхода переноса. Не совсем понятно как поступить с представлением действительных чисел. Я так понимаю, что логика AND OR XOR NOT подразумевает, что с помощью этого базиса я должен реализовать все арифметические операции. В интернете нашел такой простенький пример (с операциями omd , or) . Можно ли по такой схеме реализовать моё АЛУ?
Дело в том, что недавно я смотрел книжку, и там для реализации сумматора на VHDL приводились сложные алгоритмы, в чем же тогда получается подвох? (вот пример алгоритма из книги) Example 11.2 (Complete VHDL source code available). Kimerate a generic n-digit base-B carry-chain adder:
0
|
||||||||||||||||
| 10.05.2010, 00:39 | |
|
Ответы с готовыми решениями:
12
Схема 4-разрядного АЛУ Построение 8-ми разрядного АЛУ [VHDL] Программная модель АЛУ микроЭВМ МК-51 |
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
|
| 10.05.2010, 10:29 | |
|
Мне не нравится подход в данных примерах. Они выглядят как программы, а не как описание железа. Зачем использовать пошаговое выполнение если можно посчитать все сразу?
Я бы внес следующие исправления: -Убрал бы нафиг behavioral и написал бы все в orshitecture чтобы не тратить время на запуск последовательных операций. -ножку zero надо поднимать через обычный NAND. -считать результаты всех операций сразу, а потом MUXом выбрать нужный из них.
0
|
|
|
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 39
|
|
| 10.05.2010, 12:24 | |
|
Если вам нужна именно самостоятельная реализация арифметических операций, то можно почитать книжку Е. Угрюмова "Цифровая схемотехника". Там нет примеров на VHDL, но есть описание операций. Также можно почитать справку к альтеровским мегафункциям сумматоров-вычитателей, умножителей, устройств деления. Ну или к аналогичным Xilinx IP Core.
Размерность результата для операций сложения-вычитания совпадает с размерностью операндов + флаг переноса/заёма. Для умножения разрядность результата равна сумме разрядностей операндов.
0
|
|
|
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 86
|
|||||
| 10.05.2010, 19:16 | |||||
|
Я так понимаю здесь вся соль в том, что при описании на VHDL каждая операция отображается в соответствующий схемотехнический элемент, и задача программиста в том, чтобы описать устройство, которое будет реализовано с минимальными аппаратными и временными затратами? Если рассуждать так, то полезно знать что во что отображается, как это узнать?
0
|
|||||
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
|
| 10.05.2010, 21:30 | |
|
В VHDL, грубо говоря, есть 2 вида описания. В первом виде мы пишем какие логические блоки у нас есть и как они между собой соединеныю В таком случае порядок описания не имеет значения...все равно все блоки работают одновременно. Во втором виде мы описываем программу которая выполняется последовательно, строка за строкой...практически как программа для процессора. Пример такого способа есть в сумматоре который ты привел(цикл for).
Используя одновременный подсчет всех результатов ты экономишь время. У тебя за один такт будут выполняться все расчеты и вывод результата на порт. Когда ты начинаешь писать блоки с условиями, то ты тратишь время на проверку.
0
|
|
|
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 39
|
||||
| 10.05.2010, 21:34 | ||||
Программа обычно описывает поведение какого-то блока, полагаясь на компилятор в его реализации. Программа выглядела бы наверное так: "хочу, чтобы по фронту на входе C выход Q принимал бы состояние, совпадающее с состоянием входа А. В остальные моменты времени состояние выхода Q меняться не должно".
0
|
||||
|
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 86
|
|
| 10.05.2010, 21:58 | |
|
Спасибо. А как быть с представлением действительных чисел? Ведь тут есть операция деления, значит соответственно даже вводя целочисленные операнды можем получить на выходе не целый результат.
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
||
| 10.05.2010, 23:25 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 86
|
||||||
| 11.05.2010, 22:57 | ||||||
|
Назрел вопрос. Если у меня код типа
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
|
| 11.05.2010, 23:20 | |
|
Процесс это отдельный блок в железке который срабатывает при определелнных условиях, вне зависимости от других процессов.
0
|
|
|
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 86
|
|
| 12.05.2010, 20:33 | |
|
Вопрос : допустим я реализовал сумматор и хочу через него реализовать вычитание операндов, в 2s somplement числовом представлении
-X = not(X) + 1 т.е. X-Y = X + not(Y) +1 Это можно реализовать только через два сложения? Но ведь это ведет к большой задержке, можно реализовтаь иначе?
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 1,181
|
||
| 13.05.2010, 01:47 | ||
Кстати, а зачем это делать? В любом случае под каждую операцию будет создаваться отдельный блок, так что место на микросхеме это не сэкономит.
0
|
||
|
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 39
|
|
| 13.05.2010, 19:39 | |
|
Можно сделать блок сложения-вычитания в виде конвейера. В случае вычитания операнд А задерживается в регистре на один такт, а операнд B преобразуется в (-B). В следующем такте они складываются. Таким образом время вычитания составит два такта, но быстродействие (тактовая частота) не уменьшится, поскольку преобразование операнда B происходит одновременно с суммированием предыдущих операндов. Правда это все целесообразно по большей части, если у вас поток чисел, которые нужно вычитать, вычитать и вычитать.
0
|
|
| 13.05.2010, 19:39 | |
|
Помогаю со студенческими работами здесь
13
Реализация двоичного 8-разрядного дешифратора (Atmega16) VHDL. Реализация UART на ПЛИС [VHDL] Реализация протокола SPI Quartus. АЛУ. VHDL xor и nor [VHDL] Разработать структурную модель n-разрядного регистра Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|