Смекни!
smekni.com

Проектирование цифровых устройств в САПР ISE (стр. 3 из 3)

Рис. 2.19. Окончательное размещение узлов и связей

На этом рисунке приведены контакты P40, P41, P43, P44 и P45, которые соответствуют входному сигналу DIN и выходным сигналам DOUT[0], DOUT[1], DOUT[2] и DOUT[3]. На рисунке показаны также внутренние сигналы reg_0, reg_1, reg_2 и reg_3. Название последних присвоила сама система, и их имена соответствуют индексам сигналов DOUT[0] … DOUT[3]. В схеме продублирован внутренний сигнал reg_3, его аналог имеет наименование reg_3_1 и используется для формирования сигнала DOUT[3] на контакте P45, сам сигнал reg_3 используется для формирования сигнала reg_2 при сдвиге. Указанное дублирование вызвано тем, что в системе задан режим оптимизации по быстродействию, и система обеспечивает максимальное быстродействие, пусть и за счет усложнения схемы.

Фрагмент секции CLB_R8C8.S0, где формируются два младших разряда, показан на рис. 2.20.

Рис. 2.20. Блок ввода-вывода

На рис. 2.21 показан фрагмент блока ввода-вывода (IOB) P40, который обеспечивает прохождение входного сигнала DIN. Сигнал поступает на входной контакт PAD, затем проходит через ряд буферных схем. Во внутреннюю логику ПЛИС поступает сигнал din_IBUF, а также сигнал reg_3_1, который вырабатывается на выходе D–триггера, находящегося в блоке ввода-вывода.


Рис. 2.21. Программируемый логический блок

Таким образом, разработчику достаточно ввести описание схемы на языке VHDL, а все остальное выполняет система проектирования.

6. Разработка умножителя

Пусть требуется разработать комбинационный умножитель 16х16 разрядов. Выходной код в этом случае должен иметь 32 разряда. Необходимо отметить, что в ряде современных семейств ПЛИС имеются встроенные умножители, однако в настоящем разделе используется ПЛИС типа FPGAXC2S15-VQ100, в которой таких блоков нет.

Описание умножителя на языке VHDL имеет следующий вид:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity mult is

Port ( a : in std_logic_vector(7 downto 0);

b : in std_logic_vector(7 downto 0);

c : out std_logic_vector(15 downto 0));

end mult;

architecture Behavioral of mult is

signal d: std_logic_vector (15 downto 0);

begin

d <= a*b;

c <= d;

endBehavioral;

Схема занимает 32 блока ввода-вывода и 36 секций для реализации логических функций. Об этом свидетельствуют строки из отчета о размещении и трассировке:

Number of External IOBs 32 out of 60 53%

Number of SLICEs 36 out of 192 18%.

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

d<1.00 <d<2.00 <d<3.00 <d<4.00 <d<5.00 d>=5.00

65 137 27 5 0 0.

Распределение сигналов по контактам:

Signal Name | Pin |Signal Name | Pin |Signal Name | Pin |

a<0> | P20 | a<1> | P19 | a<2> | P10 |

a<3> | P8 | a<4> | P9 | a<5> | P5 |

a<6> | P4 | a<7> | P98 |

b<0> | P22 | b<1> | P97 | b<2> | P21 |

b<3> | P6 | b<4> | P31 | b<5> | P71 |

b<6> | P72 | b<7> | P93 |

c<0> | P30 | c<1> | P18 | c<2> | P17 |

c<3> | P16 | c<4> | P59 | c<5> | P32 |

c<6> | P60 | c<7> | P62 | c<8> | P65 |

c<9> | P66 | c<10> | P69 | c<11> | P7 |

c<12> | P95 | c<13> | P96 | c<14> | P15 |

c<15> | P13

На рис. 2.22 показаны результаты функционального моделирования (рис. 2.22 а) и временного моделирования (рис. 2.22 б), полученного после реализации схемы.

а

б)

Рис. 2.22. Результаты моделирования

Разработанный умножитель является комбинационной схемой, поэтому для разработчика в данном случае представляют интерес задержки распространения сигнала от входа до выхода (PadtoPad). Удобным средством для получения этих данных является программа временного анализатора TimingAnalyzer, который позволяет получить самую разнообразную информацию о задержках. На рис. 2.23 показано окно анализатора TimingAnalyzer, в котором приведен фрагмент отчета о задержках от входа до выхода (PadtoPad).

Рис. 2.23.

Ниже приведены максимальные задержки от входа до выхода.

---------------+---------------+---------+

Source Pad |Destination Pad| Delay |

---------------+---------------+---------+

a<0> |c<13> | 19.177|

a<5> |c<13> | 19.110|

b<0> |c<13> | 19.033|

b<5> |c<10> | 19.149|

b<5> |c<11> | 19.109|

b<5> |c<12> | 19.122|

b<5> |c<13> | 19.381|

---------------+---------------+---------+

Еще одним способом задания нужных временных параметров типа PadtoPad является задание временных ограничений с помощью программы редактора ограничений (ConstraintsEdior). Окно этой программы приведено на рис. 2.5, временные ограничения типа PadtoPad задаются на вкладке Global. Например, для данной схемы может быть задано максимальное значение задержки величиной 20 нс. В файле ограничений пользователя это будет задано строкой:

TIMESPEC "TS_P2P" = FROM "PADS" TO "PADS" 20 ns.

Если система САПР не сможет обеспечить требуемое быстродействие, то об этом будет сообщено разработчику, и он должен предпринять соответствующие меры, например, взять микросхему с более высоким быстродействием.

7. Использование структурного описания

Рассмотрим особенности реализации в САПР ISE схем, заданных описанием типа Structura. Пусть требуется разработать цифровую задержку на четыре такта. Самый верхний уровень описания RG2 содержит два последовательно соединенных блока типа RG с именами K11 и K12, каждый из которых представляет собой задержку на два такта. Вход схемы имеет имя DD, выход – rr. Описание схемы имеет следующий вид.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity rg2 is

Port (DD, CLK: in std_logic; RR : out std_logic);

end rg2;

architecture Structura of rg2 is

component rg port (D0, CLK: in std_logic; R : out

std_logic);

end component;

signal S11, S22 : std_logic;

begin

K11: rg port map (DD, CLK, S11);

K12: rg port map (S11, CLK, S22);

RR <= S22;

endStructura;

Каждый из блоков RG в свою очередь содержит два D‑триггера типа DTG, описание блока RG имеет следующий вид.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity rg is

Port ( D0, CLK : in std_logic;

R : out std_logic);

end rg;

architecture Structura of rg is

component dtg port ( D, CLK : in std_logic;

Q : out std_logic);

end component;

signal S1, S2 : std_logic;

begin

K1: dtg port map (D0, CLK, S1);

K2: dtg port map (S1, CLK, S2);

R <= S2;

endStructura;

Описание D‑триггера, входящего в состав блока RG, имеет следующий вид.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity dtg is

Port ( D, CLK : in std_logic;

Q : out std_logic);

end dtg;

architecture Behavioral of dtg is

begin

process (CLK)

begin

if CLK'event and CLK='1' then --CLK rising edge

Q <= D;

end if;

end process;

endBehavioral;

Структура проекта будет отражена в окне исходных модулей следующим образом (см. рис. 2.23).

Рис. 2.23. Структура проекта

Если представить разрабатываемое устройство в виде традиционной схемы, то она будет иметь следующий вид (см. рис. 2.24).


Рис. 2.24. Схема устройства

Каждый из блоков RG с именами K11 и K12 имеет в своем составе узлы K1 и K2. Входная связь DD в блоке K11 называется D0, связь с именем S11 между блоками K11 и K12 в блоке K11 называется S2, в блоке K12 - D0. Выходная связь устройства RR в блоке K12 имеет название S2. Связи внутри блоков между узлами K1 и K2 называются S1.

На рис. 2.25 показан результат размещения схемы в ПЛИС xc2s15‑vq100, полученной c помощью программы FPGAEditor.

Рис. 2.25. Размещение схемы в ПЛИС

На рис. 2.25 показаны контакты P88 (вход синхросигнала CLK), P87 (вход схемы) и P86 (выход схемы). Там же показаны некоторые из связей, в том числе связь clk_BUFGP (синхросигнал на выходе глобального буфера), dd_IBUF (входной сигнал на выходе буфера IBUF) и другие. Наименование внутренних информационных связей система ISE составляет из имен компонентов, начиная с верхнего уровня. Так, например, связь k11_k2_q – это связь S1 в блоке K11 (см. рис. 2.24), в нем в свою очередь в блоке K1, а в этом блоке – выход триггера q. Связь k12_k2_q – это выходная связь S2 в блоке K12, а далее в блоке K2. Именно эта связь является выходной и поступает на контакт ПЛИС P86.

На рис. 2.26 показан фрагмент логической ячейки, в которой реализован элемент K1, который включен в состав элемента K12 (см. рис. 2.24). На выходе этой ячейки формируется связь k11_k2_q, которая упоминалась в предыдущем абзаце.

Рис. 2.26 Фрагмент логической ячейки.

На входы этой ячейки поступает сигнал синхронизации clk_BUFGP, который тактирует работу всей схемы, а также входной сигнал dd_IBUF.


Литература

1. Бибило П.Н. Синтез логических схем с использованием языка VHDL. М.: Солон-Р, 2002.

2. Суворова Е. А., Шейнин Ю. Е. Проектирование цифровых систем на VHDL. - СПб.: БХВ-Петербург. 2003.

3. Зотов В. Ю. Проектирование цифровых устройств на основе ПЛИС фирмы XILINX в САПР WebPACKISE. - М.: Горячая линия-Телеком. 2003.

4. Стешенко В. Б. ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов. - М.: ДОДЭКА. 2000.

5. Кнышев Д. А., Кузелин М. О. ПЛИС фирмы XILINX: описание структуры основных семейств. - М.: ДОДЭКА. 2001.

6. Угрюмов Е. П. Цифровая схемотехника. - СПб.: БХВ-Петербург. 2001.

7. Гурин Е. И. Программируемые логические интегральные схемы. - Пенза: Изд-во ПГУ. 2003.

8. Бродин В., Калинин А. Учебные классы микропроцессорной техники и ПЛИС. // Chep News. - 2000. - .№ 10.