SlideShare a Scribd company logo
1 of 57
Download to read offline
Аппаратная реализация
видеофильтров на устройствах
  программируемой логики


           Сергей Грошев

     CS MSU Graphics & Media Lab
           (Video Group)
Outline

             Устройство FPGA
             Устройство Development Boards
             Разработка




                                              2
CS MSU Graphics & Media Lab (Video Group)
Устройство FPGA
          ПЛИС – программируемая логическая
          интегральная схема
          FPGA(Field Programmable Gate Array)
          разновидность ПЛИС
          В отличие от обычных цифровых микросхем,
          логика работы ПЛИС не определяется при
          изготовлении, а задаѐтся посредством
          программирования (проектирования). Для
          программирования используются языки Verilog,
          VHDL.
                                                         3
CS MSU Graphics & Media Lab (Video Group)
Устройство FPGA

         Архитектура кристалла FPGA состоит из пяти
         основных ввода/вывода (БВВ)
           блоков элементов:

           конфигурируемых логических блоков (КЛБ)

           блочной памяти

           модулей управления синхронизацией (DLL)

           трассировочных ресурсов




                                                      4
CS MSU Graphics & Media Lab (Video Group)
Структурная схема FPGA
                                              КЛБ
     Блоки
  ввода/вывода
                                            Блочная
                                             память
     DLL




                                                      5
CS MSU Graphics & Media Lab (Video Group)
Конфигурируемый
           логический блок
              КЛБ реализуют логические и регистровые
               функции
              КЛБ состоит из двух секций, каждая из
               которых состоит из:
                  4-входовых функциональных генераторов
                  логики ускоренного переноса
                  двух регистровых элементов
                  двух буферов с тремя состояниями



                                                           6
CS MSU Graphics & Media Lab (Video Group)
Структурная схема КЛБ
 Функциональный
    генератор



                                            Буфер



     Логика
  ускоренного
   переноса




                                                    7
CS MSU Graphics & Media Lab (Video Group)
Функциональный генератор
         Функциональные генераторы реализованы в виде 4-
         входовых таблиц преобразования (Look-Up Table -
         LUT)
         Использование LUT-элементов:
          собственно функциональный генератор
          синхронная память типа RAM размерностью 16x1
         бит
          из двух LUT-элементов реализовать
              синхронную RAM-память размерностью 16x2
               или 32x1 бит
              двухпортовая синхронная RAM-память
               размерностью 16x1 бит
                                                           8
CS MSU Graphics & Media Lab (Video Group)
Блоки ввода/вывода
        Блоки ввода/вывода осуществляют соединение внутренней
         логики кристалла с выводами корпуса микросхемы
        БВВ поддерживают 19 сигнальных стандартов ввода/вывода,
         включая дифференциальные стандарты LVDS, BLVDS и
         LVPECL. Достоинства:
           Дифференциальные стандарты LVDS и BLVDS позволяют
            коммутировать ПЛИС с другими микросхемами на плате без
            использования дополнительных конверторов или
            трансляторов.
           Дифференциальные стандарты более скоростные, чем
            однопроводные,
           Снижение энергопотребление кристалла и шумов

           Устраняются электромагнитные наводки.




                                                                     9
CS MSU Graphics & Media Lab (Video Group)
Поддерживаемые ПЛИС
             стандарты ввода/вывода
        Интерфейсы межкристального обмена
         o   LVTTL
         o   LVCMOS2
         o   LVCMOS18
         o   LVPECL

        Интерфейсы между
         платами
         o   PCI 33/66 MHz, 3,3 V           o   SSTL3-I & II
         o   HSTL-I                         o   LVDS
         o   GTL                            o   AGP-2X
         o   GTL+                           o   SSTL2-I & II
         o   HSTL-III & IV                  o   BLVDS
                                            o   CTT
                                                               10
CS MSU Graphics & Media Lab (Video Group)
Блочная память (Block RAM)
         Каждый блок памяти (4096 бит) - это синхронная
          двухпортовая RAM с независимым управлением для
          каждого порта
         Независимая конфигурация позволяет создавать
          преобразователи размерности шины




                                                       11
CS MSU Graphics & Media Lab (Video Group)
Блочная память (схема)




                                            12
CS MSU Graphics & Media Lab (Video Group)
Модули
           автоподстройки задержки (DLL)

         Полностью цифровая автоподстройка задержки
         (DLL) может устранять перекос задержек между
         синхросигналом на входном контакте микросхемы
         и сигналами на тактовых входах внутренних схем
         устройства путем введения дополнительной
         задержки (ДЗ).




                                                          13
CS MSU Graphics & Media Lab (Video Group)
Модули автоподстройки
           задержки (DLL)
          ДЗ вводится таким образом, чтобы фронты
           сигналов синхронизации достигали внутренних
           триггеров в точности на один период
           синхронизации позже их прихода на входной
           контакт

          модуль DLL может создавать четыре
           квадратурные фазы из исходного источника
           синхросигнала; удваивать частоту синхросигнала
           или делить эту частоту на 1.5, 2, 2.5, 3, 4, 5, 8
           или 16.
                                                               14
CS MSU Graphics & Media Lab (Video Group)
Outline

             Устройство ПЛИС
             Устройство Development Boards
             Разработка




                                              15
CS MSU Graphics & Media Lab (Video Group)
Устройство Development Boards
        Development Board – специальная плата
           (внешняя или внутренняя на PCI/PCI-Ex)
           для разработки программ под ПЛИС.

        Состав:
          Одна или несколько ПЛИС
          Микросхема процессора (опционально)
          Различные порты для подключения и их
           контроллеры

                                                    16
CS MSU Graphics & Media Lab (Video Group)
Устройство ПЛИС
           Общий вид Development Board

                         Altera’s DSP Development Kit   Stratix II (FPGA)
 APS Event Receiver
    Connection

ColdFire IOC
                                                                      Two 14-bit
                                                                        DACs

Transition Board

                                                                            Two 12-bit
                                                                              ADCs




                        Serial      Network    High Res A/D Module Connection
                                                                                  17
CS MSU Graphics & Media Lab (Video Group)
Конфигурация через
           порт JTAG


     CAPTURE


       SHIFT



      UPDATE




                                            18
CS MSU Graphics & Media Lab (Video Group)
Outline

             Устройство ПЛИС
             Устройство Development Boards
             Разработка программ




                                              19
CS MSU Graphics & Media Lab (Video Group)
Разработка программ
                  Принцип работы FPGA
                            ≠
                принцип работы процессора

  Возникают проблемы:
     вопросы архитектуры (до начала разработки)
     выбор языка
                                             FPGA
     разделение вычислений
                                            Processor
                                                        20
CS MSU Graphics & Media Lab (Video Group)
Начало разработки
              Перед началом разработки под
               ПЛИС следует выяснить детали:
                  Логическое устройство
                  Ввод/вывод




CS MSU Graphics & Media Lab (Video Group)
Логические элементы
        Количество входов
        Количество рабочих функций
           У всех ли функций n входов

           Как входы микросхемы связаны с
            входами функций
        Специальная логика
           Сумматор и т.д.

        Регистры

                                             22
CS MSU Graphics & Media Lab (Video Group)
Блоки ввода вывода

       Сколько ножек микросхемы
       Индивидуальное или групповое
        программирование входов
       Все ли входы могут работать со всеми
        функциями



                                               23
CS MSU Graphics & Media Lab (Video Group)
Outline

              Устройство ПЛИС
              Устройство Development Boards
              Разработка программ




                                               24
CS MSU Graphics & Media Lab (Video Group)
Схема автоматической
  генерации кода для FPGA
CS MSU Graphics & Media Lab (Video Group)
Инструменты
           разработки Altera
              Mentor Graphics Catapult C Synthesis
              Quartus II
                  Симулирование и компилирование
                   Verilog в gates
              Nios-II Development Kit
                  Компилирование С-кода в NIOS-код
              ModelSim
                  Verilog симулятор

CS MSU Graphics & Media Lab (Video Group)
Outline

             Устройство ПЛИС
             Устройство Development Boards
             Разработка программ
             CatapultC Synthesis
             Обзор пакета QuartusII
             Обзор NIOS Development Kit
             Оптимизация работы

                                              27
CS MSU Graphics & Media Lab (Video Group)
Catapult C Synthesis
              использование системы Catapult C
               Synthesis позволяет автоматически
               синтезировать RTLописание из
               исходного описания алгоритмов на
               C/C++.




CS MSU Graphics & Media Lab (Video Group)
Catapult C Synthesis
              основная нагрузка по отладке и верификации
               проекта переносится на более высокий уровень
               абстракции
              анализ альтернативных вариантов реализации
               алгоритмов на C/C++
              описание проекта на C/C++ не привязано к
               выбору микроархитектуры и конкретной
               технологии реализации.
              В зависимости от потребностей текущей
               разработки одно и то же описание может быть
               использовано как для реализации проекта на базе
               FPGA различных типов, так и в виде ASIC.

CS MSU Graphics & Media Lab (Video Group)
Catapult C Synthesis




CS MSU Graphics & Media Lab (Video Group)
Catapult C Synthesis




CS MSU Graphics & Media Lab (Video Group)
Outline

             Устройство ПЛИС
             Устройство Development Boards
             Разработка программ
             Catapult
                     C Synthesis
             Обзор пакета QuartusII
             Обзор NIOS Development Kit
             Оптимизация работы

                                              32
CS MSU Graphics & Media Lab (Video Group)
Altera Quartus II
           Последовательность разработки
               1.    Create a “new project”
               2.    Add Verilog code to the project
               3.    Edit your Verilog code
               4.    Compile it
               5.    Simulate it
               6.    Debug it
               7.    Go to step 3


CS MSU Graphics & Media Lab (Video Group)
Quartus: новый проект
           File  New Project Wizard
                  Next
                  Выбрать каталог
                       Назвать project (eg, my_xor)
                       Назвать top-level design file (eg, my_xor)
                  Добавить файлы: eg, my_xor.v
                  Нажать Next несколько раз
                       Выбор „Cyclone‟ device family
                       Выбор „7‟ as the speed grade, then select „1C20F400C7‟
                  Finish


CS MSU Graphics & Media Lab (Video Group)
Verilog Example: XOR Gate
    module my_xor( C, A, B );
       output C;
                              Operation               Operator
       input A, B;               ~                    Bitwise NOT
                                               &      Bitwise AND
                                                |     Bitwise OR
       assign C = (A ^ B);
                                               ^      Bitwise XOR
    endmodule


    Convention: Outputs come first in the “parameter list”
CS MSU Graphics & Media Lab (Video Group)
Quartus: Компилирование и
           симулирование
          Processing  Start Compilation
               (wait a while)

          Open my_xor.vwf
               Right-click in the „Name‟ column (white area)
               Insert Node or Bus…
                     Node Finder…
                            Press List button
                            Under „Nodes Found‟, choose inputs „A‟ and „B‟
                            Press „>‟ button to move them to „Selected nodes‟
                            Press OK
                     Press OK
               You now have two input waveforms
                     Try to change their value (select region, right-click or press buttons)
               Save

          Processing  Start Simulation
               (wait a bit)

CS MSU Graphics & Media Lab (Video Group)
Quartus:Timing Waveforms



                                            inputs
                                             output   gate delay    glitch
                                                      (~8ns here)




CS MSU Graphics & Media Lab (Video Group)
Quartus: Быстрое компилирование и
           симулирование – Using Functional Mode


        Processing  Generate Functional
         Simulation Netlist

        Assignments  Settings…
             Select Simulator
             Simulation mode: Functional

CS MSU Graphics & Media Lab (Video Group)
Quartus



                                            Стало лучше




CS MSU Graphics & Media Lab (Video Group)
Outline

             Устройство ПЛИС
             Устройство Development Boards
             Разработка программ
             Обзор пакета QuartusII
             Обзор NIOS Development Kit
             Оптимизация работы
             Использование MAX+PLUSII

                                              40
CS MSU Graphics & Media Lab (Video Group)
Altera Nios II
           NIOS Development Kit (NDK)
         В составе четыре ключевых компонента:
              NIOS II IDE
                   Integrated Development Environment for Windows, GUI-based
                    programming environment
                   Based on Eclipse http://www.eclipse.org

              Cygwin http://www.cygwin.com
                   “Linux” layer on top of Windows

              GNU C Compiler Tools „gcc‟ http://gcc.gnu.org
                   A popular, free C compiler that targets many different CPUs
                   Integrated into the IDE

              Documentation
                   Click „full documentation‟ under item 4.
                   Click „The Nios II Processor Reference Handbook‟


CS MSU Graphics & Media Lab (Video Group)
NIOS IDE: New Project
     Этапы создания нового проекта
         1.    Выбор типа проекта
                  Altera NIOS II, C/C++ Application, Next
         2.    Выбрать шаблон: Dhrystone
         3.    Выбрать Железо: Browse…
                  (Cyclone, Aria GX, Spartain etc.)
         4.    Next/Finish


CS MSU Graphics & Media Lab (Video Group)
NIOS Cygwin
           Функциональность:
                Возможность использования Unix функций в
                 коде
                Unix утилиты: ls, less, grep, sed, awk, etc…

           Применение
                Использование gcc для компиляции C в NIOS
                 код
                Возможность делать assemble/disassemble
                 NIOS кода


CS MSU Graphics & Media Lab (Video Group)
GCC and Objdump
      Компилирование и дизассемблинг:

   % nios2-elf-gcc –O –c dhrystone.c
      compiles program, optimizes code, writes object file dhrystone.o

   % nios2-elf-objdump –S dhrystone.o
      disassembles object file (or executable file) to screen (stdout)
      shows instructions, labels, memory addresses, and binary machine code

      Компилирование для сборки и сборка:
   % nios2-elf-gcc –O –S dhrystone.c
      compiles program, optimizes code, writes assembly file dhrystone.s
      shows labels and instructions only (no addresses or binary code)

   % nios2-elf-gcc –c dhrystone.s
      assembles program, writes object file dhrystone.o
CS MSU Graphics & Media Lab (Video Group)
Пример NIOS Assembly
  int main()                         .file      "fib.c"
  {                    C Code                .section         .text          Assembly Code
      int a = 1;                             .align 3
      int b = 1;                             .global main
      int c;                                 .type    main, @function
      int i;                         main:
                                             addi     sp,   sp, -8
      for( i=2; i <= 100; i++ ) {            movi     r4,   1
          c = a + b;                         stw      fp,   4(sp)
          a = b;                             mov      r5,   r4
          b = c;                             mov      fp,   sp
      }                                      movi     r3,   98
                                     .L6:
      return c;                              add      r2,   r5, r4
  }                                          addi     r3,   r3, -1
                                             mov      r5,   r4
                                             mov      r4,   r2
  Run these commands:                        bge      r3,   zero, .L6
  % nios2-elf-gcc –O2 –S fib.c
  % cat fib.s                                ldw      fp, 4(sp)
                                             addi     sp, sp, 8
  Output is shown in next column.            ret
                                             .size    main, .-main
  % nios2-elf-gcc –c fib.s                   .ident   "GCC: (GNU) 3.3.3 (Altera Nios II 1.0 b316)"

CS MSU Graphics & Media Lab (Video Group)
Пример NIOS Disassembly
  int main()                         fib.o:      file format elf32-littlenios2
  {
      int a = 1;
                        C Code       Disassembly of section .text:
      int b = 1;                                                     Disassembled Code
      int c;                         00000000 <main>:
      int i;                            0:   defffe04         addi    sp,sp,-8
                                        4:   01000044         movi    r4,1
      for( i=2; i <= 100; i++ ) {       8:   df000115         stw     fp,4(sp)
          c = a + b;                    c:   200b883a         mov     r5,r4
          a = b;                       10:   d839883a         mov     fp,sp
          b = c;
      }                                14:    00c01884        movi    r3,98

      return c;                        18:    2905883a        add     r2,r5,r4
  }                                    1c:    18ffffc4        addi    r3,r3,-1
                                       20:    200b883a        mov     r5,r4
                                       24:    1009883a        mov     r4,r2
  Run these commands:                  28:    183ffb0e        bge     r3,zero,18 <main+0x18>
  % nios2-elf-gcc –O2 –c fib.c
  % nios2-elf-objdump –S fib.o         2c:    df000117        ldw     fp,4(sp)
                                       30:    dec00204        addi    sp,sp,8
  Output is shown in next column.      34:    f800283a        ret



CS MSU Graphics & Media Lab (Video Group)
Процесс написания
           NIOS программы
     Последовательность действий
         1.    Написание на C
              % vi foo.c
         2.    Компилирование в assembly code
              % nios2-elf-gcc –O –S foo.c
         3.    Редактирование assembly code (напр. удаление
               неподдерживаемых инструкций)
              % vi foo.s
         4.    Сборка (ассемблирование)
              % nios2-elf-gcc –c foo.s
         5.    Дизассемлирование
              % nios2-elf-objdump –S foo.o > foo.txt
         6.    Извлечение бинарного машинного кода
              % vi foo.txt
CS MSU Graphics & Media Lab (Video Group)
Outline

             Устройство ПЛИС
             Устройство Development Boards
             Разработка программ
             Обзор пакета QuartusII
             Обзор NIOS Development Kit
             Оптимизация работы



                                              48
CS MSU Graphics & Media Lab (Video Group)
Последовательность
           работы программы
      Longest Path = 15 ns
      fMAX = 73 MHz
                             10 ns          5 ns            5 ns
                                       s1          reg s2

                              L1            L2              L3




    clock
                  Logic
                  Register
CS MSU Graphics & Media Lab (Video Group)
Последовательность
           работы программы
               Longest Path = 10 ns                                   Оптимальнее
               fMAX = 100 MHz
               Logic in L2 Pushed Forward Across Register
               All Signals in L2 Are Delayed by One Cycle & “_Rd” is Appended to Their
                Original Names
                             10 ns                         5 ns
                                        s1         s1_Rd          s2
                                                                       5 ns

                              L1                           L2          L3
                                             reg



    clock
                  Logic
                  Register
CS MSU Graphics & Media Lab (Video Group)
Экономия регистров
                      reg                      s1
          in1                                                            out
                                    A               A
                                    B               B
          in2                       C

                                        LUT1            LUT2
          in3



     clock
                                                           tco = Slow
                                                           tsu = Fast
      in_b


CS MSU Graphics & Media Lab (Video Group)
Экономия регистров

                                     s1_Ra   reg   s1
             in1                                                            out
                         A                                  A
                         B                                  B
                         C
             in2
                             LUT1                               LUT2
             in3
                                                       Improved tco
     clock                                             tsu Is Slower
                                                       reg Is Advanced So Output
                                                        of LUT1 Is Advanced by
      in_b
                                                        One Cycle
                                                       Eliminated 2 Registers
CS MSU Graphics & Media Lab (Video Group)
Outline
             Устройство ПЛИС
             Устройство Development Boards
             Разработка программ
             Обзор пакета QuartusII
             Обзор NIOS Development Kit
             Оптимизация работы
             Использование MAX+PLUSII


                                              53
CS MSU Graphics & Media Lab (Video Group)
MAX+PLUS II Работа
             (ADT PALACE Compiler Enabled)

                                       Customer
                                      Configuration

                                                       ADT PALACE
                                                         Compiler
                                                             .tdo
           MAX+PLUS II             Compare Results     MAX+PLUS II
            Compiler                                    Compiler


                                     MAX+PLUS II
                                       Results
     Customer Configuration & ADT PALACE Configuration Компилируются
      автоматически
     MAX+PLUS II выдает результаты через GREATER fMAX on Slowest
      Clock
CS MSU Graphics & Media Lab (Video Group)
MAX+PLUS II
           Vs. Quartus II for MAX
          MAX+PLUS II v10.2 Provides Best
           Average fMAX Performance at the Expense
           of Longer Compile Times
          Quartus II v2.1 Uses Fewest Macrocells
           With Default Settings




CS MSU Graphics & Media Lab (Video Group)
Рекомендации
          Quartus II использовать для новых 2.5V
           and 3.3V FPGA
          MAX+PLUS II использовать для
           несложных проектов и 5-V MAX FPGA




CS MSU Graphics & Media Lab (Video Group)
Вопросы




                                            ?
CS MSU Graphics & Media Lab (Video Group)

More Related Content

Similar to Архитектура и программирование на fpga

35
3535
35JIuc
 
Леонид Воронцов -- инженерия больших радиоэлектронных систем
Леонид Воронцов -- инженерия больших радиоэлектронных системЛеонид Воронцов -- инженерия больших радиоэлектронных систем
Леонид Воронцов -- инженерия больших радиоэлектронных системAnatoly Levenchuk
 
[DD] 8. Automatic machines
[DD] 8. Automatic machines[DD] 8. Automatic machines
[DD] 8. Automatic machinesGabit Altybaev
 
[DD] 9. Programmable Logic IC
[DD] 9. Programmable Logic IC[DD] 9. Programmable Logic IC
[DD] 9. Programmable Logic ICGabit Altybaev
 
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...VThn18
 
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камерБыстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камерMSU GML VideoGroup
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Ontico
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)Smolensk Computer Science Club
 
Hpc 2.26.03.2013.
Hpc 2.26.03.2013.Hpc 2.26.03.2013.
Hpc 2.26.03.2013.Boris Kizko
 
Программирование на медиапроцессорах Philips Nexperia
Программирование на медиапроцессорах Philips NexperiaПрограммирование на медиапроцессорах Philips Nexperia
Программирование на медиапроцессорах Philips NexperiaMSU GML VideoGroup
 
58
5858
58JIuc
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAMikhail Kurnosov
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageDEPO Computers
 
Примеры применения Cisco WAE на сети оператора связи
Примеры применения Cisco WAE на сети оператора связиПримеры применения Cisco WAE на сети оператора связи
Примеры применения Cisco WAE на сети оператора связиCisco Russia
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPUMikhail Kurnosov
 
Технические средства реализации информационных процессов
Технические средства реализации информационных процессовТехнические средства реализации информационных процессов
Технические средства реализации информационных процессовstudent_SSGA
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
О создании компилятора с высокоуровневого языка на компьютер с программируемо...
О создании компилятора с высокоуровневого языка на компьютер с программируемо...О создании компилятора с высокоуровневого языка на компьютер с программируемо...
О создании компилятора с высокоуровневого языка на компьютер с программируемо...CEE-SEC(R)
 
Aricent ISS integration for Marvell - requirements to candidates
Aricent ISS integration for Marvell - requirements to candidatesAricent ISS integration for Marvell - requirements to candidates
Aricent ISS integration for Marvell - requirements to candidatesVolodymyr Khomenko
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 

Similar to Архитектура и программирование на fpga (20)

35
3535
35
 
Леонид Воронцов -- инженерия больших радиоэлектронных систем
Леонид Воронцов -- инженерия больших радиоэлектронных системЛеонид Воронцов -- инженерия больших радиоэлектронных систем
Леонид Воронцов -- инженерия больших радиоэлектронных систем
 
[DD] 8. Automatic machines
[DD] 8. Automatic machines[DD] 8. Automatic machines
[DD] 8. Automatic machines
 
[DD] 9. Programmable Logic IC
[DD] 9. Programmable Logic IC[DD] 9. Programmable Logic IC
[DD] 9. Programmable Logic IC
 
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
Лекция 2 Разработка программно-аппаратного обеспечения информационных и автом...
 
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камерБыстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
Быстрое начало работы с VTune. Обзор новинок DSP.Super-Resolution для ToF-камер
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 
Hpc 2.26.03.2013.
Hpc 2.26.03.2013.Hpc 2.26.03.2013.
Hpc 2.26.03.2013.
 
Программирование на медиапроцессорах Philips Nexperia
Программирование на медиапроцессорах Philips NexperiaПрограммирование на медиапроцессорах Philips Nexperia
Программирование на медиапроцессорах Philips Nexperia
 
58
5858
58
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
 
Современные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO StorageСовременные серверы DEPO Storm и системы хранения DEPO Storage
Современные серверы DEPO Storm и системы хранения DEPO Storage
 
Примеры применения Cisco WAE на сети оператора связи
Примеры применения Cisco WAE на сети оператора связиПримеры применения Cisco WAE на сети оператора связи
Примеры применения Cisco WAE на сети оператора связи
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPU
 
Технические средства реализации информационных процессов
Технические средства реализации информационных процессовТехнические средства реализации информационных процессов
Технические средства реализации информационных процессов
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
О создании компилятора с высокоуровневого языка на компьютер с программируемо...
О создании компилятора с высокоуровневого языка на компьютер с программируемо...О создании компилятора с высокоуровневого языка на компьютер с программируемо...
О создании компилятора с высокоуровневого языка на компьютер с программируемо...
 
Aricent ISS integration for Marvell - requirements to candidates
Aricent ISS integration for Marvell - requirements to candidatesAricent ISS integration for Marvell - requirements to candidates
Aricent ISS integration for Marvell - requirements to candidates
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 

More from MSU GML VideoGroup

Обзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоОбзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоMSU GML VideoGroup
 
Некоторые методы сегментации видео
Некоторые методы сегментации видеоНекоторые методы сегментации видео
Некоторые методы сегментации видеоMSU GML VideoGroup
 
Обзор методов сравнения фильмов
Обзор методов сравнения фильмовОбзор методов сравнения фильмов
Обзор методов сравнения фильмовMSU GML VideoGroup
 
Обзор методов оценки True-motion
Обзор методов оценки True-motionОбзор методов оценки True-motion
Обзор методов оценки True-motionMSU GML VideoGroup
 
Методы цветокоррекции стереовидео
Методы цветокоррекции стереовидеоМетоды цветокоррекции стереовидео
Методы цветокоррекции стереовидеоMSU GML VideoGroup
 
Некоторые методы сопоставления стерео
Некоторые методы сопоставления стереоНекоторые методы сопоставления стерео
Некоторые методы сопоставления стереоMSU GML VideoGroup
 
Некоторые алгоритмы многомерной обработки изображений
Некоторые алгоритмы многомерной обработки изображенийНекоторые алгоритмы многомерной обработки изображений
Некоторые алгоритмы многомерной обработки изображенийMSU GML VideoGroup
 
Некоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоНекоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоMSU GML VideoGroup
 
Способы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиСпособы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиMSU GML VideoGroup
 
Некоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаНекоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаMSU GML VideoGroup
 
Обзор методов сопоставления шаблона и изображения
Обзор методов сопоставления шаблона и изображенияОбзор методов сопоставления шаблона и изображения
Обзор методов сопоставления шаблона и изображенияMSU GML VideoGroup
 
Способы построения saliency map
Способы построения saliency mapСпособы построения saliency map
Способы построения saliency mapMSU GML VideoGroup
 
Research & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиResearch & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиMSU GML VideoGroup
 
Обзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовОбзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовMSU GML VideoGroup
 
Некоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныНекоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныMSU GML VideoGroup
 
Использование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоИспользование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоMSU GML VideoGroup
 
Обзор докладов конференции IC3D 2012
Обзор докладов конференции IC3D 2012Обзор докладов конференции IC3D 2012
Обзор докладов конференции IC3D 2012MSU GML VideoGroup
 
Обзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCОбзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCMSU GML VideoGroup
 
Алгоритмы для задачи матирования
Алгоритмы для задачи матированияАлгоритмы для задачи матирования
Алгоритмы для задачи матированияMSU GML VideoGroup
 
Исправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоИсправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоMSU GML VideoGroup
 

More from MSU GML VideoGroup (20)

Обзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видеоОбзор алгоритмов генерации ракурсов для многоракурсных видео
Обзор алгоритмов генерации ракурсов для многоракурсных видео
 
Некоторые методы сегментации видео
Некоторые методы сегментации видеоНекоторые методы сегментации видео
Некоторые методы сегментации видео
 
Обзор методов сравнения фильмов
Обзор методов сравнения фильмовОбзор методов сравнения фильмов
Обзор методов сравнения фильмов
 
Обзор методов оценки True-motion
Обзор методов оценки True-motionОбзор методов оценки True-motion
Обзор методов оценки True-motion
 
Методы цветокоррекции стереовидео
Методы цветокоррекции стереовидеоМетоды цветокоррекции стереовидео
Методы цветокоррекции стереовидео
 
Некоторые методы сопоставления стерео
Некоторые методы сопоставления стереоНекоторые методы сопоставления стерео
Некоторые методы сопоставления стерео
 
Некоторые алгоритмы многомерной обработки изображений
Некоторые алгоритмы многомерной обработки изображенийНекоторые алгоритмы многомерной обработки изображений
Некоторые алгоритмы многомерной обработки изображений
 
Некоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видеоНекоторые методы обнаружения артефактов 3D-видео
Некоторые методы обнаружения артефактов 3D-видео
 
Способы построения и оценки карт салиентности
Способы построения и оценки карт салиентностиСпособы построения и оценки карт салиентности
Способы построения и оценки карт салиентности
 
Некоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кодаНекоторые методы проектирования и оптимизации кода
Некоторые методы проектирования и оптимизации кода
 
Обзор методов сопоставления шаблона и изображения
Обзор методов сопоставления шаблона и изображенияОбзор методов сопоставления шаблона и изображения
Обзор методов сопоставления шаблона и изображения
 
Способы построения saliency map
Способы построения saliency mapСпособы построения saliency map
Способы построения saliency map
 
Research & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибкиResearch & Development методы, проблемы и ошибки
Research & Development методы, проблемы и ошибки
 
Обзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектовОбзор алгоритмов трекинга объектов
Обзор алгоритмов трекинга объектов
 
Некоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубиныНекоторые методы генерации многоракурсных изображений на основе карты глубины
Некоторые методы генерации многоракурсных изображений на основе карты глубины
 
Использование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видеоИспользование областей перекрытия в задаче сегментации видео
Использование областей перекрытия в задаче сегментации видео
 
Обзор докладов конференции IC3D 2012
Обзор докладов конференции IC3D 2012Обзор докладов конференции IC3D 2012
Обзор докладов конференции IC3D 2012
 
Обзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVCОбзор стандарта H.265/HEVC
Обзор стандарта H.265/HEVC
 
Алгоритмы для задачи матирования
Алгоритмы для задачи матированияАлгоритмы для задачи матирования
Алгоритмы для задачи матирования
 
Исправление различий резкости в 3D видео
Исправление различий резкости в 3D видеоИсправление различий резкости в 3D видео
Исправление различий резкости в 3D видео
 

Архитектура и программирование на fpga

  • 1. Аппаратная реализация видеофильтров на устройствах программируемой логики Сергей Грошев CS MSU Graphics & Media Lab (Video Group)
  • 2. Outline  Устройство FPGA  Устройство Development Boards  Разработка 2 CS MSU Graphics & Media Lab (Video Group)
  • 3. Устройство FPGA ПЛИС – программируемая логическая интегральная схема FPGA(Field Programmable Gate Array) разновидность ПЛИС В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при изготовлении, а задаѐтся посредством программирования (проектирования). Для программирования используются языки Verilog, VHDL. 3 CS MSU Graphics & Media Lab (Video Group)
  • 4. Устройство FPGA Архитектура кристалла FPGA состоит из пяти основных ввода/вывода (БВВ)  блоков элементов:  конфигурируемых логических блоков (КЛБ)  блочной памяти  модулей управления синхронизацией (DLL)  трассировочных ресурсов 4 CS MSU Graphics & Media Lab (Video Group)
  • 5. Структурная схема FPGA КЛБ Блоки ввода/вывода Блочная память DLL 5 CS MSU Graphics & Media Lab (Video Group)
  • 6. Конфигурируемый логический блок  КЛБ реализуют логические и регистровые функции  КЛБ состоит из двух секций, каждая из которых состоит из:  4-входовых функциональных генераторов  логики ускоренного переноса  двух регистровых элементов  двух буферов с тремя состояниями 6 CS MSU Graphics & Media Lab (Video Group)
  • 7. Структурная схема КЛБ Функциональный генератор Буфер Логика ускоренного переноса 7 CS MSU Graphics & Media Lab (Video Group)
  • 8. Функциональный генератор Функциональные генераторы реализованы в виде 4- входовых таблиц преобразования (Look-Up Table - LUT) Использование LUT-элементов:  собственно функциональный генератор  синхронная память типа RAM размерностью 16x1 бит  из двух LUT-элементов реализовать  синхронную RAM-память размерностью 16x2 или 32x1 бит  двухпортовая синхронная RAM-память размерностью 16x1 бит 8 CS MSU Graphics & Media Lab (Video Group)
  • 9. Блоки ввода/вывода  Блоки ввода/вывода осуществляют соединение внутренней логики кристалла с выводами корпуса микросхемы  БВВ поддерживают 19 сигнальных стандартов ввода/вывода, включая дифференциальные стандарты LVDS, BLVDS и LVPECL. Достоинства:  Дифференциальные стандарты LVDS и BLVDS позволяют коммутировать ПЛИС с другими микросхемами на плате без использования дополнительных конверторов или трансляторов.  Дифференциальные стандарты более скоростные, чем однопроводные,  Снижение энергопотребление кристалла и шумов  Устраняются электромагнитные наводки. 9 CS MSU Graphics & Media Lab (Video Group)
  • 10. Поддерживаемые ПЛИС стандарты ввода/вывода  Интерфейсы межкристального обмена o LVTTL o LVCMOS2 o LVCMOS18 o LVPECL  Интерфейсы между платами o PCI 33/66 MHz, 3,3 V o SSTL3-I & II o HSTL-I o LVDS o GTL o AGP-2X o GTL+ o SSTL2-I & II o HSTL-III & IV o BLVDS o CTT 10 CS MSU Graphics & Media Lab (Video Group)
  • 11. Блочная память (Block RAM)  Каждый блок памяти (4096 бит) - это синхронная двухпортовая RAM с независимым управлением для каждого порта  Независимая конфигурация позволяет создавать преобразователи размерности шины 11 CS MSU Graphics & Media Lab (Video Group)
  • 12. Блочная память (схема) 12 CS MSU Graphics & Media Lab (Video Group)
  • 13. Модули автоподстройки задержки (DLL) Полностью цифровая автоподстройка задержки (DLL) может устранять перекос задержек между синхросигналом на входном контакте микросхемы и сигналами на тактовых входах внутренних схем устройства путем введения дополнительной задержки (ДЗ). 13 CS MSU Graphics & Media Lab (Video Group)
  • 14. Модули автоподстройки задержки (DLL)  ДЗ вводится таким образом, чтобы фронты сигналов синхронизации достигали внутренних триггеров в точности на один период синхронизации позже их прихода на входной контакт  модуль DLL может создавать четыре квадратурные фазы из исходного источника синхросигнала; удваивать частоту синхросигнала или делить эту частоту на 1.5, 2, 2.5, 3, 4, 5, 8 или 16. 14 CS MSU Graphics & Media Lab (Video Group)
  • 15. Outline  Устройство ПЛИС  Устройство Development Boards  Разработка 15 CS MSU Graphics & Media Lab (Video Group)
  • 16. Устройство Development Boards Development Board – специальная плата (внешняя или внутренняя на PCI/PCI-Ex) для разработки программ под ПЛИС. Состав:  Одна или несколько ПЛИС  Микросхема процессора (опционально)  Различные порты для подключения и их контроллеры 16 CS MSU Graphics & Media Lab (Video Group)
  • 17. Устройство ПЛИС Общий вид Development Board Altera’s DSP Development Kit Stratix II (FPGA) APS Event Receiver Connection ColdFire IOC Two 14-bit DACs Transition Board Two 12-bit ADCs Serial Network High Res A/D Module Connection 17 CS MSU Graphics & Media Lab (Video Group)
  • 18. Конфигурация через порт JTAG CAPTURE SHIFT UPDATE 18 CS MSU Graphics & Media Lab (Video Group)
  • 19. Outline  Устройство ПЛИС  Устройство Development Boards  Разработка программ 19 CS MSU Graphics & Media Lab (Video Group)
  • 20. Разработка программ Принцип работы FPGA ≠ принцип работы процессора Возникают проблемы:  вопросы архитектуры (до начала разработки)  выбор языка FPGA  разделение вычислений Processor 20 CS MSU Graphics & Media Lab (Video Group)
  • 21. Начало разработки  Перед началом разработки под ПЛИС следует выяснить детали:  Логическое устройство  Ввод/вывод CS MSU Graphics & Media Lab (Video Group)
  • 22. Логические элементы  Количество входов  Количество рабочих функций  У всех ли функций n входов  Как входы микросхемы связаны с входами функций  Специальная логика  Сумматор и т.д.  Регистры 22 CS MSU Graphics & Media Lab (Video Group)
  • 23. Блоки ввода вывода  Сколько ножек микросхемы  Индивидуальное или групповое программирование входов  Все ли входы могут работать со всеми функциями 23 CS MSU Graphics & Media Lab (Video Group)
  • 24. Outline  Устройство ПЛИС  Устройство Development Boards  Разработка программ 24 CS MSU Graphics & Media Lab (Video Group)
  • 25. Схема автоматической генерации кода для FPGA CS MSU Graphics & Media Lab (Video Group)
  • 26. Инструменты разработки Altera  Mentor Graphics Catapult C Synthesis  Quartus II  Симулирование и компилирование Verilog в gates  Nios-II Development Kit  Компилирование С-кода в NIOS-код  ModelSim  Verilog симулятор CS MSU Graphics & Media Lab (Video Group)
  • 27. Outline  Устройство ПЛИС  Устройство Development Boards  Разработка программ  CatapultC Synthesis  Обзор пакета QuartusII  Обзор NIOS Development Kit  Оптимизация работы 27 CS MSU Graphics & Media Lab (Video Group)
  • 28. Catapult C Synthesis  использование системы Catapult C Synthesis позволяет автоматически синтезировать RTLописание из исходного описания алгоритмов на C/C++. CS MSU Graphics & Media Lab (Video Group)
  • 29. Catapult C Synthesis  основная нагрузка по отладке и верификации проекта переносится на более высокий уровень абстракции  анализ альтернативных вариантов реализации алгоритмов на C/C++  описание проекта на C/C++ не привязано к выбору микроархитектуры и конкретной технологии реализации.  В зависимости от потребностей текущей разработки одно и то же описание может быть использовано как для реализации проекта на базе FPGA различных типов, так и в виде ASIC. CS MSU Graphics & Media Lab (Video Group)
  • 30. Catapult C Synthesis CS MSU Graphics & Media Lab (Video Group)
  • 31. Catapult C Synthesis CS MSU Graphics & Media Lab (Video Group)
  • 32. Outline  Устройство ПЛИС  Устройство Development Boards  Разработка программ  Catapult C Synthesis  Обзор пакета QuartusII  Обзор NIOS Development Kit  Оптимизация работы 32 CS MSU Graphics & Media Lab (Video Group)
  • 33. Altera Quartus II Последовательность разработки 1. Create a “new project” 2. Add Verilog code to the project 3. Edit your Verilog code 4. Compile it 5. Simulate it 6. Debug it 7. Go to step 3 CS MSU Graphics & Media Lab (Video Group)
  • 34. Quartus: новый проект File  New Project Wizard  Next  Выбрать каталог  Назвать project (eg, my_xor)  Назвать top-level design file (eg, my_xor)  Добавить файлы: eg, my_xor.v  Нажать Next несколько раз  Выбор „Cyclone‟ device family  Выбор „7‟ as the speed grade, then select „1C20F400C7‟  Finish CS MSU Graphics & Media Lab (Video Group)
  • 35. Verilog Example: XOR Gate module my_xor( C, A, B ); output C; Operation Operator input A, B; ~ Bitwise NOT & Bitwise AND | Bitwise OR assign C = (A ^ B); ^ Bitwise XOR endmodule Convention: Outputs come first in the “parameter list” CS MSU Graphics & Media Lab (Video Group)
  • 36. Quartus: Компилирование и симулирование  Processing  Start Compilation  (wait a while)  Open my_xor.vwf  Right-click in the „Name‟ column (white area)  Insert Node or Bus…  Node Finder…  Press List button  Under „Nodes Found‟, choose inputs „A‟ and „B‟  Press „>‟ button to move them to „Selected nodes‟  Press OK  Press OK  You now have two input waveforms  Try to change their value (select region, right-click or press buttons)  Save  Processing  Start Simulation  (wait a bit) CS MSU Graphics & Media Lab (Video Group)
  • 37. Quartus:Timing Waveforms inputs output gate delay glitch (~8ns here) CS MSU Graphics & Media Lab (Video Group)
  • 38. Quartus: Быстрое компилирование и симулирование – Using Functional Mode  Processing  Generate Functional Simulation Netlist  Assignments  Settings…  Select Simulator  Simulation mode: Functional CS MSU Graphics & Media Lab (Video Group)
  • 39. Quartus Стало лучше CS MSU Graphics & Media Lab (Video Group)
  • 40. Outline  Устройство ПЛИС  Устройство Development Boards  Разработка программ  Обзор пакета QuartusII  Обзор NIOS Development Kit  Оптимизация работы  Использование MAX+PLUSII 40 CS MSU Graphics & Media Lab (Video Group)
  • 41. Altera Nios II NIOS Development Kit (NDK)  В составе четыре ключевых компонента:  NIOS II IDE  Integrated Development Environment for Windows, GUI-based programming environment  Based on Eclipse http://www.eclipse.org  Cygwin http://www.cygwin.com  “Linux” layer on top of Windows  GNU C Compiler Tools „gcc‟ http://gcc.gnu.org  A popular, free C compiler that targets many different CPUs  Integrated into the IDE  Documentation  Click „full documentation‟ under item 4.  Click „The Nios II Processor Reference Handbook‟ CS MSU Graphics & Media Lab (Video Group)
  • 42. NIOS IDE: New Project Этапы создания нового проекта 1. Выбор типа проекта  Altera NIOS II, C/C++ Application, Next 2. Выбрать шаблон: Dhrystone 3. Выбрать Железо: Browse…  (Cyclone, Aria GX, Spartain etc.) 4. Next/Finish CS MSU Graphics & Media Lab (Video Group)
  • 43. NIOS Cygwin  Функциональность:  Возможность использования Unix функций в коде  Unix утилиты: ls, less, grep, sed, awk, etc…  Применение  Использование gcc для компиляции C в NIOS код  Возможность делать assemble/disassemble NIOS кода CS MSU Graphics & Media Lab (Video Group)
  • 44. GCC and Objdump  Компилирование и дизассемблинг: % nios2-elf-gcc –O –c dhrystone.c compiles program, optimizes code, writes object file dhrystone.o % nios2-elf-objdump –S dhrystone.o disassembles object file (or executable file) to screen (stdout) shows instructions, labels, memory addresses, and binary machine code  Компилирование для сборки и сборка: % nios2-elf-gcc –O –S dhrystone.c compiles program, optimizes code, writes assembly file dhrystone.s shows labels and instructions only (no addresses or binary code) % nios2-elf-gcc –c dhrystone.s assembles program, writes object file dhrystone.o CS MSU Graphics & Media Lab (Video Group)
  • 45. Пример NIOS Assembly int main() .file "fib.c" { C Code .section .text Assembly Code int a = 1; .align 3 int b = 1; .global main int c; .type main, @function int i; main: addi sp, sp, -8 for( i=2; i <= 100; i++ ) { movi r4, 1 c = a + b; stw fp, 4(sp) a = b; mov r5, r4 b = c; mov fp, sp } movi r3, 98 .L6: return c; add r2, r5, r4 } addi r3, r3, -1 mov r5, r4 mov r4, r2 Run these commands: bge r3, zero, .L6 % nios2-elf-gcc –O2 –S fib.c % cat fib.s ldw fp, 4(sp) addi sp, sp, 8 Output is shown in next column. ret .size main, .-main % nios2-elf-gcc –c fib.s .ident "GCC: (GNU) 3.3.3 (Altera Nios II 1.0 b316)" CS MSU Graphics & Media Lab (Video Group)
  • 46. Пример NIOS Disassembly int main() fib.o: file format elf32-littlenios2 { int a = 1; C Code Disassembly of section .text: int b = 1; Disassembled Code int c; 00000000 <main>: int i; 0: defffe04 addi sp,sp,-8 4: 01000044 movi r4,1 for( i=2; i <= 100; i++ ) { 8: df000115 stw fp,4(sp) c = a + b; c: 200b883a mov r5,r4 a = b; 10: d839883a mov fp,sp b = c; } 14: 00c01884 movi r3,98 return c; 18: 2905883a add r2,r5,r4 } 1c: 18ffffc4 addi r3,r3,-1 20: 200b883a mov r5,r4 24: 1009883a mov r4,r2 Run these commands: 28: 183ffb0e bge r3,zero,18 <main+0x18> % nios2-elf-gcc –O2 –c fib.c % nios2-elf-objdump –S fib.o 2c: df000117 ldw fp,4(sp) 30: dec00204 addi sp,sp,8 Output is shown in next column. 34: f800283a ret CS MSU Graphics & Media Lab (Video Group)
  • 47. Процесс написания NIOS программы Последовательность действий 1. Написание на C % vi foo.c 2. Компилирование в assembly code % nios2-elf-gcc –O –S foo.c 3. Редактирование assembly code (напр. удаление неподдерживаемых инструкций) % vi foo.s 4. Сборка (ассемблирование) % nios2-elf-gcc –c foo.s 5. Дизассемлирование % nios2-elf-objdump –S foo.o > foo.txt 6. Извлечение бинарного машинного кода % vi foo.txt CS MSU Graphics & Media Lab (Video Group)
  • 48. Outline  Устройство ПЛИС  Устройство Development Boards  Разработка программ  Обзор пакета QuartusII  Обзор NIOS Development Kit  Оптимизация работы 48 CS MSU Graphics & Media Lab (Video Group)
  • 49. Последовательность работы программы  Longest Path = 15 ns  fMAX = 73 MHz 10 ns 5 ns 5 ns s1 reg s2 L1 L2 L3 clock Logic Register CS MSU Graphics & Media Lab (Video Group)
  • 50. Последовательность работы программы  Longest Path = 10 ns Оптимальнее  fMAX = 100 MHz  Logic in L2 Pushed Forward Across Register  All Signals in L2 Are Delayed by One Cycle & “_Rd” is Appended to Their Original Names 10 ns 5 ns s1 s1_Rd s2 5 ns L1 L2 L3 reg clock Logic Register CS MSU Graphics & Media Lab (Video Group)
  • 51. Экономия регистров reg s1 in1 out A A B B in2 C LUT1 LUT2 in3 clock  tco = Slow  tsu = Fast in_b CS MSU Graphics & Media Lab (Video Group)
  • 52. Экономия регистров s1_Ra reg s1 in1 out A A B B C in2 LUT1 LUT2 in3  Improved tco clock  tsu Is Slower  reg Is Advanced So Output of LUT1 Is Advanced by in_b One Cycle  Eliminated 2 Registers CS MSU Graphics & Media Lab (Video Group)
  • 53. Outline  Устройство ПЛИС  Устройство Development Boards  Разработка программ  Обзор пакета QuartusII  Обзор NIOS Development Kit  Оптимизация работы  Использование MAX+PLUSII 53 CS MSU Graphics & Media Lab (Video Group)
  • 54. MAX+PLUS II Работа (ADT PALACE Compiler Enabled) Customer Configuration ADT PALACE Compiler .tdo MAX+PLUS II Compare Results MAX+PLUS II Compiler Compiler MAX+PLUS II Results  Customer Configuration & ADT PALACE Configuration Компилируются автоматически  MAX+PLUS II выдает результаты через GREATER fMAX on Slowest Clock CS MSU Graphics & Media Lab (Video Group)
  • 55. MAX+PLUS II Vs. Quartus II for MAX  MAX+PLUS II v10.2 Provides Best Average fMAX Performance at the Expense of Longer Compile Times  Quartus II v2.1 Uses Fewest Macrocells With Default Settings CS MSU Graphics & Media Lab (Video Group)
  • 56. Рекомендации  Quartus II использовать для новых 2.5V and 3.3V FPGA  MAX+PLUS II использовать для несложных проектов и 5-V MAX FPGA CS MSU Graphics & Media Lab (Video Group)
  • 57. Вопросы ? CS MSU Graphics & Media Lab (Video Group)