реклама на сайте
подробности

 
 
> Xilinx Spartan6 использование SRL16, Как правильно использовать режим Dual 16-bit Shift Register
des00
сообщение Aug 8 2014, 13:36
Сообщение #1


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Добрый день!

Подскажите пожалуйста, как правильно написать код, что бы ISE 14.7 понял что я хочу поставить два SRL16E блока в одном люте, как это изображено на рисунке №19, под названием Dual 16-bit Shift Register Configuration в ug384.pdf Spartan-6 FPGA Configurable Logic Block?

сделал так
Код
  generate
    for (i = 0; i < pDAT_W/4; i = i + 1) begin
      srl16
      srl16_0
      (
        .clk    ( iclk                    ) ,
        //
        .clkena ( iclkena & iwrite        ) ,
        .idat   ( iwdat0       [i]        ) ,
        //
        .addr   ( idat         [4*i +: 4] ) ,
        //
        .odat   ( srl16__odat0 [i]        )
      );

      srl16
      srl16_1
      (
        .clk    ( iclk                    ) ,
        //
        .clkena ( iclkena & iwrite        ) ,
        .idat   ( iwdat1       [i]        ) ,
        //
        .addr   ( idat         [4*i +: 4] ) ,
        //
        .odat   ( srl16__odat1 [i]        )
      );

    end
  endgenerate

Все требования выполнил, данные пишутся одновременно в два SRL16, чтение зашарено. Но смотрю FPGA Editor, ISE пихает их в разные LUT sad.gif

ЗЫ. Сам SRL16 вставлял не как компонент, а кодом
Код
module srl16
(
  clk    ,
  clkena ,
  idat   ,
  addr   ,
  odat
);

  //------------------------------------------------------------------------------------------------------
  //
  //------------------------------------------------------------------------------------------------------

  input  wire         clk;
  input  wire         clkena;
  input  wire         idat  ;
  input  wire [3 : 0] addr  ;
  output wire         odat  ;

  //------------------------------------------------------------------------------------------------------
  //
  //------------------------------------------------------------------------------------------------------

  reg [15 : 0] ram;

  //------------------------------------------------------------------------------------------------------
  //
  //------------------------------------------------------------------------------------------------------

  // synthesis translate_off
  initial ram = 16'h0;
  // synthesis translate_on

  always @(posedge clk) begin
    if (clkena) begin
      ram <= {ram[14 : 0], idat};
    end
  end

  assign odat = ram[addr];

endmodule


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01345 секунд с 7
ELECTRONIX ©2004-2016