sazh 5 28 декабря, 2010 Опубликовано 28 декабря, 2010 · Жалоба А по существу: почему память altsyncram3 занимает 6 М9К а не 1 как должно быть? От схемы включения думаю тут мало чего зависит. Один счетчик адреса на все M9K ему не нравиться. Вот в 9 блоков вроде уложился на мегафункции однопортовой ПЗУ с одним на всех HEX файлом module pzu ( input clk, input aclr_ct_rom, input clra, clrb, clrc, output [95:0] out_dataa, out_datab, out_datac ); reg [7:0] ct_adr [2:0]; wire [95:0] out_data [2:0]; always @(posedge clk) begin if(clra) ct_adr[0] <= 8'd0; else ct_adr[0] <= ct_adr[0] + 1'b1; if(clrb) ct_adr[1] <= 8'd0; else ct_adr[1] <= ct_adr[1] + 1'b1; if(clrc) ct_adr[2] <= 8'd0; else ct_adr[2] <= ct_adr[2] + 1'b1; end genvar i; generate for (i=0; i<=2; i=i+1) begin : block rom rom_block ( .aclr (aclr_ct_rom), .address (ct_adr[i]), .clock (clk), .q (out_data[i]) ); end endgenerate assign out_dataa = out_data[0], out_datab = out_data[1], out_datac = out_data[2]; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EvgenyNik 0 28 декабря, 2010 Опубликовано 28 декабря, 2010 · Жалоба Путем нехитрых вычислений получаем 96/32 = 3, полагая что квартус поставит 3 M9K с конфигурацией 256х32 и запараллелит входную шину адреса у блоков. Ну а если самому объявить 3 отдельных блока с разрядностью данных 32 и потом в тексте сделать присваивание навроде rom_data[95:0] = {rom_data_a[31:0], rom_data_b[31:0], rom_data_c[31:0]} - как Квартус реализует? Если корректно, то дело в настройках. Если же нет - что-то не получается у него с ресурсами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 28 декабря, 2010 Опубликовано 28 декабря, 2010 · Жалоба Спасибо всем за советы, щас попробую колдонуть... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 12 января, 2011 Опубликовано 12 января, 2011 · Жалоба Вернулся к старой проблеме. В отдельном проекте все ок, математика совпадает. Уважаемый SAZH тут как то написал: Один счетчик адреса на все M9K ему не нравиться. А у меня действительно 1 счетчик на кучу блоков М9К получается. Если не секрет, не могли бы Вы пояснить, почему один счетчик так влияет на количество задействованных блоков? Если бы понимал суть, легче было бы решение искать. Может ему два-три счетчика поставить паралельно, от одного часть запитать, от друго часть и т.д.? Конечно, оптимизатор может зарезать параллельные счетчики, но это другой вопрос. Логики у меня куча, а вот памяти не хватает, с радостью бы обменял в проекте логику на блоки М9К. Лучше 10 счетчиков вместо одного поставить, чем памяти в 2 раза больше тратить . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться