Важная информация

User Tag List

Страница 3 из 18 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 176

Тема: Работа с SD контроллером на Специалисте_МХ2

  1. #21
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всё работает с лоадером. Но указанные тобой ошибки наводят на мысли:
    1. U6 - при совместной работе SD контроллера с Flash-диском (на схеме - активация сигнала - XP11) просто тупо гасит комп, он весит ни на что не реагирует.
    2. RD - нужно задействовать. Возможно по прчине не разграничения буферов и не происходит переход в МХ режим, белеберда на экран выходит. Ещё заставка (большая надпись "Специалист_МХ2") почему-то не выводится. Хотя это наверное прогаммный касяк.

  2. #22
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    fifan, а ты это делал?

    Иначе по дефолту там "тянуть сильно на землю".

    В общем, накидал я проектик:
    Код:
    // Контроллер SPI для Специалист-MX2 на EPM7032SLC44
    module MX2_CPLD(
        // Системные
        input    Clk,              // Входная частота 10МГц
        input    nRes,             // Входной сигнал сброса, активный уровень лог.0
        input    nWR,              // Вход строба записи
        input    nCS,              // Вход выбора контроллера
        input    Adr,              // Вход адреса данные/управление
        inout    [7:0]Dat,         // Шина данных
        // SPI
        output   nSEL,             // Выходной сигнал выбора карты
        output   reg SCK,          // Выход тактовой частоты SPI
        input    MISO,             // Вход данных SPI
        output   MOSI,             // Выход данных SPI
        output   nRED,             // Выход управления красным светодиодом
        output   nGREEN,           // Выход управления зеленым светодиодом
        input    nINS,             // Вход датчика вставления карты
        // Резерв
        input    MX,               // ?
        input    U6                // ?
    );
    // Внутренние регистры
    reg [3:0]Pre;                  // Делитель частоты
    reg [3:0]Ctrl;                 // Регистр управления
    reg [7:0]Data;                 // Регистр данных
    reg [2:0]Bits;                 // Счетчик сдвигаемых бит
    reg RMISO;                     // Защелка сигнала MISO
    reg BUSY;                      // SPI занят передачей
    // Комбинаторика
    assign nSEL = ~Ctrl[0];        // Выбор карты
    assign nRED = ~Ctrl[2];        // Красная лампочка
    assign nGREEN = ~Ctrl[3];      // Зеленая лампочка
    assign MOSI = Data[7];         // Выход MOSI SPI
    assign Dat[7:0] = (~nCS & nWR) ?
                        (Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0]
                        : 8'hZZ;
    // Синхронная логика
    always @(posedge Clk) begin
        // Делитель частоты
        Pre[3:0] <= Pre[3:0] + 4'h1;
        // Запись в управление может происходить ассинхронно
        if (~nCS & ~nWR & Adr) Ctrl[3:0] <= Dat[3:0];
        // Сигнал сброса имеет приоритет вне зависимости от выбранной скорости
        if (~nRes)
        begin
            // Сброс действиет на эти регистры
            Ctrl[3:0] <= 4'h0;
            Bits[2:0] <= 3'h0;
            BUSY <= 1'b0;
            SCK <= 1'b0;
        end else begin
            // Состояние SPI
            if (BUSY)
            begin
                // Делитель частоты
                if (((Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]) & Pre[0])
                begin
                    // SPI работает
                    if (SCK)
                    begin
                        // Сбрасываем такт
                        SCK <= 1'b0;
                        // Спад, поэтому сдвигаем
                        Data[7:0] <= {Data[6:0],RMISO};
                        // Считаем биты
                        Bits[2:0] <= Bits[2:0] + 3'h1;
                        // Это был 7й бит?
                        if (Bits[2] & Bits[1] & Bits[0]) BUSY <= 1'b0;
                    end else begin
                        // Устанавливаем такт
                        SCK <= 1'b1;
                        // Это фронт, поэтому сэмплируем вход
                        RMISO <= MISO;
                    end
                end
            end else begin
                // Обнуляем счетчик бит
                Bits[2:0] <= 3'h0;
                // Запись в регистр данных возможна только если SPI не занят
                if (~nCS & ~nWR & ~Adr)
                begin
                    Data[7:0] <= Dat[7:0];
                    BUSY <= 1'b1;
                end
            end
        end
    end
    // Конец
    endmodule
    Кактус вроде все понял правильно, и оно даже впритык влезло в EPM7032:

    Симуляция показала, что схема вроде как жизнеспособна:

    Но тут есть некоторые допущения, которые невозможно обойти посредством EPM7032, тупо не хватает ячеек:
    1. Входные сигналы управления не синхронизированы и потенциально могут вызывать глюк SPI машины
    2. Допускается тот факт, что сигнал WR процессор ставит когда уже шина данных содержит данные, однако мы не имеем запрещающий сигнал #RD, поэтому EPMка может передавливать шину и не сработает.
    Второй пункт меня парит очень сильно. Если добавить всего один сигнал, то можно обойтись и EPM3032, а так придется ставить EPM3064 и делать синхронизацию сигналов.

  3. #23
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да! Нужно поставить входные как трехстабильные! Вот и глюки плиска вводит!

    Кстати Standard Spetsialist Browser на железке заработал. Блин опять запуск файлов на Std глючит. Мы же подгружаем Монитор2 вместе с программой. Что опять нужно инициализировать монитор для запуска файла... Опять всё заново делать.

    - - - Добавлено - - -

    Ну что, господа. МХ режим заработал - поставил соответствующий крыжик, указанный HardWareMan'ом выше при компилировании проекта. Из RAMFOSа запустил свой тест памяти, всё проверил. Буду дальше писать программы - охота в RKS файлы поиграться, а то всё эмулятор, эмулятор...
    Последний раз редактировалось fifan; 21.02.2017 в 10:16.

  4. #24
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Работа с SD контроллером на Специалисте_МХ2

    Подсмотрю процесс запуска файлов в Std режиме у HardWareMan'а в программе работы с внешним Flash-диском, исходники от автора есть.
    Последний раз редактировалось fifan; 21.02.2017 в 10:12.

  5. #25
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так что, вводим #RD? Если да то куда и как?

  6. #26
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от HardWareMan Посмотреть сообщение
    Так что, вводим #RD? Если да то куда и как?
    Наверное вводим. Вот незанят 14 вывод плисины. Предлагаю кинуть провод к 1 выводу АП6 (DD40).

    RD активирует буфер который выводит данные из плисины? Знать чтобы проект изменить.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	RDMX2.jpg 
Просмотров:	116 
Размер:	49.8 Кб 
ID:	64074  
    Последний раз редактировалось fifan; 03.02.2018 в 09:16.

  7. #27
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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


    #RD у нас процессорный же? Активный лог.0?

    - - - Добавлено - - -

    Вот! Все четко по букварю!

    Скрытый текст



    [свернуть]


    - - - Добавлено - - -

    Если больше не требуется функций от контроллера, то он четко влазит в EPM7032SLC, который совместим по ногам с EPM7064SLC в этом же корпусе.

    Скрытый текст


    Код:
    // Контроллер SPI для Специалист-MX2 на EPM7032SLC44
    module MX2_CPLD(
        // Системные
        input    Clk,              // Входная частота 10МГц
        input    nRes,             // Входной сигнал сброса, активный уровень лог.0
        input    nRD,              // Вход строба чтения
        input    nWR,              // Вход строба записи
        input    nCS,              // Вход выбора контроллера
        input    Adr,              // Вход адреса данные/управление
        inout    [7:0]Dat,         // Шина данных
        // SPI
        output   nSEL,             // Выходной сигнал выбора карты
        output   reg SCK,          // Выход тактовой частоты SPI
        input    MISO,             // Вход данных SPI
        output   MOSI,             // Выход данных SPI
        output   nRED,             // Выход управления красным светодиодом
        output   nGREEN,           // Выход управления зеленым светодиодом
        input    nINS,             // Вход датчика вставления карты
        // Резерв
        input    MX,               // ?
        input    U6                // ?
    );
    // Внутренние регистры
    reg [3:0]Pre;                  // Делитель частоты
    reg [3:0]Ctrl;                 // Регистр управления
    reg [7:0]Data;                 // Регистр данных
    reg [2:0]Bits;                 // Счетчик сдвигаемых бит
    reg RMISO;                     // Защелка сигнала MISO
    reg BUSY;                      // SPI занят передачей
    // Комбинаторика
    assign nSEL = ~Ctrl[0];        // Выбор карты
    assign nRED = ~Ctrl[2];        // Красная лампочка
    assign nGREEN = ~Ctrl[3];      // Зеленая лампочка
    assign MOSI = Data[7];         // Выход MOSI SPI
    assign Dat[7:0] = (~nCS & ~nRD) ?
                        (Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0]
                        : 8'hZZ;
    // Синхронная логика
    always @(posedge Clk) begin
        // Делитель частоты
        Pre[3:0] <= Pre[3:0] + 4'h1;
        // Запись в управление может происходить асинхронно
        if (~nCS & ~nWR & Adr) Ctrl[3:0] <= Dat[3:0];
        // Сигнал сброса имеет приоритет вне зависимости от выбранной скорости
        if (~nRes)
        begin
            // Сброс действует на эти регистры
            Ctrl[3:0] <= 4'h0;
            Bits[2:0] <= 3'h0;
            BUSY <= 1'b0;
            SCK <= 1'b0;
        end else begin
            // Состояние SPI
            if (BUSY)
            begin
                // Делитель частоты
                if (((Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]) & Pre[0])
                begin
                    // SPI работает
                    if (SCK)
                    begin
                        // Сбрасываем такт
                        SCK <= 1'b0;
                        // Спад, поэтому сдвигаем
                        Data[7:0] <= {Data[6:0],RMISO};
                        // Считаем биты
                        Bits[2:0] <= Bits[2:0] + 3'h1;
                        // Это был 7й бит?
                        if (Bits[2] & Bits[1] & Bits[0]) BUSY <= 1'b0;
                    end else begin
                        // Устанавливаем такт
                        SCK <= 1'b1;
                        // Это фронт, поэтому сэмплируем вход
                        RMISO <= MISO;
                    end
                end
            end else begin
                // Обнуляем счетчик бит
                Bits[2:0] <= 3'h0;
                // Запись в регистр данных возможна только если SPI не занят
                if (~nCS & ~nWR & ~Adr)
                begin
                    Data[7:0] <= Dat[7:0];
                    BUSY <= 1'b1;
                end
            end
        end
    end
    // Конец
    endmodule
    [свернуть]
    Последний раз редактировалось fifan; 03.02.2018 в 09:17.

  8. #28
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А ты уже прошивал плис?
    Последний раз редактировалось fifan; 03.02.2018 в 09:17.

  9. #29
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, я пока только теоретизирую. Надо освободить место на столе и начать уже практиковать.

  10. #30
    Moderator Аватар для fifan
    Регистрация
    30.05.2007
    Адрес
    г. Лянтор, Сургутского р-на, ХМАО
    Сообщений
    4,164
    Спасибо Благодарностей отдано 
    106
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    70 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я твой верилог файл тоже в новый проект воткнул. Он будет изменяться? Не факт что я его повторю - не уверен что у меня есть в наличии EPM7032SLC44, а компилировать под EPM7064SLC44 неохота.
    А сегодня займусь доращиванием проводка /RD до плисины и соответственно изменённый проект буду прошивать. Но я как-то больше склоняюсь к проекту на верилоге - дешево и компактно.

Страница 3 из 18 ПерваяПервая 1234567 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Продается Орель БК-08 с контроллером дисковода
    от zorel в разделе Барахолка (архив)
    Ответов: 7
    Последнее: 20.04.2012, 22:36
  2. Проблема с контроллером FDD
    от Eugeny в разделе Внешние накопители
    Ответов: 0
    Последнее: 13.11.2011, 13:33
  3. Проблема с контроллером дисковода
    от andreil в разделе Внешние накопители
    Ответов: 29
    Последнее: 04.09.2011, 20:48
  4. Аукцион Орель БК08 с контроллером дисковода
    от zorel в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 24.08.2011, 22:29
  5. Трюки с контроллером FDD 82077
    от Titus в разделе Утилиты
    Ответов: 4
    Последнее: 10.06.2011, 19:17

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •