Опубликован: 17.03.2025 | Доступ: свободный | Студентов: 7 / 0 | Длительность: 07:30:00
Лекция 6:

Арифметико-логическое устройство


Рис. 6.23.

В листинге 6.5 приведен код на языке Verilog HDL, описывающий функциональную схему, приведенную выше. Поведенческое описание схемы выражено через конструкцию if-else и может быть выражено иначе. На рисунке 6.24 приведено RTL представление полученного узла.

module comparator_1bit (
 input A, // вход A
 input B, // вход B
 output reg A_bolshe_B, // выход A > B
 output reg A_menshe_B, // выход A < B
 output reg A_equal_B // выход A == B
);
 always @ (A or B) begin
 // установка начального состояния
 A_ bolshe _B = 0;
	A_menshe_B = 0;
	A_equal_B = 0;
 // Сравнение входов через ветлвение if-else
 if (A > B) begin
 A_ bolshe _B = 1; //Если А > B
 end else if (A < B) begin
 A_menshe_B = 1; // Если А < B
 end else begin
 A_equal_B = 1; // A равно B
 end
 end
endmodule
Листинг 6.5.

Рис. 6.24.

Самостоятельно

  1. Реализовать схему сравнения для двух четырехразрядных слов. Для данной схемы реализовать через инструмент "Тестовый вектор " таблицу тестирования. На языке Verilog реализовать аналогичное описание компаратора для данной разрядности слов;
  2. Реализовать компаратор равенства для двух четырехразрядных слов. На языке Verilog реализовать аналогичное описание компаратора для данной разрядности слов;

Практическая работа 6. "Проектирование АЛУ процессора RISC-V "

При проектировании операционных устройств определяют, выполняемые функции, разрядность и виды входных сигналов, выходные сигналы, сигналы состояний - признаки, например знак, переполнение. Определяют управляющие сигналы и задают их комбинацию для каждой функции - код микрооперации.

Определим для проектируемого устройства операции и зададим коды микроопераций. Формат кодов будет пояснен при разработке блока управления и языка ассемблера RISC-V. В таблице 6.4 приведены виды операций, соответствующие сигналы управления, мнемоника, применяемая в языке ассемблера RISC-V.

Таблица 6.4.
Код операции Функция Мнемоника Вход мультиплексора АЛУ
0000 Сложение целых чисел ADD 0
1000 Вычитание целых чисел SUB 8
0001 Логический сдвиг влево SLL 1
0010 Сравнение двух чисел со знаком SLT 2
0011 Сравнение двух беззнаковых чисел SLTU 3
0101 Логический сдвиг вправо SLR 5
1101 Арифметический сдвиг вправо SRA 13
0100 Логическое "Исключающее ИЛИ " XOR 4
0110 Логическое "ИЛИ " OR 6
0111 Логическое "И " AND 7

Для этого создать каталог RISC в среде Logisim создать новый файл, сохранить его под имением cpu.circ. Далее "Добавить схему ", присвоить название схемы ALU. Разместить на поле следующие блоки из раздела "Арифметика ": сумматор, вычитатель, три сдвигателя, два компаратора. Из раздела элементы: "И ", "Исключающее ИЛИ ", ИЛИ. Из раздела "Плексоры " разместить мультиплексор. У всех элементов свойство "биты данных " задать 32. Мультиплексору в свойство "выбирающие биты " задать 4. Компаратору для операции SLTU в свойстве "Формат числа " выбрать "Беззнаковое ". Для компаратора операции SLT в свойстве "Формат числа " должно быть установлено "Дополнительный код ".

Сдвигателям задать свойство "Тип сдвига ": "Логический левый ", "Логический правый ", "Арифметический правый ".

Так как разрядность операндов 32, соответственно поле управления сдвигом будет иметь разрядность 5 бит. Управление сдвигом будет осуществлять второй операнд. Для изменения разрядности входной шины можно использовать несколько разветвителей и настроить их соответствующим образом (показано выше при построении блока сложения/вычитания - рисунок 6.16). В рассматриваемом примере будут применятся блоки "Расширитель битов ". Данный блок находится в разделе "Проводка ". Для подключения к сдвигателям даннным блокам необходимо задать свойства:

  • разрядность входа - 32;
  • разрядность выхода - 5;
  • тип расширения - 0.

Для преобразования выхода "меньше " у компараторов, который будет включаться в 32-х разрядную шину также необходимо установить расширители битов, задав свойства:

  • разрядность входа - 32;
  • разрядность выхода - 5;
  • тип расширения - 1.

На поле добавить входы и выходы с разрядностью 32.

Для упрощения коммутации шин данных в созданном примере применяются "тоннели ". Для операндов предлагается дать свойства меткам тоннелей OP1, OP2. Выходы элементов также подключить к тоннелям с метками "outМНЕМОНИКА ОПЕРАЦИИ ", например "outADD ". Тоннели с операциями подключить к входам мультиплексора согласно коду операции (четвертый столбец таблицы 6.4 указывает номер входа).

На рисунке приведена схема функциональная спроектированного блока АЛУ.

На рисунке 6.25 приведена схема функциональная спроектированного блока АЛУ.

Вячеслав Сагитов
Вячеслав Сагитов

Здравствуйте! Прошел курс, а где экзамен? Как сертификат получить? Без экзамена?