[an error occurred while processing this directive]
|
Verilog в моем исполнении не очень. Но синтезируется и должно быть понятно.
В Spartan - погрузилось в 80 Lut. Так и должно быть.
Интересно, что скажет Altera.
// 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];
reg [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];
endmodule
E-mail: info@telesys.ru