• Верификация цифровых схем. Обзор

    image


    Я постараюсь в общем рассказать о верификации цифровых схем.


    Верификация в данной области — это важный процесс, требующий привлечения опытных инженеров. Например, специалист по верификации, работающий над системами с ЦПУ, как правило должен владеть скриптовыми языками и языками командных оболочек (Tcl, bash, Makefile и т.п.), языками программирования (С, С++, ассемблер), HDL/HDVL (SystemVerilog [10, Appendix C — история языка][11], Verilog, VHDL), современными методологиями и framework’ами (UVM).


    Доля времени, затраченного на верификацию, доходит до 70-80% от всего времени проекта. Одна из основных причин такого внимания в том, что к микросхеме нельзя выпустить “патч” после того, как ее отдали в производство, можно только выпустить “silicon errata” (это не касается проектов ПЛИС/FPGA).


    Под цифровыми схемами я подразумеваю:


    • сложно-функциональные блоки/intellectual properties (СФБ/IP);
    • специализированные заказные микросхемы/application-specific integrated circuit (ASIC);
    • проекты программируемых логических интегральных схем/field-programmable gate array (ПЛИС/FPGA);
    • системы на кристалле/system-on-crystal (СнК/SoC);
    • и т.п.
    Читать дальше →
  • Интерфейс JTAG? — Это очень просто

    Многие знакомы со словом «JTAG», но знакомство это скорее всего поверхностное. В этой статье я хочу перевести Вас на новый уровень, так сказать «во френдзону». Возможно, для многих я не открою ничего нового, но надеюсь тем, кто давно хотел ознакомиться, будет интересно почитать. Итак, от винта.
    image

    Запустить JTAG тестирование
  • Школа по основам цифровой схемотехники: Новосибирск — Ок, Красноярск — приготовиться


      Со 2 по 5 октября в Новосибирске прошла школа по основам цифровой схемотехники, архитектуры и использования Verilog. Формальное название мероприятия: школа для магистрантов и аспирантов, проходившая в Новосибирском государственном техническом университет в рамках XIV Международной научно-технической конференции «Актуальные проблемы электронного приборостроения» АПЭП-2018, проводимой под эгидой IEEE.


      Данное мероприятие было в первую очередь ориентировано на тех, кто:


      • прочитал книгу Цифровая схемотехника и архитектура компьютера, Д.Харрис, С.Харрис (также известная как H&H или Харрис-и-Харрис);
      • хочет применить свои знания на практике, но не понимает, какое оборудование и ПО для этого необходимо и не умеет его использовать;
      • является студентом старших курсов или аспирантом и, как предполагается, будет распространять полученные знания (вести в ВУЗе практикумы, лабораторные работы и т.д.).

      Анонс: аналогичная школа запланирована с 6 по 9 ноября на базе Института космических и информационных технологий Сибирского федерального университета (ИКИТ СФУ). Вести школу будут Алина Лесковская — аспирант, инженер-конструктор АО ИСС им.М.Ф.Решетнева, а также ее коллеги: Дмитрий Власов и Борис Дудкин. Контакт для регистрации: leskovskayaav@yandex.ru


      Если ваша должность звучит как минимум «Junior FPGA Developer», то с высокой вероятностью вы не узнаете в этом посте ничего для себя нового. Для всех остальных – добро пожаловать под кат.

      Читать дальше →
      • +13
      • 4,2k
      • 4
    • Полярная ночь, водокачка и умный сейф: 5 студенческих проектов в сфере IoT

        Как может выглядеть студенческий учебный проект в сфере IoT? Чему реально научить студента за год, если раньше с этой тематикой он не сталкивался?

        Первый год программы «IoT Академия Samsung» завершился финалом конкурса, проведенного между выпускниками в пилотных вузах (МФТИ и МИРЭА). Каждый из проектов, вышедших в финал, был интересен по-своему, и ниже я предлагаю познакомиться с ними. Это по сути демонстрация диапазона возможных тем, которые можно затронуть, основываясь на знаниях, полученных в нашей программе.


        Читать дальше →
      • Серийная ЭВМ “Стрела”

          «Стрела» — советская ЭВМ первого поколения, которая являлась одной из первых отечественных вычислительных машин. Главным конструктором был Юрий Яковлевич Базилевский, а его заместителем — Башир Искандарович Рамаев. ЭВМ «Стрела» принадлежала к классу больших машин, обладающих высокоразвитой и логически законченной структурой. Это обеспечивало большую производительность при решении сложных и громоздких по объему вычислений задач. Кроме того «Стрела» была также первенцем среди машин, выпускаемых промышленностью серийно. Предшествующие ей модели изготавливались в единственных экземплярах.



          Читать дальше →
          • +15
          • 13,2k
          • 3
        • Мои замечания о книге Л.П. Плеханова «Основы самосинхронных электронных схем»

            Прежде всего хочу сказать, что за те 10 с лишним лет, что я не занимался асинхронными схемами, в этой сфере произошли определенные изменения. Прежде всего бросается в глаза изменение в терминологии. Значение термина «асинхронные схемы» взял на себя термин «самосинхронные схемы». Именно под этим термином теперь подразумеваются настоящие асинхронные схемы, не зависящие от задержек логических элементов. А термину «асинхронные схемы» досталось обозначение схем, не обладающих этим ценным качеством, ну и вообще всех схем без тактового сигнала. Я решил поподробнее изучить, что такое самосинхронные схемы. Подходящей для этого мне показалась книга, указанная в заглавии. Тем более, что она рекомендуется как учебник, и издана не так давно.


            В книге самосинхронные схемы представляются как отдельный класс схем, обладающих уникальными свойствами. А вот определение самосинхронной схемы:

            Самосинхронной схемой (СС-схемой) называется схема, обладающая
            двумя свойствами безошибочной работы:

            • отсутствием гонок при любых конечных задержках элементов;
            • отказобезопасностью.

            Данное определение подразумевает гипотезу о задержках Маллера. Второй пункт есть следствие первого. А первый пункт не что иное, как определение давно устоявшегося термина speed-independent (SI). То есть получается, что самосинхронные схемы это не отдельный класс схем, а схемы, синтезированные определенным методом, который гарантирует свойство SI. Таким образом «самосинхронный» это не характеристика класса схем, а характеристика метода синтеза.
            Читать дальше →
            • +18
            • 6,4k
            • 9
          • Ответ Л.П. Плеханова на замечания по книге «Основы самосинхронных электронных схем»

              Предисловие: Меня зовут Виктор, и я сотрудник Института Проблем Информатики РАН. В нашем отделе ведутся две разработки: рекуррентный процессор и самосинхронная схемотехника. Сам я занят первым, но не смог пройти мимо Мои замечания о книге Л.П. Плеханова «Основы самосинхронных электронных схем», т.к. Л.П. Плеханов работает у нас и данная тематика и «внутренняя кухня» мне близки и знакомы. Я попросил Леонид Петровича подготовить ответ, который с удовольствием сегодня опубликую.

              Для справки: У коллектива, в котором работает Плеханов Л.П. довольно много наработок по части самосинхронной схемотехники. Более 20 патентов по самосинхронике, включая международные патенты (США).

              Также решения являются не только теоретическими, но и практическими. Например, буквально недавно вышла книга «Библиотека функциональных ячеек для проектирования самосинхронных полузаказных микросхем серий 5503 и 5507». САПР «Ковчег» позволяет проектировать самосинхронные схемы в базисе БМК серий 5503 и 5507.

              Кроме того, уже выполнен по технологии 65 нм самосинхронный делитель и блок FMA для процессора КОМДИВ-64. В силу разных обстоятельств данные труды пока не имеют заслуженной на мой взгляд огласки, и посему лично я надеюсь, что этот первый пост нашего отдела ИПИ РАН не будет последним и в ближайшее время мы расскажем публике о самосинхронной схемотехнике подробнее. Ну а пока, передаю слово Леониду Петровичу.

              Пошумим!



              Вообще-то, если появляется компетентная рецензия, то это благо для автора. Но здесь другой случай.

              1. Общее впечатление


              Автор замечаний (далее — Рецензент), находясь в плену своих событийных представлений, непоколебимо считает, что и все другие исходят (или должны исходить) из того же.

              А с какой стати?

              Поэтому Рецензент ничего не понял в книге — ни идеи, ни подхода, ни результатов.
              Зато замечания написаны с большой самоуверенностью.
              Читать дальше →
            • EDC-устройство для сисадмина: Linux в кармане

              У каждого админа, пожалуй, был случай, когда что-то внезапно ломается, а ты где-нибудь в дороге: едешь на машине, садишься на поезд или, банально, сидишь где-то на скамейке в парке и срываться и куда-то нестись желания нет ни малейшего. А чинить надо. Или, как минимум, оценить масштабы пришедшего белого пушного зверька.

              Понятно, что можно обойтись смартфоном или планшетом, особенно если нужно только зайти по ssh. Но пользоваться в таких случаях тачскрином, как по мне, — это боль и страдания.



              Можно приобрести внешнюю клавиатуру, держатель или подставку для планшета, но я считаю, что проще уж тогда носить с собой полноценный ноутбук. Места займет примерно столько же.
              Читать дальше →
            • Колёсная лира, варган, кахон и музыкальная пила — инструменты, которые не стали мейнстримом

                Совсем недавно мы вспоминали относительно современные музыкальные инструменты, которые не стали мейнстримом. Это происходит по разным причинам — из-за странной конструкции, необычного звучания или и стиля игры.

                Терменвокс, омникорд и ханг — очень разные по своей сути изобретения, которые в музыке заняли примерно одну узкую нишу — интересных, но мало распространенных инструментов.

                Сегодня мы обратимся к «классике» — вспомним инструменты, которые появились сотни лет назад, но остались нишевыми, либо стали таковыми с течением времени.

                Фото Ian Sane CC BY

                Колёсная лира


                Струнный инструмент, который у разных народов назывался по-разному. Он относится к группе фрикционных — то есть звучание производится с помощью трения.
                Читать дальше →
              • Процессоры «Байкал» поступают в розничную продажу



                  Российские процессоры «Байкал» вскоре можно будет купить в рознице, причем цена на них снижается в четыре раза. Начало продаж запланировано на первый квартал 2018 года, именно тогда в розничных магазинах появятся первые партии отечественных чипов, о чем сообщает Cnews. Процессоры Baikal-T1 будут продавать в составе оценочных плат семейства БФК 3.1 (блок функционального контроля). Их выпускает компания «Байкал электроникс» — разработчик чипов.

                  Фактически, БФК представляет собой одноплатный компьютер без графической подсистемы. Для визуального отображения информации плату можно без проблем подключить к внешнему монитору, тогда видео станет обрабатываться центральным процессором. Ранее такие платы стоили около 200 тысяч рублей. Сейчас БФК 3.1 упадут в цене до 50 тысяч рублей.
                  Читать дальше →
                • Установка Linux без .ISO и виртуализации

                  Установка Linux без .ISO и виртуализации


                  Создание файловой системы, установка и клонирование Debian и Ubuntu с помощью скриптов radish.


                  1. Назначение и возможности скриптов radish


                  Обычно установка системы Linux производится путём запуска какой-либо программы-установщика, поставляемой разработчиками дистрибутива. Это производится либо непосредственно на компьютере, на котором производится установка, либо в какой-либо изолированной среде, например, используя виртуализацию. Описываемые ниже процедуры следуют этим принципам только в самом минимально необходимом виде. При создании образа системы какие-либо установщики сводятся к генератору минимальной системы debootstrap и интерфейсу менеджера пакетов apt (оба поверх менеджера пакетов dpkg), а вместо виртуализации используется chroot.


                  Установка образа диска на устройство производится минимальным скриптом, который вообще никак не использует установщик или менеджер пакетов, тем не менее создавая конфигурацию, полностью управляемую менеджером пакетов в образе диска — все установленные компоненты, включая загрузчик и ядро, могут обновляться и заменяться теми же действиями менеджера пакетов, которые бы использовались на системе, установленной стандартным установщиком дистрибутива.


                  Скрипты находятся на сервере Github и доступны по ссылке.

                  Читать дальше →
                • Проверка синтезируемости красивых возможностей SystemVerilog на практике

                    В силу проектной обстановки нашей команде пришлось изучить возможности языка SystemVerilog, после чего нет-нет, а возникают жаркие споры о том, какая его часть синтезируема, а какая — нет. Чтобы положить конец домыслам, я провёл небольшую проверку на практике. Во время разработки тестового проекта ряд вопросов удалось снять копаясь в литературе, но всплыл один интересный момент, явного описания которого не нашлось. Чтобы исправить положение, я решил его задокументировать.

                    Итак. Имеем проект, максимально напичканный всяческими SytemVerilog-овскими штучками. Даже если кажется, что применение той или иной вещи не даёт особого выигрыша — это ошибочное впечатление, ведь главная задача «проекта» — именно изучить возможности SystemVerilog. И вот, у нас есть набор из нескольких модулей (конкретно у меня — это UART-приёмники), данные из которых следует «сливать» в единую шину, перебирая их по алгоритму RoundRobin (конкретно в случае с UART — сливаем накопленные данные в единую очередь, которая с другой стороны будет уходить в шину USB).

                    Читать дальше →
                  • Simula — 50 лет ООП

                    • Tutorial
                    Статья представляет собой очень краткое введение в Simula.

                    Simula ((SIMIUlation LAnguage) ), первый язык программирования с классами и объектами, незаслуженно почти забытый, но из которого выросло современное ООП в том виде, в котором оно присутствует в нашем коде. Это язык для имитационного моделирования реальности. Разработчики новых языков программирования «оглядывались» на Simula при добавлении механизмов объектно-ориентированного программирования в свой язык. Однако Simula упоминается настолько редко, что в русской википедии на момент публикации был только хеллоуворд, а в сети куча устаревших ссылок.



                    Бьерн Страуструп, говоря о причинах создания C++, сказал так: «Этот язык возник потому, что автору потребовалось написать программы моделирования, управляемые прерываниями. Язык SIMULA-67 идеально подходит для этого, если не учитывать эффективность.»
                    Читать дальше →
                    • +31
                    • 14,5k
                    • 6
                  • Нейронные сети, генетические алгоритмы и прочее… Мифы и реальность. Версия II

                      Прежде всего, я хотел бы поблагодарить всех, кто дал свои критические комментарии по первой версии статьи. Мне показалось, что написать версию два, а не просто оставить все как есть, было бы правильной идеей.
                       
                      Конечно же, искусственный интеллект уже существует!  Если посмотреть заголовки статей в популярных СМИ, названия и слоганы различных научных конференций на эту тему – безусловно это так. Нельзя не поверить, особенно когда очень этого хочется наконец-то оказаться в XXI веке — «настоящем», как это описывалось во всех научно-фантастических романах. Но так ли это? А если нет, то что существует на самом деле. В попытке разобраться в мифах и реалиях была написана эта статья.
                       
                      Первоначально хотелось начать как-то так: «впервые упоминание термина «Искусственный интеллект» появилось у Д. Мккарти в 1956 году на конференции в Дартмундском университете, основоположниками ИИ следует считать У.Мак-Каллока, У.Питса, Ф.Розенблата» и т.д. Однако, это уже слишком поздно и не совсем отвечает целям статьи, да и википедия опередила с таким началом.

                      Анализируя последние «победы» ИИ, а также критические статьи неизбежно приходишь к выводу, что все крутится вокруг нескольких общих особенностей. Одна часть статей критикует невозможность прохождения тестов, а другая полна патетики о «невероятных победах».  При этом игнорируется тот факт, что победы были достигнуты в узкоспециализированных задачах, где основным преимуществом машины была скорость переборов по базе фактов и «умении» видеть закономерности там, где человек просто-напросто быстро устает это делать. Блестящие примеры кластерного анализа в том или ином виде и формирование базы шаблонов-фактов. Всё это следствия, причины же в большинстве случаев или не анализируются совсем, или рассматриваются поверхностно.
                      Читать дальше →
                    • Использование TCL в разработке на FPGA

                        Всем привет! Давно не писал статьи на любимую тематику и наконец-то созрел на что-то более-менее приличное и стоящее. В этой статье речь пойдет об очень интересной задаче, с которой инженер-разработчик сталкивается чуть ли не каждый день. Предлагаю вам посмотреть, каким образом можно использовать всю мощь и простоту TCL скриптов для проектирования на FPGA. В данной статье описание базируется на ПЛИС фирмы Xilinx, но это не отменяет возможностей TCL скриптов для кристаллов ПЛИС других производителей.


                        Интересно? Поехали…
                        Читать дальше →
                      • Women's Day Gift by FPGA

                          Всем привет! В преддверии 8 марта решил сделать своей возлюбленной небольшой подарок с использованием тех инструментов, которыми чаще всего приходится пользоваться на работе. Имея немного свободного времени, я подумал, а почему бы не написать небольшую статью на хабре по этому поводу. Это отличная возможность поздравить всех дам и, в частности, немногочисленный женский состав сообщества хабрахабр. Статья написана "just for fun" и не имеет никакого научного вклада, не несёт большой смысловой нагрузки, но может быть полезна начинающим разработчикам в области ПЛИС. Я расскажу какие средства использованы для получения конечного результата и что из этого вообще получилось. В статье вы увидите мерцающие сердечки и бегущий текст на светодиодной матрице 8x8, которая управляется небольшой старенькой ПЛИС. В конце статьи вы найдете видео-демонстрацию совместной работы ПЛИС и матрицы светодиодов.


                          Читать дальше →
                          • +23
                          • 6,4k
                          • 9
                        • Простыми словами о преобразовании Фурье

                          Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

                          image (с) xkcd

                          Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
                          • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
                          • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
                          • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
                          • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
                          • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
                          • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
                          • Как по цифровой последовательности восстанавливают исходный сигнал


                          Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

                          Итак, приступим?
                        • Реализация узла БПФ с плавающей точкой на ПЛИС

                            Всем привет! В этой статье речь пойдет о реализации быстрого преобразования Фурье в формате с плавающей точкой на ПЛИС. Будут показаны основные особенности разработки ядра от самой первой стадии до готового конфигурируемого IP-ядра. В частности, будет проведено сравнение с готовыми ядрами фирмы Xilinx, показаны преимущества и недостатки тех или иных вариантов реализации. В статье будет рассказано о главной особенности ядра БПФ и ОБПФ — об отсутствии необходимости переводить данные в натуральный порядок после БПФ и ОБПФ для их совместной связки. В этой статье я постараюсь отразить всё тонкости реализации проекта под названием FP23FFTK, приведу реальные примеры использования готового ядра. Проект написан на языке VHDL и заточен под FPGA фирмы Xilinx последних семейств.


                            Читать дальше →
                            • +41
                            • 20,5k
                            • 5
                          • Подключение периферийных модулей к MIPSfpga, на примере клавиатуры Pmod KYPD

                            Здравствуйте! Мы одни из победителей хакатона MIPfpga, в этой статье расскажем, как подключать модули в систему на кристалле на основе MIPSfpga на примере клавиатуры Pmod KYPD. Также ознакомим с написанием программы для управления подключенных модулей.
                            image

                            → Описание клавиатуры найдете здесь

                            Pmod KYPD — 16-кнопочная клавиатура с цифрами в шестнадцатеричном формате (0-F). Опрос происходит способом поочередной подачи логического 0 на каждый столбец и считывания состояния строк. Если в момент опроса столбца одна из кнопок в нем нажата, соответствующая строка выдаст логическую 1.
                            Читать дальше →
                            • +18
                            • 3,4k
                            • 2
                          • MIPSfpga и SDRAM. Часть 1

                              На этой неделе я закончил работу по добавлению поддержки SDRAM в проект MIPSfpga-plus. Теперь при работе с MIPSFpga помимо блочной памяти, ограниченной ресурсами ПЛИС, доступно еще и внешнее ОЗУ.


                              Данная статья состоит из 2 частей:


                              Часть 1. Краткое описание модуля доступа к SDRAM. Пример использования.
                              Часть 2. Подробное описание работы с памятью, достаточное для того, чтобы в работе модуля смог разобраться человек, ранее не имевший дела с микросхемами ОЗУ. Список литературы.


                              Предполагается, что читатель как минимум:


                              • знаком с предметной областью в объеме учебника Харрис-энд-Харрис [1];
                              • имеет опыт программирования на C, ассемблере, использования gcc;
                              • имеет минимальный опыт работы с MIPSfpga. Не имея такого опыта, будет логичным начать с более простых вещей, и лишь затем думать о том, как использовать ОЗУ в своей системе.

                              Если вы уже опытный разработчик, то Часть 1 стоит пробежать глазами по диагонали, Часть 2 — не содержит для вас ничего нового. При этом вы можете принести несомненную пользу обществу, если добавите поддержку SDRAM для еще одной отладочной платы. На текущий момент она реализована только для Terasic DE10-Lite — одной из 9 плат, на которые в рамках проекта MIPSfpga-plus было портировано ядро MIPSfpga.

                              Читать дальше →