(no subject)
Feb. 19th, 2014 10:00 pmТак вот про регенерацию. Засада с ней вот в чем: корка контроллера считает положенное количество тактов REFRESH_COUNT до следующего цикла регенерации, после чего взводит флаг и ждет, что регенерация волшебным образом случится, после чего снова начнет считать REFRESH_COUNT.
( Еще больше букв и картинка )
( Еще больше букв и картинка )
z3sdram и тайминги
Feb. 14th, 2014 10:30 am(чисто для себя)
Ошибки с большими объемами данных (от полумегабайта и выше, lha, md5sum). Тщательная возня с sdc, уточнение длин дорожек, съезжание вниз до 100МГц, игры с терминацией и выбором LVTTL/LVCMOS не помогали.
Волшебным образом исчезли, стоило только уменьшить в контроллере sdram количество тактов между auto refresh с 700 (для 10нс такта требуется 741) до 300. Привет от регенерации :)
Ошибки с большими объемами данных (от полумегабайта и выше, lha, md5sum). Тщательная возня с sdc, уточнение длин дорожек, съезжание вниз до 100МГц, игры с терминацией и выбором LVTTL/LVCMOS не помогали.
Волшебным образом исчезли, стоило только уменьшить в контроллере sdram количество тактов между auto refresh с 700 (для 10нс такта требуется 741) до 300. Привет от регенерации :)
Для слюновыделения
Oct. 17th, 2013 05:35 pm
А если серьезно, то не знаю, правильно ли обвешал емкостями SDRAM чип. По 1мкф керамике на каждый VDD (итого 3 штуки), по 0.1мкф керамике на VDDQ (итого 4 штуки), один тантал 22мкф.
( Короткометражное видео опытного запуска )
FPGA, питание быстрых схем
Apr. 23rd, 2010 10:53 amПлата Z3SDRAM работает довольно-таки нестабильно.
Контроллер SDRAM в FPGA более-менее вылизан, отконстрейнен в TimeQuest и сбоев не дает, невзирая на tSU и tH в 1нс каждое. Асинхронная ему Zorro-часть тоже вроде бы доведена если не до совершенства, то хотя бы до самого общего понимания, что в ней работает и как. Тем не менее, машина с платой памяти не в состоянии день простоять да ночь продержаться под примитивным тестом (LHA пакует/проверяет архив на 40М в памяти) - обязательно где-нибудь либо архиватор будет прибит системой с жалобой на exception, либо система просто перегрузится.
Плата двухслойная, что добавляет бодрости, и уже увешана дополнительными конденсаторами по питанию чипа SDRAM и собственно FPGA как дед Мазай зайцами. Определенной стабильности это добавило, циклический тест памяти перестал давать ошибки, если возить грязным пальцем прямо по дорожкам и выводам, но все же, все же.
Сегодняшнее свежее утреннее озарение - чистый функционал Zorro+SDRAM занимает 397 из 8256 логических элементов FPGA (5%). Для отладки я использую SignalTap анализатор, встраиваемый в ту же FPGA, с ним получается 5440 логических элементов (66%). Внутренняя тактовая - 133MHz. В задаче спрашивается: будет ли существенная разница в нагрузке и наводках на цепи и полигоны питания при переключении на такой частоте 5% и 66% от всех ячеек FPGA?
Проверю на практике.
Топик на Electronix.ru, Cyclone III, PLL power decoupling
ALTERA: AN 583: Designing Power Isolation Filters with Ferrite Beads for Altera FPGAs
MICRON: TN-46-02 DECOUPLING CAPACITOR CALCULATION FOR A DDR MEMORY CHANNEL
MICRON: TN-00-06 Bypass Capacitor Selection for High-Speed Designs
Контроллер SDRAM в FPGA более-менее вылизан, отконстрейнен в TimeQuest и сбоев не дает, невзирая на tSU и tH в 1нс каждое. Асинхронная ему Zorro-часть тоже вроде бы доведена если не до совершенства, то хотя бы до самого общего понимания, что в ней работает и как. Тем не менее, машина с платой памяти не в состоянии день простоять да ночь продержаться под примитивным тестом (LHA пакует/проверяет архив на 40М в памяти) - обязательно где-нибудь либо архиватор будет прибит системой с жалобой на exception, либо система просто перегрузится.
Плата двухслойная, что добавляет бодрости, и уже увешана дополнительными конденсаторами по питанию чипа SDRAM и собственно FPGA как дед Мазай зайцами. Определенной стабильности это добавило, циклический тест памяти перестал давать ошибки, если возить грязным пальцем прямо по дорожкам и выводам, но все же, все же.
Сегодняшнее свежее утреннее озарение - чистый функционал Zorro+SDRAM занимает 397 из 8256 логических элементов FPGA (5%). Для отладки я использую SignalTap анализатор, встраиваемый в ту же FPGA, с ним получается 5440 логических элементов (66%). Внутренняя тактовая - 133MHz. В задаче спрашивается: будет ли существенная разница в нагрузке и наводках на цепи и полигоны питания при переключении на такой частоте 5% и 66% от всех ячеек FPGA?
Проверю на практике.
Топик на Electronix.ru, Cyclone III, PLL power decoupling
ALTERA: AN 583: Designing Power Isolation Filters with Ferrite Beads for Altera FPGAs
MICRON: TN-46-02 DECOUPLING CAPACITOR CALCULATION FOR A DDR MEMORY CHANNEL
MICRON: TN-00-06 Bypass Capacitor Selection for High-Speed Designs
z3sdram in A4000
Feb. 14th, 2010 07:45 amПлата в Amiga 4000. На переднем плане USB-blaster.
По крайней мере питание из Zorro разъема получается. AUTOCONFIG пока не работает.
По крайней мере питание из Zorro разъема получается. AUTOCONFIG пока не работает.
Altera DE2 SDRAM controller
Nov. 27th, 2009 10:59 pmThis is a very simple controller for the Altera DE2 SDRAM chip, with a CAS latency of 3 and a fixed burst length of 2 and auto-precharge for each read/write.
http://whoyouvotefor.info/altera_sdram.html
Выглядит многообещающе. Для DE1 надо будет немного подрихтовать в части инициализации чипа памяти.
http://whoyouvotefor.info/altera_sdram.html
Выглядит многообещающе. Для DE1 надо будет немного подрихтовать в части инициализации чипа памяти.
(no subject)
Mar. 15th, 2007 04:24 pmКопирование 1088 байт в DRAM поштучно: 7.1 ms (12.5 секунд на 1760 секторов)
Копирование 1088 байт в DRAM блоком: 5.3 ms (9.3 секунд на 1760 секторов)
То же, без регенерации DRAM: 4.4 ms (7.8 секунд на 1760 секторов)
Загрузка сектора (512 байт) с MMC по SPI @8MHz: 2.3 ms
( Дальше еще менее интересно )
Копирование 1088 байт в DRAM блоком: 5.3 ms (9.3 секунд на 1760 секторов)
То же, без регенерации DRAM: 4.4 ms (7.8 секунд на 1760 секторов)
Загрузка сектора (512 байт) с MMC по SPI @8MHz: 2.3 ms
( Дальше еще менее интересно )
Чтение 1760 секторов (512 байт каждый) с CF в статическую память: 14.5 секунд. 8.2ms на сектор, 121 сектор в секунду, 60 KBytes/sec.
После замены чтения слова с ожиданием (25us) на чтение без ожидания (10us): 7.5 секунд. 4.2ms/сектор, 235 секторов в секунду, 117.3 KBytes/sec.
Запись блока (512 байт) в DRAM: 3.84ms.
Переписанная монолитная процедура записи блока: 2.17ms.
Загрузка 1760 секторов с CF в DRAM: 13.9 cекунд.
После замены чтения слова с ожиданием (25us) на чтение без ожидания (10us): 7.5 секунд. 4.2ms/сектор, 235 секторов в секунду, 117.3 KBytes/sec.
Запись блока (512 байт) в DRAM: 3.84ms.
Переписанная монолитная процедура записи блока: 2.17ms.
Загрузка 1760 секторов с CF в DRAM: 13.9 cекунд.
Хорошие и добрые были шутки про советские микросхемы ("советские микросхемы - самые большие микросхемы в мире!" и "НПО 'Красная заря' освоило выпуск новых СБИС с двадцатью ножками и двумя ручками для переноски").
( Четыре чипа SO-32 и шоколадный батончик, 640x480, ~56K )
( Четыре чипа SO-32 и шоколадный батончик, 640x480, ~56K )
о франкенштейне
Dec. 18th, 2005 08:27 pmПроект в процессе перевода на более-менее цивилизованные рельсы (ну там двустороняя ПП с маской и шелкографией, DRAM в виде отдельной микросхемы, а не старинного SIMM-30pin и так далее). DRAM нужного мне объема уже не бывает пятивольтовой, только 3.3в. С другой стороны, ATmega128 при 3.3в работает только на 8МГц, так что о двукратном повышении скорости чтения SD/MMC можно забыть. С третьей стороны, в ATmega128 статической RAM вчетверо супротив прототипа, что позволит дико соптимизировать скорость кодирования треков.
В плане конструктива зреет мысль выполнить плату по посадочным размерам дисковода 3.5", вынеся в виде торчащей дискеты дочернюю плату с LCD, кнопками и разъемом MMC.
В плане конструктива зреет мысль выполнить плату по посадочным размерам дисковода 3.5", вынеся в виде торчащей дискеты дочернюю плату с LCD, кнопками и разъемом MMC.
MCU@8MHz, SPI@2MHz: 1760 секторов (512 байт каждый) загружаются в DRAM за 58 секунд.
Update. То же самое, SPI@4MHz: 52 секунды.
Запись принятого с MMC байта в DRAM занимает ~875ns, следующий байт пишется через 26us.
С выключенным кодом приема байта в DRAM всё приходит более-менее в соответствие с ранними выкладками: 18 секунд.
Update 2. Запись в DRAM жрет не 875ns (это длительность /WE), а добрые 16.8us, отсюда и всеобщие тормоза.
Update 3. Слегка переписанная на ассемблере (и слегка оптимизированная) та же запись потребляет 4.8us, в итоге выражаясь в 36 секундах загрузки.
Update 4. Малость переделанный алгоритм регенерации DRAM (каждые 8ms по 512 рядов вместо 1024) приводит к 23 секундам загрузки.
Update. То же самое, SPI@4MHz: 52 секунды.
С выключенным кодом приема байта в DRAM всё приходит более-менее в соответствие с ранними выкладками: 18 секунд.
Update 2. Запись в DRAM жрет не 875ns (это длительность /WE), а добрые 16.8us, отсюда и всеобщие тормоза.
Update 3. Слегка переписанная на ассемблере (и слегка оптимизированная) та же запись потребляет 4.8us, в итоге выражаясь в 36 секундах загрузки.
Update 4. Малость переделанный алгоритм регенерации DRAM (каждые 8ms по 512 рядов вместо 1024) приводит к 23 секундам загрузки.
Вставить квадратное в треугольное
Aug. 2nd, 2005 11:53 pmСообразил, как можно впихнуть выборку очередного байта, на которую требуется 10 тактов, в tight loop, где свободного места в лучшие времена всего 6 тактов, а так и вовсе 3.
( Ослепительная истина )
( Ослепительная истина )
Ну что же (фанфары!), в первом приближении оно работает. В ожидании, когда придет заказанная панелька для 30pin SIMM, я распаял старый 1Мx8 модуль прямо так.( будет интересно далеко не всем )



