Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
15 years ago

HPCII ddr2 controller

Hi,

I generated HPCII ddr2 controller using megawizard. I included the module in my fpga design and trying to run simulation. I dont see the local_init_done signal going high at all. As per the documentation, this is an output signal from the controller to indicate that the initialization is done.

Also, I see that it takes a long time for the controller to send out reset_phy_clk_n signal, after the global_reset_n goes high. Is this normal.

7 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The ready signal must be high during that cycle otherwise it won't work.

    The timing diagramm in the User guide is quite clear for that.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Thats right. I do have the burst_begin and the local_read_req high for 1 clock cycle when the mem_local_ready is high. But I dont see any activity from the altmemphy.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    You need to have read_request and burst_start high to start a reading cycle for one cycle. I usally wait one cycle bfore applying the next request, since two data words are read out, but that's not requiered.

    Also ready needs to be high.

    Check the timing diagramm.

    
    when do_read0 =>
       if (command = c_command_READ and addr_empty = '0') then
           read_req   <= '1';
           burstbegin <= '1';
           if (ready = '1') then
               state <= do_read1;
           end if;
        else
           state <= idle;
        end if;
    when do_read1 =>
       if (ready = '1') then
           state <= do_read0;
        end if;
    
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Thank you. writes happen fine now. I am trying to issue a read transaction by setting the local_read_req high for 1 clock along wiht the size and the address. I dont see the afi_cs_n changed from f at all, indicating that the altmemphy is not forwarding the read transaction requested on the avalon interface. Any clues ??

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    You have to keep the write_req hight for the size of the transfer. The burst start must stay high only for the first cycle.

    Also you need to check if the ready signal is high when initialising a burst.

    Look at the timing diagramm in the UG of the DDR HP Ctrl.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Thanks. That works. Incase of HPCII DDRII controller wiht local interface, for a half-rate write transaction, do I have to keep the write_req signal high just for one clock cycle when the mem_local_ready is asserted, or do I have to assert write_req for the number of clocks equal to the size of the transfer. I document does not describe this clearly.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Try to generate your model with skip calibration option (only for simulation), that way it should be finished in less than 50 us.

    BTW, did you attach the model ? Otherwise it won't work.