-
- Нужен обмен большими блоками. За минимальное время откачать из
памяти процессора и (или) закачать в нее 64..512 Кбат блок. SDRAM
быстрый вариант на длинных посылках. DDR намного сложнее. Я
рассматривал вариант эмуляции SDRAM при помощи FPGA и ZBT. На 200
МГц как-то стремно по времянкам получается. 100 МГц получится не
особо напрягаясь. - Evgeny_CD(20.06.2020 23:13)
- Ну хорошо, сделать контроллер СДРАМ. Выделить область адресов, где
дублируется нужный блок памяти и всё. В процессе подготовки блока
данных для ФПГА, пишем в "дублированную" область и ФПГА знает, что
это ей. Одновременно пишется в физическую память по физическому
адресу. И никаких "минимальных" времён и дурной работы. А работая
по физическим адресам, не напрягаем ФПГА. - mse homjak(21.06.2020 00:12)
- Прекрасно, осталось заметить что при чтении из FPGA нужно изящно
отключить SDRAM шинным коммутатором и да, это будет изящное
упрощение решения. Спасибо! - Evgeny_CD(21.06.2020 00:13)
- Зачем? У вас процессор своей шиной входит в ФПГА. ФПГА является
"коммутатором" данных в СДРАМ. Сформируйте дешифратором адреса как
у вас будут перекрываться адреса блоков памяти ФПГА и СДРАМ, чтобы
мапиться друг на друга, если надо и, наоборот, получать доступ
только в СДРАМ или только в ФПГА. - mse homjak(21.06.2020 00:21)
- Ага, есть решение!!! Большое спасибо, ты подсказал кардинальное упрощение! Evgeny_CD(498 знак., 21.06.2020 00:38)
- У рассматриваемых процессоров шина одна. SDRAM имеет определенный
алгоритм работы. И там нет свободного времени, чтобы решить, нужен
этот цикл SDRAM или FPGA. У Renesas есть два CS, у Атмела нет.
Можно ли дернуть CS посредине цикла чтения из SDRAM - даже не знаю,
покурить доку надо, но то это было бы решением. - Evgeny_CD(21.06.2020 00:34)
- На шине, как правило, должно быть Ready. И не одно, у боле-мене
продвинутых ЦПУёв. Попадаем в цикл ФПГА, тормозим и изолируем
контроллер СДРАМ от ЦПУ, наоборот, наоборот. Тем более, что это
нужно только когда ФПГА решила чота написать туда. А если они будут
общаться флагами запроса и готовности, чтобы не мешать друг другу,
то всё ещо упростится. - mse homjak(21.06.2020 00:49)
- Решение с DQM позволяет подставить контент FPGA (даже из внутренней блочной памяти) вместо SDRAM в выбранных окнах адресов. Писать в FPGA параллельно SDRAM тоже, понятно, можно. Еще раз спасибо! Очевидного решения я и не увидел! - Evgeny_CD(21.06.2020 01:02)
- Декодирование CS спрятано внутри кристалла. И уж если прописано,
что по такому-то CS живет SDRAM, то далее камень ничего знать не
желает. У SDRAM Ready нет. - Evgeny_CD(21.06.2020 00:58)
- У ЦПУ с внешней шиной ести сигналы Ready для сегментов памяти, по
обращению к которым, цикл шины ЦПУ тормозится. ФПГА формирует
сигнал неготовности, если в этот момент идёт её цикл доступа к
СДРАМ. И наоборот. Ессно, что контроллер СДРАМ должен быть на ФПГА,
чтобы она контролировала доступ. Тогда процессор просто лезет в
некую память, про которую он ничо не знает. - mse homjak(21.06.2020 01:05)
- Это понятно, но тормозить будет. Растактовка при работе со SDRAM и
SRAM сильно разная. SRAM не подразумевает понятие Burst (в головах
у разработчиков почти всех MCU на рынке), так что цикл доступа ко
второму и последующим словам ШД будет такой же печальный, как и для
первого. - Evgeny_CD(21.06.2020 01:08)
- В FPGA как правило, блоки памяти есть, на коих, в том числе, можно
строить FIFO. Нехай процессор, когда ему писАть вздумается, в FIFO
пишет, пока контроллер SDRAM раздупляется. Или я не понял, что Ваш
дивайс делать должен? - Cидopгeк(22.06.2020 14:22)
- Да, это один из вариантов, но я чуть по другом смотрю. Evgeny_CD(516 знак., 22.06.2020 18:20, ссылка)
- В FPGA как правило, блоки памяти есть, на коих, в том числе, можно
строить FIFO. Нехай процессор, когда ему писАть вздумается, в FIFO
пишет, пока контроллер SDRAM раздупляется. Или я не понял, что Ваш
дивайс делать должен? - Cидopгeк(22.06.2020 14:22)
- Это понятно, но тормозить будет. Растактовка при работе со SDRAM и
SRAM сильно разная. SRAM не подразумевает понятие Burst (в головах
у разработчиков почти всех MCU на рынке), так что цикл доступа ко
второму и последующим словам ШД будет такой же печальный, как и для
первого. - Evgeny_CD(21.06.2020 01:08)
- У ЦПУ с внешней шиной ести сигналы Ready для сегментов памяти, по
обращению к которым, цикл шины ЦПУ тормозится. ФПГА формирует
сигнал неготовности, если в этот момент идёт её цикл доступа к
СДРАМ. И наоборот. Ессно, что контроллер СДРАМ должен быть на ФПГА,
чтобы она контролировала доступ. Тогда процессор просто лезет в
некую память, про которую он ничо не знает. - mse homjak(21.06.2020 01:05)
- На шине, как правило, должно быть Ready. И не одно, у боле-мене
продвинутых ЦПУёв. Попадаем в цикл ФПГА, тормозим и изолируем
контроллер СДРАМ от ЦПУ, наоборот, наоборот. Тем более, что это
нужно только когда ФПГА решила чота написать туда. А если они будут
общаться флагами запроса и готовности, чтобы не мешать друг другу,
то всё ещо упростится. - mse homjak(21.06.2020 00:49)
- Зачем? У вас процессор своей шиной входит в ФПГА. ФПГА является
"коммутатором" данных в СДРАМ. Сформируйте дешифратором адреса как
у вас будут перекрываться адреса блоков памяти ФПГА и СДРАМ, чтобы
мапиться друг на друга, если надо и, наоборот, получать доступ
только в СДРАМ или только в ФПГА. - mse homjak(21.06.2020 00:21)
- Прекрасно, осталось заметить что при чтении из FPGA нужно изящно
отключить SDRAM шинным коммутатором и да, это будет изящное
упрощение решения. Спасибо! - Evgeny_CD(21.06.2020 00:13)
- Ну хорошо, сделать контроллер СДРАМ. Выделить область адресов, где
дублируется нужный блок памяти и всё. В процессе подготовки блока
данных для ФПГА, пишем в "дублированную" область и ФПГА знает, что
это ей. Одновременно пишется в физическую память по физическому
адресу. И никаких "минимальных" времён и дурной работы. А работая
по физическим адресам, не напрягаем ФПГА. - mse homjak(21.06.2020 00:12)
- патентовать нечего - symbions(20.06.2020 23:01)
- Издевайся, издевайся. - Evgeny_CD(20.06.2020 23:13)
- Нужен обмен большими блоками. За минимальное время откачать из
памяти процессора и (или) закачать в нее 64..512 Кбат блок. SDRAM
быстрый вариант на длинных посылках. DDR намного сложнее. Я
рассматривал вариант эмуляции SDRAM при помощи FPGA и ZBT. На 200
МГц как-то стремно по времянкам получается. 100 МГц получится не
особо напрягаясь. - Evgeny_CD(20.06.2020 23:13)