[an error occurred while processing this directive]
сумма и переносы - это carry save adder (см Smith-a - первая ссылка), а про фамилию - ошибаетесь
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

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

Отправлено yes 12 января 2005 г. 10:05
В ответ на: дерево Уоллиса (Walles tree) отправлено zlo_olz 11 января 2005 г. 21:19

вот так приблизительно это кодируется

суматор с сохранением


// -------------------------------------------------------------
task CSA;
input [67:0] a, b, r;
output [67:0] summa;
output [68:0] cout;
reg [67:0] tmp;
begin
tmp = a ^ b;
summa = tmp ^ r ;
cout = ((a & b) | (tmp & r)) << 1;
end
endtask
//===========================================================

и собственно суммирование, аргументы - это выход умножителя


// Wallence tree , level 0 .........................................................................
CSA(pp[0], pp[1], {pp[2],2'b0}, ps0_[0], ps0_[1] );
CSA({pp[3],4'b0}, {pp[4],6'b0}, {pp[5],8'b0}, ps0_[2], ps0_[3] );
CSA({pp[6],10'b0}, {pp[7],12'b0},{ c_m, sum[67:14] }, ps0_[4], ps0_[5] );
// Wallence tree , level 1 ...........................................................................
CSA(ps0_[0], ps0_[1], ps0_[2], ps1_[0], ps1_[1] );
CSA(ps0_[3], ps0_[4], ps0_[5], ps1_[2], ps1_[3] );
// Wallence tree , level 2 ........................................................................
CSA(ps1_[0], ps1_[1], ps1_[2], ps2_[0], ps2_[1] );
// Wallence tree , level 3 ..........................................................................
CSA(ps2_[0], ps2_[1], ps1_[3], ps3_0, ps3_1 );

ну и в конце должен быть какой-либо carry-propogate adder

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru