Научная статья на тему 'Формирование описаний компонентов для внутрикристальной отладки цифровых устройств и встраиваемых микропроцессорных систем на основе параметризированных модулей Xilinx core Generator tool'

Формирование описаний компонентов для внутрикристальной отладки цифровых устройств и встраиваемых микропроцессорных систем на основе параметризированных модулей Xilinx core Generator tool Текст научной статьи по специальности «Компьютерные и информационные науки»

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Зотов Валерий

Разработка описаний компонентов, предоставляющих возможность использования виртуальных входов и выходов в процессе аппаратной отладки проектируемого устройства, на основе параметризированного модуля Virtual Input/Output с помощью средств Xilinx CORE Generator

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Зотов Валерий

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

Текст научной работы на тему «Формирование описаний компонентов для внутрикристальной отладки цифровых устройств и встраиваемых микропроцессорных систем на основе параметризированных модулей Xilinx core Generator tool»

Формирование описаний компонентов

для внутрикристальной отладки цифровых устройств и встраиваемых микропроцессорных систем на основе параметризированных модулей Xilinx CORE Generator Tool

Продолжение. Начало в № 11'2008

Валерий ЗОТОВ

[email protected]

Разработка описаний компонентов, предоставляющих возможность использования виртуальных входов и выходов в процессе аппаратной отладки проектируемого устройства, на основе параметризированного модуля Virtual Input/Output с помощью средств CORE Generator

Для осуществления доступа к выбранным внутренним сигналам отлаживаемого устройства, реализуемого на базе ПЛИС с архитектурой FPGA, в его состав могут включаться компоненты, формируемые на основе параметризированного модуля Virtual Input/Output(VIO) с помощью средств CORE Generator, которые предоставляют возможность использования виртуальных входов и выходов. Каждый такой компонент может содержать синхронные и асинхронные входные и выходные порты. Эти виртуальные интерфейсные порты позволяют в процессе аппаратной внутрикристальной отладки не только проводить мониторинг поведения интересующих сигналов, но и принудительно изменять состояние соответствующих внутренних цепей разрабатываемого устройства в режиме реального времени. В настоящий момент актуальной версией рассматриваемого параметризированного модуля является модификация Virtual Input/Output (VIO) vl.02a. Данная версия ядра позволяет создавать описания компонентов, выполняющих функции виртуальных входных и выходных портов в процессе отладки цифровых устройств и микропроцессорных систем, реализуемых на основе кристаллов с архитектурой FPGA следующих семейств: Spartan-II, Spartan-IIE, Spartan-3, Spartan-3 XA, Spartan-3E, Spartan-3E XA, Spartan-3A, Spartan-3AN, Spartan-3A DSP,

Virtex, QPRO Virtex Rad-Hard, QPRO Virtex Hi-Rel, Virtex-E, QPRO Virtex-E Military, Virtex-II, QPRO Virtex-II Rad Tolerant, QPRO Virtex-II Military, Virtex-II Pro, Virtex-4 FX, Virtex-4 LX, Virtex-4 SX, QPRO Virtex-4 Rad Tolerant, QPRO Virtex-4 Hi-Rel, Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 FXT [2, 16, 17].

Функциональные возможности параметризированного модуля Virtual Input/Output (VIO) версии v1.02a. характеризуются следующими особенностями:

• возможность формирования виртуального асинхронного входного порта, позволяющего контролировать поведение соответствующих внутренних сигналов отлаживаемых устройств и встраиваемых микропроцессорных систем в процессе их функционирования независимо от тактовых сигналов этих устройств и систем;

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

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

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

• возможность создания виртуального асинхронного выходного порта, позволяюще-

го в процессе отладки проектируемых устройств и встраиваемых микропроцессорных систем принудительно устанавливать требуемые состояния соответствующих внутренних сигналов независимо от тактовых сигналов этих устройств и систем;

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

• возможность индивидуального выбора количества разрядов (линий сигналов) в каждом входном или выходном виртуальном порте в диапазоне от 1 до 256;

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

• генерация как статических уровней (низкого и высокого логических уровней), так и динамически изменяемых сигналов на формируемых виртуальных выходах;

• возможность выбора типа тактового сигнала (инвертированного или неинверти-рованного) для захвата контролируемых сигналов и формирования выходных синхронных сигналов;

• поддержка использования компонентов, выполняющих функции виртуальных входов и выходов, в процессе аппаратной внутрикристальной отладки встраиваемых микропроцессорных систем, разрабатываемых с помощью комплекса средств проектирования Xilinx Embedded Development Kit (EDK) [5, 6].

Рис. 13. Вид диалоговой панели «мастера» настройки параметров ядра Virtual Input/Output (VIO) версии v1.02a

«Мастер» настройки параметризированно-го модуля Virtual Input/Output (VIO) версии v1.02a содержит единственную диалоговую панель, вид которой представлен на рис. 13.

Процесс выбора параметров создаваемых компонентов, предоставляющих возможность использования виртуальных входных и выходных портов в процессе аппаратной отладки проектируемого устройства, целесообразно начинать с определения их названия в поле редактирования Component Name. Идентификатор, указываемый в этом поле редактирования, должен в полной мере соответствовать требованиям, которые были перечислены при рассмотрении процесса формирования описания контроллера ICON (см. КиТ № 112008).

Затем следует, используя индикаторы состояния, представленные во встроенной панели VIO Parameters (рис. 13), выбрать требуемые виртуальные входные и выходные порты и определить их разрядность. Чтобы добавить в состав формируемого компонента асинхронный входной порт, нужно установить в состояние «Включено» индикатор Enable Asynchronous Input Port. К данному порту в процессе отладки подключаются внутренние сигналы разрабатываемого устройства или встраиваемой системы, состояние которых считывается без привязки к тактовому сигналу этого устройства или системы. При этом процесс захвата таких сигналов тактируется сигналом синхронизации JTAG-интерфейса. Информация, считанная из входного асинхронного порта, отображается на экране монитора с помощью программных средств ChipScope Pro Analyzer [1]. Разрядность асинхронного входного порта определяется с помощью поля редактирования Width, которое расположено в той же строке, что и индикатор состояния Enable Asynchronous Input Port. Допустимый диапазон изменения количества разрядов всех входных и выходных виртуальных портов компонентов, формируемых на основе параметризированного модуля Virtual Input/Output(VIO) версии v1.02a, составляет от 1 до 256. По умолчанию для параметра Width предлагается значение, равное восьми разрядам.

Для включения в состав создаваемого компонента асинхронного выходного порта следует переключить в установленное состояние (отмеченное маркером) индикатор Enable Asynchronous Output Port. Сигналы, формируемые на виртуальных асинхронных выходах, поступают на подключенные к ним входные цепи отлаживаемого устройства или микропроцессорной системы независимо от тактовых сигналов, используемых в данном устройстве или системе. Значения сигналов, поступающих в асинхронный выходной порт, определяются разработчиком в процессе аппаратной отладки с помощью программных средств ChipScope Pro Analyzer. Количество разрядов (выходных сигналов) в формируемом асинхронном выходном порте указыва-

ется в поле редактирования Width, представленном в той же строке, что и индикатор состояния Enable Asynchronous Output Port.

Если в процессе аппаратной внутрикристальной отладки проектируемого устройства или встраиваемой системы предполагается использовать синхронный входной порт, то необходимо перевести в состояние «Включено» индикатор Enable Synchronous Input Port. Такой порт позволяет проводить мониторинг состояния интересующих внутренних сигналов в режиме синхронизации с тактовым сигналом отлаживаемого устройства или системы. Информация о состоянии выбранных внутренних синхронных сигналов выводится в соответствующем окне программных средств ChipScope Pro Analyzer. Значение разрядности синхронного входного порта задается в поле редактирования Width, которое находится справа от индикатора состояния Enable Synchronous Input Port.

Чтобы задействовать в формируемом компоненте синхронный выходной порт, нужно установить в активное состояние (отмеченное маркером) индикатор Enable Synchronous Output Port. Данный порт позволяет при аппаратной внутрикристальной отладке разрабатываемого устройства или микропроцессорной системы подавать требуемые значения сигналов на выбранные входные цепи с привязкой к тактовому сигналу этого устройства или системы. Управление изменением сигналов, подаваемых на виртуальные синхронные выходы, осуществляется с помощью программных средств ChipScope Pro Analyzer. Для определения количества разрядов синхронного выходного порта следует воспользоваться полем редактирования Width, расположенным справа от индикатора состояния Enable Synchronous Output Port.

В тех случаях, когда в состав создаваемого компонента включается виртуальный синхронный входной или выходной порт, разработчику предоставляется возможность выбора фазы тактового сигнала с помощью индикатора состояния Invert Clock Input. Если для тактирования процесса захвата контролируемых сигналов отлаживаемого устройства (или встраиваемой микропроцессорной системы) и формирования сигналов на виртуальных выходах необходим инвертированный сигнал синхронизации, то следует переключить данный индикатор в состояние «Включено». В противном случае индикатор Invert Clock Input должен оставаться в сброшенном состоянии, предлагаемом по умолчанию.

После завершения процесса выбора входных и выходных виртуальных портов, а также фазы тактового сигнала следует осуществить запуск процесса автоматической генерации описания компонента нажатием клавиши Готово (Finish), которая находится в нижней части диалоговой панели «мастера» настройки ядра Virtual Input/Output (VIO) версии v1.02a. Конкретный экземпляр сформированного компонента, содержащего виртуальные входы и выходы, стандартным образом включается в состав исходного описания проекта разрабатываемого устройства в САПР серии Xilinx ISE [3, 4]. При этом виртуальные входные и выходные порты данного компонента подключаются к интересующим цепям отлаживаемого устройства и к контроллеру ICON в соответствии со схемой, изображенной на рис. 14. Следует обратить внимание на то, что на неиспользуемые в процессе отладки линии входных синхронных и асинхронных портов должен быть подан низкий логический уровень сигнала. В противном случае при

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

В компонентах, предоставляющих возможность использования виртуальных входов и выходов в процессе аппаратной отладки проектируемого устройства или микропроцессорной системы, которые создаются с помощью параметризированного модуля Virtual Input/Output (VIO) версии v1.02a, используется следующая система условных обозначений входных и выходных портов:

• CLK — вход сигнала синхронизации отлаживаемого устройства или встраиваемой микропроцессорной системы;

• C0NTR0L[35:0] — 36-разрядная двунаправленная шина, предназначенная для сопряжения виртуальных входов и выходов с контроллером Integrated Controller (ICON);

• ASYNC_IN [M:0] — входная шина данных с разрядностью M+1, предназначенная для подключения регистрируемых асинхронных сигналов отлаживаемого устройства или встраиваемой системы;

• SYNC_IN [N:0] — входная шина с разрядностью N+1, предназначенная для подключения контролируемых синхронных сигналов отлаживаемого устройства или микропроцессорной системы;

• ASYNC_OUT [K:0] — выходная шина данных с разрядностью K+1, на которой формируются асинхронные сигналы, подаваемые на выбранные цепи отлаживаемого устройства или встраиваемой системы;

• SYNC_OUT [L:0] — выходная шина данных с разрядностью L+1, на которой генерируются синхронные сигналы, подаваемые на выбранные цепи отлаживаемого устройства или микропроцессорной системы.

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

Компоненты, формируемые на основе па-раметризированного модуля Virtual Input/ Output (VIO) версии v1.02a, могут включаться также в состав проектов встраиваемых систем, выполняемых на основе З2-разрядных микропроцессорных ядер семейств PowerPC и MicroBlaze [6-15], для их последующей аппаратной внутрикристальной отладки. Схема сопряжения компонентов, предоставляющих возможность использования виртуальных входов и выходов, с периферийными шинами и внутренними цепями микропроцессорных систем, разрабатываемых с помощью комплекса средств проектирования Xilinx EDK, показана на рис. 15.

Пример описания компонента, сформированного на основе параметризированного модуля Virtual Input/Output (VIO) версии v1.02a с помощью средств CORE Generator

В качестве примера компонента, сгенерированного на основе параметризирован-ного модуля Virtual Input/Output (VIO) версии v1.02a с помощью средств C0RE Generator, приводится описание элемента chipscope_ vio_v1_02_a. Сформированный компонент включает в себя виртуальный асинхронный входной порт, предназначенный для считывания состояния двух внутренних сигналов отлаживаемого устройства независимо от тактового сигнала этого устройства, и виртуальный синхронный входной порт, предоставляющий возможность контроля состояния сигналов четырех внутренних цепей с привязкой к тактовому сигналу. Кроме того, в состав интерфейса элемента chipscope_vio_v1_02_a включен виртуальный асинхронный выходной порт, позволяющий формировать в процессе аппаратной отладки требуемые последовательности переключения сигналов, не зависящие от тактового сигнала разрабатываемого устройства, для четырех выбранных цепей. В данном элементе также предусмотрен виртуальный синхронный выходной порт, предназначенный для генерации восьми различных сигналов, привязанных к тактовому сигналу этого устройства. Процесс захвата и фиксации значений контролируемых сигналов и формирования выходных синхронных сигналов в этом элементе тактируется не-инвертированным сигналом синхронизации отлаживаемого устройства.

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

library IEEE;

use IEEE.STD_LOGIC_1164.ALL; library UNISIM;

use UNISIM.VCOMPONENTS.ALL; use UNISIM.VPKG.ALL;

entity chipscope_vio_v1_02_a is port (

CLK : in STD_LOGIC := 'X';

CONTROL : inout STD_LOGIC_VECTOR ( З5 downto 0 ); ASYNC_OUT : out STD_LOGIC_VECTOR ( З downto 0 ); SYNC_OUT : out STD_LOGIC_VECTOR ( 7 downto 0 ); SYNC_IN : in STD_LOGIC_VECTOR ( З downto 0 ); ASYNC_IN : in STD_LOGIC_VECTOR ( 1 downto 0 )

);

end chipscope_vio_v1_02_a;

Основная часть сгенерированного VHDL-кода представляет собой структурное описание архитектуры элемента chipscope_vio_v1_02_a. Так как объем текста сгенерированного описания выходит за рамки журнальной публикации, то далее приводится сокращенный вариант содержимого основных разделов этого описания, который дает представление о внутренней структуре компонентов, создаваемых с помощью параметризированного модуля Virtual Input/Output(VIO) версии v1.02a. Открывают основную часть текста VHDL-кода выражения декларации внутренних сигналов, используемых в структурном описании рассматриваемого элемента:

architecture signal N0 signal N1 : signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_

signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_

signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_ signal U0_

signal U0_ signal U0_

( 1 downto 0 signal U0_

( 1 downto 0 signal U0_

( 1 downto 0 signal U0_

( 1 downto 0 signal U0_

( 1 downto 0 signal U0_

( 1 downto 0 signal U0_

( 1 downto 0 signal U0_

( 1 downto 0 signal U0_ TOR ( 3 down signal U0 ( 3 downto 0 signal U0_

( 3 downto 0 signal U0_ signal U0_ signal U0 signal U0_ signal U0 signal U0 signal U0_ signal U0 signal U0_ signal U0

STRUCTURE of chipscope_vio_v1_02_a is : STD_LOGIC;

: STD_LOGIC;

,VIO_ARM_pulse : STD_LOGIC;

VIO_DATA_DOUT : STD_LOGIC;

.VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_async_mux_f_out : STD_LOGIC; .VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_async_mux_r_out : STD_LOGIC; VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_f alling_out : STD_LOGIC; VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_fd1_out : STD_LOGIC; .VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_mux1_out : STD_LOGIC; .VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_rising_out : STD_LOGIC; .VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_user_in_n : STD_LOGIC;

,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_async_mux_f_out : STD_LOGIC; ,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_async_mux_r_out : STD_LOGIC; ,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_clocked : STD_LOGIC; .VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_falling : STD_LOGIC; .VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_falling_out : STD_LOGIC; VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_fd1_out : STD_LOGIC; ,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_mux1_out : STD_LOGIC; ,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_rising : STD_LOGIC; ,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_rising_out : STD_LOGIC; VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_f_out : STD_LOGIC; ,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_mux_f_out : STD_LOGIC; ,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_mux_r_out : STD_LOGIC; VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_r_out : STD_LOGIC; ,VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_user_in_n : STD_LOGIC; VIO_GEN_SYNC_OUT_10_SYNC_OUT_CELL_SHIFT_OUT_temp : STD_LOGIC; VIO_GEN_SYNC_OUT_10_SYNC_OUT_CELL_out_temp : STD_LOGIC; ,VIO_GEN_SYNC_OUT_11_SYNC_OUT_CELL_SHIFT_OUT_temp : STD_LOGIC; ,VIO_GEN_SYNC_OUT_11_SYNC_OUT_CELL_out_temp : STD_LOGIC; ,VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_SHIFT_OUT_temp : STD_LOGIC; ,VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_out_temp : STD_LOGIC;

,VIO_GEN_SYNC_OUT_9_SYNC_OUT_CELL_SHIFT_OUT_temp : STD_LOGIC; ,VIO_GEN_SYNC_OUT_9_SYNC_OUT_CELL_out_temp : STD_LOGIC; ,VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_arm_dly1 : STD_LOGIC; ,VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_arm_dly2 : STD_LOGIC; VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_cnt_ce : STD_LOGIC; VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_cnt_reset : STD_LOGIC; ,VIO_GEN_TRANS_U_ARM_din_latched : STD_LOGIC; VIO_GEN_TRANS_U_ARM_iCLR : STD_LOGIC;

,VIO_GEN_UPDATE_OUT_23_UPDATE_CELL_SHIFT_OUT : STD_LOGIC; VIO_RESET : STD_LOGIC;

VIO_STAT_DOUT : STD_LOGIC;

VIO_U_STATUS_CFG_CE_n : STD_LOGIC;

VIO_U_STATUS_TDO_next : STD_LOGIC;

VIO_U_STATUS_iSTAT_0_Q : STD_LOGIC;

VIO_

VIO

VIO

VIO to 1 ); VIO_

U_STATUS_iSTAT_10_Q : STD_LOGIC;

_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_f_edge_iDOUT : STD_LOGIC_VECTOR _GEN_SYNC_IN_2_SYNC_IN_CELL_sync_r_edge_iDOUT : STD_LOGIC_VECTOR _GEN_SYNC_IN_3_SYNC_IN_CELL_sync_f_edge_iDOUT : STD_LOGIC_VECTOR _GEN_SYNC_IN_3_SYNC_IN_CELL_sync_r_edge_iDOUT : STD_LOGIC_VECTOR _GEN_SYNC_IN_4_SYNC_IN_CELL_sync_f_edge_iDOUT : STD_LOGIC_VECTOR _GEN_SYNC_IN_4_SYNC_IN_CELL_sync_r_edge_iDOUT : STD_LOGIC_VECTOR _GEN_SYNC_IN_5_SYNC_IN_CELL_sync_f_edge_iDOUT : STD_LOGIC_VECTOR _GEN_SYNC_IN_5_SYNC_IN_CELL_sync_r_edge_iDOUT : STD_LOGIC_VECTOR _GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_CI : STD_LOGIC_VEC-GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_D : STD_LOGIC_VECTOR

VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_S : STD_LOGIC_VECTOR

VIO_GEN_TRANS_U_ARM_iDIN : STD_LOGIC_VECTOR ( 1 downto 0 ); ,VIO_GEN_TRANS_U_ARM_iDOUT_dly : STD_LOGIC_VECTOR ( 1 downto 0 ); VIO_INPUT_SHIFT : STD_LOGIC_VECTOR ( 6 downto 1 ); ,VIO_OUTPUT_SHIFT : STD_LOGIC_VECTOR ( 23 downto 1 );

VIO_UPDATE : STD_LOGIC_VECTOR ( 11 downto 0 ); VIO_U_STATUS_U_SMUX_T1 : STD_LOGIC_VECTOR ( 7 downto 0 ); VIO_U_STATUS_U_SMUX_T2 : STD_LOGIC_VECTOR ( 3 downto 0 ); VIO_U_STATUS_U_SMUX_T3 : STD_LOGIC_VECTOR ( 1 downto 0 ); VIO_U_STATUS_U_STAT_CNT_CI : STD_LOGIC_VECTOR ( 7 downto 1 ); VIO_U_STATUS_U_STAT_CNT_D : STD_LOGIC_VECTOR ( 7 downto 0 );

signal U0_I_VIO_U_STATUS_U_STAT_CNT_S : STD_LOGIC_VECTOR ( 7 downto 0 ); signal U0_I_VIO_U_STATUS_iSTAT_10_wg_cy : STD_LOGIC_VECTOR ( 7 downto 0 ); signal U0_I_VIO_U_STATUS_iSTAT_10_wg_lut : STD_LOGIC_VECTOR ( 8 downto 0 ); signal U0_I_VIO_U_STATUS_iSTAT_CNT : STD_LOGIC_VECTOR ( 7 downto 0 ); signal U0_I_VIO_addr : STD_LOGIC_VECTOR ( 3 downto 0 ); signal U0_I_VIO_reset_f_edge_iDOUT : STD_LOGIC_VECTOR ( 1 downto 0 );

В составе структурного описания элемента chipscope_vio_v1_02_a в качестве основных компонентов применяются триггеры, регистры, мультиплексоры, инверторы и таблицы преобразования LUT (Look-Up Table). В отличие от конфигурируемых логических анализаторов, формируемых на основе параметризированного модуля Integrated Logic Analyzer (ILA), рассмотренного в предыдущей части данной статьи (см. КиТ № 12 ’2008), в компонентах, выполняющих функции виртуальных входов и выходов, не используются ресурсы блочной памяти ПЛИС Block RAM:

begin XST_GND : GND port map ( G => N0 );

XST_VCC : VCC port map ( P => N1 ); U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_USER_CLK_REG : FDE generic map( INIT => '0' )

port map ( C => CLK, CE => N1, D => SYNC_IN(0),

Q => U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_clocked ); U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_U_RISING : FDCE generic map( INIT => '0' ) port map ( C => SYNC_IN(0), CE => N1,

CLR => U0_I_VIO_RESET, D => N1,

Q => U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_rising_out ); U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_U_SYNC_R : FDRE generic map( INIT => '0' ) port map ( C => CLK,

CE => U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_rising,

D => N1, R => U0_I_VIO_RESET,

Q => U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_r_out ); U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_f_edge_I_H2L_U_D0UT : FDR generic map( INIT => '0' ) port map ( C => CLK,

D => U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_f_edge_iD0UT(1),

R => U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_f_edge_iD0UT(0),

Q => U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_falling );

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

U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_USER_MUX : LUT3 generic map( INIT => X»CA» )

port map ( I0 => U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_clocked,

11 => U0_I_VI0_INPUT_SHIFT(2),

12 => C0NTR0L(7),

0 => U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_mux1_out ); U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_U_STATCMD_n : INV ort map ( I => SYNC_IN(0),

0 => U0_I_VI0_GEN_SYNC_IN_2_SYNC_IN_CELL_user_in_n ); U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_USER_REG : FDE generic map( INIT => '0' ) port map ( C => C0NTR0L(0), CE => N1,

D => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_mux1_out,

Q => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_fd1_out ); U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_U_RISING : FDCE generic map( INIT => '0' ) port map ( C => SYNC_IN(1), CE => N1,

CLR => U0_I_VI0_RESET, D => N1,

Q => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_rising_out ); U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_U_SYNC_R : FDRE generic map( INIT => '0' ) port map ( C => CLK,

CE => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_rising,

D => N1, R => U0_I_VI0_RESET,

Q => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_sync_r_out );

U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_U_STATCMD_n : INV port map ( I => SYNC_IN(1),

0 => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_user_in_n ); U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_ASYNC_R_MUX : LUT3 generic map( INIT => X»CA» )

port map ( I0 => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_rising_out,

11 => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_fd1_out,

12 => C0NTR0L(7),

0 => U0_I_VI0_GEN_SYNC_IN_3_SYNC_IN_CELL_async_mux_r_out ); U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_U_SYNC_R : FDRE generic map( INIT => '0' )

port map ( C => CLK, CE => U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_rising, D => N1, R => U0_I_VI0_RESET,

Q => U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_r_out ); U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_S_SYNC_R_REG : FDE generic map( INIT => '0' ) port map ( C => C0NTR0L(0), CE => N1,

D => U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_mux_r_out,

Q => U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_fd4_out ); U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_USER_MUX : LUT3 generic map( INIT => X»CA» )

port map ( I0 => U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_clocked,

I1 => U0_I_VI0_INPUT_SHIFT(5), I2 => C0NTR0L(7),

0 => U0_I_VI0_GEN_SYNC_IN_5_SYNC_IN_CELL_mux1_out );

U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_U_STATCMD_n : INV port map ( I => SYNC_IN(3),

O => U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_user_in_n );

U0_I_VIO_U_STATUS_U_STAT_CNT_G_0_U_FDRE : FDRE generic map( INIT => '0' ) port map ( C => CONTROL(0), CE => N1,

D => U0_I_VIO_U_STATUS_U_STAT_CNT_D(0),

R => U0_I_VIO_U_STATUS_CFG_CE_n,

Q => U0_I_VIO_U_STATUS_iSTAT_CNT(0) );

U0_I_VIO_U_STATUS_U_STAT_CNT_G_7_U_LUT : LUTl generic map( INIT => X»2» )

port map ( I0 => U0_I_VIO_U_STATUS_iSTAT_CNT(7),

O => U0_I_VIO_U_STATUS_U_STAT_CNT_S(7) );

U0_I_VIO_U_STATUS_U_STAT_CNT_G_7_U_XORCY : XORCY port map ( CI => U0_I_VIO_U_STATUS_U_STAT_CNT_CI(7),

LI => U0_I_VIO_U_STATUS_U_STAT_CNT_S(7),

O => U0_I_VIO_U_STATUS_U_STAT_CNT_D(7) );

U0_I_VIO_U_STATUS_U_STAT_CNT_G_6_U_LUT : LUTl generic map( INIT => X»2» )

port map ( I0 => U0_I_VIO_U_STATUS_iSTAT_CNT(6),

O => U0_I_VIO_U_STATUS_U_STAT_CNT_S(6) );

U0_I_VIO_U_STATUS_U_STAT_CNT_G_6_GnH_U_MUXCY : MUXCY_L port map ( CI => U0_I_VIO_U_STATUS_U_STAT_CNT_CI(6),

DI => N0, S => U0_I_VIO_U_STATUS_U_STAT_CNT_S(6),

LO => U0_I_VIO_U_STATUS_U_STAT_CNT_CI(7) );

U0_I_VIO_U_STATUS_F_STAT_0_I_STAT_U_STAT : LUT4 generic map( INIT => X»0101» ) port map ( I0 => U0_I_VIO_U_STATUS_iSTAT_CNT(0),

11 => U0_I_VIO_U_STATUS_iSTAT_CNT(1),

12 => U0_I_VIO_U_STATUS_iSTAT_CNT(2),

13 => U0_I_VIO_U_STATUS_iSTAT_CNT(3),

O => U0_I_VIO_U_STATUS_iSTAT_0_Q );

U0_I_VIO_U_STATUS_U_SMUX_NO_LUT6_I4_I_PT1_U_MUXF7 : MUXF7 port map ( I0 => U0_I_VIO_U_STATUS_U_SMUX_T3(0),

I1 => U0_I_VIO_U_STATUS_U_SMUX_T3(1),

S => U0_I_VIO_U_STATUS_iSTAT_CNT(4),

O => U0_I_VIO_U_STATUS_TDO_next );

U0_I_VIO_U_STATUS_U_SMUX_NO_LUT6_I4_FL_1_U_MUXF6 : MUXF6 port map ( I0 => U0_I_VIO_U_STATUS_U_SMUX_T2(1),

I1 => U0_I_VIO_U_STATUS_U_SMUX_T2(3),

S => U0_I_VIO_U_STATUS_iSTAT_CNT(5),

O => U0_I_VIO_U_STATUS_U_SMUX_T3(1) );

U0_I_VIO_U_STATUS_U_SMUX_NO_LUT6_I4_FK_3_U_MUXF5 : MUXF5 port map ( I0 => U0_I_VIO_U_STATUS_U_SMUX_T1(3),

I1 => U0_I_VIO_U_STATUS_U_SMUX_T1(7),

S => U0_I_VIO_U_STATUS_iSTAT_CNT(6),

O => U0_I_VIO_U_STATUS_U_SMUX_T2(3) );

U0_I_VIO_U_STATUS_U_SMUX_NO_LUT6_I4_FJ_7_U_LUT3 : LUT3 generic map( INIT => X»CA» ) port map ( I0 => U0_I_VIO_U_STATUS_iSTAT_7_Q,

11 => U0_I_VIO_U_STATUS_iSTAT_10_Q,

12 => U0_I_VIO_U_STATUS_iSTAT_CNT(7),

O => U0_I_VIO_U_STATUS_U_SMUX_T1(7) );

U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_LUT_OUT : LUT2 generic map( INIT => X»2» )

port map ( I0 => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_arm_dly2,

11 => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_arm_dly1,

O => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_cnt_reset );

U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_LUT_CE : LUT4 generic map( INIT => X»7FFF» )

port map ( I0 => U0_I_VIO_addr(0), I1 => U0_I_VIO_addr(1),

12 => U0_I_VIO_addr(2), I3 => U0_I_VIO_addr(3),

O => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_cnt_ce );

U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_G_0_U_XORCY : XORCY port map ( CI => N1,

LI => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_S(0),

O => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_D(0) );

U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_G_0_GnH_U_MUXCY : MUXCY_L port map ( CI => N1, DI => N0,

S => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_S(0),

LO => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_CI(1) );

U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_G_0_U_LUT : LUTl generic map( INIT => X»2» ) port map ( I0 => U0_I_VIO_addr(0),

O => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_S(0) );

U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_USER_MUX : LUT3 generic map( INIT => X»CA» ) port map ( I0 => ASYNC_IN(0), I1 => N0,

I2 => CONTROL(7),

O => U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_mux1_out );

U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_U_STATCMD_n : INV port map ( I => ASYNC_IN(0),

O => U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_user_in_n );

U0_I_VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_I_SRL_T2_U_SRL : SRLC16E generic map( INIT => X»0000» )

port map ( A0 => U0_I_VIO_addr(0), A1 => U0_I_VIO_addr(1),

A2 => U0_I_VIO_addr(2), A3 => U0_I_VIO_addr(3),

CE => CONTROL(5), CLK => CONTROL(0),

D => U0_I_VIO_OUTPUT_SHIFT(4),

Q => U0_I_VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_out_temp,

Q15 => U0_I_VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_SHIFT_OUT_temp );

U0_I_VI0_GEN_SYNC_0UT_4_SYNC_0UT_CELL_LUT_0UT : LUT2 generic map( INIT => X»8» ) port map ( I0 => C0NTR0L(5),

I1 => U0_I_VI0_GEN_SYNC_0UT_4_SYNC_0UT_CELL_SHIFT_0UT_temp,

0 => U0_I_VI0_0UTPUT_SHIFT(5) );

U0_I_VI0_U_D0UT : LUT3 generic map( INIT => X»CA» ) port map ( I0 => U0_I_VI0_STAT_D0UT,

11 => U0_I_VI0_DATA_D0UT, I2 => C0NTR0L(7),

0 => C0NTR0L(3) );

U0_I_VI0_U_STATUS_U_TD0 : FDE generic map( INIT => '0' ) port map ( C => C0NTR0L(0), CE => N1,

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

D => U0_I_VI0_U_STATUS_TD0_next,

Q => U0_I_VI0_STAT_D0UT );

U0_I_VI0_GEN_SYNC_0UT_ADDR_SYNC_0UT_ADDR_C0UNT_G_0_U_FDRE : FDRE generic map( INIT => '0' ) port map ( C => CLK,

CE => U0_I_VI0_GEN_SYNC_0UT_ADDR_SYNC_0UT_ADDR_cnt_ce,

D => U0_I_VI0_GEN_SYNC_0UT_ADDR_SYNC_0UT_ADDR_C0UNT_D(0),

R => U0_I_VI0_GEN_SYNC_0UT_ADDR_SYNC_0UT_ADDR_cnt_reset,

Q => U0_I_VI0_addr(0));

U0_I_VI0_GEN_ASYNC_IN_0_ASYNC_IN_CELL_U_RISING : FDCE generic map( INIT => '0' ) port map ( C => ASYNC_IN(0), CE => N1,

CLR => U0_I_VI0_RESET, D => N1,

Q => U0_I_VI0_GEN_ASYNC_IN_0_ASYNC_IN_CELL_rising_out );

U0_I_VI0_GEN_ASYNC_IN_0_ASYNC_IN_CELL_S_ASYNC_R_REG : FDE generic map( INIT => '0' ) port map ( C => C0NTR0L(0), CE => N1,

D => U0_I_VI0_GEN_ASYNC_IN_0_ASYNC_IN_CELL_async_mux_r_out,

Q => U0_I_VI0_GEN_ASYNC_IN_0_ASYNC_IN_CELL_fd2_out );

U0_I_VI0_GEN_TRANS_U_ARM_U_D0UT : FDR generic map( INIT => '0' ) port map ( C => CLK,

D => U0_I_VI0_GEN_TRANS_U_ARM_iDIN(0),

R => U0_I_VI0_GEN_TRANS_U_ARM_iDIN(1),

Q => U0_I_VI0_ARM_pulse);

U0_I_VI0_U_STATUS_iSTAT_10_wg_cy_0_Q : MUXCY port map ( CI => N0, DI => N1,

S => U0_I_VI0_U_STATUS_iSTAT_10_wg_lut(0),

0 => U0_I_VI0_U_STATUS_iSTAT_10_wg_cy(0));

U0_I_VI0_U_STATUS_iSTAT_10_wg_lut_1_Q : LUT4 generic map( INIT => X»8000» ) port map ( I0 => C0NTR0L(11), I1 => C0NTR0L(13),

12 => C0NTR0L(8), I3 => C0NTR0L(14),

0 => U0_I_VI0_U_STATUS_iSTAT_10_wg_lut(1) );

U0_I_VI0_U_STATUS_iSTAT_10_wg_cy_8_Q : MUXCY port map ( CI => U0_I_VI0_U_STATUS_iSTAT_10_wg_cy(7),

DI => N1, S => U0_I_VI0_U_STATUS_iSTAT_10_wg_lut(8),

0 => U0_I_VI0_U_STATUS_iSTAT_10_Q); end STRUCTURE;

Декларация сформированного компонента сЫр5соре_ую_у!_02_а, предоставляющего возможность использования виртуальных входных и выходных портов в процессе внутрикристальной аппаратной отладки проектируемого устройства, выполняется с помощью следующей конструкции, которую необходимо добавить в соответствующий раздел исходного УИЭЬ-описания:

component chipscope_vio_v1_02_a P0RT (

C0NTR0L : IN0UT STD_L0GIC_VECT0R(35 D0WNT0 0); CLK : IN STD_L0GIC;

ASYNC_IN : IN STD_L0GIC_VECT0R(1 D0WNT0 0); ASYNC_0UT : 0UT STD_L0GIC_VECT0R(3 D0WNT0 0); SYNC_IN : IN STD_L0GIC_VECT0R(3 D0WNT0 0); SYNC_0UT : 0UT STD_L0GIC_VECT0R(7 D0WNT0 0)

);

end component;

Для создания конкретного экземпляра элемента chipscope_vio_v1_02_a следует включить в состав описания отлаживаемого устройства следующий оператор:

<идентификатор_экземпляра_элемента_chipscope_vio_v1_02_a >: chipscope_vio_v1_02_a port map (

CONTROL => CONTROL,

CLK => CLK,

ASYNC_IN => ASYNC_IN,

ASYNC_OUT => ASYNC_OUT,

SYNC_IN => SYNC_IN,

SYNC_OUT => SYNC_OUT );

Подробные сведения о количестве различных ресурсов кристалла (триггеров Flip Flop, таблиц преобразования LUT и секций Slices), не-

[ ц* 1 Г~°* 1

Рис. 16. Вид информационной панели, содержащей сведения об объеме различных ресурсов кристалла, используемых для автономной реализации элемента chipscope_vio_v1_02_a

обходимых для автономной реализации элемента chipscope_vio_v1_02_a, представлены в информационной панели, вид которой показан на рис. 16. ■

Окончание следует Литература

1. Зотов В. Средства внутрикристальной отладки цифровых устройств и встраиваемых микропроцессорных систем, разрабатываемых на базе ПЛИС с архитектурой FPGA фирмы Xilinx — ChipScope Pro // Компоненты и технологии. 2008. № 10.

2. Кузелин М. О., Кнышев Д. А., Зотов В. Ю. Современные семейства ПЛИС фирмы Xilinx:

Справочное пособие. М.: Горячая линия - Телеком, 2004.

3. Зотов В. Проектирование цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с использованием средств CORE Generator // Компоненты и технологии. 2006. № 12. 2007. № 1.

4. Зотов В. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия - Телеком, 2003.

5. Зотов В. Embedded Development Kit — система проектирования встраиваемых микропроцессорных систем на основе ПЛИС серий FPGA фирмы Xilinx // Компоненты и технологии. 2004. №4.

6. Зотов В. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx. М.: Горячая линия - Телеком, 2006.

7. Зотов В. MicroBlaze — семейство 32-разрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 2003. № 9.

8. Зотов В. Система команд микропроцессорного ядра MicroBlaze // Компоненты и технологии. 2004. № 1-3.

9. Зотов В. Организация памяти микропроцессорного ядра MicroBlaze // Компоненты и технологии. 2004. № 5.

10. Зотов В. Создание проекта микропроцессорной системы на основе ядра MicroBlaze, реализуемой в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2004. № 6.

11. Зотов В. Формирование спецификации аппаратной платформы микропроцессорной сис-

темы на основе ядра MicroBlaze, реализуемой в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2004. № 7-8.

12. Зотов В. Реализация аппаратной платформы микропроцессорной системы, проектируемой на основе ядра MicroBlaze, в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2004. № 9.

13. Зотов В. Разработка спецификации программных средств микропроцессорной системы на основе ядра MicroBlaze, реализуемой в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 1.

14. Зотов В. Разработка программного обеспечения микропроцессорной системы на основе ядра MicroBlaze, реализуемой в ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии 2005. № 2.

15. Зотов В. Разработка встраиваемых микропроцессорных систем на основе ядра MicroBlaze, реализуемых в ПЛИС семейств FPGA фирмы Xilinx, с помощью «мастера» Base System Builder Wizard // Компоненты и технологии. 2005. № 3-4.

16. Зотов В. Новый инструментальный комплект от компании Avnet на основе ПЛИС FPGA семейства Spartan-3A фирмы Xilinx // Компоненты и технологии. 2008. № 8.

17. Зотов В. Инструментальный модуль компании Avnet для отладки проектов встраиваемых систем, разрабатываемых на базе нового семейства ПЛИС FPGA фирмы Xilinx Virtex-5 FXT // Компоненты и технологии. 2008. № 9.

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