%SOCIPCORE Create an object to represent an IP core running on an FPGA board
%
% myCoreObj = socIPCore(socAXIMasterObj,IPCoreInfo,IPCoreName)creates an
% object that connects to an IP core running on your device. The object
% uses an socAXIMaster object to access memory locations in the IP core.
% The IPCoreInfo structure is generated when you run the SoC Builder tool,
% and includes the board and IP core configuration parameters from your
% model.
%
% myCoreObj = socIPCore(socAXIMasterObj,IPCoreInfo,IPCoreName,Name,Value)
% sets properties using name-value pairs. For example, myIPObj = ...
% socIPCore('Xilinx',IPCoreInfo,"VDMA",'PerfMonMode','Profile') creates an
% object that connects to an IP core on the board, and sets the performance
% monitor mode to profile mode.
%
% The socIPCore supports creation of objects representing the following IPs:
% * Traffic Generator
% * Performance Monitor
% * Direct Memory Access (DMA)
% * Video DMA (VDMA)
% * Video Timing Controller (VTC)
% * VDMA Trigger
% * Frame Buffer
% * High Definition Multimedia Interface (HDMI)    
% 
% Input Arguments:
%   socAXIMasterObj - Name of socAXIMaster object used for memory mapped access
%                     socAXIMaster object
%        IPCoreInfo - A structure containing IP core information
%                     structure
%        IPCoreName - IP core object type
%                     "TrafficGenerator" | "PerformanceMonitor" | "VDMA" | "DMA" | "VDMATrigger" | "VTC" | "FrameBuffer" | "HDMI"
%
% Output Arguments:
%   myCoreObj - Object representing IP core
%               soc.TrafficGen | soc.PerfMon | soc.VDMA | soc.DMA | soc.VTC | soc.VDMATrigger | soc.VDMAFrameBuffer | soc.VDMAFrameBuffer
%
%
%   Object Functions:
%     initialize - Initialize the IP core corresponding to socIPCore object
%          start - Start an IP core executing on hardware board
% 
% Examples:
%
%   % Collect memory profiling statistics
%   load('soc_memory_traffic_generator_zc706_aximaster.mat');
%   hwObj = socHardwareBoard('Xilinx Zynq ZC706 evaluation kit','Connect',false);
%   AXIMasterObj = socAXIMaster(hwObj);
%   apmCoreObj = socIPCore(AXIMasterObj,perf_mon,'PerformanceMonitor','Mode','Profile');
%   profilerObj = socMemoryProfiler(hwObj,apmCoreObj);
%   for n = 1:100
%       collectMemoryStatistics(profilerObj);
%   end

% Copyright 2019 The MathWorks, Inc.