Перейти к содержанию
    

Покрытие памяти блоками M9K

А по существу: почему память 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Путем нехитрых вычислений получаем 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]} - как Квартус реализует? Если корректно, то дело в настройках. Если же нет - что-то не получается у него с ресурсами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вернулся к старой проблеме. В отдельном проекте все ок, математика совпадает. Уважаемый SAZH тут как то написал:

 

Один счетчик адреса на все M9K ему не нравиться.

 

А у меня действительно 1 счетчик на кучу блоков М9К получается. Если не секрет, не могли бы Вы пояснить, почему один счетчик так влияет на количество задействованных блоков? Если бы понимал суть, легче было бы решение искать. Может ему два-три счетчика поставить паралельно, от одного часть запитать, от друго часть и т.д.? Конечно, оптимизатор может зарезать параллельные счетчики, но это другой вопрос. Логики у меня куча, а вот памяти не хватает, с радостью бы обменял в проекте логику на блоки М9К. Лучше 10 счетчиков вместо одного поставить, чем памяти в 2 раза больше тратить .

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...