Хто-небудь може виправити цю помилку?

H

hoangthanhtung

Guest
Це код для здійснення РПІ в Verilog для FPGA.
Я імітіруемих йому Кью (на) rtus 4.0 і виявити, що результат не є виправленням у першому циклі, але виправити у другому циклі.Я не можу пояснити, що причина?

Я надаю моєї моделювання файл і знак помилки протягом двох циклів.

Хто-небудь може мені допомогти?//************************************************ *********
/ / IEEE STD 1364-1995 Verilog файлу: fir_gen.v
/ / Автор-EMAIL: Uwe.Meyer-Baese (AT) ieee.org
//************************************************ *********
/ / Це загальна РПІ фільтр генератор
/ / Він використовує W1 бітних даних / коефіцієнтів біт
Модуль fir_gen (CLK, Load_x, x_in, c_in, y_out);
//------------------------------------------------ ---------
Параметр W1 = 9, / / ширина вхідного бітних
W2 = 18, / / Multiplier бітної шириною 2 * W1
L = 4, / / довжина фільтра або номер водопровідної
W3 = 19, / / ширина Гадюка = W2 log2 (L) -1
W4 = 11, / / Output бітної ширині
Mpipe = 3 / / Трубопровідний крок множник

введення CLK, Load_x / / std_logic
вхід [W1-1: 0] x_in, c_in / / Матеріали = 9 біт
виробництва [W4-1: 0] y_out; / / Підсумки виробництва 11 біт = 10 біт даних,
1 біт сигналу

рег [W1-1: 0] X;
дріт [W3-1: 0] Y;

/ / 2D масив типів
тобто пам'ять не підтримується MaxPlusII
/ / В Verilog, тому використання одного вектора

рег [W1-1: 0] c0, C1, C2, C3; / / Коефіцієнт масив
дріт [W2-1: 0] p0, P1, P2, P3; / / Продукт масив
рег [W3-1: 0] a0, A1, A2, A3 / / Гадюка масив

дріт [W2-1: 0] сума; / / допоміжна сигналів
дріт clken, aclr;

//----> LOAD DATA або Коефіцієнт
завжди @ (posedge CLK)
початку: Завантажити
якщо (Load_x == 0)
починати
/ / Коефіцієнти зсуву однієї
/ / Store коефіцієнта до реєстру
c3 <= c_in;
c2 <= c3;
c1 <= c2;
c0 <= C1;
кінець
ще
починати
X <= x_in / / отримати дані вибірки за часом
кінець
кінець

//----> Обчислення суми з-продуктів
завжди @ (posedge CLK)
початку: SOP
/ / Обчислити перенесені фільтр доповнення
/ / W2 = 18: Multiplier бітної шириною 2 * W1
a0 <= (p0 [W2-1], p0) A1;
a1 <= (P1 [W2-1], P1 a2);
a2 <= (p2 [W2-1], p2) a3;
a3 <= (P3 [W2-1], P3) 19'd00000 / / Перший ТКП лише зареєструватися
кінець
присвоїти Y = a0;

/ / Інстанцірует L pipelined множник
lpm_mult mul_0 / / Помножити X * c0 = p0
(. Годинники (CLK),. Dataa (X),. Datab (c0),. Результату (p0));
defparam mul_0.lpm_widtha = W1;
defparam mul_0.lpm_widthb = W1;
defparam mul_0.lpm_widthp = W2;
defparam mul_0.lpm_widths = W2;
defparam mul_0.lpm_pipeline = Mpipe;
defparam mul_0.lpm_representation = "підписаних";

lpm_mult mul_1 / / Помножити X * c1 = P1
(. Годинники (CLK),. Dataa (X),. Datab (C1),. Результату (P1));
defparam mul_1.lpm_widtha = W1;
defparam mul_1.lpm_widthb = W1;
defparam mul_1.lpm_widthp = W2;
defparam mul_1.lpm_widths = W2;
defparam mul_1.lpm_pipeline = Mpipe;
defparam mul_1.lpm_representation = "підписаних";

lpm_mult mul_2 / / Помножити X * c2 = p2
(. Годинники (CLK),. Dataa (X),. Datab (С2),. Результату (p2));
defparam mul_2.lpm_widtha = W1;
defparam mul_2.lpm_widthb = W1;
defparam mul_2.lpm_widthp = W2;
defparam mul_2.lpm_widths = W2;
defparam mul_2.lpm_pipeline = Mpipe;
defparam mul_2.lpm_representation = "підписаних";

lpm_mult mul_3 / / Помножити X * c3 = P3
(. Годинники (CLK),. Dataa (X),. Datab (C3),. Результатом (3));
defparam mul_3.lpm_widtha = W1;
defparam mul_3.lpm_widthb = W1;
defparam mul_3.lpm_widthp = W2;
defparam mul_3.lpm_widths = W2;
defparam mul_3.lpm_pipeline = Mpipe;
defparam mul_3.lpm_representation = "підписаних";

присвоїти y_out = Y [W3-1: W3-W4];

endmodule
Вибачте, але вам необхідно увійти в акаунт це вкладення

 
Чи можете ви відправити мені verilog модуль файл для lpm_mult mul_2?
І verilog testbench?Так що я можу відтворити проблему тут!

 
nand_gates писав:

Чи можете ви відправити мені verilog модуль файл для lpm_mult mul_2?

І verilog testbench?
Так що я можу відтворити проблему тут!
 

Welcome to EDABoard.com

Sponsor

Back
Top