Опубликован: 17.03.2025 | Доступ: свободный | Студентов: 0 / 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 приведена схема функциональная спроектированного блока АЛУ.