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

kirill70674

Свой
  • Постов

    82
  • Зарегистрирован

  • Посещение

Репутация

5 Обычный

Информация о kirill70674

  • Звание
    Частый гость
    Частый гость

Посетители профиля

497 просмотров профиля
  1. Потому что данный тип не отражает в полной мере поведение реального "железа". Первая и главная причина: после сброса все не инициализированные переменные в симуляторе Вы будете видеть в 0'ях, когда в реальном устройстве их начальное сотояние определено не будет (X). Типы с 2 состояниями введены больше для верификации, где время от времени приходится иметь дело с пересылкой данных в C++ и обратно. Настоятельно рекомендую к прочтению данную статью: https://sutherland-hdl.com/papers/2013-SNUG-SV_Synthesizable-SystemVerilog_paper.pdf Там подробно рассказано что синтезируемое, а что нет. А что синтезируемо, но в синтезе личше не использовать.
  2. Можете пояснить словами, как должен вести себя PB_idle? P.S. Потому что у Вас сигнал имеет тип bit у которого всего 2 состояния: 0 и 1. Использование типов int, byte, bit в синтезируемом коде крайне не желательно. Используйте logic, у него 4 состояния... Если код далее идёт в синтез - забудте про блоки initial. Инициализация осуществляется только по сигналу reset.
  3. Здравствуйте, На сколько я понимаю, Вы пытаетесь осуществить "gating" сигнала PB_sync_1 с помощью управляющего сигнала PB_state. Это делается через оператор assign. Поробуйте переписать выражение так: wire PB_idle; assign PB_idle = PB_state ? PB_sync_1 : '0; Осуществлять присвоение при объявлени сигнала - дурной стиль. См. пункт "10.3.2 The continuous assignment statement" LRM. Пример 3 и пояснения к нему.
  4. Если речь идёт про ЦОС, то без MATLAB не обойтись. И есть проверенный способ подружить MATLAB с симулятором HDL. Это DPI. 1) MATLAB предоставляет API для C++. См. https://www.mathworks.com/help/matlab/matlab_external/matlab-engine-api-for-c.html. Т.е. управляешь консолью, читаешь/пишешь переменные в MATLAB из C++. 2) После определения некоторых функций для работы с API MATLAB создаёшь DPI-C библиотеку для вызова этих функций из SystemVerilog. 3) И вот у Вас уже есть возможность синхронизировать модель RTL и модель MATLAB.
  5. Здравствуйте, коллеги Ситуация: В package определена экспортируемая в C++ функция. На стороне C++ данная функция вызывается в случайный момент времени тредом, который к DPI не имеет отношения. Во время вызова функции из C++ симулятор Xcelium выдаёт следующие ошибки: "DPI Scope function call allowed only from context function" и "The C identifier "foo" representing an export task/function cannot be executed from a non-context area". Перед вызовом функции foo в стороннем треде я пробовал принудительно задавать контекст: svSetScope(svGetNameFromScope("foo_pkg")), но безуспешно. Я даже пробовал заранее сохранять переменную с контекстом (GLOBAL_SCOPE=svGetScope()) и перед вызовом устанавливать контекст: svSetScope(GLOBAL_SCOPE). Тоже безрезультатно. При вызове svSetScope(GLOBAL_SCOPE) DPI не видит контекста вообще и устанавливает его в NULL. На форуме Cadence нашёл заметку в которой автор решает описываемую проблему, используя функции __sync_lock_test_and_set и __sync_lock_release. Как и над какими переменными он их использует - не понятно. -- Сталкивался ли кто с подобной проблемой и как решил?
  6. Собственно на фото - нутро ТАИ-43-Р. Насколько я понимаю, в смысле физического соединения и приёма сигнала между ТА-57 и ТАИ-43 разницы нет? Т.е. они рассчитаны на соединение проводом П274М и совместимы друг с другом. Расстояние только разное, ТА-57 берёт аж на ~60км, а ТАИ только на 25...
  7. Я ж писал, что бортовое 9В... Тут всю схему вместе с трансформатором нужно пересчитывать... Спасибо за совет. Не слышал о ТПГ до этого... Попробуем смоделировать)
  8. Автор борется за ремонтопригодность и надёжность. Спокойно, все свои🇷🇺 За тем, что никто не вечен... photo_2jpg
  9. У ТПП215 нет средней точки. Только если виртуальную делать. На push-pull свет клином ведь не сошёлся. Почему Вы считаете, что простой усилитель с общим эмиттером и ТПП241 не пойдут? У push-pull ведь идея в существенном увеличении амплитуды по сравнению с остальными схемами. А нам по сути нужна амплитуда в ~2В и усилитель тока. Нет? Учитывая, что инструкция на ТА-57 говорит в качестве эквивалента кабеля использовать нагрузку 600 Ом, а напряжение может достигать (по инструкции) 62В (возьмём 100В с запасом), то минимальный ток = 0,167А. Не думаю, что Ваш трансформатор держит такое. Можете привести пример из отечественных справочников?
  10. ТПП241-127/220-50 подойдёт? Судя по паспорту tpp127-220-50.pdf, тянет он до 0,173А на первичной обмотке, и 1.28 на вторичке в режиме 127В (что и нужно). Этого должно быть достаточно. Насколько я понимаю, достаточно развить действительное напряжение 2.5В на вторичке и на первичной появится 127?
  11. Так же при потборе трансформатора возник вопрос: почему число обмоток указывают с приставкой X2 ?
  12. Судя по схеме ТА-57, никакого смещении сигнала вызова на 60В нет. В инструкции прямо написано, что индуктор "представляет собой простейший генератор". Задача ведь в том, чтобы заменить СВУ представляющее из себя индуктор.
  13. Вот так генерирую синус. Получается ~60 Гц. Одно из требований - максимальная простота и возможность отремонтировать на коленке (например КТ315 найти можно без проблем где угодно).
×
×
  • Создать...