Перейти к содержанию
    

Microblaze + DDR3 4GB+

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

 

Имеется Vivado 2016.2, борда KC705 + скоро появиться модуль память SODIMM 4GB вместо стандартного.

 

Нужно присоединить память DDR3 на 4 Гигабайта к Микроблейзу. Для хранения данных в процессе работы,

 

Использую Xilinx MIG. Соответственно память появляется в общем адресном пространстве системы, а поскольку МБ 32 битный оно всё вмещает 4 ГБ.

 

На вопрос "можно-ли это сделать" ответили здесь https://forums.xilinx.com/t5/Memory-Interfa...DR3/td-p/632200

говорят что можно, хоть 8 ГБ.

 

Теперь вопрос "как?"

 

Каким образом организовать доступ к этой памяти?

 

На некоторых англо-язычных форумах советуют Memory segmentation, но примеров не приводят. Принцип сегментации памяти ясен как белый день,

но как его реализовать на практике непонятно.

Можно-ли это сделать стандартными средствами? Или нужно будет городить прослойку между Master-AXI и MIG?

 

В общем хотелось бы услышать совет от тех кто уже прошел эту дорогу, уверен не у меня первого возникла необходимость подключить более 2ГБ памяти ))

 

Заранее спасибо за ответы.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

судя по ссылке для подсоединения к процессору больше 3 гигов (2^32 -1) - Вам понадобиться "прослойка" логики которая будет например в зависти от флага переводить адресацию к памяти DDR к следующим (2^32 -1) памяти.

Т.е. процессор будет видеть только (2^32 -1) памяти, переходить к слудующему (2^32 -1) участку памяти по флагу или другой внешней логики

 

Это мое личное понимание

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поискать вместо Микроблейза 64битный проц - не? Нельзя ли пояснить, зачем эту мегапамять вешать конкретно на Микроблейз, что он с ней делать будет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

судя по ссылке для подсоединения к процессору больше 3 гигов (2^32 -1) - Вам понадобиться "прослойка" логики которая будет например в зависти от флага переводить адресацию к памяти DDR к следующим (2^32 -1) памяти.

Т.е. процессор будет видеть только (2^32 -1) памяти, переходить к слудующему (2^32 -1) участку памяти по флагу или другой внешней логики

 

Это мое личное понимание

 

Если я вас правильно понял, то нужно написать свое ядро, у которого наружу будут смотреть AXI_Master (к контроллеру памяти), AXI_Slave0 (к микроблейзу интерфейс памяти) и AXI_Slave1 (к микроблейзу интерфейс управления для переключения сегментов памяти). Ну или интерфейсы до МБ можно засунуть в один AXI c адресным пространством типа [Размер сегмента памяти + управляющий регистр] ?

 

 

Поискать вместо Микроблейза 64битный проц - не? Нельзя ли пояснить, зачем эту мегапамять вешать конкретно на Микроблейз, что он с ней делать будет?

 

Почему микроблейз - из-за распространенности, много примеров, документации.

Сейчас задача - тестирование памяти.

Вы можете посоветовать какой-то вариант 64 бит софотового проца с контроллером DDR3? В процах пока не силен к сожалению.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Если я вас правильно понял, то нужно написать свое ядро, у которого наружу будут смотреть AXI_Master (к контроллеру памяти), AXI_Slave0 (к микроблейзу интерфейс памяти) и AXI_Slave1 (к микроблейзу интерфейс управления для переключения сегментов памяти). Ну или интерфейсы до МБ можно засунуть в один AXI c адресным пространством типа [Размер сегмента памяти + управляющий регистр] ?

 

Почему микроблейз - из-за распространенности, много примеров, документации.

Сейчас задача - тестирование памяти.

Вы можете посоветовать какой-то вариант 64 бит софотового проца с контроллером DDR3? В процах пока не силен к сожалению.

Сначала желательно изучить имеющуюся матчасть а потом уж ваят что-то свое

 

post-1643-1473877015_thumb.png

 

Удачи! Rob.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сначала желательно изучить имеющуюся матчасть а потом уж ваят что-то свое

 

Rob, спасибо, пропустил эту замечательную настройку Микроблейза.

 

Думаю теперь обойдется без своих велосипедов)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Rob, спасибо, пропустил эту замечательную настройку Микроблейза.

 

Думаю теперь обойдется без своих велосипедов)

Просто сия фича не давно появилась - просто её не заметили... :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реанимирую старую тему.

Кто-нибудь пользовался этой фичей - расширения адресного пространства? Насколько стабильно работает?

 

У меня возникли проблемы с "улетанием" Микроблейза в неведомые дали, при попытке провести тест памяти.

В проекте с адреса 0x1_0000_0000 прилинкован 1Gb DDR3, но если поставить туда блочную память, то ситуация похожая

Вот что происходит:

 

    #include "mb_interface.h"

    u32 Data;
    u32 Rd_Data;
    u32 err_cnt = 0;

    u64 Addr = 0x0000000100000000LL;

    // write-read test
    for (u32 i = 0; i < 0x1000; i++) // words count loop
    {
                
        Data = (u32)i; 
        swea(Addr, Data); // Store word to extended address
        Rd_Data = lwea(Addr);

        if (Data != Rd_Data)
        {
            err_cnt++;
            xil_printf("Err cnt: %u\n", cnt);
        }

        Addr = Addr + 4;
    }

 

При выполнении такого кода проц улетает в какой-то бесконечный цикл, частью которого является, например, сообщение "Err cnt: %u". Оно в терминле крутиться постоянно.

Здесь я использую обращение в расширенном адресном пространстве в соответствии с MicroBlaze Processor Reference Guide(UG984) - функции swea(u62, u32) и lwea(u32).

 

Одиночные попытки прочитать - записать по произвольному адресу в диапазоне выше 0x1_0000_0000 как правило успешны. Создается впечатление, что при обращении к MIG я одновременно записываю в область локальной памяти (что лежит с нулевого адреса) и это приводит к вышеописанным проблемам.

 

Итак вопрос к тем кто использовал эту опцию в МБ. Работает ли оно у Вас? Может у меня не хватает какой-нибудь включенной опции компилятора или чего-то еще?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реанимирую старую тему.

Кто-нибудь пользовался этой фичей - расширения адресного пространства? Насколько стабильно работает?

 

У меня возникли проблемы с "улетанием" Микроблейза в неведомые дали, при попытке провести тест памяти.

В проекте с адреса 0x1_0000_0000 прилинкован 1Gb DDR3, но если поставить туда блочную память, то ситуация похожая

Вот что происходит:

 

    #include "mb_interface.h"

    u32 Data;
    u32 Rd_Data;
    u32 err_cnt = 0;

    u64 Addr = 0x0000000100000000LL;

    // write-read test
    for (u32 i = 0; i < 0x1000; i++) // words count loop
    {
                
        Data = (u32)i; 
        swea(Addr, Data); // Store word to extended address
        Rd_Data = lwea(Addr);

        if (Data != Rd_Data)
        {
            err_cnt++;
            xil_printf("Err cnt: %u\n", cnt);
        }

        Addr = Addr + 4;
    }

 

При выполнении такого кода проц улетает в какой-то бесконечный цикл, частью которого является, например, сообщение "Err cnt: %u". Оно в терминле крутиться постоянно.

Здесь я использую обращение в расширенном адресном пространстве в соответствии с MicroBlaze Processor Reference Guide(UG984) - функции swea(u62, u32) и lwea(u32).

 

Одиночные попытки прочитать - записать по произвольному адресу в диапазоне выше 0x1_0000_0000 как правило успешны. Создается впечатление, что при обращении к MIG я одновременно записываю в область локальной памяти (что лежит с нулевого адреса) и это приводит к вышеописанным проблемам.

 

Итак вопрос к тем кто использовал эту опцию в МБ. Работает ли оно у Вас? Может у меня не хватает какой-нибудь включенной опции компилятора или чего-то еще?

 

Спасибо!

Проверь вот какие вещи - есть ли в микроблейзе встроенный умножитель, какого он типа (32 или 64) и соответствует ли это ключам компиляции софта? Недавно долго и мучительно искал глюки, связанные с подобным несоответствием (типа инструкция mul выполняется, но результат этой инструкции некорректный).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...