User Tag List

Страница 58 из 273 ПерваяПервая ... 545556575859606162 ... ПоследняяПоследняя
Показано с 571 по 580 из 2727

Тема: Цифровая археология: 1801 и все-все-все

  1. #571

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А есть желание именно МПИ эмулировать? С Wishbone оно немножко попроще будет. И синхронно с тактовой. К тому же у меня сил и времени хватит полноценно поддерживать только одну модель - Wsync, с Wishbone. В Async и Qsync только грубые ошибки будут исправляться.
    Последний раз редактировалось Vslav; 27.04.2015 в 20:37.

  2. #571
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #572

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    А есть желание именно МПИ эмулировать? С Wishbone оно немножко попроще будет.
    Большой разницы нет - всё равно дальше "прокси-адаптера" сигналы шины ( на данном этапе ) не пойдут.

    Можно сделать два адаптера - сначала для МПИ, потом для Wishbone.

    Про роль синхронности модели я немного не понимаю. Адаптер должен непрерывно вызывать Clock() и после каждого вызова проверять SYNC - вряд ли для синхронной и асинхронной моделей здесь может быть какая-то разница.

  4. #573

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Про роль синхронности модели я немного не понимаю. Адаптер должен непрерывно вызывать Clock() и после каждого вызова проверять SYNC - вряд ли для синхронной и асинхронной моделей здесь может быть какая-то разница.
    Для модели без времянок внутренней логики, да, большой разницы нет. Только для данной модели надо будет два метода - нарастающий и ниспадающий фронты тактовой.

  5. #574

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    79 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    Post

    Цитата Сообщение от Vslav Посмотреть сообщение
    Только для данной модели надо будет два метода - нарастающий и ниспадающий фронты тактовой.
    Это не проблема адаптера. Адаптер вызывает Clock(), а асинхронная модель уже реализует его ( например ) так:

    Код:
    void VM1::Clock()
    {
    	m_CPU.eval_p();  // отработаем передний фронт ТЧ
    	m_CPU.eval_n();  // отработаем задний   фронт ТЧ
    	m_nClk++;
    }


    ---------- Post added at 21:34 ---------- Previous post was at 21:09 ----------

    Адаптеру можно без проблем добавить интерфейс "виртуального логического анализатора", поэтому для полноты кайфа можно добавить к списку сигналов МПИ текущее время шины в наносекундах, а при подключении интерфейса к адаптеру передавать модели процессора callback SignalsChanged(), который можно вызывать внутри V-модели в любой момент для отображения изменений сигналов МПИ. Тогда на экране виртуального осциллографа сигналы будут выглядеть более натурально:

    Код:
    void VM1::Clock()
    {
    	m_CPU.eval_p();    // отработаем передний фронт ТЧ
    	m_nTimeNS += 100;  // первая половина такта заняла 100 нс
    	SignalsChanged();  // сообщим осциллогафу об изменениях
    	m_CPU.eval_n();    // отработаем задний   фронт ТЧ
    	m_nTimeNS += 100;  // вторая половина такта заняла 100 нс
    	m_nClk++;
    }
    Последний раз редактировалось Patron; 27.04.2015 в 21:37.

  6. #575

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    613
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    136 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Правильно ли я понимаю, что следующий интерфейс является исчерпывающим для V-модели 1801ВМ1:
    Не совсем исчерпывающим. У ВМ1 ещё есть ноги со своими сигналами, не относящимися к МПИ: SEL1, SEL2 и т.п. модель ВМ1 предполагает их использование, даже логика на них завязана, например используются ноги PA (processor number) при работе с захватом шины. Собственно МПИ нужен для связи между объектами.
    Я использую не оптимальный способ. у класса VM1 есть ещё внутренняя структура, по типу описанной, но перечисляющая все ноги процессора, допустим VM1_PINS. В функции eval_p() первым делом все данные, являющиеся входными для ВМ1 копируются из структуры МПИ в структуру VM1_PINS, затем выполняется вся логика, и при выходе из eval_p() выполняется обратное копирование всех данных, являющихся выходными для ВМ1, в структуру МПИ. При условии, что копирование разрешено. А то там Z состояние может быть, тогда копирование таких сигналов игнорируется. Сам класс VM1 является обёрткой над vm1_qbus - рабочим телом, у которого входных/выходных сигналов почти в 2 раза больше, чем ног у ВМ1.

    Я сейчас не об этом думаю, мне сейчас надо любым доступным способом (желательно с минимумом умственных затрат) добиться работоспособности модели ВМ1, и я делаю это в лоб - эмуляцией шевеления сигналов на ножках процессора (ну такая вот модель у Vslav, он ведь не под программное использование её затачивал, а под хардварное), чтобы ничего нового не придумывать, а использовать придуманное ранее. А когда она заработает - максимально визуализировать внутреннюю логику работы. Делать эмулятор ЭВМ пока даже задача не стоит.

    Чтобы модель ВМ1 можно было как-то программно использовать, её сначала надо бы оптимизировать под программное использование.

    Цитата Сообщение от Vslav Посмотреть сообщение
    Wishbone оно немножко попроще будет.
    А оно сильно от Qsync отличается? Просто в архиве vm1_rev12j.rar папка Wsync без v файлов была, так что не с чем сравнивать, да и внутри БКшек тоже МПИ, привычно.

  7. #576

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    А оно сильно от Qsync отличается? Просто в архиве vm1_rev12j.rar папка Wsync без v файлов была, так что не с чем сравнивать, да и внутри БКшек тоже МПИ, привычно.
    Пока несильно, только внешним интерфейсом, в итоге будет не один МПИ, а три отдельных Wishbone - процессорный мастер, периферийный ведомый, и отдельный для приема вектора прерывания. Еще, очень вероятно, будет переделываться АЛУ (функционал тот же, но запись будет компактной и позволит использовать арифметический режим ячеек в FPGA), добавится микрокод ВМ1Г (это вероятно получится внести и в Qsync), блок таймера и периферийных регистров выделится в отдельный модуль. Но Qsync сейчас вполне рабочая и законченная модель, можно на ней остановится для эмуляции.

  8. #577

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    613
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    136 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Похоже, задача оказалась мне не по силам.
    Никак не работает то, что получилось.
    После долгой и кропотливой трассировки, я пришёл к выводу, что сигнал SYNC никогда не снимется, потому что wire oe_clr_fc устанавливается в 1, что привело бы к снятию sync, на очень короткое время, wire oe_clr_fc используется в always @(posedge pin_clk_n), а перед этим, на полтакта ранее в always @(posedge pin_clk_p) складываются условия, что после oe_clr_fc == 1, оно уже никогда не будет 1. Т.е. простыми словами, модель прощёлкивает момент, когда SYNC можно будет сбросить, а потом уже поздно.
    Опечаток как ни искал, не нашёл, то ли где-то логический изъян, то ли я что-то так и не понял как надо правильно преобразовать модель. Вот архив с исходниками vm1cpp.rar
    Может кто найдёт, где косяк.

  9. #578

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    SYNC никогда не снимется, потому что wire oe_clr_fc устанавливается в 1, что привело бы к снятию sync, на очень короткое
    На SYNC и прочих сигналах МПИ в тестбенче tbench.v висят резисторы подтяжки на +5V:
    Код:
    tri1        din;        // data input strobe
    tri1        dout;       // data output strobe
    tri1        wtbt;       // write/byte status
    tri1        sync;       // address strobe
    tri1        rply;       // transaction reply
    tri1        dmr;        // bus request shared line
    tri1        sack;       // bus acknowlegement
    tri1        iako;       // interrupt vector input
    tri1        bsy;        //
    tri1 значит что когда pin_sync_ena равен нулю, то на "физической" ножке sync будет высокий уровень (за счет резистора), соответственно на pin_sync_in в модели ядра будет неактивный низкий.

    В реальном процессоре nSYNC так и работает - активизируется низкий nSYNC и разрешается работа буфера - на ножке видим низкий активный уровень, потом nSYNC переводится в высокий при помощи разрешенного буфера - чтобы нормальный фронт сигнала получить, а потом, через такт, буфер запрещается, и уже сформированный буфером высокий уровень будет удерживаться резистором. Под буфером тут понимается "драйвер" - комплементарная пара мощных выходных транзисторов, которые могут (неодновременно, конечно) выдать низкий или высокий уровень на ножке, или быть оба одновременно запрещены.

    Цитата Сообщение от gid Посмотреть сообщение
    время, wire oe_clr_fc используется в always @(posedge pin_clk_n), а перед этим, на полтакта ранее в always @(posedge pin_clk_p) складываются условия, что после oe_clr_fc == 1, оно уже никогда не будет 1.
    Я не очень понял в чем проблема - oe_clr_fc используется только в clk_n, qbus_win нормально работает, ниже картинка сигналов в модели Qsync в ModelSim, надеюсь, поможет (кликабельно, формат png без потерь).


  10. #579

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    613
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    176
    Поблагодарили
    136 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    висят резисторы подтяжки на +5V
    Я не использовал тестбенч. Неохота настолько подробно углубляться.
    У меня sync не снимал сам процессор, после снятия rply устройством, pin_sync_ena всегда было 1, т.к. sync_ena и sync_out навсегда устанавливались в 1, пофиксилось тем, что у alwaysов в строках 625-643 инвертировал фронт ТЧ. После этого вроде как цикл dati стал выполняться как задумано, но выяснилось, что не работает больше половины остальных регистров, т.е. стартовый адрес из 177716 читать вроде пытается, но внутрь он не сохраняется, т.к. условия не создаются.
    Цитата Сообщение от Vslav Посмотреть сообщение
    Я не очень понял в чем проблема
    Проблема в том, что мне придётся таки осваивать ModelSim, чтобы потактово сравнивать работу моделей.

  11. #580

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    Я не использовал тестбенч. Неохота настолько подробно углубляться.
    Тестбенч для эмулятора и не надо использовать, это просто тестовая платформа, но надо помнить что реальный процессор без внешних резисторов на МПИ не работает, в данной модели эти резисторы также внешние - описаны в тестбенче. Для модели с Wishbone таких проблем нет, поскольку там нет МПИ с третьим состоянием.

    Цитата Сообщение от gid Посмотреть сообщение
    устанавливались в 1, пофиксилось тем, что у alwaysов в строках 625-643 инвертировал фронт ТЧ.
    Имхо, ошибка где-то в другом месте, модель Qsync рабочая - это показывает modelsim и приведенные диаграммы совпадают со снятыми с реального процессора при помощи логического анализатора (третье состояние не видно, конечно, но фронты на своих местах).

    Цитата Сообщение от gid Посмотреть сообщение
    Проблема в том, что мне придётся таки осваивать ModelSim, чтобы потактово сравнивать работу моделей.
    А Вы рассматривайте это не как проблему, а как бонус .

    PS. Маленький бонус для всех:
    1801ВМ1Г, диффузия, полное разрешение (472МБ)
    1801ВМ1Г, диффузия, половинное разрешение (56МБ)
    Вроде отличия только в микропрограмме, насколько видно при наложении векторов на новые картинки.
    Последний раз редактировалось Vslav; 29.04.2015 в 21:45.

Страница 58 из 273 ПерваяПервая ... 545556575859606162 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 7
    Последнее: 28.06.2014, 17:50
  2. Микросхемы МПК 580,1801,1810 и другие...
    от Alex_Vac в разделе Барахолка (архив)
    Ответов: 44
    Последнее: 07.04.2012, 08:03
  3. ЦИФРОВАЯ МУЗЫКА НА ZX
    от AAA в разделе Музыка
    Ответов: 98
    Последнее: 18.09.2011, 22:33
  4. Учебный стенд УМПК-1801
    от dk_spb в разделе ДВК, УКНЦ
    Ответов: 2
    Последнее: 12.05.2010, 16:52
  5. Цифровая музыка от Вадима Ермеева
    от zxmike в разделе Музыка
    Ответов: 2
    Последнее: 06.08.2007, 23:13

Метки этой темы

Ваши права

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