чтение и запись в SDRAM

Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Сообщение es131245 »

Добрый день,

По нужде пробую после МК ПЛИСы, а именно DE0-NANo SOC (ALtera Cyclon V)
Задача считывать 8 каналов цифровых данных и записывать сразу в SDRAM.
Когда запись закончиться, надо будет перенести все данные на карточку памяти MicroSD.

ПЛИСы для меня новы. Подскажите как это правильней сделать?
Счетчик (хелло ворлд) делал. Правда почему то все сбивается от отключения питания.
Реклама
Открыл глаза
Сообщения: 76
Зарегистрирован: Вт апр 05, 2016 19:00:29
Откуда: Ростовская обл. Новочеркасск

Сообщение Stewart »

es131245 писал(а): Правда почему то все сбивается от отключения питания.
Для того, что-бы не сбивалось, надо во внешнюю память конфигурацию записать и указать ПЛИСине, откуда загрузиться.
Ох уж эти сказки...
Ох уж эти сказочники...
Реклама
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Добрый день!
Пытаюсь запустить SDRAM M12L16161 "ногодрыгом" на stm32f103.
Это вообще возможно осуществить, дрыгая ногами (CLK, CKE, CS, RAS, CAS, BA, A0-A10, WE, LDQM, UDQM) в ручном режиме,
в соответствии с временными диаграммами, приведёнными в даташите?
Есть ли ограничения минимальной частоты сигнала CLK и особые требования к его стабильности?
Может ли негативно влиять тот факт, что интервалы между положительными фронтами CLK постоянно меняются ("ногодрыг", а не по таймеру)?
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="pinchemierda",url="/forum/viewtopic.php?p=3840802#p3840802"]Пытаюсь запустить SDRAM M12L16161 "ногодрыгом" на stm32f103.[/uquote]
Я бы лучше взял какую-то QSPI PSRAM, типа такой. Учитывая простоту протокола по 4 бита может даже быстрее будет работать, чем твоя SDRAM по 16-ть. И F1 самая медленная серия при работе с портами, его бы заменил на F303, там ногодрыг наоборот самый быстрый.
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Да, походу не укладываюсь в CLK cycle time max = 1000 нс.
40 тактов уходит на то, чтобы один бит порта пнуть регистром GPIOx->BSRR или BRR !!! Как так то!?
А с помощью битбэндинга не быстрее будет?
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

40 тактов там никак не может быть, разве что оптимизация выключена. В 4 такта я бы поверил...
Реклама
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Я может смотрю не туда, или кнопки не те нажимаю))
В отладке встаю на строку (хочу например PA15 сделать HIGH) GPIOA->BSRR |= 1<<15;
Открываю Systick, записываю текущее значение в калькулятор, шагаю на следующую строчку.
В Systick уже новое значение (меньше предыдущего, т.к. считает назад). По разнице определяю количество тактов (40).
Тактирование Systick 72MHz, оптимизация 0.

Ассемблер:
0x08000880 480A LDR r0,[pc,#40] ; @0x080008AC
0x08000882 6800 LDR r0,[r0,#0x00]
0x08000884 F4404000 ORR r0,r0,#0x8000
0x08000888 4908 LDR r1,[pc,#32] ; @0x080008AC
0x0800088A 6008 STR r0,[r1,#0x00]
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

Тут все неправильно, начиная с того, что BSRR - это write-only регистр. И SysTick может тикать пока отладчик пытается пошагово команды выполнять, если хочется примерно замерять такты таким образом, то нужно использовать DWT->CYCCNT.
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Reflector, большое спасибо за DWT->CYCCNT, не знал про это. От SysTick такого не ожидал.
Получилось 20 тактов при нулевой оптимизации (при О2 снижается до 12 тактов).
А с BSRR что не так? Он вроде и нужен (в том числе) для того чтобы "атомарно" устанавливать один или несколько битов порта.
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="pinchemierda",url="/forum/viewtopic.php?p=3840895#p3840895"]А с BSRR что не так? Он вроде и нужен (в том числе) для того чтобы "атомарно" устанавливать один или несколько битов порта.[/uquote]
Именно, BSRR нужен чтобы не делать неатомарный RWM используя ODR, но читать из BSRR зачем? Работать то будет, хотя не гарантированно для новых серий, но медленнее.
Последний раз редактировалось Reflector Ср май 13, 2020 14:09:33, всего редактировалось 1 раз.
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Я вроде не читал...
Писал только GPIOA->BSRR |= 1<<15; (сорян, если туплю)
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="pinchemierda",url="/forum/viewtopic.php?p=3840898#p3840898"]Я вроде не читал...
Писал только GPIOA->BSRR |= 1<<15; (сорян, если туплю)[/uquote]
И как можно модифицировать BSRR не читая его значение? Ты же листинг приводил, там LDR/ORR/STR...
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Блин, точно, переделаю. Не судите строго, тот ещё самоучка))
Кстати, SDRAMка заработала, вопреки CLK cycle time max
Спасибо!
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Может проще было взять китайскую плату с STM32F407ZGT6, напаять на ее метровую статическую память и работать через FSMC? Это быстрее и проще и удобнее чем через ногодрыг.
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Да такая платка есть. Sram к ней докупать надо, а sdram полно валяется.
Со статической ещё успею наиграться.
Весь интерес был именно sdram и ногодрыгом
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

pinchemierda писал(а):Весь интерес был именно sdram и ногодрыгом
Если спортивный интерес это одно, а если для практического применения - совсем другое.
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Добрый день! Столкнулся с необъяснимым поведением микросхемы памяти SDRAM HY57V561620FT. Прошу помощи в понимании происходящего.
При подачи команды чтения, после задержки CAS Latency выводы данных DQ должны переходить из Hi-Z в состояние выхода данных (+3.3В либо GND). Так и происходит с выводами DQ(0,2,4,6,9,11,13,15), а вот выводы DQ(1,3,5,7,8,10,12,14) остаются в состоянии высокого импеданса.
Подумал, может быть микросхема не исправна. Перепаял её на другую, тоже самое. Проверил разводку питания микросхемы, питание и земля корректно подведены к выводам VDD, VDDQ, VSS и VSSQ. При пайке не перегревал особо. Если дело всё таки в паяльнике, то смущает, что две микросхемы от разных производителей ведут себя одинаково. И почему страдает именно эта половина выводов DQ? Может кто сталкивался с таким?
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

[uquote="pinchemierda",url="/forum/viewtopic.php?p=4064567#p4064567"]остаются в состоянии высокого импеданса.[/uquote]
Откуда такой вывод?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср мар 22, 2017 09:52:52

Сообщение pinchemierda »

Gudd-Head писал(а):Откуда такой вывод?
Замедлил тактирование до 1 Гц и отлаживался по светодиодам.
Да уже разобрался с проблемой. Паяльник заземлил и новую микросхему припаял и всё ОК стало.
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Обидно. Впрочем, ничего нового.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

Вернуться в «ПЛИС»