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

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

Все статьи цикла:

Для осуществления доступа к выбранным внутренним сигналам отлаживаемого устройства, реализуемого на базе ПЛИС с архитектурой FPGA, в его состав могут включаться компоненты, формируемые на основе параметризированного модуля Virtual Input/Output (VIO) с помощью средств CORE Generator, которые предоставляют возможность использования виртуальных входов и выходов. Каждый такой компонент может содержать синхронные и асинхронные входные и выходные порты. Эти виртуальные интерфейсные порты позволяют в процессе аппаратной внутрикристальной отладки не только проводить мониторинг поведения интересующих сигналов, но и принудительно изменять состояние соответствующих внутренних цепей разрабатываемого устройства в режиме реального времени. В настоящий момент актуальной версией рассматриваемого параметризированного модуля является модификация Virtual Input/Output (VIO) v1.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].

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

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

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

Затем следует, используя индикаторы состояния, представленные во встроенной панели 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. Следует обратить внимание на то, что на неиспользуемые в процессе отладки линии входных синхронных и асинхронных портов должен быть подан низкий логический уровень сигнала. В противном случае при обнаружении неподсоединенных входных цепей появляется соответствующее предупреждение, а триггеры с неподключенными входами могут быть удалены в процессе оптимизации, выполняемой средствами размещения и трассировки проекта в кристалле.

Рис. 14. Схема сопряжения элемента с контроллером ICON и цепями отлаживаемого устройства
Рис. 14. Схема сопряжения элемента с контроллером ICON и цепями отлаживаемого устройства

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

  • CLK — вход сигнала синхронизации отлаживаемого устройства или встраиваемой микропроцессорной системы;
  • CONTROL[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, могут включаться также в состав проектов встраиваемых систем, выполняемых на основе 32-разрядных микропроцессорных ядер семейств PowerPC и MicroBlaze [6–15], для их последующей аппаратной внутрикристальной отладки. Схема сопряжения компонентов, предоставляющих возможность использования виртуальных входов и выходов, с периферийными шинами и внутренними цепями микропроцессорных систем, разрабатываемых с помощью комплекса средств проектирования Xilinx EDK, показана на рис. 15.

Рис. 15. Схема включения компонента в состав отлаживаемых встраиваемых микропроцессорных систем, разрабатываемых на базе 32-разрядных ядер семейств PowerPC и MicroBlaze
Рис. 15. Схема включения компонента в состав отлаживаемых встраиваемых микропроцессорных систем,
разрабатываемых на базе 32-разрядных ядер семейств PowerPC и MicroBlaze

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

В качестве примера компонента, сгенерированного на основе параметризированного модуля Virtual Input/Output (VIO) версии v1.02a с помощью средств CORE 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 ( 35 downto 0 ); 
	ASYNC_OUT : out STD_LOGIC_VECTOR ( 3 downto 0 ); 
	SYNC_OUT : out STD_LOGIC_VECTOR ( 7 downto 0 ); 
	SYNC_IN : in STD_LOGIC_VECTOR ( 3 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 STRUCTURE of chipscope_vio_v1_02_a is
signal N0 : STD_LOGIC; 
signal N1 : STD_LOGIC; 
signal U0_I_VIO_ARM_pulse : STD_LOGIC; 
signal U0_I_VIO_DATA_DOUT : STD_LOGIC; 
signal U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_async_mux_f_out : STD_LOGIC; 
signal U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_async_mux_r_out : STD_LOGIC; 
signal U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_falling_out : STD_LOGIC; 
signal U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_fd1_out : STD_LOGIC; 
signal U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_mux1_out : STD_LOGIC; 
signal U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_rising_out : STD_LOGIC; 
signal U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_user_in_n : STD_LOGIC; 
…
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_async_mux_f_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_async_mux_r_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_clocked : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_falling : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_falling_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_fd1_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_mux1_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_rising : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_rising_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_f_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_mux_f_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_mux_r_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_r_out : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_user_in_n : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_10_SYNC_OUT_CELL_SHIFT_OUT_temp : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_10_SYNC_OUT_CELL_out_temp : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_11_SYNC_OUT_CELL_SHIFT_OUT_temp : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_11_SYNC_OUT_CELL_out_temp : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_SHIFT_OUT_temp : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_out_temp : STD_LOGIC; 
…
signal U0_I_VIO_GEN_SYNC_OUT_9_SYNC_OUT_CELL_SHIFT_OUT_temp : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_9_SYNC_OUT_CELL_out_temp : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_arm_dly1 : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_arm_dly2 : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_cnt_ce : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_cnt_reset : STD_LOGIC; 
signal U0_I_VIO_GEN_TRANS_U_ARM_din_latched : STD_LOGIC; 
signal U0_I_VIO_GEN_TRANS_U_ARM_iCLR : STD_LOGIC; 
signal U0_I_VIO_GEN_UPDATE_OUT_23_UPDATE_CELL_SHIFT_OUT : STD_LOGIC; 
signal U0_I_VIO_RESET : STD_LOGIC; 
signal U0_I_VIO_STAT_DOUT : STD_LOGIC; 
signal U0_I_VIO_U_STATUS_CFG_CE_n : STD_LOGIC; 
signal U0_I_VIO_U_STATUS_TDO_next : STD_LOGIC; 
signal U0_I_VIO_U_STATUS_iSTAT_0_Q : STD_LOGIC; 
…
signal U0_I_VIO_U_STATUS_iSTAT_10_Q : STD_LOGIC; 
signal U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_f_edge_iDOUT : STD_LOGIC_VECTOR
( 1 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_r_edge_iDOUT : STD_LOGIC_VECTOR
( 1 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_sync_f_edge_iDOUT : STD_LOGIC_VECTOR
( 1 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_sync_r_edge_iDOUT : STD_LOGIC_VECTOR
( 1 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_IN_4_SYNC_IN_CELL_sync_f_edge_iDOUT : STD_LOGIC_VECTOR
( 1 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_IN_4_SYNC_IN_CELL_sync_r_edge_iDOUT : STD_LOGIC_VECTOR
( 1 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_f_edge_iDOUT : STD_LOGIC_VECTOR
( 1 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_r_edge_iDOUT : STD_LOGIC_VECTOR
( 1 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_CI : STD_LOGIC_VEC-
TOR ( 3 downto 1 ); 
signal U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_D : STD_LOGIC_VECTOR
( 3 downto 0 ); 
signal U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_S : STD_LOGIC_VECTOR
( 3 downto 0 ); 
signal U0_I_VIO_GEN_TRANS_U_ARM_iDIN : STD_LOGIC_VECTOR ( 1 downto 0 ); 
signal U0_I_VIO_GEN_TRANS_U_ARM_iDOUT_dly : STD_LOGIC_VECTOR ( 1 downto 0 ); 
signal U0_I_VIO_INPUT_SHIFT : STD_LOGIC_VECTOR ( 6 downto 1 ); 
signal U0_I_VIO_OUTPUT_SHIFT : STD_LOGIC_VECTOR ( 23 downto 1 ); 
signal U0_I_VIO_UPDATE : STD_LOGIC_VECTOR ( 11 downto 0 ); 
signal U0_I_VIO_U_STATUS_U_SMUX_T1 : STD_LOGIC_VECTOR ( 7 downto 0 ); 
signal U0_I_VIO_U_STATUS_U_SMUX_T2 : STD_LOGIC_VECTOR ( 3 downto 0 ); 
signal U0_I_VIO_U_STATUS_U_SMUX_T3 : STD_LOGIC_VECTOR ( 1 downto 0 ); 
signal U0_I_VIO_U_STATUS_U_STAT_CNT_CI : STD_LOGIC_VECTOR ( 7 downto 1 ); 
signal U0_I_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_VIO_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_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_r_out );
	U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_f_edge_I_H2L_U_DOUT : FDR
		generic map( INIT => '0' )
		port map ( C => CLK,
			D => U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_f_edge_iDOUT(1),
			R => U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_sync_f_edge_iDOUT(0),
			Q => U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_falling );
…
	U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_USER_MUX : LUT3
		generic map( INIT => X»CA» )
		port map ( I0 => U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_clocked,
			I1 => U0_I_VIO_INPUT_SHIFT(2),
			I2 => CONTROL(7),
			O => U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_mux1_out );
			U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_U_STATCMD_n : INV
		port map ( I => SYNC_IN(0),
			O => U0_I_VIO_GEN_SYNC_IN_2_SYNC_IN_CELL_user_in_n );
	U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_USER_REG : FDE
		generic map( INIT => '0' )
		port map ( C => CONTROL(0), CE => N1,
			D => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_mux1_out,
			Q => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_fd1_out );
			U0_I_VIO_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_VIO_RESET, D => N1,
			Q => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_rising_out );
			U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_U_SYNC_R : FDRE
		generic map( INIT => '0' )
		port map ( C => CLK,
			CE => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_rising,
			D => N1, R => U0_I_VIO_RESET,
			Q => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_sync_r_out );
…
	U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_U_STATCMD_n : INV
		port map ( I => SYNC_IN(1),
			O => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_user_in_n );
	U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_ASYNC_R_MUX : LUT3
		generic map( INIT => X»CA» )
		port map ( I0 => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_rising_out,
			I1 => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_fd1_out,
			I2 => CONTROL(7),
			O => U0_I_VIO_GEN_SYNC_IN_3_SYNC_IN_CELL_async_mux_r_out );
			U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_U_SYNC_R : FDRE
		generic map( INIT => '0' )
		port map ( C => CLK, CE => U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_rising,
			D => N1, R => U0_I_VIO_RESET,
			Q => U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_r_out );
	U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_S_SYNC_R_REG : FDE
		generic map( INIT => '0' )
		port map ( C => CONTROL(0), CE => N1,
			D => U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_sync_mux_r_out,
			Q => U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_fd4_out );
	U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_USER_MUX : LUT3
		generic map( INIT => X»CA» )
		port map ( I0 => U0_I_VIO_GEN_SYNC_IN_5_SYNC_IN_CELL_clocked,
			I1 => U0_I_VIO_INPUT_SHIFT(5), I2 => CONTROL(7),
			O => U0_I_VIO_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 : LUT1
		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 : LUT1
		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),
			I1 => U0_I_VIO_U_STATUS_iSTAT_CNT(1),
			I2 => U0_I_VIO_U_STATUS_iSTAT_CNT(2),
			I3 => 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,
			I1 => U0_I_VIO_U_STATUS_iSTAT_10_Q,
			I2 => 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,
			I1 => 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),
			I2 => 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 : LUT1
		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_VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_LUT_OUT : LUT2
		generic map( INIT => X»8» )
		port map ( I0 => CONTROL(5),
			I1 => U0_I_VIO_GEN_SYNC_OUT_4_SYNC_OUT_CELL_SHIFT_OUT_temp,
			O => U0_I_VIO_OUTPUT_SHIFT(5) );
	U0_I_VIO_U_DOUT : LUT3
		generic map( INIT => X»CA» )
		port map ( I0 => U0_I_VIO_STAT_DOUT,
			I1 => U0_I_VIO_DATA_DOUT, I2 => CONTROL(7),
			O => CONTROL(3) );
	U0_I_VIO_U_STATUS_U_TDO : FDE
		generic map( INIT => '0' )
		port map ( C => CONTROL(0), CE => N1,
			D => U0_I_VIO_U_STATUS_TDO_next,
			Q => U0_I_VIO_STAT_DOUT );
	U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_G_0_U_FDRE : FDRE
		generic map( INIT => '0' )
		port map ( C => CLK,
			CE => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_cnt_ce,
			D => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_COUNT_D(0),
			R => U0_I_VIO_GEN_SYNC_OUT_ADDR_SYNC_OUT_ADDR_cnt_reset,
			Q => U0_I_VIO_addr(0) );
…
	U0_I_VIO_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_VIO_RESET, D => N1,
			Q => U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_rising_out );
	U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_S_ASYNC_R_REG : FDE
		generic map( INIT => '0' )
		port map ( C => CONTROL(0), CE => N1,
			D => U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_async_mux_r_out,
			Q => U0_I_VIO_GEN_ASYNC_IN_0_ASYNC_IN_CELL_fd2_out );
	U0_I_VIO_GEN_TRANS_U_ARM_U_DOUT : FDR
		generic map( INIT => '0' )
		port map ( C => CLK,
			D => U0_I_VIO_GEN_TRANS_U_ARM_iDIN(0),
			R => U0_I_VIO_GEN_TRANS_U_ARM_iDIN(1),
			Q => U0_I_VIO_ARM_pulse );
	U0_I_VIO_U_STATUS_iSTAT_10_wg_cy_0_Q : MUXCY
		port map ( CI => N0, DI => N1,
			S => U0_I_VIO_U_STATUS_iSTAT_10_wg_lut(0),
			O => U0_I_VIO_U_STATUS_iSTAT_10_wg_cy(0) );
	U0_I_VIO_U_STATUS_iSTAT_10_wg_lut_1_Q : LUT4
		generic map( INIT => X»8000» )
		port map ( I0 => CONTROL(11), I1 => CONTROL(13),
			I2 => CONTROL(8), I3 => CONTROL(14),
			O => U0_I_VIO_U_STATUS_iSTAT_10_wg_lut(1) );
	U0_I_VIO_U_STATUS_iSTAT_10_wg_cy_8_Q : MUXCY
		port map ( CI => U0_I_VIO_U_STATUS_iSTAT_10_wg_cy(7),
			DI => N1, S => U0_I_VIO_U_STATUS_iSTAT_10_wg_lut(8),
			O => U0_I_VIO_U_STATUS_iSTAT_10_Q );
end STRUCTURE;  

Декларация сформированного компонента chipscope_vio_v1_02_a, предоставляющего возможность использования виртуальных входных и выходных портов в процессе внутрикристальной аппаратной отладки проектируемого устройства, выполняется с помощью следующей конструкции, которую необходимо добавить в соответствующий раздел исходного VHDL-описания:

component chipscope_vio_v1_02_a
PORT (
	CONTROL : INOUT STD_LOGIC_VECTOR(35 DOWNTO 0);
	CLK : IN STD_LOGIC;
	ASYNC_IN : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
	ASYNC_OUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
	SYNC_IN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
	SYNC_OUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 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), необходимых для автономной реализации элемента chipscope_vio_v1_02_a, представлены в информационной панели, вид которой показан на рис. 16.

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

Часть IV

Литература

  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.

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

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