D
david90
Guest
Як ви поділите на 8 бітний номер 4-розрядні числа в FPGA Spartan 3.Відділ не synthesizable в Spartan 3.Додано через 1 годину 27 хвилин:Я знайшов алгоритм, але
я не впевнений, як код у verilog.Ось АЛГ
==============
Перший варіант алгоритму розподілу і апаратних
Це дуже схоже на те, що нам робити з олівцем і папером.Чотири регістри і 64-бітних ALU потрібні.Початкові значення наступним чином: верхня 32 біт (DH) з 64-бітного регістра D містить 32-бітний дівізор; нижніх 32 біти дорівнюють нулю.У 64-бітної інші зареєструватися R містить дивідендів (верхня половина дорівнює нулю).Q, факторкольцо, містить нуль.Ось алгоритм розподілу
Повторіть 32 разів:
1.Дільник перехід права 1 біт, D = D>> 1.
2.Відняти з D R, R = R - D.
3.Факторно зміщення вгору, Q = Q <<1, якщо (R> = 0) q0 = 1,
інакше R = R D.
============
Ось мій код
Код:
Модуль відділу (годинник, дільник, дивіденди, фактор, remander);
введення годин;
вхід [3:0] дівізор;
вхід [7:0] дивідендів;виробництва [3:0] факторно;
виробництва [3:0] remander;рег [3:0] факторно;
рег [3:0] remander;
рег [7:0] Temp;
завжди @ (posedge годин)
починатиТемпература <= дівізор <<4;Факторно = дивіденд-(Temp>> 1)
Факторно <= факторно <<1;якщо (R> = 0)
ще
Факторно = дивідендів (Temp>> 1)
кінецьendmodule
я не впевнений, як код у verilog.Ось АЛГ
==============
Перший варіант алгоритму розподілу і апаратних
Це дуже схоже на те, що нам робити з олівцем і папером.Чотири регістри і 64-бітних ALU потрібні.Початкові значення наступним чином: верхня 32 біт (DH) з 64-бітного регістра D містить 32-бітний дівізор; нижніх 32 біти дорівнюють нулю.У 64-бітної інші зареєструватися R містить дивідендів (верхня половина дорівнює нулю).Q, факторкольцо, містить нуль.Ось алгоритм розподілу
Повторіть 32 разів:
1.Дільник перехід права 1 біт, D = D>> 1.
2.Відняти з D R, R = R - D.
3.Факторно зміщення вгору, Q = Q <<1, якщо (R> = 0) q0 = 1,
інакше R = R D.
============
Ось мій код
Код:
Модуль відділу (годинник, дільник, дивіденди, фактор, remander);
введення годин;
вхід [3:0] дівізор;
вхід [7:0] дивідендів;виробництва [3:0] факторно;
виробництва [3:0] remander;рег [3:0] факторно;
рег [3:0] remander;
рег [7:0] Temp;
завжди @ (posedge годин)
починатиТемпература <= дівізор <<4;Факторно = дивіденд-(Temp>> 1)
Факторно <= факторно <<1;якщо (R> = 0)
ще
Факторно = дивідендів (Temp>> 1)
кінецьendmodule