Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Повышаем скорость работы с inout шиной
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
torik
Имеется память SSRAM. Написал для нее контроллер.

Прописал констрейны следующего вида:

Код
create_generated_clock -name ssram_clk_pin -source $ssram_clk_phy [get_ports {SSRAM_CLK}]


set tAC 3.4
set tOH 1.3

set tCM_Hold -0.4
set tCM_Setup 1.4

set tD_Hold -0.4
set tD_Setup 1.4

set tA_Hold -0.4
set tA_Setup 1.4
                                    
set_input_delay -clock [get_clocks {ssram_clk_pin}] -max $tAC [get_ports {SSRAM_DQ[*]}]
set_input_delay -clock [get_clocks {ssram_clk_pin}] -min $tOH [get_ports {SSRAM_DQ[*]}] -add_delay

set_output_delay -clock [get_clocks {ssram_clk_pin}] -max $tD_Setup [get_ports {SSRAM_DQ[*]}]
set_output_delay -clock [get_clocks {ssram_clk_pin}] -min $tD_Hold [get_ports {SSRAM_DQ[*]}] -add_delay

set_output_delay -clock [get_clocks {ssram_clk_pin}] -max $tA_Setup [get_ports {SSRAM_A[*]}]
set_output_delay -clock [get_clocks {ssram_clk_pin}] -min $tA_Hold [get_ports {SSRAM_A[*]}] -add_delay

set_output_delay -clock [get_clocks {ssram_clk_pin}] -max $tCM_Setup [get_ports {SSRAM_OEn}]
set_output_delay -clock [get_clocks {ssram_clk_pin}] -min $tCM_Hold [get_ports {SSRAM_OEn}] -add_delay

set_output_delay -clock [get_clocks {ssram_clk_pin}] -max $tCM_Setup [get_ports {SSRAM_CE1n}]
set_output_delay -clock [get_clocks {ssram_clk_pin}] -min $tCM_Hold [get_ports {SSRAM_CE1n}] -add_delay

set_output_delay -clock [get_clocks {ssram_clk_pin}] -max $tCM_Setup [get_ports {SSRAM_BWEn}]
set_output_delay -clock [get_clocks {ssram_clk_pin}] -min $tCM_Hold [get_ports {SSRAM_BWEn}] -add_delay

set_output_delay -clock [get_clocks {ssram_clk_pin}] -max $tCM_Setup [get_ports {SSRAM_ADSPn}]
set_output_delay -clock [get_clocks {ssram_clk_pin}] -min $tCM_Hold [get_ports {SSRAM_ADSPn}] -add_delay



Таймквест дает Fmax 170МГц (да и 200 тоже позволяет). Однако шина SSRAM_DQ не проходит по setup:

Код
SSRAM_DQ[14] - qsys1:qsys1_inst|altera_avalon_mm_clock_crossing_bridge:mm_clock_crossing_bridge_1|altera_avalon_dc_fifo:rsp_fifo|altsyncram:mem_rtl_0|altsyncram_60d1:auto_generated|ram_block1a0~porta_datain_reg0

SSRAM_DQ[14] - sld_signaltap:auto_signaltap_0|acq_trigger_in_reg[31]

....................


ну и так со всеми сигналами DQ.

Это что, фазу надо крутить как для SDRAM?
alexPec
Ну да, даже в примере для кита 3с25 фаза клока SSRAM стоит -2ns. Пробовал тоже без подкрутки - нормальной скорости не добился
torik
Подкрутил фазу, получилось -3.1 нс, но все равно даже на 150 МГц уже ругается на setup по шинам адреса и прочим кроме данных.
А можете выложить пример контроллера памяти от кита (и наименование мукрухи памяти для сравнения), и если возможно, описание констриков?
Я бы не сильно парился с такими частотами, но у сайпраса, как водится, ложка говнеца имеется - на запись с произвольным доступом требуется 2 такта.
alexPec
Цитата(torik @ Dec 25 2012, 11:23) *
Подкрутил фазу, получилось -3.1 нс, но все равно даже на 150 МГц уже ругается на setup по шинам адреса и прочим кроме данных.
А можете выложить пример контроллера памяти от кита (и наименование мукрухи памяти для сравнения), и если возможно, описание констриков?
Я бы не сильно парился с такими частотами, но у сайпраса, как водится, ложка говнеца имеется - на запись с произвольным доступом требуется 2 такта.

Вечером найду, выложу. Но там SSRAM на частоте 100МГц запущена, чип is61lps25636A-200tqli
torik
Заметил у сайпраса режим записи, чтоб за один такт.
Но максимальная частота, которой я достиг - 120 МГц. (на 150 Мгц оно работает, но таймквест уже ругается, так что нафиг).

Не знаю, есть ли какие-то способы повышения рабочей частоты в этом случае?
alexPec
Цитата(torik @ Dec 25 2012, 14:27) *
Заметил у сайпраса режим записи, чтоб за один такт.
Но максимальная частота, которой я достиг - 120 МГц. (на 150 Мгц оно работает, но таймквест уже ругается, так что нафиг).

Не знаю, есть ли какие-то способы повышения рабочей частоты в этом случае?

Ну так а смысл в 20-30-40% повышать частоту? Если уж не успевает, то такое повышение если и спасет, то запаса совсем не останется. Или разрядность повышать (хотя и так уже 32) или несколько паметей ставить и распределить под разные задачи, чтоб работали по разным шинам.

Кстати, обещанный проект:

torik
Да хотелось бы повысить частоту до 200МГц (ну хотя бы до 160, как у ДДР), на которых память может работать. Там весь контроллер - 3 ЛЯ, а клокбридж, через который это повешено на шину авалон, вполне способен работать на 200 МГц. И 20-40% - это вовсе не фигня.
Вопрос об изменении разрядности и т.п. не стоит, т.к. быть готовая плата.
alexPec
Цитата(torik @ Dec 26 2012, 08:36) *
Вопрос об изменении разрядности и т.п. не стоит, т.к. быть готовая плата.


Тогда да, выжимать что можно. А мультицикл сделать? На аснхронной памяти выжимал мультициклом 100 мгц - макс. частота для памяти.
torik
Дык мультицикл прописал как для сдрам, т.к. фазу-то крутим. Вот до 120МГц, болше не хочет.
alexPec
Цитата(torik @ Dec 26 2012, 10:45) *
Дык мультицикл прописал как для сдрам, т.к. фазу-то крутим. Вот до 120МГц, болше не хочет.

А ограничение то где? Логика плис позволяет, память до 200 мгц, значит можно колдонуть.... Непоняяяятно sm.gif
torik
Да, непонятно. В контроллере нет ничего, кроме

Код
assign avs_readdata = coe_SSRAM_DQ;
assign coe_SSRAM_DQ = (avs_write) ? avs_writedata : 16'bzzzzzzzzzzzzzzzz;


да все остальные сигналы напрямую с шины авалон...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.