[an error occurred while processing this directive]
|
Здесь деление целого на целое без знаков.
D = A/B; M = A mod B;
Если нужно дробь на дробь, просо\то на шаг больше и округление.
Если знаковые - там есть пара вариантов.
Если по скорости не устраивает - смотрите методы ускорения, их несколько штук, но смысл тот же (вычитание/суммирование, сдвиг).
module DIV8x8 ( A ,B ,D ,M );
input [7:0] A ;
wire [7:0] A ;
input [7:0] B ;
wire [7:0] B ;
output [7:0] D ;
wire [7:0] D ;
output [7:0] M ;
wire [7:0] M ;
reg [7:0]p[8:0],r;
integer i;
always @(A,B)
for (i = 7; i >= 0; i = i - 1)
{r[i],p[i]}=(i==7)?(A>>7)-B:(r[i+1])?{p[i+1],A[i]}+B:{p[i+1],A[i]}-B;
assign D = ~r;
assign M = (r[0])? p[0] + B : p[0] + 0;
endmodule
E-mail: info@telesys.ru