Проектирование узлов синхронизации цифровых устройств и встраиваемых микропроцессорных систем, реализуемых на базе ПЛИС фирмы Xilinx серий Artix 7, Kintex 7 и Virtex 7. Часть 2
Разработка VHDL-описаний узлов синхрониз0ации с использованием шаблонов встроенного HDL-редактора САПР серии Xilinx ISE Design Suite
При выполнении этой процедуры в качестве типа создаваемого модуля в диалоговой панели Select Source Type необходимо выбрать вариант VHDL Module, как демонстрирует рис. 1.
После определения названия и места расположения формируемого модуля VHDL-описания узла синхронизации в полях редактирования значений параметров File name и Location и нажатия кнопки «Далее» (Next) появляется диалоговая панель с заголовком Define Module, чей вид приведен на рис. 1. Открывшаяся диалоговая панель, предназначенная для ввода исходных данных создаваемого VHDL-описания, содержит поля редактирования значений параметров Entity name и Architecture name, а также таблицу, в которой должна быть представлена вся необходимая информация об интерфейсных портах описываемого объекта.
В поле редактирования значения параметра Entity name после его активизации необходимо указать имя объекта, представляющего узел формирования тактовых сигналов проектируемого устройства или встраиваемой микропроцессорной системы. По умолчанию в этом поле предлагается идентификатор, совпадающий с названием создаваемого модуля, которое было задано в поле редактирования значения параметра File name в диалоговой панели Select Source Type. Имя архитектурного тела VHDL-описания определяется в поле редактирования значения параметра Architecture name. По умолчанию в качестве имени архитектурного тела предлагается идентификатор Behavioral, который при необходимости можно изменить с помощью клавиатуры.
Далее следует заполнить таблицу описания входных и выходных портов объекта, представляющего узел синхронизации, которая включает пять колонок с названиями Port Name, Direction, Bus, MSB и LSB. Ячейки первого столбца (Port Name) представляют собой поля редактирования имен интерфейсных портов указанного объекта, в которые необходимо с помощью клавиатуры записать соответствующие идентификаторы входных и выходных цепей узла формирования тактовых сигналов. Во второй колонке (Direction) для каждого порта нужно определить его тип, который соответствует направлению передачи данных через этот порт. Каждая ячейка этого столбца представляет собой поле выбора, выпадающий список которого содержит три варианта, определяющие тип порта: in (входной), out (выходной) или inout (двунаправленный). В третьей колонке (Bus) указывают информацию о структуре сигнала, который ассоциируется с описываемым портом. Если сигнал имеет шинную структуру, следует переключить индикатор состояния, расположенный в соответствующей ячейке столбца Bus, в положение «Включено». Колонки MSB и LSB заполняются только для портов, представленных в виде шин и описываемых с помощью векторов. В столбце MSB указывают значения индекса, соответствующего старшему разряду вектора, а в LSB — младшему.
После определения всех необходимых параметров в диалоговой панели Define Module следует нажать клавишу «Далее» (Next), после чего открывается информационная панель с заголовком Summary, в которой отображаются исходные данные, используемые для создания основы модуля VHDL-описания разрабатываемого узла синхронизации. Процесс генерации основы указанного модуля запускается нажатием клавиши «Готово» (Finish), расположенной в нижней части информационной панели, в результате чего открывается вкладка нового рабочего окна встроенного HDL-редактора, где отображается автоматически сформированный код (рис. 2). Этот код содержит декларацию используемых библиотек и пакетов, интерфейса описываемого объекта entity и основу архитектурного тела VHDL-описания.
Далее необходимо дополнить автоматически сгенерированный код операторами создания экземпляров модулей MMCM, PLL и буферных элементов, применяемых в составе разрабатываемого узла синхронизации, которые должны располагаться после ключевого слова begin до заключительной строки end Behavioral (рис. 2). Для этого целесообразно воспользоваться соответствующими шаблонами встроенного HDL-редактора САПР серии Xilinx ISE Design Suite. Доступ к шаблонам предоставляет вкладка Language Templates, которая открывается в области расположения рабочих окон «Навигатора проекта» с помощью одноименной команды из всплывающего меню Edit или кнопки , находящейся на оперативной панели управления. Вид этой вкладки приведен на рис. 3.
В левой области вкладки Language Templates представлена встроенная панель, содержащая список шаблонов, сгруппированных в папки, а в правой — панель, в которой открывается текст выбранного шаблона. Первоначально при открытии окна шаблонов в левой встроенной панели отображается четыре папки с названиями Verilog, VHDL, UCF и TCL, где содержатся шаблоны соответствующих языков HDL, ограничений проекта и команд управления. Чтобы найти требуемый шаблон для последующего включения в состав создаваемого VHDL-описания узла формирования тактовых сигналов, нужно двойным щелчком левой кнопкой мыши открыть папку VHDL. После этого в той же встроенной панели будут показаны основные группы шаблонов, представленные в виде папок с соответствующими названиями. Для получения доступа к шаблонам описания компонентов узлов синхронизации необходимо двойным щелчком мыши развернуть папку Device Primitive Instantiation, а затем в этой папке таким же образом раскрыть раздел, чей идентификатор совпадает с названием серии ПЛИС, используемой для реализации проектируемого устройства или встраиваемой микропроцессорной системы. Далее нужно развернуть подраздел Clock Components, в котором сосредоточены шаблоны VHDL-описаний компонентов, применяемых в узлах формирования тактовых сигналов. Эти шаблоны сгруппированы в три папки с названиями Clock Buffers, Clock MUXes и MMCM/PLL (рис. 3). Папка Clock Buffers включает шаблоны описания буферных элементов, используемых в цепях распространения тактовых сигналов. В папке Clock MUXes представлены шаблоны описаний мультиплексоров, предназначенных для распределения сигналов синхронизации в кристаллах программируемой логики выбранной серии. Папка MMCM/PLL содержит шаблоны описаний комбинированных модулей управления синхронизацией и модулей фазовой автоподстройки частоты.
Для включения нужного шаблона в состав создаваемого описания разрабатываемого узла формирования тактовых сигналов следует развернуть соответствующую папку и щелчком левой кнопки мыши выделить название шаблона, после чего его содержимое отобразится в правой встроенной панели вкладки Language Templates, как показано на рис. 3. Затем нужно воспользоваться кнопкой , которая находится на панели инструментов, расположенной слева от вкладки Language Templates, или командой Use in …, представленной во всплывающем меню Edit и контекстно-зависимом меню, открываемом щелчком правой кнопки мыши. При этом текст шаблона будет вставлен в то место создаваемого модуля VHDL-описания узла синхронизации, где расположен курсор в рабочем окне интегрированного HDL-редактора. Далее необходимо переместить выражения ссылок на используемые библиотеки в начало формируемого модуля VHDL-описания. Если аналогичные выражения уже существуют в создаваемом описании, то соответствующие строки добавленного шаблона следует удалить или закомментировать. Можно также вставить только нужный фрагмент выбранного шаблона, выделив его в правой встроенной панели вкладки Language Templates и воспользовавшись командами копирования (Copy) и вставки (Paste) из всплывающего меню Edit или контекстно-зависимого меню. Рассмотренную процедуру включения шаблонов в состав формируемого описания разрабатываемого узла синхронизации следует повторить для каждого используемого компонента. После этого необходимо в каждом операторе создания экземпляра комбинированного модуля управления синхронизацией и модуля фазовой автоподстройки частоты указать требуемые значения настраиваемых параметров, назначение которых было представлено в [22]. Эти значения устанавливаются в соответствии с функциями, реализуемыми каждым экземпляром модуля MMCM или PLL в проектируемом узле формирования тактовых сигналов.
Затем в создаваемое VHDL-описание разрабатываемого узла синхронизации нужно, если необходимо, включить выражения декларации внутренних сигналов, которые используются для организации соединений между применяемыми компонентами. Для получения законченного описания узла формирования тактовых сигналов требуется в каждом операторе создания экземпляра компонента этого узла определить подключение его интерфейсных портов.
Пример VHDL-описания узла синхронизации, созданного с помощью шаблонов встроенного HDL-редактора САПР серии Xilinx ISE Design Suite
Примером VHDL-описания узла формирования тактовых сигналов, созданного с помощью шаблонов встроенного HDL-редактора САПР серии Xilinx ISE Design Suite, является модуль Clk_mod_hdl. Данный узел на основе внешнего сигнала синхронизации с частотой 50 МГц вырабатывает следующий набор выходных сигналов:
- сигналы с частотой 100 МГц и коэффициентом заполнения 25% с нулевым фазовым сдвигом и сдвигом по фазе на четверть и половину периода;
- сигнал с частотой 133 МГц и коэффициентом заполнения 50%;
- сигналы с частотой 120 МГц и коэффициентом заполнения 50% с нулевым фазовым сдвигом и сдвигом по фазе на четверть периода.
Входной сигнал синхронизации поступает с соответствующего вывода кристалла программируемой логики на вход модуля фазовой автоподстройки частоты PLL через глобальный буферный элемент IBUFG. На выходах тактовых сигналов с частотами 100 МГц, нулевым фазовым сдвигом и 133 МГц задействованы глобальные буферные элементы BUFG. В цепи выходных сигналов синхронизации с частотой 100 МГц и сдвигом по фазе на четверть и половину периода используются глобальные буферные элементы с входом разрешения BUFGCE. На выходах тактовых сигналов с частотой 120 МГц с нулевым фазовым сдвигом и сдвигом по фазе на четверть периода установлены буферные элементы BUFH и BUFHCE соответственно. Листинг 1 демонстрирует текст VHDL-описания узла синхронизации Clk_mod_hdl, сопровождаемый краткими комментариями.
----------------------------------------------------------------------------- -- Module Name: Clk_mod_hdl - Behavioral ----------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- --Uncomment the following library declaration if using -- arithmetic functions with Signed or Unsigned values --use IEEE.NUMERIC_STD.ALL; -- -- Uncomment the following library declaration if instantiating -- any Xilinx primitives in this code. library UNISIM; use UNISIM.VComponents.all; -- entity Clk_mod_hdl is Port ( Clk_in_ext : in STD_LOGIC; Clk_out12_en : in STD_LOGIC; Clk_out5_en : in STD_LOGIC; Reset : in STD_LOGIC; Clk_out0 : out STD_LOGIC; Clk_out1 : out STD_LOGIC; Clk_out2 : out STD_LOGIC; Clk_out3 : out STD_LOGIC; Clk_out4 : out STD_LOGIC; Clk_out5 : out STD_LOGIC; Lock : out STD_LOGIC ); end Clk_mod_hdl; -- architecture Behavioral of Clk_mod_hdl is -- signal clk_in_int : std_logic; signal fbout : std_logic; signal fbout_buf : std_logic; signal clk_out0_int : std_logic; signal clk_out1_int : std_logic; signal clk_out2_int : std_logic; signal clk_out3_int : std_logic; signal clk_out4_int : std_logic; signal clk_out5_int : std_logic; -- begin -- -- PLLE2_BASE: Base Phase Locked Loop (PLL) -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- PLLE2_BASE_1 : PLLE2_BASE generic map ( B ANDWIDTH => “OPTIMIZED”, -- OPTIMIZED, HIGH, LOW CLKFBOUT_MULT => 24, -- Multiply value for all CLKOUT, (2-64) CLKFBOUT_PHASE => 0.0, -- Phase offset in degrees of CLKFB, (-360.000-360.000). CLKIN1_PERIOD => 20.0, -- Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz). -- CLKOUT0_DIVIDE - CLKOUT5_DIVIDE: Divide amount for each CLKOUT (1-128) CLKOUT0_DIVIDE => 12, CLKOUT1_DIVIDE => 12, CLKOUT2_DIVIDE => 12, CLKOUT3_DIVIDE => 9, CLKOUT4_DIVIDE => 10, CLKOUT5_DIVIDE => 10, --CLKOUT0_DUTY_CYCLE - CLKOUT5_DUTY_CYCLE:Duty cycle for each CLKOUT (0.001-0.999). CLKOUT0_DUTY_CYCLE => 0.25, CLKOUT1_DUTY_CYCLE => 0.25, CLKOUT2_DUTY_CYCLE => 0.25, CLKOUT3_DUTY_CYCLE => 0.5, CLKOUT4_DUTY_CYCLE => 0.5, CLKOUT5_DUTY_CYCLE => 0.5, -- CLKOUT0_PHASE - CLKOUT5_PHASE: Phase offset for each CLKOUT (-360.000-360.000). CLKOUT0_PHASE => 0.0, CLKOUT1_PHASE => 90.0, CLKOUT2_PHASE => 180.0, CLKOUT3_PHASE => 0.0, CLKOUT4_PHASE => 0.0, CLKOUT5_PHASE => 90.0, DIVCLK_DIVIDE => 1, -- Master division value, (1-56) REF_JITTER1 => 0.10, -- Reference input jitter in UI, (0.000-0.999). STARTUP_WAIT => “FALSE” -- Delay DONE until PLL Locks, (“TRUE”/”FALSE”) ) port map ( -- Clock Outputs: 1-bit (each) output: User configurable clock outputs CLKOUT0 => clk_out0_int, -- 1-bit output: CLKOUT0 CLKOUT1 => clk_out1_int, -- 1-bit output: CLKOUT1 CLKOUT2 => clk_out2_int, -- 1-bit output: CLKOUT2 CLKOUT3 => clk_out3_int, -- 1-bit output: CLKOUT3 CLKOUT4 => clk_out4_int, -- 1-bit output: CLKOUT4 CLKOUT5 => clk_out5_int, -- 1-bit output: CLKOUT5 -- Feedback Clocks: 1-bit (each) output: Clock feedback ports CLKFBOUT => fbout, -- 1-bit output: Feedback clock LOCKED => Lock, -- 1-bit output: LOCK CLKIN1 => clk_in_int, -- 1-bit input: Input clock -- Control Ports: 1-bit (each) input: PLL control ports PWRDWN => ‘0’, -- 1-bit input: Power-down RST => Reset, -- 1-bit input: Reset -- Feedback Clocks: 1-bit (each) input: Clock feedback ports CLKFBIN => fbout_buf -- 1-bit input: Feedback clock ); -- -- IBUFG: Global Clock Buffer (sourced by an external pin) -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- IBUFG_IN : IBUFG generic map ( IBUF_LOW_PWR => TRUE, -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards IOSTANDARD => “DEFAULT”) port map ( O => clk_in_int, -- Clock buffer output I => Clk_in_ext -- Clock buffer input (connect directly to top-level port) ); -- -- BUFG: Global Clock Simple Buffer -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- BUFG_FBOUT : BUFG port map ( O => fbout_buf, -- 1-bit output: Clock output I => fbout -- 1-bit input: Clock input ); -- -- BUFG: Global Clock Simple Buffer -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- BUFG_OUT0 : BUFG port map ( O => Clk_out0, -- 1-bit output: Clock output I => clk_out0_int -- 1-bit input: Clock input ); -- -- BUFGCE: Global Clock Buffer with Clock Enable -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- BUFGCE_OUT1 : BUFGCE port map ( O => Clk_out1, -- 1-bit output: Clock output CE => Clk_out12_en, -- 1-bit input: Clock enable input for I0 I => clk_out1_int -- 1-bit input: Primary clock ); -- -- BUFGCE: Global Clock Buffer with Clock Enable -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- BUFGCE_OUT2 : BUFGCE port map ( O => Clk_out2, -- 1-bit output: Clock output CE => Clk_out12_en, -- 1-bit input: Clock enable input for I0 I => clk_out2_int -- 1-bit input: Primary clock ); -- -- BUFG: Global Clock Simple Buffer -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- BUFG_OUT3 : BUFG port map ( O => Clk_out3, -- 1-bit output: Clock output I => clk_out3_int -- 1-bit input: Clock input ); -- -- BUFH: HROW Clock Buffer for a Single Clocking Region -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- BUFH_OUT4 : BUFH port map ( O => Clk_out4, -- 1-bit output: Clock output I => clk_out4_int -- 1-bit input: Clock input ); -- -- BUFHCE: HROW Clock Buffer for a Single Clocking Region with Clock Enable -- Kintex-7 -- Xilinx HDL Language Template, version 14.7 -- BUFHCE_OUT5 : BUFHCE generic map ( CE_TYPE => “SYNC”, -- “SYNC” (glitchless switching) or “ASYNC” (immediate switch) INIT_OUT => 0 -- Initial output value (0-1) ) port map ( O => Clk_out5, -- 1-bit output: Clock output CE => Clk_out5_en, -- 1-bit input: Active high enable I => clk_out5_int -- 1-bit input: Clock input ); -- end Behavioral; Листинг 1. Текст VHDL-описания узла синхронизации Clk_mod_hdl
В начале представленного VHDL-описания приводятся ссылки на используемые библиотеки и пакеты этих библиотек. Далее следует объявление объекта Clk_mod_hdl, представляющего создаваемый узел формирования тактовых сигналов, с описанием его интерфейса. Последующая часть содержит структурное описание архитектуры указанного объекта, в начале которого декларируются внутренние сигналы разрабатываемого узла синхронизации. Затем следует оператор создания экземпляра библиотечного примитива PLLE2_BASE, представляющего базовый вариант конфигурирования модуля фазовой автоподстройки частоты. Этот оператор сформирован на основе шаблона Base Phase Locked Loop (PLLE2_BASE). Далее приведены операторы создания экземпляров входных и выходных буферных элементов IBUFG, BUFG, BUFGCE, BUFH и BUFHCE, включенные из шаблонов Single-ended input Global Clock Buffer (IBUFG), Global Clock Simple Buffer (BUFG), Global Clock Buffer with Clock Enable (BUFGCE), HROW Clock Buffer (BUFH) и HROW Clock Buffer with Clock Enable (BUFHCE) соответственно.
Система условных обозначений входных и выходных портов, используемых в описании интерфейса узла формирования тактовых сигналов Clk_mod_hdl, включает следующие идентификаторы:
- Clk_in_ext — вход исходного внешнего сигнала синхронизации;
- Clk_out12_en — вход разрешения выходных тактовых сигналов с частотой 100 МГц и сдвигом по фазе на четверть и половину периода;
- Clk_out5_en — вход разрешения выходного сигнала синхронизации с частотой 120 МГц и сдвигом по фазе на четверть периода;
- Reset — вход сигнала сброса;
- Clk_out0, Clk_out1, Clk_out2 — выходы сигналов с частотой 100 МГц с нулевым фазовым сдвигом и сдвигом по фазе на четверть и половину периода;
- Clk_out3 — выход сигнала с частотой 133 МГц;
- Clk_out4, Clk_out5 — выходы сигнала с частотой 120 МГц с нулевым фазовым сдвигом и сдвигом по фазе на четверть периода;
- Lock — выход сигнала, информирующего о достижении режима фазового синхронизма.
На рис. 4 приведены временные диаграммы сигналов узла синхронизации Clk_mod_hdl, полученные в результате его моделирования средствами Xilinx ISIM [21].
Формирование HDL-описаний узлов синхронизации с помощью «мастера» Clocking Wizard
Для подготовки описания узла синхронизации в среде «Навигатора проекта» с помощью мастера Clocking Wizard необходимо при выполнении стандартной процедуры создания нового исходного модуля в диалоговой панели Select Source Type в качестве типа проектируемого модуля выбрать вариант IP (CORE Generator & Architecture Wizard), как демонстрирует рис. 5.
Затем, указав идентификатор создаваемого модуля описания узла формирования тактовых сигналов и его расположение на диске, следует нажатием клавиши «Далее» (Next) перейти к диалоговой панели с заголовком Select IP, чей первоначальный вид изображен на рис. 5. В открывшейся диалоговой панели на вкладке View by Function отображается список всех параметризированных модулей, поддерживаемых средствами CORE Generator [20], которые сгруппированы в соответствующие разделы по функциональному признаку. Для получения доступа к различным версиям мастера Clocking Wizard необходимо последовательно открыть разделы FPGA Features and Design и Clocking, как показано на рис. 6. После этого рекомендуется выделить строку списка, в которой представлена последняя версия мастера Clocking Wizard, и с помощью клавиши «Далее» (Next) перейти к заключительной информационной панели Summary процедуры создания нового исходного модуля проекта, в которой отображаются сведения о выбранном типе и версии IP-ядра для формирования описания узла синхронизации (рис. 6).
Для того чтобы активизировать мастер Clocking Wizard, следует нажать клавишу «Готово» (Finish), находящуюся в нижней части информационной панели Summary, в результате на экране появляется стартовая диалоговая панель с заголовком Clocking Features/Input Clocks, чей вид приведен на рис. 7.
В этой диалоговой панели целесообразно в первую очередь указать тип библиотечного примитива (и соответственно компонент блока CMT), который будет использоваться в качестве основы генерируемого HDL-описания разрабатываемого узла синхронизации. Выбор типа библиотечного примитива осуществляется с помощью группы кнопок с зависимой фиксацией Primitive. В этой группе есть две кнопки, чьи обозначения совпадают с идентификаторами библиотечных примитивов MMCME2_ADV и PLLE2_ADV, представленных в [22]. Для генерации описания узла формирования тактовых сигналов, реализуемого на базе комбинированного модуля управления синхронизацией, в нажатом состоянии должна быть зафиксирована кнопка MMCME2_ADV. Если необходимо подготовить описание узла синхронизации, разрабатываемого на основе модуля фазовой автоподстройки частоты, то в нажатое положение следует переключить кнопку PLLE2_ADV.
Затем рекомендуется указать, какие функциональные возможности нужно реализовать в разрабатываемом узле формирования тактовых сигналов, воспользовавшись индикаторами состояния, расположенными во встроенной панели Clocking Features (рис. 7). Для синтеза выходных сигналов синхронизации с различными значениями частоты надо установить в положение «Включено» индикатор состояния параметра Frequency synthesis. Если выходные тактовые сигналы должны иметь привязку по фазе по отношению к входному сигналу синхронизации, то необходимо перевести в положение «Включено» индикатор состояния параметра Phase alignment. При создании описаний узлов формирования тактовых сигналов с минимальным энергопотреблением во включенном положении должен находиться индикатор состояния параметра Minimize power. Чтобы сгенерировать описание узла синхронизации с возможностью динамического изменения частоты вырабатываемых сигналов, следует установить во включенное положение индикатор состояния параметра Dynamic reconfiguration. Если к разрабатываемому узлу формирования тактовых сигналов предъявляется требование снижения уровня электромагнитного излучения, следует установить индикатор состояния параметра Spread Spectrum в положение «Включено». Для подготовки описания узла синхронизации, поддерживающего возможность динамического изменения величины фазового сдвига выходных сигналов, нужно перевести индикатор состояния параметра Dynamic phase shift в положение «Включено». Две последние функции доступны только при подготовке описаний узлов формирования тактовых сигналов, реализуемых на базе модуля MMCM. При этом надо также учитывать, что функции снижения уровня электромагнитного излучения и минимизации энергопотребления (и соответственно параметры Spread Spectrum и Minimize power) являются взаимоисключающими.
Далее следует выбрать вариант оптимизации уровня джиттера формируемых сигналов с помощью группы кнопок с зависимой фиксацией Jitter optimization. Когда в нажатом состоянии зафиксирована кнопка Balanced, при создании описания узла синхронизации автоматически будет выбран частотный диапазон, обеспечивающий оптимальное значение джиттера вырабатываемых сигналов. При нажатой кнопке Minimize output jitter (low clock jitter filtering) осуществляется минимизация уровня джиттера выходных сигналов синхронизации за счет возможного увеличения потребляемой мощности и значения фазовой ошибки. Если в нажатом состоянии находится кнопка Maximize input jitter filtering (allow larger input jitter), то в создаваемом узле синхронизации допускается высокий уровень джиттера входного тактового сигнала, но при этом возможно и увеличение джиттера выходных сигналов.
После выбора варианта оптимизации уровня джиттера нужно определить значения основных параметров входных сигналов разрабатываемого узла синхронизации, которые представлены в таблице Input Clock Information (рис. 7). В первой колонке таблицы (Input Clock) отображается тип входного тактового сигнала — основной (primary) или дополнительный (secondary). Для использования дополнительного входного сигнала в разрабатываемом узле синхронизации нужно установить индикатор состояния, расположенный в этой же колонке, в положение «Включено». В колонке Input Freq (MHz) представлена информация о текущем значении и допустимом диапазоне частот входного сигнала синхронизации. Значение частоты используемого входного тактового сигнала указывается в мегагерцах в поле редактирования, расположенном в столбце Value. Диапазон поддерживаемых значений частоты входного сигнала синхронизации отображается в столбце Valid Range. Уровень джиттера входного тактового сигнала определяется в поле редактирования, расположенном в колонке Input Jitter. Для выбора единиц измерения указываемых значений джиттера нужно воспользоваться группой кнопок с зависимой фиксацией Input Jitter Unit.
Вид источника входного тактового сигнала определяют в поле выбора, расположенном в соответствующей ячейке колонки Source. В случае использования обычного (однополюсного) сигнала синхронизации, поступающего со специального выделенного входа кристалла программируемой логики, нужно в этом поле выбрать вариант Single ended clock capable pin. Если же входной тактовый сигнал, приходящий с выделенных выводов ПЛИС, является дифференциальным, следует указать вариант Differential clock capable pin. При использовании входного тактового сигнала, поступающего с выхода глобального буферного элемента, необходимо выбрать вариант Global buffer. Чтобы сформировать описание узла синхронизации без входного буферного элемента, требуется указать вариант No buffer. Когда в качестве входного сигнала синхронизации применяется однополюсный сигнал, поступающий с пользовательского вывода кристалла программируемой логики, выбирают вариант Single ended non clock pin. Если применяется дифференциальный тактовый сигнал, приходящий с пользовательских выводов ПЛИС, указывают вариант Differential non clock pin. Следует обратить внимание на то, что последние два варианта доступны только при отсутствии привязки по фазе формируемых тактовых сигналов по отношению к входному сигналу синхронизации.
Завершив процедуру определения требуемой конфигурации проектируемого узла формирования тактовых сигналов, следует с помощью клавиши «Далее» (Next) диалоговой панели Clocking Features/Input Clocks перейти ко второй диалоговой панели мастера Clocking Wizard с заголовком Output Clock Settings, чей вид изображен на рис. 8.
В этой диалоговой панели необходимо указать состав и параметры формируемых тактовых сигналов, а также выбрать тип выходных буферных элементов. Для определения совокупности выходных сигналов разрабатываемого узла синхронизации следует воспользоваться индикаторами состояния параметров CLK_OUTn, которые расположены в колонке Output Clock таблицы, представленной в диалоговой панели Output Clock Settings (рис. 8). Чтобы задействовать в составе разрабатываемого узла синхронизации требуемый выход модуля MMCM или PLL, нужно установить соответствующий индикатор в состояние «Включено». Информация о требуемом и действительном значении частоты сигнала, формируемого на этом выходе, отображается в колонке Output Freq (MHz). Нужное значение частоты указывают в поле редактирования, расположенном в соответствующей ячейке столбца Requested. Фактическое значение частоты вырабатываемого сигнала приведено в ячейке столбца Actual. Сведения о величине фазового сдвига выходных сигналов синхронизации приводятся в колонке Phase (degrees). Требуемое значение фазового сдвига нужно записать в ячейке, входящей в состав столбца Requested, а фактическое — отображается в столбце Actual колонки Phase (degrees). Информация о целевых и действительных значениях коэффициента заполнения формируемых тактовых сигналов представлена соответственно в столбцах Requested и Actual колонки Duty Cycle (%).
Тип буферных элементов, устанавливаемых на выходах проектируемого узла синхронизации, задают с помощью полей выбора, представленных в ячейках колонки Drives. Состав выпадающего списка доступных буферных элементов зависит от типа модуля блока CMT, используемого для реализации разрабатываемого узла формирования тактовых сигналов. Для подключения глобального буферного элемента к какому-либо выходу модуля MMCM или PLL необходимо в соответствующем поле выбора указать вариант BUFG. Чтобы задействовать глобальный буферный элемент с входом разрешения синхронизации, следует выбрать вариант BUFGCE. Если требуется установить буферный элемент, сопряженный с горизонтальными линиями распространения тактовых сигналов, выбирают вариант BUFН или BUFHCE при необходимости использования входа разрешения синхронизации. Для применения регионального буферного элемента необходимо указать вариант BUFR. В случае отсутствия необходимости установки буферного элемента на каком-либо выходе разрабатываемого узла синхронизации достаточно указать в соответствующем поле выбора вариант No buffer.
При генерации описаний узлов синхронизации с динамическим изменением фазы выходных тактовых сигналов предоставляется возможность достижения высокой точности фазового сдвига синтезируемых сигналов. Для этого следует установить соответствующие индикаторы состояния, расположенные в колонке Use Fine Ps, в положение «Включено».
После поочередного определения параметров вырабатываемых тактовых сигналов и типов выходных буферных элементов нужно, воспользовавшись клавишей «Далее» (Next) в диалоговой панели Output Clock Settings, перейти к следующей диалоговой панели мастера Clocking Wizard, чей вид приведен на рис. 9. Эта диалоговая панель, имеющая заголовок I/O and Feedback, позволяет включить в состав генерируемого описания узла формирования тактовых сигналов дополнительные входы и выходы, а также определить вид используемой обратной связи. Состав доступных дополнительных входов и выходов зависит от типа библиотечного примитива, выбранного в качестве основы HDL-описания разрабатываемого узла синхронизации. В описании узла формирования тактовых сигналов, реализуемого на базе модуля MMCM, можно задействовать входные порты сигналов сброса и управления питанием, а также выходные порты сигналов, информирующих о достижении режима фазового синхронизма и предупреждающих об отсутствии переключений входного сигнала синхронизации и сигнала обратной связи. В узлах синхронизации, проектируемых на базе модулей фазовой автоподстройки частоты, могут использоваться только входы сброса и управления питанием, а также выходы сигналов, информирующих о достижении режима фазового синхронизма.
Для того чтобы задействовать дополнительные входы управления и выходы сигналов, информирующих о функционировании узла синхронизации, следует использовать индикаторы состояния, представленные во встроенной панели Optional Inputs/Outputs (рис. 9). Индикатор состояния RESET соответствует входу сигнала сброса, LOCKED — выходу сигнала, сообщающего о достижении режима фазового синхронизма, INPUT_CLK_STOPPED и CLKFBSTOPPED — выходам сигналов, предупреждающих об отсутствии переключений входного сигнала синхронизации и сигнала обратной связи. Для включения дополнительных входных и выходных портов в описание узла формирования тактовых сигналов нужно установить соответствующие индикаторы состояния в положение «Включено».
Требуемый вариант обратной связи в формируемом узле синхронизации выбирают с помощью группы кнопок с зависимой фиксацией, которые находятся во встроенной панели Clock Feedback Source (рис. 9). Когда в нажатом состоянии зафиксирована кнопка Automatic control on-chip, мастер Clocking Wizard формирует описание узла синхронизации с внутрикристальной цепью обратной связи. При нажатой кнопке Automatic control off-chip генерируется описание узла формирования тактовых сигналов с внешней (по отношению к ПЛИС) обратной связью. Если в нажатом состоянии находится кнопка User-controlled on-chip, создается узел синхронизации с внутрикристальной обратной связью, описание которой приводится разработчиком в другом файле. В случае переключения в нажатое положение кнопки User-controlled off-chip конфигурируется узел формирования тактовых сигналов с внешней обратной связью, чье описание представлено в другом файле.
Тип внешнего сигнала обратной связи (обычный или дифференциальный) указывают с помощью группы кнопок с зависимой фиксацией Clock Feedback Signaling. Если используются внешние дифференциальные сигналы обратной связи, то в нажатое положение необходимо переключить кнопку Differential. В противном случае в нажатом состоянии следует зафиксировать кнопку Single-ended.
Определив состав дополнительных входов и выходов и вид обратной связи в создаваемом узле синхронизации, следует нажатием клавиши «Далее» (Next) в диалоговой панели I/O and Feedback перейти к очередной диалоговой панели мастера Clocking Wizard. Заголовок и вид четвертой диалоговой панели мастера Clocking Wizard зависит от типа библиотечного примитива, используемого в качестве основы формируемого описания. Рис. 10 демонстрирует вид этой панели при выборе для реализации проектируемого узла формирования тактовых сигналов модуля MMCM. В этом случае четвертая диалоговая панель, имеющая заголовок MMCM_ADV Settings, содержит таблицу основных настраиваемых параметров применяемого библиотечного примитива MMCME2_ADV, представляющего расширенный вариант конфигурирования комбинированного модуля управления синхронизацией.
В колонке Attribute данной таблицы перечислены идентификаторы параметров настройки библиотечного примитива [22], а в колонке Value — значения этих параметров, которые автоматически вычисляются на основании информации, указанной разработчиком в предыдущих диалоговых панелях мастера Clocking Wizard. При необходимости можно принудительно изменить значения параметров, приведенные в таблице. Для этого нужно установить в положение «Включено» индикатор состояния параметра Allow override mode, после чего в колонке Value становятся доступными поля редактирования и выбора значений соответствующих настраиваемых параметров.
В случае подготовки описаний узлов синхронизации на основе модуля фазовой автоподстройки частоты PLL четвертой диалоговой панелью мастера Clocking Wizard является панель с заголовком PLLE2_ ADV Settings, чей вид изображен на рис. 11.
Эта диалоговая панель содержит таблицу настраиваемых параметров библиотечного примитива PLLE2_ ADV, значения которых определяют основные характеристики выходных тактовых сигналов, вырабатываемых модулем фазовой автоподстройки частоты [22]. Для принудительного изменения значений параметров настройки модуля PLL, приведенных в таблице, следует выполнить те же действия, что и для модификации значений параметров комбинированного модуля управления синхронизацией. После ознакомления и корректировки (при необходимости) значений настраиваемых параметров используемого библиотечного примитива нужно перейти к следующей диалоговой панели мастера Clocking Wizard, имеющей заголовок Clock Summary, Port Naming. Эта панель, чей вид приведен на рис. 12, предоставляет информацию о параметрах входных и выходных тактовых сигналов, а также о дополнительных портах, включенных в состав интерфейса формируемого узла синхронизации.
Установленные значения основных параметров (частоты и джиттера) входных тактовых сигналов и идентификаторы соответствующих портов в формируемом описании узла синхронизации приведены в таблице Input Clock Summary. Значения параметров выходных сигналов синхронизации, рассчитанных на основании данных, указанных разработчиком в предыдущих диалоговых панелях, а также условные обозначения соответствующих портов в генерируемом описании узла формирования тактовых сигналов отображаются в таблице Output Clock Summary. В верхней части таб-лицы приводится значение частоты генератора, управляемого напряжением, VCO Freq. Информация об идентификаторах дополнительных входных и выходных портов, включенных в состав формируемого HDL-описания, содержится в таблице, которая расположена в нижней части рассматриваемой диалоговой панели (рис. 12). В колонке Other Pins этой таблицы указано название соответствующего входа или выхода модуля MMCM или PLL, а в поле редактирования, расположенном в колонке Port Name, — идентификатор соответствующего входного или выходного порта проектируемого узла синхронизации. При необходимости во всех трех таблицах можно отредактировать идентификаторы входных и выходных портов, предлагаемые в колонке Port Name, используя клавиатуру, после чего перейти к заключительной диалоговой панели мастера Clocking Wizard. В этой диалоговой панели, озаглавленной Core Summary (рис. 13), отображаются сведения о параметрах входного тактового сигнала и значениях коэффициентов умножения и деления частоты, которые определяют характеристики сигналов синхронизации на используемых выходах модуля MMCM или PLL. Кроме того, в панели отображаются сведения обо всех файлах, создаваемых мастером Clocking Wizard, и месте их расположения на диске.
После ознакомления с представленной информацией следует активизировать процесс автоматической генерации описания разрабатываемого узла формирования тактовых сигналов, нажав клавишу Generate, расположенную в нижней части заключительной диалоговой панели Core Summary. При успешном завершении этого процесса во встроенной панели Hierarchy вкладки Design рабочей области «Навигатора проекта» появляется строка с идентификатором сформированного модуля описания (рис. 13). Кроме этого модуля мастером Clocking Wizard создается файл, содержащий шаблоны выражений декларации и создания экземпляра компонента, представляющего сформированный узел синхронизации в составе исходного описания более высокого уровня иерархии проекта. Для получения доступа к этому файлу следует выделить строку с идентификатором сгенерированного описания узла синхронизации, а затем во встроенной панели Processes развернуть раздел CORE Generator, в котором представлена строка View HDL Instantiation Template (рис. 14). При расположении курсора в этой строке и двойном щелчке левой кнопки мыши открывается новая вкладка рабочего окна HDL-редактора, в котором отображается содержимое сгенерированного файла шаблонов, как показано на рис. 14.
Сгенерированные выражения декларации и создания экземпляра компонента, представляющего сформированный узел синхронизации, следует с помощью команд копирования и вставки добавить в соответствующие разделы модуля исходного описания более высокого уровня иерархии проекта, например модуля верхнего уровня иерархии.
Продолжение следует
- Зотов В. Особенности архитектуры нового поколения ПЛИС с архитектурой FPGA фирмы Xilinx // Компоненты и технологии. 2010. №12.
- 7 Series FPGAs Overview. Advance Product Specification. Xilinx, 2015.
- Artix‑7 FPGAs Data Sheet: DC and Switching Characteristics. Xilinx, 2015.
- Kintex‑7 FPGAs Data Sheet: DC and Switching Characteristics. Xilinx, 2015.
- Virtex‑7 FPGAs Data Sheet: DC and Switching Characteristics. Xilinx, 2015.
- 7 Series FPGAs Migration. Methodology Guide. Xilinx, 2015.
- 7 Series FPGAs Configuration User Guide. Xilinx, 2015.
- 7 Series FPGAs SelectIO Resources User Guide. Xilinx, 2015.
- 7 Series FPGAs Clocking Resources User Guide. Xilinx, 2015.
- 7 Series FPGAs Memory Resources User Guide. Xilinx, 2015.
- 7 Series FPGAs Configurable Logic Block User Guide. Xilinx, 2015.
- 7 Series FPGAs GTX Transceivers User Guide. Xilinx, 2015.
- 7 Series FPGAs Integrated Block for PCIe User Guide. Xilinx, 2015.
- 7 Series DSP48E1 Slice User Guide. Xilinx, 2015.
- 7 Series FPGAs XADC Dual 12‑Bit 1MSPS Analog-to-Digital Converter User Guide. Xilinx, 2015.
- 7 Series FPGAs GTP Transceivers User Guide. Xilinx, 2015.
- Зотов В. Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ISE Design Suite // Компоненты и технологии. 2010. № 2–12. 2011. № 1–12. 2012. № 1–12.
- Зотов В. Ю. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия – Телеком, 2003.
- Зотов В. Ю. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx. М.: Горячая линия – Телеком, 2006.
- Зотов В. Проектирование цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с использованием средств CORE Generator // Компоненты и технологии. 2006. № 12. 2007. № 1.
- Зотов В. Моделирование цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, средствами ISIM в САПР ISE Design Suite // Компоненты и технологии. 2013. № 2–3.
- Зотов В. Проектирование узлов синхронизации цифровых устройств и встраиваемых микропроцессорных систем, реализуемых на базе ПЛИС фирмы Xilinx серий Artix‑7, Kintex‑7 и Virtex‑7. Часть 1 // Компоненты и технологии. 2016. № 3.