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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Констрейны для контроллера SDR SDRAM на Altera EP2C8Q208, Помогите советом, как правильно посчитать
IanPo
сообщение Feb 1 2012, 17:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



Здравствуйте!

Есть плата контроллера SDR SDRAM, пишу VHDL-код для него.

Код
set_time_format -unit ns

create_clock -name "iF14" -period 71.428 [get_ports {iF14}]

create_generated_clock -name {sPLL126} -source [get_pins {altpll0_inst|altpll_component|pll|inclk[0]}] \
    -multiply_by 9 [get_pins {altpll0_inst|altpll_component|pll|clk[0]}]

set_output_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -max 2.0 [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]
set_output_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -min -1.0 [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]

set_input_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -max 2.5 [get_ports {ioSDR_DQ[*]}] -add_delay
set_input_delay -clock {sPLL126} -reference_pin [get_ports {oSDR_CLK}] -min 1.0 [get_ports {ioSDR_DQ[*]}] -add_delay


Так вот - чтение сбоит (вывожу через VGA содержимое ОЗУ), на экране видно непостоянство точек.
Тактовая 14*9=126 МГц.

Сильно подозреваю, что я чего-то не так задал.

1) Как правильно рассчитать констрейны? Особенно непонятен set_input_delay

2) CLK на ОЗУ идет от вывода 151 PLLOut. Обязательно ли выводить CLK с такого вывода ?

Сообщение отредактировал IanPo - Feb 1 2012, 18:24
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 1 2012, 18:14
Сообщение #2


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

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



на сайте альтеры есть дока
Constraint of SOPC Builder design. Там разбирается как раз сдрам и ее констрейны.

ЗЫ. эта же дока есть у меня в блоге, в атаче к одной из статей.


--------------------
Go to the top of the page
 
+Quote Post
IanPo
сообщение Feb 1 2012, 18:23
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



Цитата(des00 @ Feb 1 2012, 22:14) *
на сайте альтеры есть дока
Constraint of SOPC Builder design. Там разбирается как раз сдрам и ее констрейны.

ЗЫ. эта же дока есть у меня в блоге, в атаче к одной из статей.

Спасибо, нашел, читаю.
Go to the top of the page
 
+Quote Post
IanPo
сообщение Feb 2 2012, 16:53
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



Сделал все по статье, не влезаю в timing requirements
Код
create_clock -name "iF14clk" -period 71.428ns [get_ports {iF14}]
derive_pll_clocks
set SDRCLK {altpll0_inst|altpll_component|pll|clk[0]}
create_generated_clock -name {PLL126clk} -source $SDRCLK -offset 0.5 [get_ports {oSDR_CLK}]
set_input_delay -clock PLL126clk -max [expr 5.4 + 0.6] [get_ports {ioSDR_DQ[*]}]
set_input_delay -clock PLL126clk -min [expr 2.5 + 0.4] [get_ports {ioSDR_DQ[*]}]
set_output_delay -clock PLL126clk -max [expr 1.5 + 0.6] [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]
set_output_delay -clock PLL126clk -min [expr 1 - (0.8 + 0.4)] [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]


Тактовые
Код
altpll0_inst|altpll_component|pll|clk[0]    Generated    7.936    126.01 MHz    0.000    3.968    50.00    1    9                    false    iF14clk    altpll0_inst|altpll_component|pll|inclk[0]    { altpll0_inst|altpll_component|pll|clk[0] }
iF14clk    Base    71.428    14.0 MHz    0.000    35.714                                            { iF14 }
PLL126clk    Generated    7.936    126.01 MHz    0.500    4.468        1    1        0.500            false    altpll0_inst|altpll_component|pll|clk[0]    altpll0_inst|altpll_component|pll|clk[0]    { oSDR_CLK }


Слаки
Код
PLL126clk    -3.173    -95.956
altpll0_inst|altpll_component|pll|clk[0]    -2.608    -19.867


Как бороться со Slack ?
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 3 2012, 08:26
Сообщение #5


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

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



Цитата(IanPo @ Feb 2 2012, 11:53) *
Как бороться со Slack ?

регистры в IO буферы поставили ? если да, то фазу сдрам клока двигать %)

сделайте проект, в котором минимум логики сдрам для задания констрейнов и выкладывайте сюда %)


--------------------
Go to the top of the page
 
+Quote Post
IanPo
сообщение Feb 3 2012, 16:56
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



Регистры в IO буферах - не очень понятно, что это. Данные на вых. пинах защелкиваются по клоку - это регистры?
Фаза клока - сделать 2 клока, один для сигналов, другой вывести на PLLOut=SDR_CLK ?
Проект прилагаю.
Прикрепленные файлы
Прикрепленный файл  ipavc.7z ( 20.78 килобайт ) Кол-во скачиваний: 26
 
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 5 2012, 09:17
Сообщение #7


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

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



Цитата(IanPo @ Feb 3 2012, 10:56) *
Регистры в IO буферах - не очень понятно, что это. Данные на вых. пинах защелкиваются по клоку - это регистры?

гляжу проект,
1. где Fast Input/Output Register ? это регистры в ячейках ввода/вывода, крайне желательны для интерфейсов %)
2. почему при наличии sdc файла, включено использование Classic TA ?
3. логика
Код
                        if sMem_Adr(0) = '0' then
                            sMem_Rd <= ioSDR_DQ(7 downto 0);
                        else
                            sMem_Rd <= ioSDR_DQ(15 downto 8);
                        end if;

не допускает возможности использования триггера в IO буффере, а без этого крайне тяжело выполнить времянку по чтению. Надо переделать.
4. когда вы задали offset, вы не учли что временная диаграмма измениться (в приложении) и нужно скорректировать анализ. Это же элементарно определяется. Как лечить такие вещи можете посмотреть либо у меня в блоге либо в публикациях %)

Пока проект не переделаете копать дальше смысла нет.

ЗЫ. Совет на будущее, делать все в топе, крайне некрасиво и неправильно
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
IanPo
сообщение Feb 5 2012, 11:47
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



Большое спасибо за ответы

1. Нашел в Assignment Editore, где задавать. Что ставится в поле From ? Или нужно делать signal sSDR_A для порта oSDR_A и потом задать в исходнике oSDR_A <= sSDR_A (тогда в поле from ставится sSDR_A)? Как быть с двунаправленным DQ ?
2. У меня версия 11.1, я не нашел тут Classic вообще. Решил, что его убрали. В Settings ничего похожего не нашел. Не подскажете, где в Settings такая настройка?
3. Сделаю 16-битное чтение без мультиплексора.
4. Я делал, как в Constraining_SOPC_Designs написано.

Сообщение отредактировал IanPo - Feb 5 2012, 11:50
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 5 2012, 14:46
Сообщение #9


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

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



Цитата(IanPo @ Feb 5 2012, 06:47) *
1. Нашел в Assignment Editore, где задавать. Что ставится в поле From ? Или нужно делать signal sSDR_A для порта oSDR_A и потом задать в исходнике oSDR_A <= sSDR_A (тогда в поле from ставится sSDR_A)? Как быть с двунаправленным DQ ?
2. У меня версия 11.1, я не нашел тут Classic вообще. Решил, что его убрали. В Settings ничего похожего не нашел. Не подскажете, где в Settings такая настройка?
3. Сделаю 16-битное чтение без мультиплексора.
4. Я делал, как в Constraining_SOPC_Designs написано.

1. ничего, просто пишите что на такие то пины поставить Fast input/output
2. Тогда понятно, 9.1сп2 открыл по дефолту в классике %)
3. Лучше читайте в IO регистр, даже без сигналов разрешения, а потом уже делайте что хотите, только учтите латентность.
4. Точно не помню, но где то там ошибка есть, вроде даже на форуме писал об этом. Так что лучше понять что и как задается констрейнами и потом уже работать %)

Проект передалайте и выкладывайте. будем рыть дальше.


--------------------
Go to the top of the page
 
+Quote Post
IanPo
сообщение Feb 7 2012, 05:46
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



Поправил проект, назначил Fast Output Registers на управляющие пины и пины данных (oSDR_DQ).
-1. С назначением разобрался - пин 15 DQ читался, но не выводился никуда, поэтому Fast Input на нем игнорировался. Я приобщил его к выводу, теперь все нормально.
2. Чтение в 16-битный регистр не помогло, Slackи из-за него идут. Как читать в IO регистр, я не понял sad.gif
3. Убрал из top логику sdram в отдельный файл

Сообщение отредактировал IanPo - Feb 8 2012, 05:21
Прикрепленные файлы
Прикрепленный файл  ipavc.qar.7z ( 21.92 килобайт ) Кол-во скачиваний: 21
 
Go to the top of the page
 
+Quote Post
IanPo
сообщение Feb 11 2012, 10:21
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



Добрый день!

В связи с неответами бьюсь с проектом самостоятельно.
Получил-таки стабильную картинку, но в Timing requirements не укладываюсь.
Просьба подсказать, как забороть.
Прикрепленные файлы
Прикрепленный файл  ipavc.7z ( 21.62 килобайт ) Кол-во скачиваний: 23
 
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 11 2012, 13:09
Сообщение #12


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

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



модель памяти скажите какая. что то мне 5.4 нс выборки подозрительными кажутся %)


--------------------
Go to the top of the page
 
+Quote Post
IanPo
сообщение Feb 11 2012, 14:07
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



hynix hy57v641620FTP-H
по справ.листку tHZ=tAC3=5.4

Сообщение отредактировал IanPo - Feb 11 2012, 14:10
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 11 2012, 14:28
Сообщение #14


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

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



Цитата(IanPo @ Feb 11 2012, 09:07) *
hynix hy57v641620FTP-H
по справ.листку tHZ=tAC3=5.4

тогда понятно. при периоде 8 нан, смотря на то, что пишет TQ, нужно либо
1. изменить тактирование ПЛИС, сделать отдельный клок на память и подвигать его фазу.
2. инвертировать клок на плис и учесть дополнительную задержку на 1 такт.

ЗЫ. Поправил вам sdc ешник, ИМХО так более правильно.
Код
set_time_format -unit ns
#
create_clock -name {F14clk} -period 71.428 [get_ports {iF14}]
#
derive_pll_clocks

set SDRAM_CLK altpll0_inst|altpll_component|pll|clk[0]


create_generated_clock -name pSDRAM_CLK -source $SDRAM_CLK [get_ports {oSDR_CLK}]
set_clock_groups -exclusive -group [list F14clk $SDRAM_CLK pSDRAM_CLK ]

set_output_delay -clock pSDRAM_CLK -max 1.5  [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]
set_output_delay -clock pSDRAM_CLK -min -0.2 [get_ports {oSDR_A[*] oSDR_BA[*] oSDR_RAS oSDR_CAS oSDR_WE oSDR_DQM_L oSDR_DQM_H ioSDR_DQ[*]}]

set_input_delay -clock pSDRAM_CLK -max 5.4 [get_ports {ioSDR_DQ[*]}]
set_input_delay -clock pSDRAM_CLK -min 2.5 [get_ports {ioSDR_DQ[*]}]



--------------------
Go to the top of the page
 
+Quote Post
IanPo
сообщение Feb 11 2012, 15:40
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-10-10
Пользователь №: 60 152



Спасибо, так запас по частоте гораздо больше.
Вывод из памяти в VGA стабильный.
Еще есть вопрос по 2 варианту: правильно ли я понял, что я инвертирую сигнал в исходнике, добавляю -invert в описании тактовой и добавляю multicycle с -setup 2 в sdc?

Сообщение отредактировал IanPo - Feb 11 2012, 15:59
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 9th July 2025 - 19:18
Рейтинг@Mail.ru


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