-
- Только прочитав это раз на 5й дошло, что человек изобретает
контроллер памяти (Memory controller) или программируемый
контроллер ПДП. Это же надо ТАК умудриться описывать свои идеи! И
причем тут, спрашивается, PCI, две шины у проца и алгоритмы....
Вообще, подобные методы ПДП, названные © "проапгрейдить любой CPU"
работали на компах можно сказать всегда, втч на бытовых компах 80х. RxTx(91 знак., 22.06.2020 16:03 - 16:11)
- А самое главное, человек не ставит никаких конкретных задач. А то
окажется, что хватит любой гетерогенной реалтайм системы. Вот у
i.MX6 DMA - это просто еще один RISC-процессор. У AM3358 есть 64
килобайта набортной оперативки и PRU-ICSS, которая тоже может
работать быстрым DMA-контроллером - lloyd(22.06.2020 19:42)
- У TI DSP и SoC очень часто есть вторая шина, это сильно облегчает
задачу. Когда второй шины нет, то даже сопроцессор не шибко спасет. - Evgeny_CD(22.06.2020 23:12)
- У am3358 все проще: у PRU-ICSS собственная оперативка и шина. Но
есть выход на общую шину в обе стороны. Собственно в этом суть
гетерогенных систем - lloyd(23.06.2020 10:10)
- Я извиняюсь, про внешнюю шину говорил. - Evgeny_CD(23.06.2020 12:54)
- У am3358 все проще: у PRU-ICSS собственная оперативка и шина. Но
есть выход на общую шину в обе стороны. Собственно в этом суть
гетерогенных систем - lloyd(23.06.2020 10:10)
- У TI DSP и SoC очень часто есть вторая шина, это сильно облегчает
задачу. Когда второй шины нет, то даже сопроцессор не шибко спасет. - Evgeny_CD(22.06.2020 23:12)
- Можно сказать и так, что автор предлагает упрощенный,
мультиплексированный вариант двухпортовой памяти. За объем и
дешевизну платится остановом операций на шине. - VLLV(22.06.2020 18:15)
- После придумывания идеи с временным отключением SDRAM через DQM (слава mse homjak, вовремя пнувшего меня!) тормозить не придется. FPGA, SDRAM висят на одной шине, запись в них происходит параллельно, когда CPU надо считать, SDRAM гасится через DQM, а FPGA выдает данные на ШД. Небольшой кусок SDRAM, который будет бесполезен в таком случае, никого не волнует. - Evgeny_CD(22.06.2020 18:46)
- Осталось найти микроконтроллер (именно микроконтроллер) с PCI (а не PCIe) - и да, мои измышления станут малоактуальны. - Evgeny_CD(22.06.2020 18:13)
- только тогда все шины были снаружи. а сейчас кроме памяти и мультимедийных I/O уже и нет ничего. - Mahagam(22.06.2020 16:07)
- А самое главное, человек не ставит никаких конкретных задач. А то
окажется, что хватит любой гетерогенной реалтайм системы. Вот у
i.MX6 DMA - это просто еще один RISC-процессор. У AM3358 есть 64
килобайта набортной оперативки и PRU-ICSS, которая тоже может
работать быстрым DMA-контроллером - lloyd(22.06.2020 19:42)
- Альтернативный вариант - [эмуляция SDRAM на ZBT]. На примере Renesas RZ/A1H - 10Mbyte накристального ОЗУ Evgeny_CD(2750 знак., 21.06.2020 00:08, ссылка)
- а не проще ли повесить плисину на RMII гигабитного эзернета?
скорость нормальная, DMA в проце на этом канале просто обязан
существовать. и пинов тратится относительно немного. и если эзернет
и дальше нужен - то его сквозь плисину протянуть можно до PHY. Mahagam(220 знак., 22.06.2020 13:59)
- Спасибо еще раз! Идея использования *MII как интерфейса проца для связи с периферией была высказана Вами много лет назад, и с тех пор она меня всегда вдохновляла. Проблема в том, что далеко не всегда гигабитный контроллер есть. Evgeny_CD(320 знак., 22.06.2020 18:08)
- Строим изделие сейчас: гигабитный свич Майкрочиповский, с него один
RGMII в процессор, второй - в FPGA (в ём самодельный сильно
упрощенный MAC) и пару портов на RJ-45 с трансформаторами наружу.
SDRAM к FPGA, контроллер самодельный. - Cидopгeк(22.06.2020 14:16)
- О, полку копающихся в моей голове прибыло :) - Evgeny_CD(22.06.2020 18:12)
- Вот еще 2 чипа в 176-LFQFP (24x24) из этого семейства, 3М SRAM на борту. Цены почти одинаковые, 32 бита 66 МГц шина на месте. Evgeny_CD(45 знак., 21.06.2020 03:37)
- SDRAM с CL=1 при 50 MHz - реальность! - Evgeny_CD(21.06.2020 02:01, ссылка)
- У RZ/A1 SDRAM контроллер умеет за 3 такта делать одиночное чтение и за 2 такта - запись при открытом банке, так что работа со SDRAM в режиме эмуляции при CL=1 самое то. - Evgeny_CD(21.06.2020 00:19)
- а не проще ли повесить плисину на RMII гигабитного эзернета?
скорость нормальная, DMA в проце на этом канале просто обязан
существовать. и пинов тратится относительно немного. и если эзернет
и дальше нужен - то его сквозь плисину протянуть можно до PHY. Mahagam(220 знак., 22.06.2020 13:59)
- Никуя нипонел... А просто сделать контроллер ДДР на ФПГА и лазить в
неё по шине процессора? - mse homjak(20.06.2020 22:40)
- Нужен обмен большими блоками. За минимальное время откачать из
памяти процессора и (или) закачать в нее 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)
- Только прочитав это раз на 5й дошло, что человек изобретает
контроллер памяти (Memory controller) или программируемый
контроллер ПДП. Это же надо ТАК умудриться описывать свои идеи! И
причем тут, спрашивается, PCI, две шины у проца и алгоритмы....
Вообще, подобные методы ПДП, названные © "проапгрейдить любой CPU"
работали на компах можно сказать всегда, втч на бытовых компах 80х. RxTx(91 знак., 22.06.2020 16:03 - 16:11)