[an error occurred while processing this directive]
Не выходит так просто заменить non-blocking на blocking (+)
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

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

Отправлено Avsetaki 05 мая 2005 г. 16:53
В ответ на: а в чем проблема перейдти от синхронного к асинхронному делителю ? заменить <= на = ?? отправлено des00 05 мая 2005 г. 16:08

алгоритм деления итерационный, поэтому без вспомогательного регистра (ткатируемого клоком) никак.... Вот пример синхронного делителя. Как его превратить в асинхронный???

module Div (quotient,remainder,ready,dividend,divider,start,clk);

input [15:0] dividend,divider;
input start, clk;
output quotient,remainder;
output ready;

reg [15:0] quotient;
reg [31:0] dividend_copy, divider_copy, diff;
wire [15:0] remainder = dividend_copy[15:0];

reg [4:0] bit;
wire ready = (bit == 0);

initial bit = 0;

always @( posedge clk )
if( ready && start )
begin
bit = 16;
quotient = 0;
dividend_copy = {16'd0,dividend};
divider_copy = {1'b0,divider,15'd0};

end
else if (!ready)
begin
diff = dividend_copy - divider_copy;
quotient = quotient << 1;

if( !diff[31] )
begin
dividend_copy = diff;
quotient[0] = 1'd1;
end

divider_copy = divider_copy >> 1;
bit = bit - 1;
end

endmodule

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

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

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

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


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

E-mail: info@telesys.ru