Проектирование узлов синхронизации цифровых устройств и встраиваемых микропроцессорных систем, реализуемых на базе ПЛИС фирмы Xilinx серий Artix 7, Kintex 7 и Virtex 7. Часть 3

PDF версия
В третьей части статьи будут рассмотрено проектирование и формирования узла тактовых сигналов.

Пример VHDL-описания узла формирования тактовых сигналов, сгенерированного с помощью мастера Clocking Wizard

В качестве примера узла формирования тактовых сигналов, разработанного с помощью мастера Clocking Wizard, в данном разделе представлен текст VHDL-описания модуля Clk_mod_wizard. Исходным сигналом для этого узла синхронизации является внешний тактовый сигнал с частотой 80 МГц.

Узел формирования тактовых сигналов Clk_mod_wizard обеспечивает генерацию следующей совокупности выходных сигналов синхронизации:

  • сигнала с частотой 120 и 150 МГц с нулевым фазовым сдвигом;
  • сигналов с частотой 100 МГц без фазового сдвига и сдвигом по фазе на половину периода;
  • сигнала с частотой 200 МГц и сдвигом по фазе на три четверти периода;
  • сигналов с частотой 60 МГц без фазового сдвига и сдвигом по фазе на четверть периода.

Все перечисленные сигналы имеют коэффициент заполнения, равный 50%. Разработанный узел синхронизации поддерживает возможность динамического реконфигурирования, а также динамического изменения фазы выходных сигналов.

В состав структуры узла формирования тактовых сигналов Clk_mod_wizard входят комбинированный модуль управления синхронизацией Mixed-Mode Clock Managers (MMCM) и глобальные буферные элементы. Внешний тактовый сигнал передается со специального выделенного вывода кристалла программируемой логики на вход комбинированного модуля управления синхронизацией через глобальный буферный элемент IBUFG. Модуль MMCM обеспечивает формирование совокупности выходных тактовых сигналов, перечисленных выше. На выходах сигналов синхронизации с частотой 120 и 150 МГц используются глобальные буферные элементы с входом разрешения BUFGCE. В цепях выходных тактовых сигналов с частотой 100 и 60 МГц со сдвигом по фазе на четверть периода установлены глобальные буферные элементы с входом разрешения, сопряженные с горизонтальными линиями распространения сигналов синхронизации, BUFHCE. На выходах тактовых сигналов с частотой 200 и 60 МГц с нулевым фазовым сдвигом задействованы соответственно глобальный буферный элемент BUFG и глобальный буферный элемент, сопряженный с горизонтальными линиями распространения сигналов синхронизации, BUFH. Листинг 1 представляет сгенерированный текст VHDL-описания узла синхронизации Clk_mod_wizard.

-- file: Clk_mod_wizard.vhd
-- 
----------------------------------------------------------------------------------------------
-- User entered comments
----------------------------------------------------------------------------------------------
-- None
--
----------------------------------------------------------------------------------------------
-- "Output    Output      Phase     Duty      Pk-to-Pk        Phase"
-- "Clock    Freq (MHz) (degrees) Cycle (%) Jitter (ps)  Error (ps)"
----------------------------------------------------------------------------------------------
-- CLK_OUT1___120.000______0.000______50.0______115.810_____92.039
-- CLK_OUT2___150.000______0.000______50.0______111.351_____92.039
-- CLK_OUT3___100.000______0.000______50.0______119.597_____92.039
-- CLK_OUT4___100.000____180.000______50.0______119.597_____92.039
-- CLK_OUT5___200.000____270.000______50.0______105.878_____92.039
-- CLK_OUT6____60.000______0.000______50.0______131.921_____92.039
-- CLK_OUT7____60.000_____90.000______50.0______131.921_____92.039
--
----------------------------------------------------------------------------------------------
-- "Input Clock   Freq (MHz)    Input Jitter (UI)" 
----------------------------------------------------------------------------------------------
-- __primary__________80.000____________0.010
--
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
use ieee.numeric_std.all;
--
library unisim;
use unisim.vcomponents.all;
--
entity Clk_mod_wizard is
port
(
  -- Clock in ports
  CLK_IN1           : in     std_logic;
  	  -- Clock out ports
  CLK_OUT1_CE       : in     std_logic;
  CLK_OUT1          : out    std_logic;
  CLK_OUT2_CE       : in     std_logic;
  CLK_OUT2          : out    std_logic;
  CLK_OUT3_CE       : in     std_logic;
  CLK_OUT3          : out    std_logic;
  CLK_OUT4_CE       : in     std_logic;
  CLK_OUT4          : out    std_logic;
  CLK_OUT5          : out    std_logic;
  CLK_OUT6          : out    std_logic;
  CLK_OUT7_CE       : in     std_logic;
  CLK_OUT7          : out    std_logic;
  -- Dynamic reconfiguration ports
  DADDR             : in     std_logic_vector( 6 downto 0);
  DCLK              : in     std_logic;
  DEN               : in     std_logic;
  DIN                : in     std_logic_vector(15 downto 0);
  DOUT                : out    std_logic_vector(15 downto 0);
  DWE               : in     std_logic;
  DRDY              : out    std_logic;
  -- Dynamic phase shift ports
  PSCLK             : in     std_logic;
  PSEN              : in     std_logic;
  PSINCDEC          : in     std_logic;
  PSDONE            : out    std_logic;
  -- Status and control signals
  RESET             : in     std_logic;
  POWER_DOWN        : in     std_logic;
  INPUT_CLK_STOPPED : out    std_logic;
  CLKFB_STOPPED : out    std_logic;
  LOCKED            : out    std_logic
 );
end Clk_mod_wizard;
--
architecture xilinx of Clk_mod_wizard is
--
  attribute CORE_GENERATION_INFO : string;
  attribute CORE_GENERATION_INFO of xilinx : architecture is "Clk_mod_wizard,clk_wiz_v3_6,{component_name=Clk_mod_wizard,use_phase_alignment=true,use_min_o_jitter=false,use_max_i_jitter=false,use_dyn_phase_shift=true,use_inclk_switchover=false,use_dyn_reconfig=true,feedback_source=FDBK_AUTO,primtype_sel=MMCM_ADV,num_out_clk=7,clkin1_period=12.5,clkin2_period=10.0,use_power_down=true,use_reset=true,use_locked=true,use_inclk_stopped=true,use_status=false,use_freeze=false,use_clk_valid=false,feedback_type=SINGLE,clock_mgr_type=MANUAL,manual_override=false}";
  -- Input clock buffering / unused connectors
  signal clkin1      : std_logic;
  -- Output clock buffering / unused connectors
  signal clkfbout         : std_logic;
  signal clkfbout_buf     : std_logic;
  signal clkfboutb_unused : std_logic;
  signal clkout0          : std_logic;
  signal clkout0b_unused  : std_logic;
  signal clkout1          : std_logic;
  signal clkout1b_unused  : std_logic;
  signal clkout2          : std_logic;
  signal clkout2b_unused  : std_logic;
  signal clkout3          : std_logic;
  signal clkout3b_unused  : std_logic;
  signal clkout4          : std_logic;
  signal clkout5          : std_logic;
  signal clkout6          : std_logic;
  -- Unused status signals
  signal clkfbstopped_unused : std_logic;
begin
--
  -- Input buffering
  --------------------------------------
  clkin1_buf : IBUFG
  port map
   (O => clkin1,
    I => CLK_IN1);
--
  -- Clocking primitive
  --------------------------------------
  -- Instantiation of the MMCM primitive
  --    * Unused inputs are tied off
  --    * Unused outputs are labeled unused
  mmcm_adv_inst : MMCME2_ADV
  generic map
   	(
  BANDWIDTH            => "OPTIMIZED",
  CLKOUT4_CASCADE      => FALSE,
  COMPENSATION         => "ZHOLD",
  STARTUP_WAIT         => FALSE,
  DIVCLK_DIVIDE        => 1,
   CLKFBOUT_MULT_F      => 15.000,
   CLKFBOUT_PHASE       => 0.000,
   CLKFBOUT_USE_FINE_PS => FALSE,
   CLKOUT0_DIVIDE_F     => 10.000,
   CLKOUT0_PHASE        => 0.000,
 	   CLKOUT0_DUTY_CYCLE   => 0.500,
 	   CLKOUT0_USE_FINE_PS  => TRUE,
   CLKOUT1_DIVIDE       => 8,
   CLKOUT1_PHASE        => 0.000,
   CLKOUT1_DUTY_CYCLE   => 0.500,
   CLKOUT1_USE_FINE_PS  => FALSE,
   CLKOUT2_DIVIDE       => 12,
   CLKOUT2_PHASE        => 0.000,
   CLKOUT2_DUTY_CYCLE   => 0.500,
   CLKOUT2_USE_FINE_PS  => FALSE,
   CLKOUT3_DIVIDE       => 12,
   CLKOUT3_PHASE        => 180.000,
   CLKOUT3_DUTY_CYCLE   => 0.500,
   CLKOUT3_USE_FINE_PS  => FALSE,
   CLKOUT4_DIVIDE       => 6,
   CLKOUT4_PHASE        => 270.000,
   CLKOUT4_DUTY_CYCLE   => 0.500,
   CLKOUT4_USE_FINE_PS  => FALSE,
   CLKOUT5_DIVIDE       => 20,
   CLKOUT5_PHASE        => 0.000,
   CLKOUT5_DUTY_CYCLE   => 0.500,
   CLKOUT5_USE_FINE_PS  => FALSE,
   CLKOUT6_DIVIDE       => 20,
   CLKOUT6_PHASE        => 90.000,
   CLKOUT6_DUTY_CYCLE   => 0.500,
 	   CLKOUT6_USE_FINE_PS  => FALSE,
   CLKIN1_PERIOD        => 12.5,
 	   REF_JITTER1          => 0.010
)
  port map
  	  -- Output clocks
   (
    CLKFBOUT            => clkfbout,
    CLKFBOUTB           => clkfboutb_unused,
    CLKOUT0             => clkout0,
    CLKOUT0B            => clkout0b_unused,
    CLKOUT1             => clkout1,
    CLKOUT1B            => clkout1b_unused,
    CLKOUT2             => clkout2,
    CLKOUT2B            => clkout2b_unused,
    CLKOUT3             => clkout3,
    CLKOUT3B            => clkout3b_unused,
    CLKOUT4             => clkout4,
    CLKOUT5             => clkout5,
    CLKOUT6             => clkout6,
    -- Input clock control
    CLKFBIN             => clkfbout_buf,
    CLKIN1              => clkin1,
    CLKIN2              => '0',
    -- Tied to always select the primary input clock
    CLKINSEL            => '1',
    -- Ports for dynamic reconfiguration
    DADDR               => DADDR,
    DCLK                => DCLK,
    DEN                 => DEN,
    DI                  => DIN,
    DO                  => DOUT,
    DRDY                => DRDY,
    DWE                 => DWE,
    -- Ports for dynamic phase shift
    PSCLK               => PSCLK,
 	    PSEN                => PSEN,
 	    PSINCDEC            => PSINCDEC,
 	    PSDONE              => PSDONE,
 	    -- Other control and status signals
    LOCKED              => LOCKED,
    CLKINSTOPPED        => INPUT_CLK_STOPPED,
    CLKFBSTOPPED        => CLKFB_STOPPED,
    PWRDWN              => POWER_DOWN,
    RST                 => RESET);
--  
-- Output buffering
-------------------------------------
  clkf_buf : BUFG
    port map
   	(
 O => clkfbout_buf,
    	 I => clkfbout
);
--
  clkout1_buf : BUFGCE
   port map
  	 (
 O   => CLK_OUT1,
   	 CE  => CLK_OUT1_CE,
 	  I   => clkout0
);
--
  clkout2_buf : BUFGCE
   port map
   	(
 O   => CLK_OUT2,
 	 CE  => CLK_OUT2_CE,
 	 I   => clkout1
);
--
  clkout3_buf : BUFHCE
   port map
   	(
 O   => CLK_OUT3,
  	 CE  => CLK_OUT3_CE,
  	  I   => clkout2
);
--
  clkout4_buf : BUFHCE
   port map
   	(
 O   => CLK_OUT4,
   	 CE  => CLK_OUT4_CE,
   	 I   => clkout3
);
--
  clkout5_buf : BUFG
   port map
   	(
 O   => CLK_OUT5,
 	  I   => clkout4
);
--
  clkout6_buf : BUFH
   port map
   	(
 O   => CLK_OUT6,
   	 I   => clkout5
);
--
  clkout7_buf : BUFHCE
   port map
   	(
 O   => CLK_OUT7,
   	 CE  => CLK_OUT7_CE,
   	 I   => clkout6
);
--
end xilinx;

Листинг 1. Текст VHDL-описания узла формирования тактовых сигналов Clk_mod_wizard

В начале VHDL-описания в виде комментариев приведена информация о параметрах входного и выходных сигналов рассматриваемого узла формирования тактовых сигналов. Затем даются ссылки на используемые библиотеки и пакеты этих библиотек. Далее представлено объявление объекта Clk_mod_wizard, представляющего создаваемый узел формирования тактовых сигналов, с описанием его интерфейса. Последующая часть содержит структурное описание архитектуры указанного объекта.

Раздел описания архитектуры объекта Clk_mod_wizard начинается с определения атрибута CORE_GENERATION_INFO, который предоставляет информацию о заданных значениях параметров настройки ядра средств CORE Generator, использованного для формирования VHDL-описания узла синхронизации. Далее следуют выражения декларации внутренних сигналов и операторы создания экземпляров соответствующих библиотечных примитивов. В составе архитектуры указанного объекта предусмотрен один экземпляр входного глобального буферного элемента IBUFG, экземпляр библиотечного примитива MMCME2_ADV [22], два экземпляра глобального буферного элемента BUFG, два экземпляра глобального буферного элемента с входом разрешения синхронизации BUFGCE, а также три экземпляра глобального буферного элемента со входом разрешения синхронизации BUFHCE и один экземпляр глобального буферного элемента BUFH.

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

  • CLK_IN1— вход опорного сигнала синхронизации с частотой 80 МГц;
  • CLK_OUT1_CE — вход разрешения выходного тактового сигнала с частотой 120 МГц;
  • CLK_OUT1 — выход тактового сигнала с частотой 120 МГц;
  • CLK_OUT2_CE — вход разрешения выходного тактового сигнала с частотой 150 МГц;
  • CLK_OUT2 — выход тактового сигнала с частотой 150 МГц;
  • CLK_OUT3_CE — вход разрешения выходного тактового сигнала с частотой 100 МГц без фазового сдвига;
  • CLK_OUT3 — выход тактового сигнала с частотой 100 МГц без фазового сдвига;
  • CLK_OUT4_CE — вход разрешения выходного тактового сигнала с частотой 100 МГц со сдвигом фазы на половину периода;
  • CLK_OUT4 — выход тактового сигнала с частотой 100 МГц со сдвигом фазы на половину периода;
  • CLK_OUT5 — выход тактового сигнала с частотой 200 МГц и фазовым сдвигом на три четверти периода;
  • CLK_OUT6 — выход тактового сигнала с частотой 60 МГц без фазового сдвига;
  • CLK_OUT7_CE — вход разрешения выходного тактового сигнала с частотой 60 МГц со сдвигом фазы на четверть периода;
  • CLK_OUT7 — выход тактового сигнала с частотой 60 МГц со сдвигом фазы на четверть периода;
  • DADDR — входная семиразрядная адресная шина порта динамического реконфигурирования Dynamic Reconfiguration Port (DRP);
  • DCLK — вход тактового сигнала для порта динамического реконфигурирования DRP;
  • DEN — вход сигнала разрешения порта динамического реконфигурирования DRP;
  • DIN — входная шестнадцатиразрядная шина данных порта динамического реконфигурирования DRP;
  • DOUT — выходная шестнадцатиразрядная шина данных порта динамического реконфигурирования DRP;
  • DWE — вход сигнала разрешения записи данных в порт динамического реконфигурирования DRP;
  • DRDY — выход сигнала готовности данных порта динамического реконфигурирования DRP;
  • PSCLK — вход сигнала синхронизации для интерфейса управления динамическим изменением фазового сдвига;
  • PSEN — вход сигнала, разрешающего выполнение операции динамического изменения значения фазового сдвига;
  • PSINCDEC — вход выбора режима изменения фазового сдвига (инкрементный или декрементный);
  • PSDONE — выход сигнала, информирующего о завершении операции фазового сдвига;
  • RESET — вход сигнала асинхронного сброса;
  • POWER_DOWN — вход сигнала отключения питания модуля MMCM, не используемого в течение некоторого интервала времени;
  • INPUT_CLK_STOPPED — выход сигнала, предупреждающего об отсутствии переключений входного сигнала синхронизации;
  • CLKFB_STOPPED — выход сигнала, информирующего о прекращении переключений сигнала на входе обратной связи модуля MMCM;
  • LOCKED — выход сигнала, сообщающего о достижении режима фазового синхронизма.

При использовании узла формирования тактовых сигналов Clk_mod_wizard в качестве компонента в составе VHDL-описания разрабатываемого устройства или встраиваемой микропроцессорной системы необходимо включить в раздел декларации конструкцию, которую демонстрирует листинг 2.

Для формирования конкретного экземпляра компонента, представляющего рассматриваемый узел синхронизации, следует воспользоваться оператором, шаблон которого приведен в листинге 3.

На рис. 1 представлены временные диаграммы входных и выходных сигналов узла формирования тактовых сигналов Clk_mod_wizard, демонстрирующие основные режимы его функционирования, которые были сформированы в процессе полного временного моделирования средствами Xilinx ISIM [21].

Временные диаграммы входных и выходных сигналов узла синхронизации Clk_mod_wizard

Рис. 1. Временные диаграммы входных и выходных сигналов узла синхронизации Clk_mod_wizard

 

Проектирование узлов формирования тактовых сигналов с использованием шаблонов HDL-редактора интегрированной среды разработки PlanAhead

Процесс подготовки VHDL-описаний узлов синхронизации в HDL-редакторе интегрированной среды разработки PlanAhead включает те же основные этапы, что и во встроенном редакторе САПР серии Xilinx ISE Design Suite, подробно рассмотренные в [23]. Вначале создается основа нового модуля исходного HDL-описания разрабатываемого узла формирования тактовых сигналов. Затем в автоматически сгенерированный код включаются шаблоны операторов создания экземпляров необходимых компонентов. Далее определяются значения параметров настройки используемых компонентов и осуществляется их сопряжение.

Для того чтобы сформировать основу нового модуля VHDL-описания узла синхронизации в интегрированной среде разработки PlanAhead, нужно воспользоваться мастером Add Source Wizard. Активизация мастера подготовки модулей исходного описания и включения их в состав проекта производится с помощью команды Add Sources, доступ к которой предоставляет всплывающее меню File и раздел Project Manager панели управления основными процессами, выполняемыми в ходе проектирования, Flow Navigator. При реализации указанной команды на экране появляется стартовая диалоговая панель мастера с заголовком Add Sources (рис. 2), предназначенная для выбора типа модуля, добавляемого в состав разрабатываемого проекта.

Запуск мастера создания основы нового модуля исходного описания

Рис. 2. Запуск мастера создания основы нового модуля исходного описания

Для генерации основы нового модуля исходного описания узла формирования тактовых сигналов, в стартовой диалоговой панели мастера Add Source Wizard необходимо переключить в нажатое положение кнопку Add or Create Design Sources, как показано на рис. 2. После этого, нажав клавишу «Далее» (Next), расположенную в нижней части панели Add Sources, перейти к следующей диалоговой панели мастера создания модулей исходного описания и включения их в состав проекта, чей вид приведен на рис. 3.

Определение исходных параметров для генерации основы модуля исходного описания узла синхронизации

Рис. 3. Определение исходных параметров для генерации основы модуля исходного описания узла синхронизации

Чтобы создать новый модуль исходного описания узла синхронизации, в открывшейся диалоговой панели, которая имеет заголовок Add or Create Design Sources, необходимо воспользоваться клавишей Create File. После ее нажатия появляется диалоговая панель с заголовком Create Source File, как демонстрирует рис. 3. В этой диалоговой панели нужно определить тип, идентификатор и место расположения создаваемого файла на диске, используя поля выбора и редактирования значений параметров File type, File name и File location соответственно. Для генерации основы описания разрабатываемого узла формирования тактовых сигналов на языке VHDL в поле выбора значения параметра File type следует указать одноименный вариант. Идентификатор создаваемого файла VHDL-описания вводится с помощью клавиатуры в поле редактирования значения параметра File name. Создаваемый модуль целесообразно сохранить в соответствующем разделе рабочего каталога текущего проекта интегрированной среды разработки PlanAhead. Для этого следует в качестве значения параметра File location использовать вариант <Local to Project>, предлагаемый по умолчанию. Все указанные значения параметров создаваемого файла исходного HDL-описания узла синхронизации необходимо подтвердить нажатием клавиши OK, расположенной в нижней части диалоговой панели Create Source File. После этого в таблице, представленной в диалоговой панели Add or Create Design Sources, добавляется новая строка, в которой отображаются основные параметры создаваемого файла. Далее нужно воспользоваться клавишей «Готово» (Finish), находящейся в нижней части диалоговой панели Add or Create Design Sources. При нажатии указанной клавиши появляется диалоговая панель с заголовком Define Module, как показано на рис. 3. В открывшейся диалоговой панели нужно в поле редактирования значения параметра Entity name назначить идентификатор объекта, представляющего узел формирования тактовых сигналов, а в поле редактирования Architecture name — идентификатор архитектуры этого объекта. В большинстве случаев для этих параметров можно использовать варианты значений, предлагаемые по умолчанию в соответствующих полях редактирования. Кроме того, в диалоговой панели Define Module необходимо внести сведения о входных и выходных портах разрабатываемого узла синхронизации в таблицу I/O Port Definitions. Описанная процедура, подробно рассмотренная в [23], завершается нажатием клавиши OK, представленной в нижней части указанной диалоговой панели. В результате выполненных действий запускается процесс автоматической генерации основы модуля исходного описания узла синхронизации, в случае успешного завершения которого в окне исходных модулей проекта Sources в разделе Design Sources появляется строка с идентификатором сгенерированного файла. Чтобы подготовить на основе автоматически сформированного кода законченное VHDL-описание проектируемого узла формирования тактовых сигналов, следует расположить курсор в этой строке и дважды щелкнуть левой кнопкой мыши, после чего открывается новое окно встроенного HDL-редактора интегрированной среды разработки PlanAhead, в котором отображается сгенерированный текст (рис. 4).

Отображение сгенерированного кода основы VHDL-описания узла синхронизации в окне HDL-редактора интегрированной среды разработки PlanAhead

Рис. 4. Отображение сгенерированного кода основы VHDL-описания узла синхронизации в окне HDL-редактора интегрированной среды разработки PlanAhead

В состав автоматически сформированного кода входят разделы декларации используемых библиотек и пакетов, описание интерфейса объекта entity, который представляет разрабатываемый узел синхронизации, а также основу архитектурного тела создаваемого VHDL-описания. Для определения архитектуры указанного объекта с помощью шаблонов встроенного HDL-редактора необходимо прежде всего открыть вкладку Templates рабочей области интегрированной среды разработки PlanAhead, воспользовавшись кнопкой кнопка, которая представлена на панели инструментов, расположенной слева от окна редактирования, или командой Language Templates из всплывающего меню Window, как демонстрирует рис. 4. Если эта вкладка уже присутствует в рабочей области основного окна средств PlanAhead, но не активна, то для ее отображения достаточно расположить курсор на названии и щелкнуть левой кнопкой мыши. Для удобства применения шаблонов рекомендуется развернуть вкладку Templates на всю рабочую область интегрированной среды разработки PlanAhead, как показано на рис. 5.

Включение шаблонов HDL-описания компонентов в состав архитектуры разрабатываемого узла синхронизации

Рис. 5. Включение шаблонов HDL-описания компонентов в состав архитектуры разрабатываемого узла синхронизации

Рассматриваемая вкладка содержит две встроенные панели. В верхней части этой вкладки расположена встроенная панель Templates, в которой в виде папок отображаются основные группы шаблонов встроенного HDL-редактора интегрированной среды разработки PlanAhead. Папки имеют ту же структуру, что и аналогичные разделы шаблонов встроенного HDL-редактора САПР серии Xilinx ISE Design Suite [22]. В нижней части вкладки Templates находится встроенная панель Preview, которая предоставляет возможность ознакомиться с содержимым выбранного шаблона перед его использованием. Как и в HDL-редакторе САПР серии Xilinx ISE Design Suite, шаблоны описаний большинства компонентов, применяемых в узлах формирования тактовых сигналов, расположены в папке Clock Components, входящей в состав раздела, идентификатор которого совпадает с названием используемой серии ПЛИС. Указанная папка, в свою очередь, включает три папки с названиями Clock Buffers, Clock MUXes и MMCM/PLL (рис. 5). Для доступа к шаблонам HDL-описания буферных элементов, применяемых в цепях распространения сигналов синхронизации, необходимо открыть папку Clock Buffers. Шаблоны описаний мультиплексоров, предназначенных для распределения тактовых сигналов в кристаллах программируемой логики, содержатся в папке Clock MUXes. Шаблоны операторов создания конкретных экземпляров комбинированных модулей управления синхронизацией и модулей фазовой автоподстройки частоты сосредоточены в папке MMCM/PLL.

Для того чтобы использовать требуемый шаблон в составе создаваемого описания архитектуры разрабатываемого узла формирования тактовых сигналов, нужно в первую очередь открыть соответствующую папку и щелчком левой кнопки мыши выделить строку с названием этого шаблона. Код выбранного шаблона автоматически отобразится во встроенной панели Preview. Далее необходимо нажать кнопку кнопка, которая расположена на панели инструментов встроенного HDL-редактора, представленной в левой части области расположения дочерних окон интегрированной среды разработки PlanAhead. После выполнения указанных действий содержимое выбранного шаблона появляется в позиции расположения курсора в рабочем окне встроенного HDL-редактора. Добавленный текст шаблона отображается в этом окне в виде выделенного фрагмента. Включение выбранного шаблона в создаваемое описание узла формирования тактовых сигналов может также осуществляться методом перетаскивания. Для этого следует расположить курсор в строке с названием используемого шаблона, отображаемой во встроенной панели Templates, нажать левую кнопку мыши и, не отпуская ее, переместить курсор в требуемую позицию рабочего окна HDL-редактора. При освобождении левой кнопки мыши текст выбранного шаблона будет вставлен в указанную строку окна редактирования создаваемого HDL-описания узла синхронизации.

После включения в состав формируемого VHDL-описания шаблонов операторов создания экземпляров всех компонентов, необходимых для реализации функций разрабатываемого узла синхронизации, следует определить значения настраиваемых параметров [22] для каждого экземпляра модуля MMCM и PLL. Для выполнения нужных соединений входных и выходных портов используемых экземпляров компонентов следует добавить выражения декларации внутренних сигналов в соответствующий раздел VHDL-описания узла формирования тактовых сигналов. После этого надо в каждом операторе создания экземпляра компонента узла синхронизации указать подключение его интерфейсных портов.

 

Создание HDL-описаний узлов формирования тактовых сигналов с помощью IP-ядер, предоставляемых центральным депозитарием интегрированной среды разработки PlanAhead

Центральный депозитарий параметризированных IP-ядер интегрированной среды разработки PlanAhead предоставляет возможность подготовки HDL-описаний узлов формирования тактовых сигналов в интерактивном режиме. Для получения доступа к этому депозитарию следует воспользоваться командой IP Catalog, которая представлена в разделе Project Manager панели управления основными процессами Flow Navigator, а также во всплывающем меню Window. При активизации указанной команды в области расположения рабочих окон интегрированной среды разработки PlanAhead появляется вкладка IP Catalog, чей вид приведен на рис. 6.

Открытие центрального депозитария IP-ядер интегрированной среды разработки PlanAhead

Рис. 6. Открытие центрального депозитария IP-ядер интегрированной среды разработки PlanAhead

В верхней части открывшейся вкладки имеется таблица, отображающая информацию обо всех IP-ядрах, которые включает центральный депозитарий интегрированной среды разработки PlanAhead. Таблица разбита на пять колонок: Name, Version, AXI4, Status и License. В колонке Name перечислены названия предоставляемых параметризированных IP-ядер. Большинство ядер, представленных в депозитарии IP Catalog, сгруппировано в отдельные папки в соответствии с их функциональным назначением. Названия папок также отображаются в колонке Name. Колонка Version содержит информацию о версиях предлагаемых IP-ядер. В колонке AXI4 приводятся сведения о поддержке предоставляемых ядер одноименного интерфейса. Колонка Status информирует о статусе предлагаемых IP-ядер. В колонке License содержатся данные о наличии лицензии на применение соответствующих ядер. При выделении в рассмотренной таблице строки с названием требуемого IP-ядра во встроенной панели Details, которая находится в нижней части вкладки IP Catalog, отображаются краткие сведения о выбранном элементе.

Для того чтобы воспользоваться IP-ядрами центрального депозитария интегрированной среды разработки PlanAhead для подготовки HDL-описаний узлов синхронизации, нужно вначале открыть папку FPGA Features and Design, а затем в этой папке развернуть раздел Clocking, как демонстрирует рис. 6. Процедура установки требуемых значений параметров настройки IP-ядер, предназначенных для создания описаний узлов формирования тактовых сигналов, выполняется в интерактивном режиме с помощью мастера Clocking Wizard. Активизация этого «мастера» осуществляется двойным щелчком левой кнопки мыши при расположении курсора в строке таблицы с его названием. После указанных действий на экране отображается стартовая диалоговая панель мастера Clocking Wizard с заголовком Clocking Features/Input Clocks, чей вид представлен на рис. 7.

Старт процедуры определения параметров настройки IP-ядра узла синхронизации с помощью мастера Clocking Wizard

Рис. 7. Старт процедуры определения параметров настройки IP-ядра узла синхронизации с помощью мастера Clocking Wizard

В интегрированной среде разработки PlanAhead используется та же (последняя) версия мастера Clocking Wizard, что и в составе средств CORE Generator САПР серии Xilinx ISE Design Suite. Подробное описание работы с этой версией представлено в [23]. Процедура установки требуемых значений параметров настройки IP-ядер, используемых для разработки HDL-описаний узлов формирования тактовых сигналов, завершается нажатием клавиши Generate, расположенной в нижней части заключительной диалоговой панели Core Summary. После этого в окне исходных модулей проекта Sources интегрированной среды разработки PlanAhead в разделе Design Sources появляется строка с идентификатором сконфигурированного ядра (рис. 8).

Завершение процедуры определения параметров настройки IP-ядра узла синхронизации с помощью мастера Clocking Wizard

Рис. 8. Завершение процедуры определения параметров настройки IP-ядра узла синхронизации с помощью мастера Clocking Wizard

Для включения этого ядра в состав модулей исходного описания более высокого уровня иерархии проекта, а также осуществления этапов синтеза и моделирования в процессе проектирования разрабатываемого устройства или встраиваемой микропроцессорной системы с его использованием следует сгенерировать соответствующие файлы. Чтобы получить доступ к управлению формированием этих файлов, нужно применить команду Generate Output Products контекстно-зависимого всплывающего меню, открываемого щелчком правой кнопки мыши при расположении курсора в строке с идентификатором сконфигурированного ядра узла синхронизации. При выборе указанной команды на экране появляется диалоговая панель с заголовком Manage Output Products, как показано на рис. 9.

Выбор генерируемых файлов для сконфигурированного IP-ядра узла синхронизации

Рис. 9. Выбор генерируемых файлов для сконфигурированного IP-ядра узла синхронизации

При ее открытии первоначально во встроенной панели Output Products Selection в форме таблицы отображается только информация о типах файлов, генерируемых для сконфигурированного IP-ядра, и их текущем состоянии. В первой колонке этой таблицы перечислены типы формируемых файлов. Для сконфигурированного IP-ядра могут формироваться файлы шаблонов его описания на используемом языке HDL (Instantiation Template), а также файлы, предназначенные для выполнения процессов синтеза (Synthesis) и моделирования (Simulation). Чтобы получить более подробные сведения о каждом типе формируемого файла, нужно установить курсор на пиктограмме в виде знака «+», расположенной в начале соответствующей строки таблицы, и щелкнуть левой кнопкой мыши. После этого диалоговая панель Manage Output Products принимает вид, изображенный на рис. 10.

Запуск и выполнение процесса генерации файлов для сконфигурированного IP-ядра узла синхронизации

Рис. 10. Запуск и выполнение процесса генерации файлов для сконфигурированного IP-ядра узла синхронизации

Сведения о текущем состоянии файлов каждого типа для сконфигурированного IP-ядра узла формирования тактовых сигналов отображаются во второй колонке таблицы (Current State). При первом открытии диалоговой панели Manage Output Products, когда файлы всех типов еще не сгенерированы, в каждой ячейке указанной колонки отображается вариант Not Generated. Если процесс генерации файлов какого-либо типа уже выполнялся, то в соответствующей ячейке столбца Current State представлен вариант Generated.

Ячейки третьей колонки таблицы (Action) представляют собой поле выбора значения одноименного параметра, определяющего текущую операцию, выполняемую для файлов соответствующего типа. Чтобы выбрать необходимую операцию для файлов каждого типа, следует расположить курсор в нужной ячейке этого столбца и щелкнуть левой кнопкой мыши. После чего на экране появляется выпадающий список допустимых значений параметра Action, как демонстрирует рис. 10. Содержимое выпадающего списка доступных операций для файлов выбранного типа зависит от текущего состояния этих файлов, информация о котором отображается в соответствующей ячейке колонки Current State. Если файлы требуемого типа не сформированы, то выпадающий список возможных значений параметра Action предусматривает два варианта — Generate и Do Not Generate. Для генерации файлов какого-либо типа нужно в соответствующей ячейке столбца Action выбрать вариант Generate. Чтобы задать операцию формирования для всех типов файлов, целесообразно воспользоваться кнопкой кнопка, расположенной в левой части диалоговой панели Manage Output Products. В том случае, когда отсутствует необходимость формирования файлов определенного типа, в соответствующей ячейке колонки Action следует указать вариант Do Not Generate.

Если файлы какого-либо типа уже сгенерированы, то выпадающий список возможных операций для этих файлов содержит три варианта — Reset, Regenerate, Do Nothing. Для удаления сформированных файлов определенного типа нужно в соответствующей ячейке столбца Action выбрать вариант Reset. Кнопка кнопка, находящаяся в левой части диалоговой панели Manage Output Products, позволяет назначить операцию удаления для сгенерированных файлов всех типов. Чтобы обновить файлы выбранного типа, например после изменения значений параметров настройки используемого IP-ядра, необходимо указать вариант Regenerate. Вариант Do Nothing используется в том случае, когда сгенерированные файлы не требуют обновления.

После выбора необходимых операций для файлов каждого типа нужно активизировать процесс их выполнения нажатием клавиши OK, которая представлена в нижней части диалоговой панели Manage Output Products. После успешного окончания этого процесса на вкладке Hierarchy окна исходных модулей проекта Sources в разделах Design Sources и Simulation Sources добавляются строки с идентификаторами сгенерированных файлов, предназначенных для осуществления процессов синтеза и моделирования соответственно (рис. 10). Чтобы получить доступ ко всем файлам, сформированным для сконфигурированного IP-ядра узла синхронизации, рекомендуется открыть вкладку IP Sources окна исходных модулей проекта Sources, чей вид представлен на рис. 11.

Отображение шаблонов HDL-описания сформированного узла синхронизации

Рис. 11. Отображение шаблонов HDL-описания сформированного узла синхронизации

Для отображения содержимого сгенерированного файла шаблонов HDL-описания узла формирования тактовых сигналов следует на этой вкладке развернуть раздел Instantiation Template, затем расположить курсор в строке с названием файла, совпадающим с идентификатором сконфигурированного ядра, с расширением .vho и дважды щелкнуть левой кнопкой мыши. После выполнения указанных действий в области расположения дочерних окон интегрированной среды разработки PlanAhead открывается новая вкладка окна встроенного HDL-редактора, как демонстрирует рис. 11. Указанный файл включает шаблоны выражений декларации и создания экземпляра компонента, представляющего сформированный узел синхронизации в составе исходного описания более высокого уровня иерархии проекта. Эти выражения нужно, используя команды копирования и вставки встроенного HDL-редактора, добавить в соответствующие разделы модуля исходного описания более высокого уровня иерархии проекта, в частности модуля верхнего уровня иерархии.

Для выполнения этапа синтеза проектируемого устройства или встраиваемой микропроцессорной системы с использованием сконфигурированного IP-ядра узла синхронизации генерируются два файла. Файл с расширением .vhd содержит синтезируемое описание узла формирования тактовых сигналов. Чтобы открыть этот файл, необходимо прежде всего на вкладке IP Sources окна исходных модулей проекта Sources развернуть раздел Synthesis, как показано на рис. 12. Затем расположить курсор в строке с названием файла синтезируемого описания узла синхронизации и дважды щелкнуть левой кнопкой мыши. После этого в области расположения дочерних окон интегрированной среды разработки PlanAhead добавляется новая вкладка окна встроенного HDL-редактора, которая содержит текст сгенерированного синтезируемого HDL-описания узла формирования тактовых сигналов (рис. 12).

Отображение синтезируемого описания узла формирования тактовых сигналов

Рис. 12. Отображение синтезируемого описания узла формирования тактовых сигналов

В файле с расширением .ucf содержатся выражения временных и топологических ограничений, которые относятся к сконфигурированному IP-ядру узла синхронизации. Для отображения содержимого этого файла следует указать курсором строку с его идентификатором, представленную в разделе Synthesis на вкладке IP Sources окна исходных модулей проекта Sources, и дважды щелкнуть левой кнопкой мыши. При этом открывается новая вкладка рабочего окна HDL-редактора, чей вид приведен на рис. 13.

Отображение файла временных и топологических ограничений для разработанного узла синхронизации

Рис. 13. Отображение файла временных и топологических ограничений для разработанного узла синхронизации

В начале сгенерированного ucf-файла в виде комментариев представлена информация о назначении устанавливаемых временных и топологических ограничений. Далее следуют непосредственно выражения ограничений для сгенерированного описания узла синхронизации, которые могут быть скопированы и добавлены в состав файла временных и топологических ограничений проекта разрабатываемого устройства или встраиваемой микропроцессорной системы.

 

Особенности подготовки описаний узлов формирования тактовых сигналов, выполненных на основе каскадного соединения комбинированных модулей управления синхронизацией и модулей фазовой автоподстройки частоты

В предыдущих разделах основное внимание уделялось подготовке описаний узлов формирования тактовых сигналов, реализуемых на базе одиночных комбинированных модулей управления синхронизацией и модулей фазовой автоподстройки частоты. Но в ряде случаев одного модуля MMCM или PLL недостаточно для выполнения всех требований, предъявляемых к разрабатываемому узлу синхронизации. В частности, одиночный модуль фазовой автоподстройки частоты или комбинированный модуль управления синхронизацией не всегда позволяет сформировать необходимую совокупность тактовых сигналов с точными значениями частоты. В таких случаях нужно использовать каскадное соединение модулей MMCM и/или PLL. В структуре ресурсов формирования и распределения тактовых сигналов кристаллов программируемой логики серий Artix‑7, Kintex‑7 и Virtex‑7 предусмотрена выделенная магистраль, предоставляющая возможность прямого каскадного соединения модулей фазовой автоподстройки частоты и комбинированных модулей управления синхронизацией без использования буферных элементов.

К сожалению, последняя версия мастера Clocking Wizard, предоставляемая в составе САПР серии Xilinx ISE Design Suite и интегрированной среды разработки PlanAhead для ПЛИС указанных серий, не поддерживает возможность автоматической генерации HDL-описаний узлов синхронизации, реализуемых на базе каскадного соединения модулей фазовой автоподстройки частоты и/или комбинированных модулей управления синхронизацией. Поэтому процесс подготовки описаний таких узлов формирования тактовых сигналов целесообразно осуществлять в два этапа. На первом этапе с помощью мастера Clocking Wizard поочередно генерируются HDL-описания двух блоков формирования тактовых сигналов. При этом для первого модуля фазовой автоподстройки частоты или комбинированного модуля управления синхронизацией, используемого в составе каскадного соединения, указывается требуемый тип источника входного сигнала синхронизации, а на выходе тактового сигнала, подключаемом ко второму модулю PLL или MMCM, буферный элемент не устанавливается. Описание второго модуля фазовой автоподстройки частоты или комбинированного модуля управления синхронизацией создается без входного буферного элемента. Для этого в поле выбора значения параметра Source диалоговой панели Clocking Features/Input Clocks [23] нужно указать вариант No buffer.

На втором этапе следует, выполнив стандартную процедуру создания нового исходного модуля в среде управляющей оболочки САПР ISE Design Suite «Навигатора проекта» (Project Navigator) или интегрированной среды разработки PlanAhead, сформировать файл HDL-описания, в котором осуществляется каскадное соединение блоков синхронизации, сгенерированных мастером Clocking Wizard. Таким образом, описание узла формирования тактовых сигналов, выполненного на базе каскадного соединения модулей PLL и/или MMCM, имеет иерархическую структуру. В этой структуре описания блоков синхронизации, подготовленные мастером Clocking Wizard, используются в качестве компонентов в файле верхнего уровня иерархии.

Литература
  1. Зотов В. Особенности архитектуры нового поколения ПЛИС с архитектурой FPGA фирмы Xilinx // Компоненты и технологии. 2010. №12.
  2. 7 Series FPGAs Overview. Advance Product Specification. Xilinx, 2015.
  3. Artix‑7 FPGAs Data Sheet: DC and Switching Characteristics. Xilinx, 2015.
  4. Kintex‑7 FPGAs Data Sheet: DC and Switching Characteristics. Xilinx, 2015.
  5. Virtex‑7 FPGAs Data Sheet: DC and Switching Characteristics. Xilinx, 2015.
  6. 7 Series FPGAs Migration. Methodology Guide. Xilinx, 2015.
  7. 7 Series FPGAs Configuration User Guide. Xilinx, 2015.
  8. 7 Series FPGAs SelectIO Resources User Guide. Xilinx, 2015.
  9. 7 Series FPGAs Clocking Resources User Guide. Xilinx, 2015.
  10. 7 Series FPGAs Memory Resources User Guide. Xilinx, 2015.
  11. 7 Series FPGAs Configurable Logic Block User Guide. Xilinx, 2015.
  12. 7 Series FPGAs GTX Transceivers User Guide. Xilinx, 2015.
  13. 7 Series FPGAs Integrated Block for PCIe User Guide. Xilinx, 2015.
  14. 7 Series DSP48E1 Slice User Guide. Xilinx, 2015.
  15. 7 Series FPGAs XADC Dual 12‑Bit 1MSPS Analog-to-Digital Converter User Guide. Xilinx, 2015.
  16. 7 Series FPGAs GTP Transceivers User Guide. Xilinx, 2015.
  17. Зотов В. Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ISE Design Suite // Компоненты и технологии. 2010. № 2–12. 2011. № 1–12. 2012. № 1–12.
  18. Зотов В. Ю. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия – Телеком, 2003.
  19. Зотов В. Ю. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx. М.: Горячая линия – Телеком, 2006.
  20. Зотов В. Проектирование цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с использованием средств CORE Generator // Компоненты и технологии. 2006. № 12. 2007. № 1.
  21. Зотов В. Моделирование цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, средствами ISIM в САПР ISE Design Suite // Компоненты и технологии. 2013. № 2–3.
  22. Зотов В. Проектирование узлов синхронизации цифровых устройств и встраиваемых микропроцессорных систем, реализуемых на базе ПЛИС фирмы Xilinx серий Artix‑7, Kintex‑7 и Virtex‑7. Часть 1 // Компоненты и технологии. 2016. № 3.
  23. Зотов В. Проектирование узлов синхронизации цифровых устройств и встраиваемых микропроцессорных систем, реализуемых на базе ПЛИС фирмы Xilinx серий Artix‑7, Kintex‑7 и Virtex‑7. Часть 2 // Компоненты и технологии. 2016. № 4.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *