ArduinoDue + ext.SRAM

krikus
Offline
Зарегистрирован: 22.07.2011

Доброго времени суток.

Недавно купил две CY7C1019DV33 (128kx8) (10ns) микросхемы SRAM с параллельным доступом. Они вмести используют: 16бит шину данных, 17бит шину адреса и сигналы WE(Write En), OE(Read En), CS(Chip Select, который я просто прижал к земле). У Arduino Due есть спец.библиотека Parallel для таких целей. 

Есть несколько параметров шины данных:

// Configure the address setup time.  See datasheet for calculations.
  void setAddressSetupTiming(	uint8_t cyclesBeforeNWE, 
								              uint8_t cyclesBeforeNCSWrite,
								              uint8_t cyclesBeforeNRD,
								              uint8_t cyclesBeforeNCSRead);
  
  // Configure the pulse width of NCS, NWE, and NRD. See datasheet for calculations.
  void setPulseTiming(	uint8_t cyclesNWEWidth,
						            uint8_t cyclesNCSWidthWrite,
						            uint8_t cyclesNRDWidth,
						            uint8_t cyclesNCSWidthRead);
  
  // Set the total read/write cycle time. See datasheet for calculations.
  void setCycleTiming(	uint8_t cyclesWriteTotal,
						            uint8_t cyclesReadTotal);

Но какие бы я тайминги не высталял, простейший тест чтения-записи выдает кучу ошибок. Я так понял, здесь все в циклах, т.е 1 цикл == 12ns. В даташит-е у SRAM написало все в наносекундах, но все параметры из даташит не могу сопоставить с параметрами из бибилотеки.

Понял только то, что:

* cyclesWriteTotal == Write Cycle Time == 1ckl ==~ 10ns

* cyclesReadTotal == Write Read Time == 1ckl ==~ 10ns

* cycleNWEWidth == WE Pulse Width == 1ckl ==~ 7ns

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Не совсем понял как вы все это дело засоединяли... можете продемонстрировать? судя по спецификации должна быть такая пачка проводов, штук 40 примерно.

krikus
Offline
Зарегистрирован: 22.07.2011

 

Puhlyaviy пишет:

Не совсем понял как вы все это дело засоединяли... можете продемонстрировать? судя по спецификации должна быть такая пачка проводов, штук 40 примерно.

Есть таблица соответсвий:

Адрес:

Function-Pin Chip-Pin	Arduino-Pin
A0	PC21	PWM9
A1	PC22	PWM8
A2	PC23	PWM7
A3	PC24	PWM6
A4	PC25	PWM5
A5	PC26	PWM4
A6	PC27	N/C(direct to chip)
A7	PC28	PWM3
A8	PC29	PWM10
A9	PC30	RX LED
A10	PD0	PIN 25
A11	PD1	PIN 26
A12	PD2	PIN 27
A13	PD3	PIN 28
A14	PD4	TXD0
A15	PD5	RXD0
A16	PD6	PIN 29

Данные:

D0	PC2	PIN 34
D1	PC3	PIN 35
D2	PC4	PIN 36
D3	PC5	PIN 37
D4	PC6	PIN 38
D5	PC7	PIN 39
D6	PC8	PIN 40
D7	PC9	PIN 41
D8	PC10	N/C(direct to chip)
D9	PC11	N/C(direct to chip)
D10	PC12	PIN 51
D11	PC13	PIN 50
D12	PC14	PIN 49
D13	PC15	PIN 48
D14	PC16	PIN 47
D15	PC17	PIN 46

Некоторые пины не были выведены на Arduino плате, пришлось подпаивать напрямую к микросхеме. Я все сделал в виде небольшого шилда:

Не обращайте внимание на шлейфы, они выведены для того, чтобы использовать эти шины для других устройств.(универсальная все-таки.)

 

krikus
Offline
Зарегистрирован: 22.07.2011

Что-то все перекосило. :-/

alucard
Offline
Зарегистрирован: 08.04.2013

Krikus, ничего так. Сам хотел добавить пару мегабит в свою ардуину. Если заработает, неплохо бы схему увидеть и т.п. :)

krikus
Offline
Зарегистрирован: 22.07.2011

alucard пишет:

Krikus, ничего так. Сам хотел добавить пару мегабит в свою ардуину. Если заработает, неплохо бы схему увидеть и т.п. :)

Как только - так сразу. Но пока ничего не работает. Все выводы микросхемы проверял светодиодом: никаких КЗ и прочих - не обнаружено, остается программная часть.

Тайминги должны где-то в диапазоне от 0 до 1 такта, так как скорость памяти 10ns, что позволяет работать с ней на частоте ~100МГц, что > частоты ЦП.

Может микросхемы SRAM мертвые...

RANDREY
Offline
Зарегистрирован: 10.06.2012

память для чего - увеличить РАМ (переменных) для программ? как указать компилятору, что есть больше памяти на борту.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

RANDREY пишет:

память для чего - увеличить РАМ (переменных) для программ? как указать компилятору, что есть больше памяти на борту.

ни как не указывать, писать нужно на C++ в атмел студии. для ардуино ИДЕ все эти танцы бесполезны практически... если вы почитайте спецификацию. то из этого чипа можно собрать много что...большая часть его возможностей не используется в ардуино...

на сайте атмеля есть код для работы с памятью дополнительной.. пробовали его?

krikus
Offline
Зарегистрирован: 22.07.2011

Puhlyaviy пишет:

RANDREY пишет:

память для чего - увеличить РАМ (переменных) для программ? как указать компилятору, что есть больше памяти на борту.

ни как не указывать, писать нужно на C++ в атмел студии. для ардуино ИДЕ все эти танцы бесполезны практически... если вы почитайте спецификацию. то из этого чипа можно собрать много что...большая часть его возможностей не используется в ардуино...

на сайте атмеля есть код для работы с памятью дополнительной.. пробовали его?

Но-но-но. Не обязательно в Атмел Студио. Можно и в Ардуино ИДЕ. Здесь лучше написать, что большинство функций чипа не адаптированы под Wiring. А так, можно хоть на асм-е писать, от ИДЕ это не зависит.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

krikus пишет:

Но-но-но. Не обязательно в Атмел Студио. Можно и в Ардуино ИДЕ. Здесь лучше написать, что большинство функций чипа не адаптированы под Wiring. А так, можно хоть на асм-е писать, от ИДЕ это не зависит.

Соглашусь, писать можно хоть в блокноте... Но для чистоты эскперемента вы все же попробуйте для начала прошить кодом с сайта атмеля для работы с внешней памятью.. там у них красиво все разложено..

Сам просто последнии несколько дней тычу паяльником в етот чип, инструкция на 1200 страницах убивает любую муху просто своим видом...

RANDREY
Offline
Зарегистрирован: 10.06.2012

я на будущее...пока хватает текущей оперативки.

Да мануалы в 1200 страниц убивают всякое желание.... хотел присобачить Linear CCD Sensor к ардуине, именно мануалы и их отсутствие заставили бросить всё)

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

RANDREY пишет:

я на будущее...пока хватает текущей оперативки.

Да мануалы в 1200 страниц убивают всякое желание.... хотел присобачить Linear CCD Sensor к ардуине, именно мануалы и их отсутствие заставили бросить всё)

дык почитайте на будушее, на этом чипе и сетевая карта размазана и wi-fi какой то частью присутсвует и еще куча всякой  фигни.. :) 

krikus
Offline
Зарегистрирован: 22.07.2011

Puhlyaviy пишет:

RANDREY пишет:

я на будущее...пока хватает текущей оперативки.

Да мануалы в 1200 страниц убивают всякое желание.... хотел присобачить Linear CCD Sensor к ардуине, именно мануалы и их отсутствие заставили бросить всё)

дык почитайте на будушее, на этом чипе и сетевая карта размазана и wi-fi какой то частью присутсвует и еще куча всякой  фигни.. :) 

Да, там куча всяких плюшек, но меня просто убивает то, что эти все плюшки нельзя использовать все сразу :) Они сидят на одних и тех же портах, и это печалит.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

ну есть хорошие плюшки которыми можно пользоватся сразу.. например SPI, вылетело как он называется по хитрому, ну который 4 устройства паралельно держит на одной шине одновременно.. а уж мультитаскинг вообще прикольный... можно несколько лупов запускать одномоментно. главно что бы не пересекались...

а если все и сразу то посмотрите в сторону нового чипа, мне тут присылали расылку..SAM D20 

он там разве что крестиком не вышивает :)

RANDREY
Offline
Зарегистрирован: 10.06.2012

а память для скретчей можно увеличить? ROM PROG скажем до 10 Мб, глядишь и ось можно сделать, но проще перейти на другой чип...

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

RANDREY пишет:

а память для скретчей можно увеличить? ROM PROG скажем до 10 Мб, глядишь и ось можно сделать, но проще перейти на другой чип...

линукс на нем гоняют и видео он тоже тянет.. в ардуино его просто кастрировали самым жестким образом :)

krikus
Offline
Зарегистрирован: 22.07.2011

Puhlyaviy пишет:

RANDREY пишет:

а память для скретчей можно увеличить? ROM PROG скажем до 10 Мб, глядишь и ось можно сделать, но проще перейти на другой чип...

линукс на нем гоняют и видео он тоже тянет.. в ардуино его просто кастрировали самым жестким образом :)

Хм... Видео я сам пробовал воспроизводить, а вот, Линукс. Неужели там Линукс запустили?

PS: Убился с таймингами, ничего не хочет работать. :)

RANDREY
Offline
Зарегистрирован: 10.06.2012

 

 

тут какая то память под линукс сделана

krikus
Offline
Зарегистрирован: 22.07.2011

RANDREY пишет:

 

 

тут какая то память под линукс сделана

Это SDRAM, но это совсем другая история. Такие сейчас редкость, теоретически, они быстрее SRAM, но протокол у них замудренный. 

krikus
Offline
Зарегистрирован: 22.07.2011

!

Проблема оказалась не в таймингах, а в шуме/звоне фронтов шлейфа и проводников.

Когда я касаюсь оголенного шлейфа рукой, то ошибки, чудесным образом, исчезают. Пробовал вокруг шлейфа намотать проволоку, затем подключить ее к gnd - но результат тот же.

Клапауций
Offline
Зарегистрирован: 10.02.2013

krikus пишет:

!

Проблема оказалась не в таймингах, а в шуме/звоне фронтов шлейфа и проводников.

Когда я касаюсь оголенного шлейфа рукой, то ошибки, чудесным образом, исчезают. Пробовал вокруг шлейфа намотать проволоку, затем подключить ее к gnd - но результат тот же.

Обычно сигнальные линии перемежают с земляными при использовании шлейфа.

Т.е. чётные - сигнальные, нечётные - земля.

krikus
Offline
Зарегистрирован: 22.07.2011

Клапауций пишет:

krikus пишет:

!

Проблема оказалась не в таймингах, а в шуме/звоне фронтов шлейфа и проводников.

Когда я касаюсь оголенного шлейфа рукой, то ошибки, чудесным образом, исчезают. Пробовал вокруг шлейфа намотать проволоку, затем подключить ее к gnd - но результат тот же.

Обычно сигнальные линии перемежают с земляными при использовании шлейфа.

Т.е. чётные - сигнальные, нечётные - земля.

А резисторы тут не помогут? 100кОм на землю.

Клапауций
Offline
Зарегистрирован: 10.02.2013

krikus пишет:

А резисторы тут не помогут? 100кОм на землю.

Может и помогут, но вообще не о том - нужно правильно разводить земли а не обвешивать схему странным.

krikus
Offline
Зарегистрирован: 22.07.2011

Клапауций пишет:

krikus пишет:

А резисторы тут не помогут? 100кОм на землю.

Может и помогут, но вообще не о том - нужно правильно разводить земли а не обвешивать схему странным.

Сейчас с платой уже ничего не сделаешь. А резисторы помогли: теперь тест чтения проходит успешно, осталось разобраться с записью.

У меня уготовано устройство, которое будет подключаться по этой шине(которая висит в воздухе с резисторами) : я полагаю, оно должно снизить все шумы и прочее.

RANDREY
Offline
Зарегистрирован: 10.06.2012

а как паяли ноги? - элегантно припаяли к разъему, а потом туда память? или проводки прямо к планке памяти?

krikus
Offline
Зарегистрирован: 22.07.2011

RANDREY пишет:

а как паяли ноги? - элегантно припаяли к разъему, а потом туда память? или проводки прямо к планке памяти?

Чьи ноги? :)

Я изготовил печатную плату, затем просто припаял микросхемы на уготованные им места. И все, если вы об этом.

RANDREY
Offline
Зарегистрирован: 10.06.2012

а) я думал вы использовали компьютерную память, та которая с золотыми контактами, как на фото выше

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

а чего просто не сделали сразу схему проц и память на одной плате? нафиг городить огороды со шлейфами?

Да кстати, если соберетесь идти по такому пути. то процесоры заранее заказывайте... их в наличии почти нигде нет... везде нада в ожидании отстоять недель 6-7 :(