clsim_lib.h

Go to the documentation of this file.
00001 
00006 #ifndef _CLSIM_H_
00007 #define _CLSIM_H_
00008 
00009 #ifdef __cplusplus
00010 
00011 extern "C" {
00012 
00013 #endif
00014 
00015 #ifdef DOXYGEN_SHOW_UNDOC
00016 
00023 #endif
00024 
00025 #define PDV_CLS_DEFAULT_HGAP    300
00026 #define PDV_CLS_DEFAULT_VGAP    400
00027 #define PDV_CLS_DEFAULT_FREQ    20.0
00028 
00032 EDTAPI void pdv_cls_dump_state(PdvDev *pdv_p);
00033 
00034 /********************************
00035  * Prints board geometry only to stdout.
00036  ********************************/
00037 
00038 EDTAPI void pdv_cls_dump_geometry(PdvDev *pdv_p);
00039 
00040 /****************************************
00041  * Initializes simulator values based on PdvDependent 
00042  * structure in \c pdv_p - normally filled in by clsiminit 
00043  * Assumes bitfile already loaded.
00044  ****************************************/
00045 
00046 EDTAPI int pdv_cls_set_dep(PdvDev *pdv_p);
00047 
00048 /****************************************
00049  * Checks for inconsistencies
00050  ****************************************/
00051 
00052 EDTAPI int pdv_cls_dep_sanity_check(PdvDev *pdv_p);
00053 
00054 /********************************************
00055  * Sets the width and height of the simulator frame 
00056 
00057  * taps is used to determine how many clocks per line
00058  * depth is currently always 8, but that may change in the future
00059 
00060  * There are two ways to set the total width and height including blanking:
00061  * If hblank is non-zero, the total line width is clocks + hblank 
00062  * otherwise it is the value passed in in totalwidth.
00063  * Likewise, if vblank is non-zero, the number of lines between frame valids is
00064  * height + vblank, otherwise it's the value passed in in totalheight
00065  ***********************************************/
00066 
00067 EDTAPI void pdv_cls_set_size(PdvDev *pdv_p,
00068                 int taps,
00069                 int depth ,
00070                 int width,
00071                 int height,
00072                 int hblank,
00073                 int totalwidth,
00074                 int vblank,
00075                 int totalheight);
00076 
00077 /* Set the values for fvalid, line valid, and read valid timing */
00078 /* Defaults (if start and end are 0) are start = 0 and end = width/taps */
00079 
00080 EDTAPI void pdv_cls_set_line_timing(PdvDev *pdv_p,
00081                 int width,
00082                 int taps,
00083                 int Hfvstart,
00084                 int Hfvend,
00085                 int Hlvstart,
00086                 int Hlvend,
00087                 int Hrvstart,
00088                 int Hrvend);
00089 
00090 /************************************************
00091  *
00092  * Set individual control bits for simulator 
00093  *
00094  ************************************************/
00095 
00096 EDTAPI void pdv_cls_set_linescan(PdvDev *pdv_p, int state);
00097 
00098 EDTAPI void pdv_cls_set_lvcont(PdvDev *pdv_p, int state);
00099 
00100 EDTAPI void pdv_cls_set_rven(PdvDev *pdv_p, int state);
00101 
00102 EDTAPI void pdv_cls_set_uartloop(PdvDev *pdv_p, int state);
00103 
00104 EDTAPI void pdv_cls_set_smallok(PdvDev *pdv_p, int state);
00105 
00106 EDTAPI void pdv_cls_set_intlven(PdvDev *pdv_p, int state);
00107 
00108 EDTAPI void pdv_cls_set_firstfc(PdvDev *pdv_p, int state);
00109 
00110 EDTAPI void pdv_cls_set_datacnt(PdvDev *pdv_p, int state);
00111 
00112 EDTAPI void pdv_cls_set_led(PdvDev *pdv_p, int state);
00113 
00114 EDTAPI void pdv_cls_set_trigsrc(PdvDev *pdv_p, int state);
00115 
00116 EDTAPI void pdv_cls_set_trigpol(PdvDev *pdv_p, int state);
00117 
00118 EDTAPI void pdv_cls_set_trigframe(PdvDev *pdv_p, int state);
00119 
00120 EDTAPI void pdv_cls_set_trigline(PdvDev *pdv_p, int state);
00121 
00122 EDTAPI void pdv_cls_sim_start(PdvDev *pdv_p);
00123 
00124 EDTAPI void pdv_cls_sim_stop(PdvDev *pdv_p);
00125 
00126 EDTAPI void pdv_cls_init_serial(PdvDev *pdv_p);
00127 
00128 EDTAPI void pdv_cls_set_height(PdvDev *pdv_p, int rasterlines, int vblank);
00129 EDTAPI void pdv_cls_set_width(PdvDev *pdv_p, int width, int hblank);
00130 
00132 EDTAPI void pdv_cls_set_clock(EdtDev *edt_p, double freq) ;
00133 
00139 EDTAPI void pdv_cls_set_fill(PdvDev *pdv_p, u_char left, u_char right);
00140 
00148 EDTAPI void pdv_cls_set_readvalid(PdvDev *pdv_p, 
00149                 u_short HrvStart, u_short HrvEnd);
00150 
00160 EDTAPI void pdv_cls_set_rven(PdvDev *pdv_p, int enable);
00161 
00169 EDTAPI void pdv_cls_set_intlven(PdvDev *pdv_p, int enable);
00170 
00175 EDTAPI void pdv_cls_set_led(PdvDev *pdv_p, int power_state);
00176 
00177 
00197 EDTAPI void pdv_cls_setup_interleave(PdvDev *pdv_p,
00198                 short tap0start, short tap0delta, 
00199                 short tap1start, short tap1delta,
00200                 short tap2start, short tap2delta,
00201                 short tap3start, short tap3delta);
00202 
00203 /*******************************
00204  * These compute the gap values based on the difference between
00205  * active clocks (hblank) or lines(vblank) and the total clocks or lines
00206  *******************************/
00207 
00208 EDTAPI int pdv_cls_get_vgap(PdvDev *pdv_p);
00209 EDTAPI int pdv_cls_get_hgap(PdvDev *pdv_p);
00210 
00211 /* These are used by clsiminit if no value for blanking is specified */
00212 
00213 #define PDV_CLS_DEFAULT_HGAP    300
00214 #define PDV_CLS_DEFAULT_VGAP    400
00215 
00216 /* Returns the computed frame time in milliseconds */
00217 
00218 EDTAPI double pdv_cls_frame_time(PdvDev *pdv_p);
00219 
00220 #ifdef DOXYGEN_SHOW_UNDOC
00221  /* end group cls */
00222 #endif
00223 
00224 #ifdef __cplusplus
00225 
00226 }
00227 
00228 #endif
00229 
00230 #endif /* _CLSIM_H_ */
00231 

Generated on Mon May 12 16:38:51 2008 by  doxygen 1.5.1