Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

.Проектирование устройств и систем с высокоскоростными соединениями

.pdf
Скачиваний:
41
Добавлен:
15.11.2022
Размер:
21.68 Mб
Скачать

Рис. 1.3. Стандарт LVDS

Номинальный ток, протекающий по терминальному резистору, равен 3,5 мА, а дифференциальное напряжение, следовательно, равно 350 мВ.

1.2.СИНХРОНИЗАЦИЯ

1.2.1.Централизованная синхронизация

На рис. 1.4 приведен способ централизованной синхронизации ИС печатной платы, который многие годы был наиболее общим. При такой синхронизации все ИС подключены к единому тактовому генератору. На рис. 1.5 представлена временная модель централизованной синхронизации, из которой видно, что необходима сбалансированность задержек для надежной передачи сигналов между ИС.

Синхросигнал clk

Генератор ИС-источник Данные ИС-приемник

Рис. 1.4. Централизованная синхронизация

Для данной частоты сигнала clk и данного распределения задержек поведение схемы может оказаться некорректным. Поэтому

11

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

Рис. 1.5. Временная модель централизованной синхронизации

1.2.2. Синхронизация от источника

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

 

Данные

 

ИС-

ИС-

 

источник

 

источник

 

clk

 

 

 

 

Рис. 1.6. Синхронизация от источника

Для уверенного приема тактовая частота и передаваемые данные должны быть так расположены друг относительно друга во времени, чтобы переключение тактового сигнала приходилось на середину битового интервала данных (рис. 1.7).

12

Рис. 1.7. Временная модель синхронизации от источника

Синхронизация от источника приводит к увеличению количества доменов синхронизации (область, где переключения происходят от одного тактового сигнала). Это вносит временные ограничения и усложняет анализ для таких программируемых ИС,

как FPGA (Field Programmable Gate Arrays), имеющих ограни-

ченное число буферов синхронизации, а также для полностью заказных ИС (ASIC), где каждое дерево распространения для каждого синхросигнала должно быть индивидуально спроектировано. Проблема усугубляется для больших параллельных шин, когда используется несколько синхросигналов для групп линий шины (32-битная шина данных, например, может иметь 4 или даже 8 синхросигналов).

В случае параллельной передачи (несколько линий данных), когда одновременно передается, например, 1 байт (8 линий данных), часто используются дополнительные линии управления. На рис. 1.8 приведен пример, содержащий управляющий сигнал разрешения данных enable и управляющий сигнал not_data, позволяющий мультиплексировать на одну шину как байты данных d, так и байты управления c.

На рис. 1.9 приведена модель самосинхронизации (встроенная синхронизация) при передаче данных между ИС – поток данных содержит как данные, так и тактовую информацию.

13

clock

 

 

 

 

 

data

d

d

d

c

c

 

enable

 

 

 

 

 

not_data

 

 

 

 

 

Рис. 1.8. Пример параллельной синхронной передачи данных

 

 

ИС

Данные и clk

ИС

 

 

 

 

 

 

 

источник

 

приемник

 

Рис. 1.9. Самосинхронизация

1.2.3. Самосинхронизация

На рис. 1.10 приведены три основных блока временной модели самосинхронизации: параллельно-последовательный преобразователь (сериализатор), последовательно-параллельный преобразователь (десериализатор) и выделитель тактовой часто-

ты (ВТЧ или CDR – Clock Data Recovery).

Рис. 1.10. Временная модель самосинхронизации

На рис. 1.11 представлены две основные реализации сериализатора: загружаемый регистр сдвига и вращающийся переключатель.

Ниже приведены синтезируемые VHDL-модели двух реализаций сериализатора (в главе 7 учебного пособия приведены основы языка VHDL).

14

Рис. 1.11. Сериализатор: а – загружаемый регистр сдвига; б – вращающийся переключатель

VHDL программа-спецификация загружаемого регистр сдвига

library IEEE;

use IEEE.STD_LOGIC_1164.all; entity shift_reg_ser is

port(

reset_n : in STD_LOGIC;

clock : in STD_LOGIC;

load : in STD_LOGIC; режим параллельной загрузки data_in : in STD_LOGIC_VECTOR(3 downto 0);

serial_out : out STD_LOGIC

);

end shift_reg_ser;

architecture shift_reg_ser of shift_reg_ser is

signal shift_reg: STD_LOGIC_VECTOR(3 downto 0); begin

serial_out<= shift_reg(0); LOADABLE_SHIFT_REGISTR: process (clock, reset_n) begin

if reset_n='0' then shift_reg<="0000";

elsif rising_edge(clock) then if load='1' then

15

shift_reg<=data_in;

– параллельная загрузка

else

shift_reg(2 downto 0)<=shift_reg(3 downto 1); сдвиг end if;

end if; end process;

end shift_reg_ser;

VHDL программа-спецификация вращающегося переключателя

library IEEE;

use IEEE.STD_LOGIC_1164.all; use IEEE.NUMERIC_STD.all; entity Revolving_Selector is

port(

reset_n : in STD_LOGIC; clock : in STD_LOGIC;

data_in : in STD_LOGIC_VECTOR(3 downto 0); data _out : out STD_LOGIC

);

end Revolving_Selector;

architecture Revolving_Selector of Revolving_Selector is signal counter: unsigned(1 downto 0);

begin

SELECTOR_COUNTER: process (clock, reset_n) begin

if reset_n='0' then data _out <='0';

elsif rising_edge(clock) then counter<=counter+1; case to_integer(counter) is

when 0 =>

data _out <=data_in(0); when 1 =>

data _out <=data_in(1); when 2 =>

data _out <=data_in(2); when others =>

data _out <=data_in(3); end case;

end if; end process;

end Revolving_Selector;

16

На рис. 1.12 представлены две основные реализации десериализатора – регистр сдвига и распределитель (вращающееся разрешение).

Рис. 1.12. Десериализатор:

а – регистр сдвига; б – распределитель

Ниже приведены синтезируемые VHDL-модели двух реализаций десериализатора.

VHDL программа-спецификация регистра сдвига

library IEEE;

use IEEE.STD_LOGIC_1164.all; entity Shift_Reg is

port(

reset_n : in STD_LOGIC; clock : in STD_LOGIC; data_in : in STD_LOGIC;

data_out : out STD_LOGIC_VECTOR(3 downto 0) ); end Shift_Reg;

architecture Shift_Reg of Shift_Reg is

signal shift_reg: STD_LOGIC_VECTOR(3 downto 0); begin

17

data_out<= shift_reg; SHIFT_REGISTR:

process (clock, reset_n) begin

if reset_n='0' then shift_reg<="0000";

elsif rising_edge(clock) then

shift_reg(2 downto 0)<=shift_reg(3 downto 1); shift_reg(3)<=data_in;

end if;

end process; end Shift_Reg;

VHDL программа-спецификация распределителя

library IEEE;

use IEEE.STD_LOGIC_1164.all; entity Revolving_Enables is port(

reset_n : in STD_LOGIC; clock : in STD_LOGIC; data_in : in STD_LOGIC;

data_out : out STD_LOGIC_vector (3 downto 0)

);

end Revolving_Enables;

architecture Revolving_Enables of Revolving_Enables is signal Walking_One: STD_LOGIC_vector (3 downto 0); begin

SELECTOR_COUNTER: process (clock, reset_n) begin

if reset_n='0' then Walking_One<="0001";

elsif rising_edge(clock) then

Walking_One(3 downto 1)<=Walking_One(2 downto 0); case Walking_One is

when x"1" => data_out(0)<=data_in; when x"2" => data_out(1)<=data_in; when x"4" => data_out(2)<=data_in; when others => data_out(3)<=data_in;

18

end case;

end if;

end process;

end Revolving_Enables;

Для выделения тактовой частоты из входного потока используется механизм фазовой автоподстройки частоты (ФАПЧ или PLL – Phased Locked Loop), который синтезирует тактовую частоту RXCLK из переключений входного потока RX_in и системной тактовой частоты CLKREF (рис. 1.13). Принятый сигнал RX_internal является результатом стробирования входного сигнала RX_in сигналом RXCLK.

RX_in

RXCLK

RX_internal

Рис. 1.13. Временная диаграмма ВТЧ

1.2.4. Автоподстройка

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

Фазовая автоподстройка задержки (DLL – Delay Locked Loop). В системах ввода-вывода с синхронизацией от источника линии данных и тактовой частоты должны иметь одинаковую полосу пропускания. Однако ограничения при проектировании вызывают искажения как на линиях данных, так и на линии тактовой частоты. Узел DLL на стороне приема компенсирует отклонения в схеме распределения тактовой частоты, т.е. будет сохраняться оптимальное положение фронтов тактового сигнала относительно данных. Также будет нейтрализован джиттер из-за перекрестных связей. На рис. 1.14 представлена схема DLL.

19

Рис. 1.14. Схема фазовой автоподстройки задержки

DLL состоит из переменной линии задержки (ПЛЗ) и фазового детектора (PD). ПЛЗ реализуется в виде аналоговой линии задержки, управляемой напряжением (VCDL), или цифровой линии задержки, содержащей цепочку вентилей, или используется смешанный вариант. С помощью управляющей логики задержка распространения VCDL будет изменяться, пока не выравнятся фронты входного тактового сигнала iclk и сигнала сети распределения тактового сигнала clk. Равновесие DLL наступит, когда совпадут их фронты. Компенсация задержки в сети распространения clk иногда выступает как «отрицательная задержка», генерируемая DLL. В действительности DLL вводит небольшое количество циклов в синхросигнал.

Фазовая автоподстройка частоты. PLL используется для выделения тактовой частоты из последовательных данных; как фильтр нижних частот для «очистки» передаваемой тактовой частоты в системах высокоскоростного ввода-вывода с синхронизацией от источника и для синтеза частот (умножение частоты). На рис. 1.15 представлена схема PLL, где:

• PFD (Phase-Frequency Detector) – фазочастотный детектор,

ширина выходного импульса которого пропорциональна разности фаз сигналов FbClk и FrefClk;

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]