Научная статья на тему 'СИНТЕЗИРУЕМОЕ VHDL-ОПИСАНИЕ АВТОМАТА УПРАВЛЕНИЯ ДИНАМИЧЕСКИМ СДВИГОМ ФАЗЫ ПРИМИТИВЫ MMCM ДЛЯ ПЛИС 7‑Й СЕРИИ ФИРМЫ XILINX'

СИНТЕЗИРУЕМОЕ VHDL-ОПИСАНИЕ АВТОМАТА УПРАВЛЕНИЯ ДИНАМИЧЕСКИМ СДВИГОМ ФАЗЫ ПРИМИТИВЫ MMCM ДЛЯ ПЛИС 7‑Й СЕРИИ ФИРМЫ XILINX Текст научной статьи по специальности «Медицинские технологии»

CC BY
64
28
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по медицинским технологиям, автор научной работы — Коробков Михаил

В статье предложено синтезируемое описание модулей управления динамическим сдвигом фазы в блоках управления тактовой частотой в ПЛИС 7‑й серии фирмы Xilinx. Приведены текстовые описания модулей и осциллограммы натурных испытаний, а также необходимые формулы расчета выполняемого сдвига фазы.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по медицинским технологиям , автор научной работы — Коробков Михаил

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «СИНТЕЗИРУЕМОЕ VHDL-ОПИСАНИЕ АВТОМАТА УПРАВЛЕНИЯ ДИНАМИЧЕСКИМ СДВИГОМ ФАЗЫ ПРИМИТИВЫ MMCM ДЛЯ ПЛИС 7‑Й СЕРИИ ФИРМЫ XILINX»

Синтезируемое VHDL-описание

автомата управления динамическим сдвигом фазы примитивы ММСМ для ПЛИС 7-й серии фирмы Xilinx

Михаил КОРОБКОВ

Korobkov. M.A@yandex.ru

В статье предложено синтезируемое описание модулей управления динамическим сдвигом фазы в блоках управления тактовой частотой в ПлИС 7-й серии фирмы Xilinx. Приведены текстовые описания модулей и осциллограммы натурных испытаний, а также необходимые формулы расчета выполняемого сдвига фазы.

Введение

Седьмая серия ПЛИС фирмы Xilinx представлена тремя семействами микросхем: Artix, Kintex и Virtex. Каждое из семейств 7-й серии имеет в своем составе специализированный модуль управления тактовой частотой и синхронизацией — Clock Management Tile (CMT). В самых больших ПЛИС 7-й серии таких модулей может быть до 24. Каждый из них содержит по одному блоку MMCM (Mixed-Mode Clock Manager) и PLL (Phase-Locked Loop) [1]. Блок MMCM имеет широкие возможности управления такто-

—- CLKIN1 CLKOUTO --

— CLKIN2 CLKOUTOB -

— CLKFBIN CLKOUT1 -

—»- RST CLKOUT1В -►

—► PWRDWN CLKOUT2 -

— CLKINSEL CLKOUT2B -».

—* DADDR[6:0] CLKOUT3 -►

—* DI [15:0] CLKOUT3B -►

-^ DWE

CLKOUT4 -►

- □EN

CLKOUT5 -►

- DCLK

CLKOUT6

- PSINCDEC

CLKFBOUT -

-^ PSEN

PSCLK CLKFBOUTB _J».

-^

LOCKED -

D0[15:0]

DRDY --

PSDONE -»►

CLKINSTOPPED -^

CLKFBSTOPPED --

выми частотами, а также их динамическими изменениями, что позволяет подстраивать тактовую частоту «на лету».

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

Описание примитивы MMCME2_ADV

Блок ММСМ для пользователя представлен двумя примитивами MMCME2_BASE и MMCME2_ADV. В отличие от базовой версии MMCME2_BASE расширенная примитива MMCME2_ADV содержит допол-

Рис. 1. Символьное изображение примитивы MMCME2 ADV

Таблица 1. Порты примитивы MMCME2_ADV

Описание Порты

Тактовый вход CLKIN1, CLKIN2, CLKFBIN, DCLK, PSCLK

Сигналы контроля и входных данных RST, CLKINSEL, DWE, DEN, DADDR, DI, PSINCDEC, PSEN

Тактовый выход CLKOUTO - CLKOUT6, CLKOUTOB -CLKOUT3B, CLKFBOUT, CLKFBOUTB

Сигналы состояний и выходные данные LOCKED, DO, DRDY, PSDONE, CLKINSTOPPED, CLKFBSTOPPED

Контроль вкл./откл. PWRDWN

нительные порты для выбора источника опорной частоты, доступ к порту динамической реконфигурации (DRP, Dynamic Reconfiguration Port), а также порты управления динамическим сдвигом фазы.

Символьное изображение примитивы MMCME2_ADV представлено на рис. 1, а функциональное назначение портов приведено в таблице 1.

Примитивы блока CMT в ПЛИС 7-й серии являются цифро-аналоговыми блоками, имеющими три режима работы: устранение искажений тактового сигнала, синтез частоты и уменьшение джиттера. Рабочая частота генератора, управляемого напряжением (VCO), определяется следующим выражением:

F-

VCO '

: Fr

(1)

L'CШ-N(MD), а выходная частота рассчитывается как:

^вых = Ракт(М/(ВхО)), (2)

где Рсьти — входная тактовая частота; М, В и О — значения счетчиков, показанных на рис. 2. Значение М соответствует параметру ^етВОиТ_МиШ^, значение В соответствует параметру DIVCLK_DIVIDE, а значение О соответствует параметру CLKOUT_DIVIDE в текстовом описании примитивы.

Семь О счетчиков могут быть независимо запрограммированы. Единственное ограничение накладывает рабочая частота ГУН, которая одинакова для всех выходных счетчиков, поскольку всеми счетчиками управляет только один ГУН.

Ограничения, накладываемые на параметры FCLKIN и FVCO для микросхем 7-й серии, приведены в соответствующих спецификациях на микросхемы [2].

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

66 компоненты

ПЛИС

General Routing

CLKIN1 CLKIN2

CLKFB-

Clock Switch Circuit

Lock Detect Lock Monitor

■ Lock

PFD

CP

LF

VCO

X

8-phase taps + 1 variable phase tap /

> оо Fractional Divide

> 01

> 02

> ОЗ

> 04

> 05

> Об

> М {Fractional Divide)

■ CLKOUTO • CLKOUTOB

■ CLKOUT1 • CLKOUT1B

■ CLKOUT2 • CLKOUT2B

■ CLKOUT3 - CLKOUT3B

- CLKFBOUT ■- CLKFBOUTB

Рис. 2. Блок диаграмма блока MMCM

жен быть активен в течение одного периода PSCLK. После завершения фазового сдвига сигнал PSDONE будет установлен в «1» ровно один период PSCLK. Время, в течение которого происходит выполнение команды, фиксировано и составляет 12 периодов PSCLK. После того как фазовый сдвиг инициализирован установкой PSEN, выход ММСМ выполняет инкремент/декремент фазы относительно ее текущего значения. О завершении выполнения фазового сдвига сигнализирует сигнал PSDONE, значение которого становится «1». После того как PSDONE установился в «1», может быть инициализирован следующий фазовый сдвиг. Для фазового сдвига нет максимального значения и переполнения. Полный сдвиг (360°) всегда может быть инициализирован для любой частоты. Когда достигается конец периода, фазовый сдвиг переходит в 0°.

Описание программного модуля

Таблица 2. Некоторые атрибуты блока MMCM

Атрибут Тип Диапазон значений Значение по умолчанию Описание

CLKOUT[1:6]_DIVIDE Integer 1-128 1 Выходной делитель или счетчик 0

CLKOUT[0]_DIVIDE_F Integer или Real 1-128, шаг 0,125 1

CLKFBOUT MULT F Integer или Real 2-64, шаг 0,125 5 Делитель в цепи обратной связи, счетчик М

DIVCLK DIVIDE Integer 1-106 1 Делитель входной тактовой частоты, счетчик D

CLKIN1 PERIOD Real 0,938-100 0.000 Период входной тактовой частоты, вход

CLKOUT0_USE_FINE_PS Логический FALSE, TRUE FALSE Разрешение динамического сдвига фазы. Параметр CLK0UT0_DIVIDE должен быть целочисленным

CLKOUT[1:6]_USE_FINE_P Логический FALSE, TRUE FALSE Разрешение динамического сдвига фазы

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

Примитива MMCME2_ADV имеет три входа и один выход для осуществления динамического сдвига фазы. Каждый выход ^КОиТ и делитель ^КБВОиТ могут быть индивидуально выбраны для выполнения фазового сдвига. За выбор выходов, фаза которых будет сдвинута, отвечают атрибуты ^КОиТ [0:6]_ USE_FINE_PS и аКРВ0иТ_ШЕ_РВДЕ_Р&

Контроль выполнения фазового сдвига осуществляется через порты PSEN, PSINDEC, PSCLK и PSDONE, временная диаграмма состояний которых приведена на рис. 3. Начальная фаза определяется атрибутом CLKOUT_PHASE. Часто начальный фазовый сдвиг не выбирается и остается равным 0°.

Рис. 3. Временная диаграмма интерфейса фазового сдвига

Фаза выхода ММСМ инкрементируется/де-крементируется в соответствии с состояниями управляющих сигналов PSEN, PSINCDEC, PSCLK и PSDONE относительно начального или предыдущего фазового сдвига. Сигналы PSEN, PSINCDEC и PSDONE синхронны с сигналом PSCLK. Когда PSEN активен один период PSCLK, инициализируется увеличение/уменьшение фазового сдвига. Когда PSINCDEC в «1», инициализируется положительный фазовый сдвиг, когда PSINCDEC в «0», инициализируется отрицательный фазовый сдвиг. Каждая команда инкремента фазового сдвига добавляет фазовый сдвиг выходу ММСМ, равный 1/56 части периода ГУН. Аналогично, при выполнении команды декремента, происходит уменьшение фазы на 1/56 часть периода ЭДСО. Сигнал PSEN дол-

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Проект динамического управления содержит два модуля: модуль примитивы MMCME2_ADV и автомат управления. Листинги модулей приведены в листингах 1 и 2 соответственно.

library ieee;

use ieee.std_logk_1164.all;

library unisim;

use unisim.vcomponents.all;

entity Mmcm is Port ( Clkln : in STD_LOGIC; ClkOutO : out STD_LOGIC; ClkOutl : out std_logic; ClkOut2 : out std_logic; ClkOut3 : out std_logic; ClkOut4 : out std_logic; ClkOut5 : out std_logic; ClkOut6 : out std_logic; MmcmLocked : out std_logic; Psen : in STD_LOGIC; PsIncDec : in STD_LOGIC; PsClk : in STD_LOGIC; PsDone : out STD_LOGIC); end Mmcm;

architecture Behavioral of Mmcm is

signal clkinl : std_logic; signal clkfbout : std_logic; signal clkfbout_buf : std_logic; signal clkfboutb_unused : std_logic; signal clkout0_Sig : std_logic; signal clkout0b_unused : std_logic; signal clkout1_Sig : std_logic; signal clkout1b_unused : std_logic; signal clkout2_Sig : std_logic; signal clkout2b_unused : std_logic; signal clkout3_Sig : std_logic; signal clkout3b_unused : std_logic; signal clkout4_Sig : std_logic; signal clkout5_Sig : std_logic; signal clkout6_Sig : std_logic;

-- Выходы динамического реконфигурирования не используются signal do_unused : std_logic_vector(15 downto 0); signal drdy_unused : std_logic;

-- Статусные сигналы не используются signal clkfbstopped_unused : std_logic; signal clkinstopped_unused : std_logic;

begin

clkin1_buf : BUFG port map

(O => clkinl, I => Clkln);

PSCLK PSEN PSDONE

11

яъ

II

PSINCDEC " шипит

Inst_Mmcme2Adv : MMCME2_ADV generic map (BANDWIDTH => "OPTIMIZED", CLKOUT4_CASCADE => FALSE, COMPENSATION => "ZHOLD", STARTUP_WAIT => FALSE, DIVCLK_DIVIDE => 2, --D

CLKFBOUT_MULT_F => 10.00, --M CLKFBOUT_PHASE => 0.000, CLKFBOUT_USE_FINE_PS => False,

CLKOUT0_DIVIDE_F => 1.00, --O0 CLKOUT0_PHASE => 0.000, CLKOUT0_DUTY_CYCLE => 0.500, CLKOUT0_USE_FINE_PS => False,

CLKOUTLDIVIDE => 40, --O1 CLKOUTLPHASE => 0.000, CLKOUT1_DUTY_CYCLE => 0.500, CLKOUT1_USE_FINE_PS => FALSE,

CLKOUT2_DIVIDE => 40, --O2 CLKOUT2_PHASE => 0.000, CLKOUT2_DUTY_CYCLE => 0.500, CLKOUT2_USE_FINE_PS => True,

CLKOUT3_DIVIDE => 1, --O3 CLKOUT3_PHASE => 0.000, CLKOUT3_DUTY_CYCLE => 0.500, CLKOUT3_USE_FINE_PS => True,

CLKOUT4_DIVIDE => 1, --O4 CLKOUT4_PHASE => 0.000, CLKOUT4_DUTY_CYCLE => 0.500, CLKOUT4_USE_FINE_PS => FALSE,

CLKOUT5_DIVIDE => 1, --O5 CLKOUT5_PHASE => 45.000, CLKOUT5_DUTY_CYCLE => 0.500, CLKOUT5_USE_FINE_PS => FALSE,

CLKOUT6_DIVIDE => 1, --O6 CLKOUT6_PHASE => 0.000, CLKOUT6_DUTY_CYCLE => 0.500, CLKOUT6_USE_FINE_PS => FALSE,

CLKIN1_PERIOD => 5.0, --Период основного тактового сигнала REFJITTER1 => 0.010)

port map

(

-- Выходные порты CLKFBOUT => clkfbout, CLKFBOUTB => clkfboutb_unused, CLKOUT0 => clkout0_Sig, CLKOUT0B => clkout0b_unused, CLKOUT1 => clkout1_Sig, CLKOUT1B => clkout1b_unused, CLKOUT2 => clkout2_Sig, CLKOUT2B => clkout2b_unused, CLKOUT3 => clkout3_Sig, CLKOUT3B => clkout3b_unused, CLKOUT4 => clkout4_Sig, CLKOUT5 => clkout5_Sig, CLKOUT6 => clkout6_Sig, -- Входные порты CLKFBIN => clkfbout_buf, CLKIN1 => clkin1, CLKIN2 => '0',

-- Выбор входного тактового порта CLKINSEL => '1',

-- Порты динамической регонфигурации

DADDR => (others => '0'),

DCLK => '0',

DEN => '0',

DI => (others => '0'),

DO => do_unused,

DRDY => drdy_unused,

DWE => '0',

-- Порты динамического сдвига фазы

PSCLK => PsClk,

PSEN => PsEn,

PSINCDEC => PsIncDec,

PSDONE => PsDone,

-- Другие контрольные и статусные порты LOCKED => MmcmLocked, CLKINSTOPPED => clkinstopped_unused, CLKFBSTOPPED => clkfbstopped_unused, PWRDWN => '0', RST => '0');

clkf_buf : BUFG port map

(O => clkfbout_buf, I => clkfbout);

clkout0_buf : BUFG port map

(O => clkoutO, I => clkout0_Sig);

clkout1_buf : BUFG port map

(O => clkoutl, I => clkout1_Sig);

clkout2_buf : BUFG port map

(O => clkout2, I => clkout2_Sig);

clkout3_buf : BUFG port map

(O => clkout3, I => clkout3_Sig);

clkout4_buf : BUFG port map

(O => clkout4, I => clkout4_Sig);

clkout5_buf : BUFG port map

(O => clkout5, I => clkout5_Sig);

clkout6_buf : BUFG port map

(O => clkout6, I => clkout6_Sig);

end Behavioral;

Листинг 1. Текстовое описание блока Mmcm

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity PhaseShiftInterface is

generic(MultPhaseShift : natural := 10); --Выполнить фазовый сдвиг MultPhaseShift раз

Port( Up : in std_logic; --Увеличить фазу Down : in std_logic; --Уменьшить фазу Reset : in std_logic; --Синхронный сброс Clk : in std_logic; --Тактовая частота

PhaseShiftDone : out std_logic; --Окончание выполнения сдвига MultPhaseShift раз

MmcmLocked : in std_logic; --Готовность Mmcm к работе PsEn : out std_logic; --Разрешить фазовый сдвиг PsClk : out std_logic; --Тактовая частота сигналов контроля PsIncDec : out std_logic; --Инкремент/Декремент фазы PsDone : in std_logic); --Фазовый сдвиг выполнен end PhaseShiftInterface;

architecture Behavioral of PhaseShiftInterface is

signal PsEn_R, PsEn_N : std_logic;

signal PsIncDec_R, PsIncDec_N : std_logic;

signal Count_R, Count_N : natural range 0 to MultPhaseShift - 1;

signal ActUp_R, ActUp_N : std_logic;

signal ActDown_R, ActDown_N : std_logic;

signal PhaseShiftDone_R, PhaseShiftDone_N : std_logic;

type State_Type is (S0, S1, S2, S3, S4, S5, S6); signal State_R, State_N : State_Type;

begin

PsClk_Process: process(Clk) begin

PsClk <= Clk; end process;

FsmStateR_Process: process(Clk) begin

if rising_edge(Clk) then if Reset = '1' then State_R <= S0; else

State_R <= State_N; end if; end if; end process;

FsmSync_Process: process(Clk) begin

if rising_edge(Clk) then PsEn_R <= PsEn_N; PsIncDec_R <= PsIncDec_N; ActUp_R <= ActUp_N;

ActDown_R <= ActDown_N; Count_R <= Count_N; PhaseShiftDone_R <= PhaseShiftDone_N; end if; end process;

FsmComb_Process: process(Up, Down, PsEn_R, PsIncDec_R, PsDone, PhaseShiftDone_R,

State_R, ActUp_R, ActDown_R, Count_R, MmcmLocked) begin

PsEn_N <= PsEn_R; PsINcDec_N <= PsINcDec_R; State_N <= State_R; ActUp_N <= ActUp_R; ActDown_N <= ActDown_R; Count_N <= Count_R; PhaseShiftDone_N <= PhaseShiftDone_R;

case State_R is when S0 => if MmcmLocked = '1' then if Up = '1' then PsIncDec_N <= '1'; PsEn_N <= '1'; ActUp_N <= '1'; State_N <= S1; elsif Down = '1' then PsIncDec_N <= '0'; PsEn_N <= '1'; ActDown_N <= '1'; State_N <= S1; else

State_N <= S0; PsEn_N <= '0'; PsIncDec_N <= '0'; ActUp_N <= '0'; ActDown_N <= '0'; Count_N <= 0; PhaseShiftDone_N <= '0'; end if; end if;

when S1 => PsEn_N <= '0'; PsIncDec_N <= '0'; State_N <= S2;

when S2 => if PsDone = '1' then

State_N <= S3; end if;

when S3 => if Count_R = MultPhaseShift - 1 then State_N <= S0; PhaseShiftDone_N <= '1'; else

if ActUp_R = '1' then PsEn_N <= '1'; PsIncDec_N <= '1'; State_N <= S1; end if; if ActDown_R = '1' then PsEn_N <= '1'; PsIncDec_N <= '0'; State_N <= S1; end if;

Count_N <= Count_R + 1; end if;

when others => State_N <= S0;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

end case; end process;

PsEn <= PsEn_R; PsIncDec <= PsIncDec_R; PhaseShiftDone <= PhaseShiftDone_R;

end Behavioral;

Листинг 2. Текстовое описание модуля PhaseShiftInterface

Динамический сдвиг фазы в модуле Mmcm осуществляется для выхода ClkOut2, поскольку соответствующий параметр CLKOUT2_ USE_FINE_PS имеет значение True. При входной частоте 200 МГц выходная частота будет:

FakOua = FCLlaN(M/(DxO)) = = 200х106(10/(2х40)) = 25 МГц. (3)

Для демонстрации выполнения фазового сдвига выход ClkOut1 также настроен на час-

68 компоненты

ПЛИС

тоту 25 МГц, но режим динамического фазового сдвига в нем отключен. ClkOutl будет использован в качестве опорного для измерения фазового сдвига.

Блок PhaseShiftlnterface отвечает за формирование и контроль управляющих и статусных сигналов, изображенных на рис. 3. Параметр MultPhaseShift определяет, сколько раз необходимо выполнить фазовый сдвиг, после поступления команды на соответствующий вход Up — инкрементировать фазу или Down — декрементировать фазу. Выход PhaseShiftDone является статусным и устанавливается в «1» на 1 такт после выполнения фазового сдвига MultPhaseShift раз.

Входы Clk и Reset отвечают соответственно за тактовую частоту и сброс.

Оба модуля Mmcm и PhaseShiftlnterface объединены в один модуль верхнего уровня DinamicPhaseShift, текстовая версия которого приведена в листинге 3.

Inst_PhaseShiftInterface: PhaseShiftInterface GENERIC MAP(MultPhaseShift => MultPhaseShift) PORT MAP( Up => Up, Down => Down, Reset => Reset, Clk => Clk,

PhaseShiftDone => PhaseShiftDone, MmcmLocked => MmcmLocked_Sig, PsEn => PsEn_Sig, PsClk => PsClk_Sig, PsIncDec => PsIncDec_Sig, PsDone => PsDone_Sig

);

Inst_Mmcm: Mmcm PORT MAP( ClkIn => Clk, ClkOutO => ClkOutO, ClkOut1 => ClkOut1, ClkOut2 => ClkOut2, ClkOut3 => ClkOut3, ClkOut4 => ClkOut4, ClkOut5 => ClkOut5, ClkOut6 => ClkOut6, MmcmLocked => MmcmLocked_Sig, Psen => Psen_Sig, PsIncDec => PsIncDec_Sig, PsClk => PsClk_Sig, PsDone => PsDone_Sig

);

MmcmLocked <= MmcmLocked_Sig; end Behavioral;

листинг 3. Текстовое описание модуля DinamicPhaseShift

Проверка модуля

Проверка описанного модуля выполнялась на отладочном комплекте КС705 фирмы ХШпх. При проверке осуществлялся фазовый сдвиг на 90°, при этом значение параметра MultPhaseShift равнялось 559, поскольку один фазовый сдвиг приводил к смещению сигнала на:

Дф = (360°/(56х0)) = 0,161°, (4) MultPhaseShift = 90°/(Дф) « 559. (5)

Инкремент/декремент фазы осуществлялся по нажатии кнопок, поэтому для устранения их дребезга добавлены дополнительные модули Debounce, которые также дополнительно формировали по нажатии кнопки импульс длительностью в один такт (листинг 4).

State_R <= SO; else

Outp_R <= Outp_N; State_R <= State_N; Count_R <= Count_N; end if; end if; end process;

process(Inp, Outp_R, Count_R, State_R) begin

State_N <= State_R; Count_N <= Count_R; Outp_N <= Outp_R;

case State_R is when SO => Outp_N <= '0'; Count_N <= 0; if Inp = '1' then

State_N <= S1; end if;

when S1 => if Count_R = Waiting then State_N <= S2; Outp_N <= '1'; Count_N <= 0; else

Count_N <= Count_R + 1; State_N <= S1; end if;

when S2 => Outp_N <= '0'; if Inp = '0' then

State_N <= S3; end if;

when S3 => if Count_R = Waiting then State_N <= SO; Outp_N <= '0'; Count_N <= 0; else

Count_N <= Count_R + 1; State_N <= S3; end if; end case; end process;

Outp <= Outp_R;

end Behavioral;

листинг 4. Текстовое описание модуля Debounce

Описание проекта верхнего уровня Buf_ DinamicPhaseShift для проверки работоспособности описанных модулей приведено в листинге 5.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity DinamicPhaseShift is

generic(MultPhaseShift : natural := 559); --Выполнить фазовый

сдвиг MultPhaseShift раз

Port( Up : in std_logic;

Down : in std_logic;

Reset : in std_logic;

Clk : in std_logic;

PhaseShiftDone : out std_logic;

MmcmLocked : out std_logic;

ClkOutO : out std_logic

ClkOut1 : out std_logic;

ClkOut2 : out std_logic;

ClkOut3 : out std_logic;

ClkOut4 : out std_logic;

ClkOut5 : out std_logic;

ClkOut6 : out std_logic v

); end DinamicPhaseShift;

architecture Behavioral of DinamicPhaseShift is

COMPONENT PhaseShiftInterface

generic(MultPhaseShift : natural := 10);

PORT(

Up : in std_logic;

Down : in std_logic;

Reset : in std_logic;

Clk : in std_logic;

MmcmLocked : in std_logic;

PsDone : in std_logic;

PhaseShiftDone : out std_logic;

PsEn : out std_logic;

PsClk : out std_logic;

PsIncDec : out std_logic v

END COMPONENT;

COMPONENT Mmcm

PORT(

ClkIn : in std_logic;

Psen : in std_logic;

PsIncDec : in std_logic;

PsClk : in std_logic;

ClkOut0 : out std_logic;

ClkOut1 : out std_logic;

ClkOut2 : out std_logic;

ClkOut3 : out std_logic;

ClkOut4 : out std_logic;

ClkOut5 : out std_logic;

ClkOut6 : out std_logic;

MmcmLocked : out std_logic;

PsDone : out std_logic

); END COMPONENT;

signal MmcmLocked_Sig : std_logic;

signal PsEn_Sig : std_logic;

signal PsClk_Sig : std_logic;

signal PsDone_Sig : std_logic;

signal PsIncDec_Sig : std_logic;

begin

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

entity Debounce is

Port( Inp : in std_logic; Clk : in std_logic; Reset : in std_logic; Outp : out std_logic); end Debounce;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

architecture Behavioral of Debounce is

constant Waiting : natural := 4*10**7;

signal Count_N, Count_R : integer range 0 to Waiting;

signal start : std_logic;

type StateType is (S0, S1, S2, S3); signal State_R, State_N : StateType; signal Outp_R, Outp_N : std_logic;

begin

process(Clk) begin

if rising_edge(Clk) then if Reset = '1' then

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

Library UNISIM;

use UNISIM.vcomponents.all;

entity Buf_DinamicPhaseShift is port(

SysClkP : in std_logic; SysClkN : in std_logic; Reset : in std_logic; Up : in std_logic; Down : in std_logic; ClkOut1 : out std_logic; ClkOut2 : out std_logic; PhaseShiftDone : out std_logic

);

end Buf_DinamicPhaseShift;

architecture Behavioral of Buf_DinamicPhaseShift is

COMPONENT DinamicPhaseShift PORT(

Up : IN std_logic; Down : IN std_logic; Reset : IN std_logic; Clk : IN std_logic; PhaseShiftDone : OUT std_logic; MmcmLocked : OUT std_logic; ClkOutO : OUT std_logic; ClkOut1 : OUT std_logic; ClkOut2 : OUT std_logic; ClkOut3 : OUT std_logic;

ClkOut4 : OUT std_logic; ClkOut5 : OUT std_logic; ClkOut6 : OUT std_logic

);

END COMPONENT;

COMPONENT Debounce PORT(

Inp : IN std_logic; Reset : IN std_logic; Clk : IN std_logic; Outp : OUT std_logic

);

END COMPONENT;

signal Clk_Buf : std_logic; signal Reset_Buf : std_logic; signal Up_Buf : std_logic; signal Down_Buf : std_logic; signal ClkOut1_Buf : std_logic; signal ClkOut2_Buf : std_logic; signal PhaseShiftDone_Buf : std_logic; signal UpDebounce_Sig : std_logic; signal DownDebounce_Sig : std_logic;

begin

Inst_DinamicPhaseShift: DinamicPhaseShift PORT MAP( Up => UpDebounce_Sig, Down => DownDebounce_Sig, Reset => Reset_Buf, Clk => Clk_Buf,

PhaseShiftDone => PhaseShiftDone_Buf,

MmcmLocked => Open,

ClkOutO => Open,

ClkOutl => ClkOut1_Buf,

ClkOut2 => ClkOut2_Buf,

ClkOut3 => Open,

ClkOut4 => Open,

ClkOut5 => Open,

ClkOut6 => Open

);

Inst_DebounceUp: Debounce PORT MAP( Inp => Up_Buf, Clk => Clk_Buf, Reset => Reset_Buf, Outp => UpDebounce_Sig

);

Inst_DebounceDown: Debounce PORT MAP( Inp => Down_Buf, Clk => Clk_Buf, Reset => Reset_Buf, Outp => DownDebounce_Sig

);

Inst_SysClk_Ibufgds : IBUFGDS generic map ( DIFF_TERM => FALSE, IBUF_LOW_PWR => TRUE, IOSTANDARD => "DEFAULT") port map (

0 => Clk_Buf,

1 => SysClkP, IB => SysClkN

);

Inst_Reset_Ibuf : IBUF generic map ( IBUF_LOW_PWR => TRUE, IOSTANDARD => "DEFAULT") port map (

0 => Reset_Buf,

1 => Reset

);

Inst_Up_Ibuf : IBUF generic map ( IBUF_LOW_PWR => TRUE, IOSTANDARD => "DEFAULT") port map (

0 => Up_Buf,

1 => Up

);

Inst_Down_Ibuf : IBUF generic map ( IBUF_LOW_PWR => TRUE, IOSTANDARD => "DEFAULT") port map (

0 => Down_Buf,

1 => Down

);

Inst_ClkOut1_Obuf : OBUF generic map (

Рис. 4. Результат испытаний модуля динамического сдвига фазы: а) исходное положение; б) сдвиг фазы вверх; в) сдвиг фазы вниз

DRIVE => 12,

IOSTANDARD => "DEFAULT", SLEW => "SLOW") port map (

0 => ClkOut1,

1 => ClkOut1_Buf

);

Inst_ClkOut2_Obuf : OBUF generic map ( DRIVE => 12,

IOSTANDARD => "DEFAULT", SLEW => "SLOW") port map (

0 => ClkOut2,

1 => ClkOut2_Buf

);

Inst_PhaseShiftDone_Obuf : OBUF generic map (

DRIVE => 12,

IOSTANDARD => "DEFAULT", SLEW => "SLOW") port map (

0 => PhaseShiftDone,

1 => PhaseShiftDone_Buf

);

end Behavioral;

Листинг 5. Текстовое описание модуля Buf_ DinamicPhaseShift

Результаты испытаний приведены на рис. 4, где показаны снятые осциллограммы. Желтым отмечен опорный сигнал, зеленым — сигнал, для которого был выполнен фазовый сдвиг на 90°.

70

компоненты i плис

Заключение

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

той СМТ для ПЛИС 7-й серии фирмы ХШпх. Представлены текстовые описания соответствующих модулей и приведены результаты натурных испытаний предлагаемого решения. По запросу автор может выслать по электронной почте описание всех модулей. ■

Литература

1. 7 Series FPGAs Clocking Resources. UG472 (v1.9), Xilinx, Inc. Aug. 8, 2013.

2. www.xilinx.com/support/documentation/7_ series.htm#156339

новости

блоки питания

Новые медицинские адаптеры серии GSM120B (120 Вт)

от компании Mean Well

Компания Mean Well расширяет линейку адаптеров для медицинского назначения. В дополнение к существующим сериям GSM18 (18 Вт), GSM25 (25 Вт), GSM36 (36 Вт), GSM40A (40 Вт), GSM60 (60 Вт), GSM90B (90 Вт) компания представляет модельный ряд мощностью 120 Вт — GSM120B. Данные адаптеры отвечают международным стандартам безопасности для применения в медицинском оборудовании IEC60601-1 (уровень 2xMOPP), то есть могут использоваться в приборах, непосредственно контактирующих с пациентом.

У адаптеров серии GSM120B низкие значения тока утечки (менее 100 мкА) и высокий КПД (до 91,5%). Кроме этого, данные устройства имеют низкое значение потребления без нагрузки (менее 0,15 Вт) и соответствуют современным требованиям по энергосбережению, в том числе ErP step 2 (Level V) и EISA 2007.

Входное напряжение изделий серии GSM120B составляет 80-264 В. Модельный ряд адаптеров представлен в широком диапазоне выходных напряжений (от 12 до 48 В), что обеспечивает потребности практически любого стандартного медицинского оборудования.

Адаптеры имеют класс изоляции II (заземление не требуется) и малогорючий пластиковый корпус, соответствующий типу UL 94V-0, — таким образом пользователь надежно защищен от воздействия электрического тока.

Все устройства серии GSM120B оснащены светодиодным индикатором, отображающим состояние включения адаптера, защитой от короткого

замыкания, перегрузки, перенапряжения и перегрева, а также снабжены сертификатами UL/CUL/TUV/CB/FCC/CE, EN60601-1-11, ANSI/AAMI Е360601-1-11.

Область применения данной продукции: медицинское оборудование (в том числе для бытового использования), оборудование для химических и биологических исследований, а также прочие системы, имеющие повышенные требования по энергосбережению.

www.aviton.spb.ru

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.