User Tag List

Страница 84 из 273 ПерваяПервая ... 808182838485868788 ... ПоследняяПоследняя
Показано с 831 по 840 из 2727

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

  1. #831

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

    По умолчанию

    А для чего вообще нужно привязываться к неким константам в регистрах? Ведь нет вообще никакой гарантии, что они не уникальны для разных партий кристаллов. Я вообще предпочитаю предполагать, что изначальные значения регистров рандомные и ими необходимо пренебречь. Я бы вообще структуры reg и wire использовал бы с не инициализированными переменными, для эмуляции случайных состояний триггеров, но из-за использования операции XOR с булевыми переменными, это невозможно.

    Patron, делайте с исходниками что хотите и модифицируйте их как сочтёте необходимым. У меня как-то застопорился всякий прогресс в этом деле. Чтобы как-то двигаться дальше, мне необходимо минимум три модели, взаимодействующие между собой через МПИ, две есть: ВМ1 и ВП1-037 (на си пока не переведённая, т.к. простая и это не сложно сделать), а вот с третьей, которой я выбрал ВП1-065 до сих пор ничего не получается.

  2. #832

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

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    А для чего вообще нужно привязываться к неким константам в регистрах?
    Эти значения уникальны для каждого экземпляра, но неизменны от включения к включению, поэтому (как ни странно) - копия актуальных значений тестируемого экземпляра является наиболее точной эмуляцией.


    Цитата Сообщение от gid Посмотреть сообщение
    с третьей, которой я выбрал ВП1-065 до сих пор ничего не получается.
    Предлагаю попробовать скомпилировать адаптер МПИ - исходники CPP-модели там лежат в оригинальном виде в их родном каталоге \MODULES\MPI_module\vm1cpu\.

    Эмуляция последовательного порта в адаптере МПИ максимально точная - там можно даже (как в реальном порту) создавать фейковые посылки при помощи программного управления состоянием BREAK.

  3. #833

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

    По умолчанию

    Решая проблему глюка RPLY, выяснил, что глюк проявляется, если RPLY меняет своё состояние в пределах одного (или 1,5) такта после изменения состояния DIN (по крайней мере DIN, может и с DOUT так же было).
    После этого, заменил весь код, где используются reg [3:0] rply_ack кодом из модели Async и глюк пропал. Правда при этом SYNC стал сниматься на 1 такт позже, да и DIN держится на 1 такт дольше , зато теперь работа модели не зависит от фазы ТЧ и опроса периферии через такт или полтакта.
    Вообще, заменённый код местами неожиданно отличается от кода в Qsync. Может быть при оптимизациях где-нибудь вкралась ошибка?
    Вот что получилось VM1CPPr005.rar код, приводивший удлинение на такт закомментирован, и оставлен тот, что из Qsync, более быстрый.
    Последний раз редактировалось gid; 09.12.2015 в 16:20.

  4. #834

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

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    глюк проявляется, если RPLY меняет своё состояние в пределах одного (или 1,5) такта после изменения состояния DIN
    Во всех версиях CPP-модели момент установки RPLY роли не играет - глюк зависит только от момента снятия RPLY. Даже при нулевой задержке снятия RPLY - выравнивание защищает от глюка.

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

    Цитата Сообщение от gid Посмотреть сообщение
    Вообще, заменённый код местами неожиданно отличается от кода в Qsync. Может быть при оптимизациях где-нибудь вкралась ошибка?
    ЗДЕСЬ утверждается, что в Verilog-версии модели Qsync момент снятия RPLY роли не играет.
    Последний раз редактировалось Patron; 09.12.2015 в 19:01.

  5. #835

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

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Для моделей Qsync/Wsync проверка RPLY не имеет смысла (хотя Qsync тоже немного погонял, все нормально работает)
    Как выяснилось - проблема именно в CPP-версии модели Qsync. Если деактивировать сигнал RPLY между eval_p и eval_n - модель не снимает SYNC вплоть до установки DCLO.

    В Verilog-версии модели Qsync точно нет такой проблемы ?

  6. #836

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    В Verilog-версии модели Qsync точно нет такой проблемы ?
    Ну... Если ModelSim не шутит, то в модели QSync такой проблемы нету
    Еще раз снял диаграмму:


    Красным отмечено снятие RPLY при положительном значении CLC, через 2 нс после фронта.
    RPLY снимает (и управляет всеми другими внешними сигналами) специальный модуль, называется testbench (файл tbench.v), пишется для тестовых целей и является внешним по отношению к модели. То есть для модели это выглядит как внешнее воздействие, внутри она никак не меняется при тестировании. Заводской тест 401 проходит при любых комбинациях снятия RPLY.

    Там была другая проблема, при обращении к 1777хх были очень короткие импульсы DOUT - оно выходило по первому же RPLY, обнаруженному по фронту CLC. Это несовпадало с реальным процессором и я перекинул на второй RPLY на фронте CLC. Схему перепроверял на нескольких процессорах, она верная, поэтому списал на физическую задержку, то есть RPLY при обращении к внутренним регистрам не успевал на первый фронт CLC. Там есть коммент на тему:

    Код:
    assign dout_start = dout_req_rc & qbus_flag_rc & ~rply_ack[2]; // originally ~rply_ack[1]
    Все остальные циклы - DATI/DATO/DATIO/IAK сначала сверялись на модели Async с реальным процессором. Было достигнуто потактовое совпадение. Потом прошел тест 401, при этом симулятор показывает сколько времени модели затрачено на прохождение теста, ну скажем 544520 нс.

    Потом писалась модель Qsync, писалась она путем модификации Async, при этом на ней многократно в ходе разработки прогонялся тест 401 и сверялось в том числе затраченное время, оно должно полностью совпадать с моделью Async (544520нс). Ну и диаграммы тоже сравнивались, их длительности и моменты запуска полностью совпадали.

    Потом уже делалась WSync модификацией QSync, там уже времянка немного разошлась, шина же другая, но встроен специальный механизм для медленного режима, при его работе моменты запуска транзакций будут полностью совпадать как это делал бы процессор на родной частоте (до 5МГц). Эта задумка написана, но еще не проверялась - она должна работать в связке с дульным компенсатором эмулятором-замедлителем ВП1-037, которого пока нету.

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

    Давно не брал я в руки шашек смотрел в микроскоп
    Пока игрался с модулем и перетыкал микропроцессоры, определился самый слаборазгоняемый экземпляр 1801ВМ3, к тому же у него ножки немножко в процессе покоцались, пришлось его на мясо пустить открыть.



    Кристалл незначительно больше по площади чем 1801ВМ1 (на 20-25 процентов), но транзисторов по прикидкам должно быть тысяч 25, значит нормы уменьшили. И действительно - 3 мкм ширина затвора и проводников. У ВМ1 было 5 мкм, у ВМ2 - 4 мкм. Не великий прогресс за 8 лет, но то такое. Стекло на кристалле грязноватое, попробую спиртиком помыть и отфотать на увеличении x10. Но уже мелковато, как бы не пришлось снимать на x20 (а это за 400 снимков выйдет), и у меня уже 16ГБ памяти такую панораму собрать не хватает.

  7. #837

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,402
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Кристалл незначительно больше по площади чем 1801ВМ1 (на 20-25 процентов), но транзисторов по прикидкам должно быть тысяч 25, значит нормы уменьшили.
    На картиночке качества несколько не хватает для понимания.
    По сравнению со стройными рядами элементов в ХМ1, выглядит хаотично)

  8. #838

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    На картиночке качества несколько не хватает для понимания.
    Дело не только в качестве, структура нерегулярная, нельзя выделить библиотеку ячеек. А чтобы можно было разобраться - надо шлифовать слой металла и снимать "диффузию", иначе неразбирабельно даже при очень-очень качественной картинке и бОльших проектных нормах (сужу по 580 и 581 сериям).

  9. #839

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,402
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    ВМ3 - это уже КМОП или еще НМОП?

  10. #840

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

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Как выяснилось - проблема именно в CPP-версии модели Qsync.
    Ну, я никогда и не утверждал, что CPP модель достоверно работает, она наоборот, в силу каких-то неясных для меня нюансов работает не так, как Verilog модель, хотя казалось бы, всё сделано точь-в-точь как в верилоге.

    Vslav, вот есть такая штука "always @(posedge pin_clk_p)", в ней регистр mjres меняет своё значение, допустим с 0 на 1.
    Как в таком случае должен выполняться "always @(posedge pin_clk_p or posedge mjres)"? Сперва часть кода в соответствии с "posedge pin_clk_p", как и для предыдущего alwaysа, а затем в этой же итерации - часть кода в соответствии с вновь возникшим "posedge mjres", затирая результаты выполнения этого alwaysа для "posedge pin_clk_p" или всё таки обрабатывать "posedge mjres" в следующей итерации?

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

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

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

Эту тему просматривают: 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

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

Ваши права

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