torik 0 12 ноября, 2010 Опубликовано 12 ноября, 2010 · Жалоба В простом модуле имеется: reg [71:0] reg_iDatacontr; .............. always @(posedge csi_sys_clk_clk or negedge csi_sys_clk_reset_n) begin if (!csi_sys_clk_reset_n) begin reg_iDatacontr <= 72'h0; end else begin if (reg_outReady) begin if (!dataValidEn) begin reg_iDatacontr <= {reg_iDatacontr[47:0],asi_in_data}; end else begin reg_iDatacontr <= {reg_iDatacontr[47:0],24'h0}; end end end end В отчете, модуль содержащий сие использует 1 M4K. И использует он его именно для reg_iDatacontr. Не спорю, может это и логично, но если мне не хватает M4K, могу я заставить квартус сделать это на регистрах? Ведь точно такие же регистры меньшей разрядности (ниже) он не заменяет блоками памяти: reg [2:0] reg_iSOF; ...... always @(posedge csi_sys_clk_clk or negedge csi_sys_clk_reset_n) begin if (!csi_sys_clk_reset_n) begin reg_iSOF <= 0; reg_iEOF <= 0; reg_iValid <= 0; end else begin if (reg_outReady) begin reg_iSOF <= {reg_iSOF[1:0],asi_in_startofpacket}; reg_iEOF <= {reg_iEOF[1:0],asi_in_endofpacket}; reg_iValid <= {reg_iValid[1:0],asi_in_valid}; end end end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 12 ноября, 2010 Опубликовано 12 ноября, 2010 · Жалоба могу я заставить квартус сделать это на регистрах? reg [71:0] reg_iDatacontr /* synthesis preserve */; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 12 ноября, 2010 Опубликовано 12 ноября, 2010 · Жалоба Когда не станет хватать M4K, Quartus сделает это на регистрах. Граница проходит по размеру LAB, похоже (т.е. 8). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 13 ноября, 2010 Опубликовано 13 ноября, 2010 · Жалоба Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться