Спасибо. Дайте пожалуйста адрес сайта. Вот написал код, для положительного результата выдаются импульсы по plus, а по отрицательному результату по minus. Но
мне кажется есть более красивое решение.
Код
module subb
(
input shortint A,
input shortint B,
input bit clock, clk,
output shortint result,
output logic plus, minus
);
shortint i1, i2;
bit sos, plus1, plus2, minus1, minus2;
always_ff @ (negedge clock) begin
result <= A - B;
sos <= ~sos;
end
always @ (posedge clk) begin
if(sos) begin
if(i1 < result) begin
plus1 <= ~plus1;
if(plus1)
i1 <= i1 + 1'b1;
end else if(i1 > result) begin
minus1 <= ~minus1;
if(minus1)
i1 <= i1 - 1'b1;
end
end else
i1 <= 0;
end
always @ (posedge clk) begin
if(!sos) begin
if(i2 < result) begin
plus2 <= ~plus2;
if(plus2)
i2 <= i2 + 1'b1;
end else if(i2 > result) begin
minus2 <= ~minus2;
if(minus2)
i2 <= i2 - 1'b1;
end
end else
i2 <= 0;
end
assign plus = sos ? plus1 : plus2;
assign minus = sos ? minus1 : minus2;
endmodule
Вот результат в симуляторе.
Эскизы прикрепленных изображений