Я пытаюсь понять этот код и не могу обернуться вокруг него
// upper bits are always zero
assign slt[31:1] = 0;
xor (condition, a[31], b[31]);
yArith slt_arith (tmp, cout, a, b, 1);
yMux #(.SIZE(1)) slt_mux(slt[0], tmp[31], a[31], condition);
a
и b
- это 32-битные числа
Кодпытается реализовать (a < b) ? 1 : 0;
Что известно как slt в mips
часть yArith
выполняет (ab) и помещает результат в tmp
, 1 - флаг для вычитания.
часть yMux
имеет формат 2x1 mux, для которого требуется некоторое условие (0 или 1), чтобы выбрать либо tmp[31]
, если условие 0, либо a[31]
, если условие 1.
Почему этот код работаетреализовать набор на меньше чем в Verilog?