www.gusucode.com > visionhdl 源码程序 matlab案例代码 > visionhdl/IntegrateVHTBlocksIntoCameraLinkSystemExample.m

    %% Integrate Vision HDL Blocks Into Camera Link System
% Vision HDL Toolbox(TM) blocks use a custom streaming video format. If you
% integrate Vision HDL Toolbox algorithms into existing design and 
% verification code that operates in a different streaming video format, you
% must convert the control signals at the boundaries. 
%
% This example shows how to design a Vision HDL Toolbox algorithm for 
% integration into an existing system that uses the Camera Link(R) signal 
% protocol. The example uses custom System objects to convert the control 
% signals between the Camera Link format and the Vision HDL Toolbox 
% |pixelcontrol| format. The model imports the System objects to Simulink(R) 
% by using the MATLAB System block. 
% 
%% Structure of the Model
% This model imports pixel data and control signals in the Camera Link format 
% from the MATLAB(R) workspace. The |CameraLink_InvertImage| subsystem is 
% designed for integration into existing systems that use Camera Link 
% protocol. The |CameraLink_InvertImage| subsystem converts the control 
% signals from the Camera Link format to the |pixelcontrol| format, modifies
% the pixel data using the Lookup Table block, and then converts the control
% signals back to the Camera Link format. The model exports the resulting 
% data and control signals to workspace variables. 
addpath(fullfile(matlabroot,'examples','visionhdl'));
open_system('CameraLinkAdapterEx')
%% Structure of the Subsystem
% The |CameraLink2VHT| and |VHT2CameraLink| blocks are MATLAB
% System blocks that point to custom System objects. The objects convert 
% between Camera Link signals and the |pixelcontrol| format used by Vision 
% HDL Toolbox blocks and objects.
%
% You can put any combination of Vision HDL Toolbox blocks into the middle
% of the subsystem. This example uses an inversion Lookup Table. 
%
% You can generate HDL from this subsystem. 
%
% <<../CameraLinkAdapterEx_SubsystemSnap.png>>
%
%% Import Data in Camera Link Format
% Camera Link consists of three control signals: F indicates the valid frame, 
% L indicates each valid line, and D indicates each valid pixel. For this 
% example, the input data and control signals are defined in the |InitFcn| 
% callback. The vectors describe this 2-by-3, 8-bit grayscale frame. In the
% figure, the active image area is in the dashed rectangle, and the inactive
% pixels surround it. The pixels are labeled with their grayscale values.
%
% <<../NewCustomCtrlSignals_pixelstream_2x3.png>>
%
%    FIn = logical([0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0]);
%    LIn = logical([0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0]);
%    DIn = logical([0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0]);
%    pixIn = uint8([0,0,0,0,0,0,0,30,60,90,0,0,0,120,150,180,0,0,0,0,0,0,0,0]);
% 
%% Convert Camera Link Control Signals to pixelcontrol Format
% Write a custom System object to convert Camera Link signals to the Vision
% HDL Toolbox format. This example uses the object designed in the 
% <docid:visionhdl_ug.bu1x7y0> example. 
% 
% The object converts the control signals, and then creates a structure that 
% contains the new control signals. When the object is included in a MATLAB
% System block, the block translates this structure into the bus format 
% expected by Vision HDL Toolbox blocks. For the complete code for the System
% object, see <matlab:edit(fullfile(matlabroot,'examples','visionhdl','CAMERALINKtoVHT_Adapter.m')) CAMERALINKtoVHT_Adapter.m>.
% 
% Create a MATLAB System block and point it to the System object.
%
% <<../NewCustomCtrlSignalsSL_MLSystemBlock_setup.png>>
%
%% Design Vision HDL Toolbox Algorithm
% Select Vision HDL Toolbox blocks to process the video stream. These
% blocks accept and return a scalar pixel value and a |pixelcontrol| bus 
% that contains the associated control signals. This standard interface
% makes it easy to connect blocks from the Vision HDL Toolbox libraries
% together. 
%
% This example uses the Lookup Table block to invert each pixel in the test
% image. Set the table data to the reverse of the |uint8| grayscale color 
% space. 
%
% <<../NewCustomCtrlSignalsSL_LUTBlock_setup.png>>
%
%% Convert pixelcontrol to Camera Link
% Write a custom System object to convert Vision HDL Toolbox signals back to
% the Camera Link format.  This example uses the object designed in the 
% <docid:visionhdl_ug.bu1x7y0> example.
% 
% The object accepts a structure of control signals. When you include the 
% object in a MATLAB System block, the block translates the input |pixelcontrol| 
% bus into this structure. Then it computes the equivalent Camera Link signals. 
% For the complete code for the System object, see <matlab:edit(fullfile(matlabroot,'examples','visionhdl','VHTtoCAMERALINK_Adapter.m')) VHTtoCAMERALINKAdapter.m>.
% 
% Create a second MATLAB System block and point it to the System object.
%
%% View Results
% Run the simulation. The resulting vectors represent this inverted 2-by-3,
% 8-bit grayscale frame. In the figure, the active image area is in the dashed
% rectangle, and the inactive pixels surround it. The pixels are labeled 
% with their grayscale values. 
%
% <<../NewCustomCtrlSignals_InverseFrame_2x3.png>>
%
% If you have a DSP System Toolbox(TM) license, you can view the signals 
% over time using the Logic Analyzer. Select all the signals in the 
% |CameraLink_InvertImage| subsystem for streaming, and open the Logic Analyzer. 
% This waveform shows the input and output Camera Link control signals and 
% pixel values at the top, and the input and output of the Lookup Table block
% in |pixelcontrol| format at the bottom. The |pixelcontrol| busses are
% expanded to observe the boolean control signals. 
%
% <<../NewCustomCtrlSignalsSL_Waveform.png>>
%
% For more info on observing waveforms in Simulink, see
% <docid:dsp_ug.bvcitij>.
%% Generate HDL Code for Subsystem
% To generate HDL code you must have an HDL Coder(TM) license.
% 
% To generate the HDL code, use the following command.
%
%    makehdl('CameraLinkAdapterEx/CameraLink_InvertImage')
% 
% You can now simulate and synthesize these HDL files along with your 
% existing Camera Link system.