alexx188 0 13 августа, 2012 Опубликовано 13 августа, 2012 · Жалоба Всем доброго времени суток. Хочу перевести сабж. Код VHDL process(clk, Q) begin if (clk'event and clk = '1') then if (ena = '1') then delay_pipe(0) <= Q; for n in 1 to PipeLength -1 loop delay_pipe(n) <= delay_pipe(n -1); end loop; end if; end if; end process; dQ <= delay_pipe(PipeLength -1); мой код на Verilog always @(posedge clk) begin if (ena) begin delay_pipe[0] <= Q; for (n = 1; n < PipeLength; n = n + 1) delay_pipe[n] <= delay_pipe[n - 1]; end end assign dQ = delay_pipe[PipeLength - 1]; получается такая картина RTLView VHDL RTLView Verilog Вопрос: Как избавиться от мультиплексора в конце конвеера? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eugen_pcad_ru 0 14 августа, 2012 Опубликовано 14 августа, 2012 · Жалоба Немного оффтопик: а чем пользовались при просмотре RTL? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 14 августа, 2012 Опубликовано 14 августа, 2012 · Жалоба Из этого кода такого он не нагородил бы! Дайте весь код Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klop 0 14 августа, 2012 Опубликовано 14 августа, 2012 · Жалоба Грамотно сравнивать эти вещи умеют Formality(Synopsys) / Conformal (Cadence)/ что_там_есть_у_ментора. Усе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksimp 0 14 августа, 2012 Опубликовано 14 августа, 2012 · Жалоба Вопрос: Как избавиться от мультиплексора в конце конвеера? Вроде, обе схемы - это одно и тоже. Во второй схеме вместо триггера с входом разрешения разрисованы его потроха, обычный триггер и мультиплексор. Но это тоже самое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexx188 0 15 августа, 2012 Опубликовано 15 августа, 2012 · Жалоба Из этого кода такого он не нагородил бы! Дайте весь код reg [ 2:0] delay_pipe [PipeLength - 1: 0]; integer n; always @(posedge clk) begin if (ena) begin delay_pipe[0] <= Q; for (n = 1; n <= PipeLength - 1; n = n + 1) delay_pipe[n] <= delay_pipe[n - 1]; end end assign dQ = delay_pipe[PipeLength - 1]; все! Вроде, обе схемы - это одно и тоже. Во второй схеме вместо триггера с входом разрешения разрисованы его потроха, обычный триггер и мультиплексор. Но это тоже самое. Не тоже самое. Насколько я знаю у каждого D-тригера есть вход ENA. А в моем случае создается мультиплексор. Кроме того при компиляции есть разница в кол-ве Comb. logic ровно на один мультиплексор :). И поскольку работают обе схемы одинаково, это чисто академический интерес. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 15 августа, 2012 Опубликовано 15 августа, 2012 · Жалоба это чисто академический интерес. Если это оформить отдельным модулем, вся цепочка регистров реализуется одинаково и на верилоге. `timescale 1 ns / 1 ps module pipelined_rg #( parameter PipeLength = 15 ) ( input clk, input ena, input [3:0] Q, output [3:0] dQ ); integer n; reg [3:0] delay_pipe [PipeLength-1:0]; always @(posedge clk) begin if(ena) begin delay_pipe[0] <= Q; for (n=1; n<PipeLength; n=n+1) delay_pipe[n] <= delay_pipe[n-1]; end end assign dQ = delay_pipe[PipeLength-1]; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexx188 0 15 августа, 2012 Опубликовано 15 августа, 2012 · Жалоба Если это оформить отдельным модулем, вся цепочка регистров реализуется одинаково и на верилоге. Да действительно. Странно, и о чем это говорит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stu 0 17 августа, 2012 Опубликовано 17 августа, 2012 · Жалоба Да действительно. Странно, и о чем это говорит? думаю, о сообщении №3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться