rash230691 0 21 января, 2015 Опубликовано 21 января, 2015 · Жалоба Доброго времени суток, форумчане! Бьюсь третий день на следующей проблемой: module SF_main_vlg_tst(); parameter h_p = 5; parameter size = 1024; reg clk; reg reset; reg start; reg signed [15:0] image_re; reg signed [15:0] image_im; reg signed [15:0] signal_re; reg signed [15:0] signal_im; // wires wire eop_o; wire sop_o; wire valid_o; wire [15:0] source_real; wire [15:0] source_imag; reg signed [15:0] image_re_mem [size-1:0]; reg signed [15:0] image_im_mem [size-1:0]; reg signed [15:0] signal_re_mem [size-1:0]; reg signed [15:0] signal_im_mem [size-1:0]; integer i = 0; event fin_sim; event init_done; event file_read_finish; initial begin $readmemb("LFM_re.dat",signal_re_mem); $readmemb("LFM_im.dat",signal_im_mem); $readmemb("LFM_image_re.dat",image_re_mem); $readmemb("LFM_image_im.dat",image_im_mem); end always @(init_done) begin for(i = 0; i < size; i = i + 1) begin @(posedge clk); signal_re = signal_re_mem[i]; signal_im = signal_im_mem[i]; $monitor("[%d]=[%d]",i,signal_re); end signal_re <= 0; signal_im <= 0; ->file_read_finish; end always @(posedge valid_o) begin for(i = 0; i < size; i = i + 1) begin @(posedge clk); image_re <= image_re_mem[i]; image_im <= image_im_mem[i]; end image_re <= 0; image_im <= 0; end always @(posedge start) begin ->init_done; @(posedge clk) start = 1'b0; end initial begin start = 0'b0; repeat(10)@(posedge clk); start = 1'b1; @(file_read_finish) repeat(3000)@(posedge clk); ->fin_sim; end SF_main #(size,16) i1 ( .ch1_imag(signal_im), .ch1_real(signal_re), .clk(clk), .eop_o(eop_o), .image_re(image_re), .image_im(image_im), .reset(reset), .start(start), .sop_o(sop_o), .valid_o(valid_o), .source_real(source_real), .source_imag(source_imag) ); always @(fin_sim) $stop; initial begin reset = 1'b0; repeat(2)@(negedge clk); reset = 1'b1; repeat(1)@(negedge clk); reset = 1'b0; end initial begin:clk_desc clk <= 1'b0; forever #(h_p) clk = ~clk; end endmodule Имеется такой тестбенч, но вот результаты его я объяснить не могу и, соотвтственно, изменить поведение в нужное русло так же не могу. Результаты ниже в аттаче. Как видно - первый раз вычитывается каждое второе значение из памяти, при повторном же - все. Собственно вопрос: что это? и как на это повлиять? Благодарю за внимание Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 21 января, 2015 Опубликовано 21 января, 2015 · Жалоба Приветствую! У Вас переменная цикла i глобальная. Объявите ее локально в каждом always блоке. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rash230691 0 21 января, 2015 Опубликовано 21 января, 2015 (изменено) · Жалоба Приветствую! У Вас переменная цикла i глобальная. Объявите ее локально в каждом always блоке. Успехов! Rob. Благодарю P.S. Удалите этот топик как позорный Изменено 21 января, 2015 пользователем rasher Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться