exponenta event banner

socAXIMaster

Ячейки памяти для чтения и записи на аппаратной плате от MATLAB

Описание

socAXIMaster взаимодействует с ведущим IP-адресом MATLAB ® AXI, работающим на аппаратной плате. Объект использует соединение JTAG для пересылки команд чтения и записи в IP и доступа к расположениям ведомой памяти на плате аппаратных средств. Пройти socAXIMaster объект в качестве аргумента при создании socIPCore , чтобы объект мог получить доступ к расположениям памяти в ядре IP на плате.

Создание

Описание

пример

axiMasterObj = socAXIMaster(vendor) создает объект, который подключается к главному IP-адресу AXI для указанного vendor.Это соединение позволяет получать доступ к расположениям памяти в конструкции SoC из MATLAB.

axiMasterObj = socAXIMaster(hw) создает объект, который подключается к ведущему IP-адресу AXI на указанной плате аппаратных средств.

axiMasterObj = socAXIMaster(___,Name,Value) создает объект с дополнительными свойствами, заданными одним или несколькими Name,Value аргументы пары. Заключите каждое имя свойства в кавычки. Укажите свойства в дополнение к входным аргументам в предыдущих синтаксисах.

Входные аргументы

развернуть все

Торговая марка FPGA, указана как 'Intel' или 'Xilinx'. Главный IP-адрес AXI зависит от типа используемого FPGA.

Аппаратный объект, указанный как socHardwareBoard объект, представляющий подключение к аппаратной плате SoC.

Свойства

развернуть все

Тип кабеля JTAG, используемого для связи с платой FPGA (только платы Xilinx), указанный как 'auto' или 'FTDI'. Это свойство наиболее полезно при подключении к хост-компьютеру нескольких кабелей.

Если для этого свойства установлено значение 'auto' (по умолчанию) объект автоматически обнаруживает тип кабеля JTAG. Объект определяет приоритеты поиска кабелей Digilent ® и использует этот процесс для автоматического определения типа кабеля.

  1. socAXIMaster объект ищет кабель Digilent. Если объект находит:

    • Только один кабель Digilent - объект использует этот кабель для связи с платой FPGA.

    • Несколько кабелей Digilent - объект возвращает ошибку. Для устранения этой ошибки укажите требуемый кабель с помощью JTAGCableName собственность.

    • Нет цифровых кабелей - объект ищет кабель FTDI (см. шаг 2).

  2. Если кабель Digilent не найден, socAXIMaster объект ищет кабель FTDI. Если объект находит:

    • Только один кабель FTDI - объект использует этот кабель для связи с платой FPGA.

    • Несколько кабелей FTDI - объект возвращает ошибку. Для устранения этой ошибки укажите требуемый кабель с помощью JTAGCableName собственность.

    • Нет кабелей FTDI - объект возвращает ошибку. Чтобы устранить эту ошибку, подключите кабель Digilent или FTDI.

Поиск кабеля в 'auto' режим определяет приоритеты соединения с помощью кабеля Digilent. Если к главному компьютеру подключены один кабель Digilent и один кабель FTDI и для этого свойства установлено значение 'auto'объект выбирает кабель Digilent для связи с платой FPGA.

Если для этого свойства установлено значение 'FTDI'объект выполняет поиск кабелей FTDI. Если объект находит:

  • Только один кабель FTDI - объект использует этот кабель для связи с платой FPGA.

  • Несколько кабелей FTDI - объект возвращает ошибку. Для устранения этой ошибки укажите требуемый кабель с помощью JTAGCableName собственность.

  • Нет кабелей FTDI - объект возвращает ошибку. Чтобы устранить эту ошибку, подключите кабель Digilent или FTDI.

Пример см. в разделе Выбор из нескольких кабелей JTAG.

Имя пользователя кабеля JTAG для связи с платой FPGA, указанное как 'auto' или вектор символов. Укажите это свойство, если к хост-компьютеру подключены несколько кабелей JTAG одного типа. Если хост-компьютер имеет несколько кабелей JTAG и это свойство не указано, объект возвращает ошибку. Сообщение об ошибке содержит имена доступных кабелей JTAG. Пример см. в разделе Выбор из нескольких кабелей JTAG.

Тактовая частота JTAG, в МГц, заданная как положительное целое число. Для процессоров Intel ® FPGA тактовая частота JTAG должна составлять 12 или 24 МГц. Для плат Xilinx FPGA тактовая частота JTAG должна быть 33 МГц или 66 МГц. Тактовая частота JTAG зависит от типа кабеля и максимальной тактовой частоты, поддерживаемой платой FPGA.

Положение FPGA в цепочке JTAG (только платы Xilinx), указанное как положительное целое число. Укажите это значение свойства, если в цепочке JTAG несколько устройств FPGA или Zynq ®.

Сумма длины регистра команд для всех устройств перед целевым FPGA (только для плат Xilinx), заданная как неотрицательное целое число. Укажите это значение свойства, если в цепочке JTAG несколько устройств FPGA или Zynq.

Сумма длины регистра команд для всех устройств после целевого FPGA (только для плат Xilinx), заданная как неотрицательное целое число. Укажите это значение свойства, если в цепочке JTAG несколько устройств FPGA или Zynq.

Функции объекта

readmemoryПрочитайте данные из AXI4 нанесенные на карту памятью рабы
releaseВыпуск кабельного ресурса JTAG
writememoryНапишите данные AXI4 нанесенные на карту памятью рабы

Примеры

свернуть все

Пример настройки и использования главного IP-адреса AXI в конструкции см. в разделе Произвольный доступ к внешней памяти. В частности, просмотрите soc_image_rotation_axi_master.m сценарий, инициализирующий память на устройстве, запускающий логику FPGA и считывающий измененные данные. В этом примере показан только этап инициализации памяти.

Загрузить a .mat файл, содержащий структуры, полученные из параметров конфигурации платы. Этот файл был создан SoC Builder. Эти структуры также описывают IP-ядра и конфигурацию памяти конструкции платы. Настройка главного соединения JTAG AXI путем создания socHardwareBoard и передача его в socAXIMaster объект. socAXIMaster объект соединяется с платой аппаратных средств и подтверждает наличие IP-адреса.

load('soc_image_rotation_zc706_aximaster.mat');
hwObj = socHardwareBoard('Xilinx Zynq ZC706 evaluation kit','Connect',false);
AXIMasterObj = socAXIMaster(hwObj);

Инициализируйте содержимое памяти на устройстве, загрузив данные рисунка и записав их в Region1. Логика FPGA предназначена для считывания этих данных, их поворота и записи в Region2. Очистить содержимое Region2.

load('soc_image_rotation_inputdata.mat');
inputFigure = smallImage;
[x, y] = size(inputFigure);
inputImage = uint32(reshape(inputFigure',1,x*y));
writememory(AXIMasterObj,memRegions.AXI4MasterMemRegion1,inputImage);
writememory(AXIMasterObj,memRegions.AXI4MasterMemRegion2,uint32(zeros(1,x*y)));

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

Создайте главный объект MATLAB AXI. Объект соединяется с платой аппаратных средств и подтверждает наличие IP-адреса. Можно создать объект с именем поставщика или socHardwareBoard объект.

mem = socAXIMaster('Xilinx');

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

writememory(mem,140,[10:19])
rd_d = readmemory(mem,140,1)
rd_d =

  uint32

   10

Теперь прочтите записанные данные из десяти мест.

rd_d = readmemory(mem,140,10)
rd_d =

  1×10 uint32 row vector

   10   11   12   13   14   15   16   17   18   19

Установите BurstType свойство для 'Fixed' для отключения автоматического приращения и многократного доступа к одному и тому же адресу. Например, считывайте записанные данные десять раз с одного и того же адреса.

rd_d = readmemory(mem,140,10,'BurstType','Fixed')
rd_d =

  1×10 uint32 row vector

   10   10   10   10   10   10   10   10   10   10

Запишите приращение данных в десять раз на один и тот же адрес. Окончательное значение, сохраненное в адресе 140 является 29.

writememory(mem,140,[20:29],'BurstType','Fixed')
rd_d = readmemory(mem,140,10)
rd_d =

  1×10 uint32 row vector

   29   11   12   13   14   15   16   17   18   19

Либо укажите адрес как шестнадцатеричную строку. Приведение считанных данных к типу данных, отличному от uint32, используйте OutputDataType собственность.

writememory(mem,'1c',[0:4:64])
rd_d = readmemory(mem,'1c',16,'OutputDataType',numerictype(0,6,4))
rd_d = 

  Columns 1 through 10
         0    0.2500    0.5000    0.7500    1.0000    1.2500    1.5000    1.7500    2.0000    2.2500
  Columns 11 through 16
    2.5000    2.7500    3.0000    3.2500    3.5000    3.7500

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 6
        FractionLength: 4

После завершения доступа к плате отпустите соединение JTAG.

release(mem)

Когда к компьютеру подключено несколько кабелей JTAG, объект устанавливает приоритет кабелей Digilent над кабелями FTDI. Для использования кабеля FTDI задайте свойство типа кабеля JTAG.

h = socAXIMaster('Xilinx', 'JTAGCableType', 'FTDI')

Если к компьютеру подключены два кабеля одного типа, укажите JTAGCableName для платы, на которой выполняется главный IP-адрес JTAG. Чтобы просмотреть идентификаторы кабеля JTAG, попробуйте создать socAXIMaster объект, который в этом случае ошибается и возвращает список текущих имен кабелей JTAG.

h = socAXIMaster('Xilinx')
Error using fpgadebug_mex
Found more than one JTAG cable:
0 (JtagSmt1): #tpt_0001#ptc_0002#210203991642
1 (Arty): #tpt_0001#ptc_0002#210319789795
Please disconnect the extra cable, or specify the cable name as an input argument.
See documentation of FPGA Data Capture or MATLAB as AXI master to learn how to set
the cable name.

Для связи с этой платой Arty укажите соответствующее имя кабеля JTAG.

h = socAXIMaster('Xilinx','JTAGCableName','#tpt_0001#ptc_0002#210319789795')

Представлен в R2019a