[an error occurred while processing this directive]
Получите.
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено V61 10 мая 2005 г. 11:21
В ответ на: Модуль деления на переменную (Verilog) - как его сделать??? (+) отправлено Avsetaki 05 мая 2005 г. 10:11


Здесь деление целого на целое без знаков.
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: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru