Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

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

Вт май 10, 2016 10:01:59

Добрый день,

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

ПЛИСы для меня новы. Подскажите как это правильней сделать?
Счетчик (хелло ворлд) делал. Правда почему то все сбивается от отключения питания.

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

Вт май 10, 2016 10:48:17

es131245 писал(а): Правда почему то все сбивается от отключения питания.

Для того, что-бы не сбивалось, надо во внешнюю память конфигурацию записать и указать ПЛИСине, откуда загрузиться.

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

Ср май 13, 2020 09:52:16

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

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

Ср май 13, 2020 11:28:36

Пытаюсь запустить SDRAM M12L16161 "ногодрыгом" на stm32f103.

Я бы лучше взял какую-то QSPI PSRAM, типа такой. Учитывая простоту протокола по 4 бита может даже быстрее будет работать, чем твоя SDRAM по 16-ть. И F1 самая медленная серия при работе с портами, его бы заменил на F303, там ногодрыг наоборот самый быстрый.

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

Ср май 13, 2020 12:10:15

Да, походу не укладываюсь в CLK cycle time max = 1000 нс.
40 тактов уходит на то, чтобы один бит порта пнуть регистром GPIOx->BSRR или BRR !!! Как так то!?
А с помощью битбэндинга не быстрее будет?

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

Ср май 13, 2020 12:21:26

40 тактов там никак не может быть, разве что оптимизация выключена. В 4 такта я бы поверил...

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

Ср май 13, 2020 12:43:16

Я может смотрю не туда, или кнопки не те нажимаю))
В отладке встаю на строку (хочу например 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]

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

Ср май 13, 2020 12:53:25

Тут все неправильно, начиная с того, что BSRR - это write-only регистр. И SysTick может тикать пока отладчик пытается пошагово команды выполнять, если хочется примерно замерять такты таким образом, то нужно использовать DWT->CYCCNT.

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

Ср май 13, 2020 14:00:40

Reflector, большое спасибо за DWT->CYCCNT, не знал про это. От SysTick такого не ожидал.
Получилось 20 тактов при нулевой оптимизации (при О2 снижается до 12 тактов).
А с BSRR что не так? Он вроде и нужен (в том числе) для того чтобы "атомарно" устанавливать один или несколько битов порта.

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

Ср май 13, 2020 14:06:18

А с BSRR что не так? Он вроде и нужен (в том числе) для того чтобы "атомарно" устанавливать один или несколько битов порта.

Именно, BSRR нужен чтобы не делать неатомарный RWM используя ODR, но читать из BSRR зачем? Работать то будет, хотя не гарантированно для новых серий, но медленнее.
Последний раз редактировалось Reflector Ср май 13, 2020 14:09:33, всего редактировалось 1 раз.

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

Ср май 13, 2020 14:09:29

Я вроде не читал...
Писал только GPIOA->BSRR |= 1<<15; (сорян, если туплю)

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

Ср май 13, 2020 14:12:47

Я вроде не читал...
Писал только GPIOA->BSRR |= 1<<15; (сорян, если туплю)

И как можно модифицировать BSRR не читая его значение? Ты же листинг приводил, там LDR/ORR/STR...

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

Ср май 13, 2020 14:24:10

Блин, точно, переделаю. Не судите строго, тот ещё самоучка))
Кстати, SDRAMка заработала, вопреки CLK cycle time max
Спасибо!

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

Ср май 13, 2020 22:10:00

Может проще было взять китайскую плату с STM32F407ZGT6, напаять на ее метровую статическую память и работать через FSMC? Это быстрее и проще и удобнее чем через ногодрыг.

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

Чт май 14, 2020 00:36:06

Да такая платка есть. Sram к ней докупать надо, а sdram полно валяется.
Со статической ещё успею наиграться.
Весь интерес был именно sdram и ногодрыгом

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

Чт май 14, 2020 01:50:39

pinchemierda писал(а):Весь интерес был именно sdram и ногодрыгом
Если спортивный интерес это одно, а если для практического применения - совсем другое.
Ответить