Home
        SLAAC1-V SDK USER`S MANUAL Release 0.3.1 Peter Bellows
         Contents
1.   eeprom write new_config bit    This process takes a couple of minutes  as the programming clock for the PROMs is 100  KHz  Alternatively  you can perform the upgrade through the API    ACS_CONFIG config    slboard  gt LoadConfigurationFile filename   amp config     slboard  gt ProgramXVPIProm  PUCHAR  config bitstream   config count         3 9 Interrupt Control    The SLAAC1V API provides for rich control of SLAAC1V generated interrupts  The  board itself has one PCI interrupt signal  with  currently  10 internal interrupt sources     e X0   e XI   e X2   e PCLK step done  e PCI counter done    12    DMA Error   DMA A1 done  DMA B1 done  DMA MEMO done  DMA MEM 1 done    Other sources may be implemented in the future  In general  the user has no need to  monitor the DMA interrupts as these are all handled internal to the device driver  To  synchronize with an interrupt  you need to enable the interrupt and then call the    WaitForInterrupt   method  as shown below   slboard  gt EnableInterrupt  SLAAC_INT_X0    slboard  gt WaitForInterrupt  SLAAC_INT_X0         Or  even trickier  how about one thread waiting on any one of a number of interrupts   int source   slboard  gt WaitForInterrupt  SLAAC_INT_X0O    SLAAC_INT_X1   SLAAC_INT_X2      if  source    SLAAC_INT_X0       respond to X0 interrupt    else if  source    SLAAC_INT_X1       respond to X1 interrupt    else       Furthermore  if you have a fixed response to a given interrupt  you can pass a function  pointer as a use
2.  Please refer to VT   s ACS API documentation for more details of the top level API     From this point on  we describe the basic kinds of functionality that is available to the  SLAAC1 V user through the Slaacl VBoard methods     3 2 Configuring the PEs    Configuration is done through two Slaacl VBoard methods  from here on we assume that  slboard is declared as Slaacl VBoard  sIboard   First  we can manually load the  bitstream file  and then pass the bitstream to Slaacl VBoard  gt Configure as follows   ACS_CONFIG config   config pe_mask   SLAAC_X0     or SLAAC_X1 or SLAAC_X2  slboard  gt LoadConfigurationFile filename   amp config         slboard  gt Configure  amp config     free  config bitstream      Remember to do this  as it is     malloc   ed by Load        A safer way is to use the InitBoard method  which configures all PEs  and then brings up    the board in a safe  known state   char  x0_bitfile   xl_bitfile   x2_bitfile    slboard  gt InitBoard x0_bitfile  xl_bitfile  x2_bitfile   40 0    MHz               The InitBoard method guarantees that    The PEs have been configured    Global reset  GSR  has been asserted and then deasserted   The clock has been set to the specified frequency   FIFOs have been reset   Handshake lines have been tri stated   Interrupts are disabled during initialization  and then restored after  initialization     DS ee    So the recommended way to configure the board is through InitBoard  because of its  conservative boot sequence  If yo
3.  as it will allow the easiest path for porting to other ACS systems as well  as the easiest path for supporting more complex multi board environments     2 1 Windows NT  Visual C    setup    As best we can tell  Visual C   libraries are not forward compatible  this means that you  have to be using the same version  6 0  as we are     To use the SLAACI V SDK with Visual C   6 0  you need to do three things  this is  already done for you in the SampleApp project    a  Set up your include path to point to all of the header files in the distribution   Go to Project  gt Settings  and click on the  C    tab  Select the   Preprocessor  category on that pane  and add  lt SLAAC1V ROOT gt  include  and  lt ACS_API ROOT gt  include to the  Additional include directories field    b  Add the SLAAC1 V libraries to the compilation  Go to Project  gt Settings  and  click  Link  tab  Add all files in  lt SLAAC1V ROOT gt  lib to the   Object library modules  field  Also add all pertinent libraries from   lt ACS_API ROOT gt  lib to that field  i e  slaac_api_WIN32 lib    c  Put   include  lt Slaac1 VBoard h gt   in your file  Click  Should compile very  nicely  Lately I have been getting a linker warning about the LIBCMTD  library  which is not a problem     2 2 Linux setup    a  Add  lt SLAACIV ROOT gt  include and  lt ACS_API ROOT gt  include to your  preprocessor include path    I SLAAC1 V include  I SACS_API include   for  example    b  Add all the   a  files in  lt SLAAC1V ROOT gt  lib to 
4.  memories  although you have to turn the memory bus around before you can access  the PE memories  ask before trying this   Also  you can use the register offset values in  Slaac 1 VBoard h as indices into the control space pointer to directly read   write raw  registers  This method is not recommended     15    
5.  the user definable registers  IF reserves eight specific  register addresses for XO to use as it wishes  as defined in the SLAAC1 V User VHDL  Guide     The best method for accessing the registers is through the SlaacRegister objects contained  in the Slaacl VBoard  Each register is represented by a different SlaacRegister  For  example  the user defined registers are contained in Slaacl VBoard  UserRegister 8   A  SlaacRegister has read   and write   methods for accessing the data  So for example  if  you want to check the value in user register 0  and depending on the result write a value    to user register 1  you would do   if  slboard  gt UserRegister 0  read      1   slboard  gt UserRegister 1  write 17            else       slboard  gt UserRegister 1  write 23      Furthermore  a SlaacRegister can provide access safe   type safe access to individual  bitfields in the register  A SlaacRegister can contain a collection of Bitfield objects  A  Bitfield describes a sub range of bits in a register with a static offset and mask value   when you access data via the Bitfields  you are guaranteed not to disturb the other bits in  the register  These operations are all inlined  and so should impose little to no overhead    versus raw pointer accesses  For example   slboard  gt XnCtrlReg write 0      Clears the whole register  slboard  gt XnCtrlReg x0_gsr write 0      Clears only the x0_gsr bit  slboard  gt XnCtrlReg x0_gsr assert       Same as  write 1l   except     with no shi
6.  you  can also specify a board number  0     N 1  if you have multiple SLAAC1 V boards  installed in your host  as follows        opens board  1 non exclusively  only works if you have at     least 2 SLAAC1 V boards installed in your host   SlaaclVboard  slboard   new SlaaclVboard 1l1  TRUE            The Slaacl VBoard inherits from the SlaacBoard class  which encapsulates operations  that are common between the different SLAAC architectures  SlaacBoard in turn inherits  from ACS_CLocalNode from Virginia Tech   s ACS_API library  The Slaacl VBoard has  a bunch of SlaacRegister objects  each of which represents a specific control register on  the board  most of which are inherited from SlaacBoard   You should not have to  access these registers directly  and can really mess up your board if you play with  these without knowing what you are doing  All user level functionality should be  encapsulated into the Slaacl VBoard public methods  however these registers are exposed  in the event that the existing API just isn   t quite meeting your needs and you need to  customize a control function  As an example  the member Slaacl VBoard  HDSKX0  controls the handshake bus between IF and XO  but in general you really only need to  access the Slaac1 Board  gt SetHandshake GetHandshake      methods to handle all your  handshake control  Many of these methods are defined by the top level ACS API  which  has rich communications and remote programming constructs for heterogeneous systems  
7. 0 A3   which the host writes and XO  reads  SLAAC1 V also defines four output FIFOs  named BO B3  which X0 writes and  the host reads  In current distributions  only FIFO_A0  FIFO_A1  FIFO_BO  and  FIFO_B1 are actually implemented in hardware  Also  FIFO_A1 and FIFO_B1 are  currently driven exclusively by the on board DMA bus master engine for extremely high  throughput  Each FIFO is 64 bits wide  In addition  FIFO_AO and FIFO_BO have an  extra 4 programmable    tag    bits  The FIFOs are written as follows       Have to play games like this to get      64 bit transfers on a 32 bit CPU   PULONG data      top_half  bottom_half     slboard  gt Enqueue   amp   data  8    bytes     SLAAC_FIFO_AO      Similarly  the FIFOs are read like this   PULONG data 2    slboard  gt Dequeue   amp data  8   top_half   data 0    bottom_half   data 1            bytes     SLAAC_FIFO_BO      3 4 1 Low overhead Enqueue Dequeue equivalents     FIFO_AO   FIFO_BO only    Note that the Enqueue method has some overhead  in that it always checks your data  pointer and byte count for correct alignment  and it always waits the full flag of the FIFO  to clear before writing  Dequeue does similar data checking and waits on the empty flag  before reading the FIFOs  In some cases  you know precisely the FIFO patterns that your    system will use  and will want to access the FIFOs with less overhead  This can be done    with the following methods      Assumes 8 bytes  no alignment check  slboard  gt WriteFifo p
8. Cache  amp config  Sram  3      In the future  this method will also support configuring X1 and X2 from the bitstream  cache  as this feature becomes available in hardware     3 2 2 Partial configuration  advanced users ONLY        Partial configuration can be performed using the ConfigurePartial method as shown  below  From the control API point of view  the only difference between regular  configuration and partial configuration is that we do not clear the device  by asserting  PROGRAM_N  when we partially configure  Please note that generating a correct  partial bitstream requires a lot of care     ACS_CONFIG config    config pe_mask   SLAAC_X0     or SLAAC_X1 or SLAAC_X2   slboard  gt LoadConfigurationFile filename   amp config     slboard  gt ConfigurePartial   amp config  TRUE     free  config bitstream      Remember to do this  as it is     malloc   ed by Load              3 3 Setting Up the FPGA Clock  PCLK     The SLAAC1 V board has a very flexible clocking scheme  with a programmable clock  synthesizer and several clocking modes    e Free running   e Step mode  arbitrary number of steps    e FIFO step mode  a FIFO write stimulates a set number of clock steps    e PE stop clock mode    The clock frequency is set using the Clock_Set method   ACS_CLOCK clock   clock frequency   40 0   clock countdown   0   slboard  gt Clock_Set   amp clock       If we set clock countdown to a non zero value  the Clock _Set method runs that number of  clock steps  More flexible and comp
9. SLAAC1 V SDK USER   S MANUAL    Release 0 3 1    Peter Bellows    October 1  2000    Table of Contents    1   lt  Introd  cton econ e i eck Ra Mees eat ele E elon dak ah e 3  2 UB essa str teessneine Sele tebe ecto ache net aad RE 3  2 1 Windows NT  Visual C    Setup          ccesssccsssscceessceceseeccssseceeesseeeeees 3  2 2  PINURI N aT 4  3    Using the Slaac I VBoard AP ccf soccsscdeen as shaytavceetentte ated teeta eten aes 4  3 1 The SlaaclVBoard class wcactcccureistes sitar  aa sabelacnetaeeetuteriagacees 4  3 2 COMMONS the PENS ves coatetatraieseansseatetodinesendcesedacet iedeaauieasnshuandenisesenentt 5  3 2 1 Configuration cache control           eeecceesseceeseeeeceeeeceeseeeeeeeeeeeenaees 6  3 2 2 Partial configuration  advanced users ONLY     7  3 3 Setting Up the FPGA Clock  PCR  2 cic scncessesssaiescnesesevonszennaetegenaeeaicane 7  3 3 1 Setting basic clock modes sneak ocicienindbecsuseener sete ned Genaseenes 7  3 32 PFO  step TAOS Gia rera ieee each ae dete aries dade ei 8  3 33  PRStOp Clock MOG aie sa ctettieanecasae cuca anadal eee venetehceenras me Son iancates 8  3 4 Controlling the PIR OS secs secsccccsseccsthortansetnedatatoacatannd  eaeeudeseaken  8  3 4 1 Low overhead Enqueue Dequeue equivalents                cceeceeeeeees 8  3 4 2 Accessing the FIFO Tag    ssnicavicssvevseneeveniconsnesesseedgcteossvedsshatesettea ts 9  3 3  Accessing the PE Memories oe cies a a natn  9  3 5 1 32 bit mode vs  36 bit mode         ssssnesseesseesseesssssesssessre
10. ddr  32 bit preemptive read  int byte_count    Read void  buffer  ACS_ADDRESS  addr  General preemptive read  size_t word_count  size_t word_size    word_size  4 means 32 bit   word_size  8 means 36 bit   ReadNonPreemptive  void  buffer  32 bit non preemptive read  ACS_ADDRESS  addr  int byte_count    ReadNonPreemptive  void  buffer  General non preemptive read  ACS_ADDRESS  addr  size_t word_count   word_size  4 means 32 bit   size_t word_size   word_size  8 means 36 bit           The argument and naming conventions for the Write   methods are identical  The  meaning of these different modes is detailed in the following sections     3 5 1 32 bit mode vs  36 bit mode    SLAAC1 V   s 36 bit memory word is an awkward fit for the 32 bit PCI bus  Because of  this awkward fit  memories can be accessed in either 32 bit mode or 36 bit mode  In 32   bit mode  the host can only see the least significant 32 bits of each memory word  the  trade off is obviously a big win in throughput  as it only takes one PCI cycle to transfer a  memory word  Using 36 bit mode allows the host to access the entire memory word at  the expense of wasted bandwidth  twice the number of bus cycles in order to get only  12 5  more bits   The general forms of Read void  buffer  ACS_ADDRESS  address   size_t word_count  size_t word_size  and Write void  buffer  ACS_ADDRESS  address   size_t word_count  size_t word_size  allow us to select 32 bit or 36 bit mode as desired   This is shown below     ACS_ADDRESS ad
11. dress    address pe   SLAAC_X0    address mem   0     We are reading X0MO   address offset   10    slboard  gt Read buffer     amp address  1000  4    BYTES PER WORD                           This call would be equivalent to the above      slboard  gt Read buffer   amp address  4000    BYTES            unsigned int buffer2      1  2  3  4  5  6  7  8   address pe   SLAAC_X2   address mem   1     We are writing X2M1             slboard  gt Write  buffer   amp address  4  8    BYTES PER WORD               In this example  we read 1000 words from XOMO as before  using 32 bit transfers  a  second form of this operation is also shown  which uses a byte count instead of a word   count word size  this form is deprecated and is only preserved for backwards   compatibility  The Write   call shows how we would write the 36 bit words   0x 100000002  0x300000004  0x500000006  700000008 to X2M1  using the 36 bit  transfer mode     3 5 2 Preemptive vs  non preemptive    A    preemptive    memory access stops the user clock  PCLK  on SLAAC1 V during the  access  This is the safest mode of operation and is guaranteed to be completely  transparent to the user   s circuit  Note that if the host stops the clock in the middle of a PE  write to memory  the address that was being written may appear to the host to have  bogus data  However  when IF releases the bus  the current write operation will  complete successfully  and the PEs will not notice the difference  Just realize that one  data word 
12. fting       masking overhead  ULONG state   slboard  gt XnCtrlReg x0_gsr read  j      Returns either 1 or 0       shifting is taken care of  slboard  gt XnCtrlReg x0_gsr   1     Same as  write l   uses     operator overloading  ULONG state   slboard  gt XnCtrlReg x0_gsr      Same as  read                     In some instances  you want to write a bunch of bits in parallel  without causing  individual bus cycles  This can be easily achieved with the overloaded operators     l      A         amp                 For example  say that we want to simultaneously deassert all GSR    bits in XnCtrlReg without disturbing the rest of the register   slboard  gt XnCtrlReg  amp     slboard  gt XnCtrlReg x0_gsr    slboard  gt XnCtrlReg xl_gsr    slboard  gt XnCtrlReg x2_gsr      SIF   gt     14    In this case  the overloaded    Il    operator returns an integer that is the logical OR of the  masks for the three bitfields  Then  the     amp      operator does the following   XnCtrlReg write XnCtrlReg read    amp   value    which is the operation that is naturally  expressed     Last note  for really bare metal access  you can bypass this SlaacRegister stuff and just  get a pointer to the three memory spaces that are mapped by the driver   GetControlSpacePtr   returns the pointer to the control registers  GetIfMemSpacePtr  returns the pointer to the PE memory space  and GetDMAFifoSpacePtr returns the  pointer to the DMA controlled FIFO space  From these pointers you can directly access  the
13. handshake signals to control the FPGAs  To reset the flip flops    on the PEs  we can do   slboard  gt Reset  SLAAC_ALL_ PES  TRUE               To assert the GTS signal to X1  we could do   slboard  gt GTS  SLAAC_X1  TRUE         Also  the method GSR is identical to Reset  As explained in the sections on clocking and  interrupts  the handshake bus to each PE can be configured to signal a clock stop or an  interrupt  Alternatively  these handshake signals can be configured as generic bi   directional control bits at the disposal of the user  For example  say that we want to drive     01    to the bottom 2 bits of the X2 handshake bus  and then want to read X2   s response    on the 3    bit  We can control each bit independently  as follows   slboard  gt SetHandshake  SLAAC_X2  Tristate  Drive0  Drivel      3 8 Reprogramming the Configuration Controller     It   s not a bug   it   s a feature            Every once in a while a vicious militant hacker breaks into our systems and discretely  inserts errors into our source code  ahem   SLAAC1 V is capable of reprogramming its  own boot PROMs with updated bitfiles  allowing you to download the latest fixes   features  etc  from our website and instantly upgrade your configuration controller  a k a     X VPI     this is a fourth FPGA in charge of performing all configuration and readback  operations   This is most easily done from the debugger     slaacldb     From here  you    simply invoke the command    lt  lt  SLAACIDB  gt  gt
14. lete clock control is provided by the methods  described below     3 3 1 Setting basic clock modes    We can use the following methods to set the clock mode     slboard  gt Run       starts PCLK in free run mode   slboard  gt Run 40 0      starts PCLK in free run mode at 40 MHz   slboard  gt Stop       stops PCLK   slboard  gt Step  count      Starts a step sequence and waits for     it to finish   slboard  gt Run  count      Starts a step sequence but does not       wait for it to finish       3 3 2    FIFO step       mode   We can set up    FIFO step    mode as follows   slboard  gt SetFifoStepMode  TRUE  5    slboard  gt WriteFifo data      Will write data  then issue 5 PCLKs  slboard  gt SetFifoStepMode  TRUE  20    slboard  gt WriteFifo data      Will write data  then issue 20 PCLKs  slboard  gt WriteFifo data      Will write data  then issue 20 PCLKs  slboard  gt WriteFifo data      Will write data  then issue 20 PCLKs    3 3 3 PE Stop clock mode    We can set up    PE stop clock    mode as follows  A PE halt is signaled by a high to low  transition on the corresponding X _HALT signal  To enable this functionality  we do the    following   slboard  gt EnablePEHalt  SLAAC_X1           TRUE             After doing this  a high to low transition on X1_HALT will stop the clock  By  definition  the PEs will see three more rising edges of PCLK after the stop signal is sent   before PCLK actually stops     3 4 Controlling the FIFOs    SLAAC1 V defines four input FIFOs  named A
15. may appear bogus when you read it over the external memory bus  Therefore   if your system absolutely depends on reading correct data at every location  it is safest to  have some sort of protocol for when the host can read the memories  i e  a time when you  know that the PEs are not writing to memory      10    However for very high throughput applications  it may be necessary to read write  memories without stopping PCLK  so that the user circuit can continue to operate on  different memories  In this case  we can use ReadNonPreemptive   and  WriteNonPreemptive   forms of the API  These calls change the bus switches just like  Read   Write    but since PCLK is still running the transfer is no longer transparent to the  user clock  The memory port that is being accessed by the host is no longer available to  XO until the transfer is over  Please refer to the User VHDL Manual for more details on  the memory hierarchy     3 5 3 DMA vs  PCI slave mode and pipelined vs  flow through mode    The memory interface can be driven either by PCI slave accesses or by the on board  master mode DMA controller  Obviously using the DMA controller wherever possible is  desirable to gain considerable performance  of course both modes of operation are  functionally equivalent  Also  the PE memories have two different speed modes      pipelined    and    flow through     Pipelined mode tolerates a higher clock rate at the  expense of an extra cycle of read latency     Both of these memory mode
16. r mode ISR that will be invoked every time the interrupt is thrown     assuming your ISR thread goes back to sleep before the next interrupt    void MyISR int interrupt_status           void main           slboard  gt SetISR  amp MyISR  SLAAC_INT_PCLK_COUNTDOWN       Pretty slick  huh  Probably more than anyone will ever use  but it was fun to make     Windows NT specific    The SLAAC1 V Windows NT driver sets up individual Windows events which are  signaled when a given SLAAC1 V interrupt occurs  You can use these events to set up  even more complex synchronization if you want  To wait for the interrupt event  you call  the Win API function WaitForSingleObject   or WaitForMultipleObjects    as needed   You can obtain the handles to the interrupt events through the Slaacl VBoard method    GetInterruptEvent    as shown below   slboard  gt EnableInterrupt  SLAAC_INT_X0    HANDLE xO0O_intr_event   slboard  gt GetInterruptEvent  SLAAC_INT_X0    WaitForSingleObject  x0_intr_event  INFINITE                  Please refer to the Windows API documentation for more information on how to use  Windows thread synchronization functions     13    3 10 Slaacl VBoard Register Access    DISCLAIMER  THIS IS FOR ADVANCED USERS ONLY  DIRECTLY PLAYING  WITH THE LOW LEVEL REGISTERS CAN ROYALLY GOOF UP YOUR DESIGN   AND IN THE EXTREME CASE EVEN FRY YOUR BOARD  That being said  it   s  easy to directly access the SLAACI V registers when needed  The most common case  when this is used is for accessing
17. s  DMA vs  PCI slave  pipelined vs  flow through  are  controlled by the method SetMemoryMode BOOLEAN use_dma  BOOLEAN pipelined    The transfer mode is stored in the Slaacl VBoard object and affects all subsequent  memory accesses when set  The PE memory mode is controlled by a register in XO that  is broadcast to all memories  so remember to reset the PE memory mode  if necessary   any time that XO is reconfigured     3 6 Performing PE Readback    SLAAC1 V supports readback of all PEs  Currently there is no built in mechanism for  associating a bitstream with symbols in a symbol file  although third party solutions are  being developed such as the JHDL debugging environment from BYU  Correct readback  depends on setting the right bitgen options when you run the Xilinx tools  and on  correctly connecting the VIRTEX_CAPTURE primitive in the user VHDL design   All  of this is done for you in the provided SLAAC1 V VHDL models and makefiles  refer to  the SLAAC1 V User VHDL Guide for more details   Raw readback data can be    retrieved as follows   int byte_count   PUCHAR bits   slboard  gt GetRawReadback  SLAAC_X0  ReadbackCLB    amp byte_count    free bits      Remember to do this  since the array is malloc   ed     by GetRawReadback     Alternatively  the BlockRams can be read by substituting ReadbackBRAM for  ReadbackCLB in the above     11    3 7 FPGA Control    The Slaacl Board API permits the user to access the global asynchronous reset  GSR    global tristate  GTS   and 
18. ses are    blocking     If you want  you can use  EnqueueNonBlocking      or DequeueNonBlocking      for non blocking accesses    In some cases  some of the board functionality that we wanted to bring out is not  currently covered under the VTU API  Therefore Slaacl VBoard has a lot of methods  that are currently unique to SLAACI V  While this gives you maximum control over  board operations  using these  non core  methods means that your code will not be  directly portable to other platforms targeted by the general SLAAC API in the future     3 Using the SlaaclVBoard API    3 1 The Slaacl VBoard class    All hardware interaction is encapsulated in the C   class Slaac1VBoard  This class  exports methods to perform all board level functions  such as configuring PEs   reading writing memories  reading writing FIFOs  setting clocks  etc  To use the    SLAAC1 V libraries  you simply need to point to the include files and libraries indicated  in the setup section  The SDK distribution comes with a sample Visual C   6 0  workspace with these project settings already made     To begin using the board  you instantiate a Slaacl VBoard object   SlaaclVBoard  slboard   new SlaaclVBoard       opens the board  or           exclusively opens the board  SlaaclVBoard  slboard   new SlaaclVBoard  TRUE       ww    r    The difference between the two invocations is that the latter invocation will guarantee  that no other processes can access the board until this process releases it  Optionally 
19. ssresseessesse 10  3 5 2 Preemptive vs  non preemptive           essseseesserssereesseressrresseeesssress 10  3 5 3 DMA vs  PCI slave mode and pipelined vs  flow through mode 11  3 6 Performing PE Readback iai5 saw sicssocncontveininiad canteen susan snievdoancessusana iveadens 11  Sel FPGA CONTON ieee eatarra aE AEEA EAE aE EEEE TEET as 12  3 8 Reprogramming the Configuration Controller     It   s not a bug  it   s a  POON E TEE EEA ET AA E E E AA E 12  3 Mnterrupt Contro r ne E E EA E EE 12  3 10 Slaacl VBoard Register ACCESS          c ccceesseceessececeeeeceesteceeseeeeeeeneeeees 14    1 Introduction    Purpose    This manual describes how to use the C   API for controlling the SLAAC1 V board  and  then describes the basic functionality of the key circuit modules in IF  It does not  describe the following     e SLAACI V general architecture and VHDL simulation environment  this is  documented in the    SLAAC1 V User VHDL Guide      e SLAACI1 V register level definitions  this is described in    SLAAC1 V Register  Definitions      e The full reference for the SlaaclVBoard API  This is contained in the     Slaacl VBoard API Reference       2 Setup      IMPORTANT    The Slaacl VBoard classes can no longer be compiled  independently of the Virginia Tech ACS_API  You must obtain a copy of that  distribution  This release of the Slaacl VBoard classes was compiled against version  1 3 0 of ACS_API  It is highly recommended that you program directly with that API  where possible 
20. the linker step  i e  the  final c compiler call which produces the executable   Also add all pertinent     a    files from  lt ACS_API ROOT gt  lib to the linker step  i e   slaac_api_LINUX a   Also  the Linux distribution depends on the    curses     package for some of its message reporting  make sure to add     Icurses    to  your linker step as well    c  Put   define LINUX    followed by  include  lt Slaac1 VBoard h gt   in your file   Click  Should compile very nicely  Of course you can also add   DLINUX   to your compiler invocations instead of defining it in the source  if that   s not  already done by default     General things to note about the Slaacl VBoard class   The SLAACI V DK distributions for Linux and Windows NT currently come  from an identical code base  Therefore you should be able to cross compile your  source code to either OS  as long as you link in libraries from the same release    Slaacl VBoard  gt InitBoard      is the safest way to configure the board for new  users  If you want to do a custom initialization step  it is strongly recommended that  you study the comments for that method to understand what kinds of things you need  to do for a safe initialization     Configuring   deconfiguring XO affects the state of the FIFOs  see the comments   Read   Write   Enqueue   Dequeue all use byte counts  for compatibility with  VTU s API   but always expect to operate on 32 bit words  memory access  or 64 bit  words  FIFO access       Default FIFO acces
21. tr_to_data j      Assumes 8 bytes  no alignment check      no checking full  NB   non blocking   slboard  gt WriteFifoNB  ptr_to_data j      Same as WriteFifo   except that we only     transfer 32 bits  1 less bus cycle   slboard  gt WriteFifo32  data       Same as WriteFifoNB   except that we     only transfer 32 bits  1 less bus cycle   slboard  gt WriteFifo32NB  data            Each of these assumes the    default    input FIFO  SLAAC_FIFO_AO  Similarly  versions  of Dequeue exist  ReadFifo       which reduce the overhead of reading the default output  FIFO  SLAAC_FIFO_BO  Note that these methods are irrelevant to FIFO_A1 FIFOB1  because they are DMA driven     3 4 2 Accessing the FIFO tags     FIFO_AO   FIFO_B0 only   FIFO_AO and FIFO_BO each have a 4 bit tag that can be written   read with the methods    WriteFifoTag   ReadFifoTag  such as   slboard  gt WriteFifoTag SLAAC_FIFO_AO  5      In this case  the tag    5    will be passed with every new FIFO word to XO  until the tag is  changed  the tags are actually queued up with the data      3 5 Accessing the PE Memories    SLAAC1 V gives the host rich control of PE memories  All PE memories are visible to  the host  2 for XO  4 for each of X1 and X2  through the Read   and Write   API calls   The calls have several overloaded variations  each specifying a slightly different  behavior  These variations are summarized below for Read                                        Method Description  Read void  buffer  ACS_ADDRESS  a
22. u need a custom configuration routine  you can still use  InitBoard double clock_freq  or InitBoard   to run the initialization sequence without  configuring the PEs     3 2 1 Configuration cache control    The SLAAC1 V architecture includes rich configuration cache support  The on board  configuration control has enough SRAM to store 4 entire XCV 1000 bitstreams  plus  enough flash RAM to store 4 more bitstreams  All XO bitstreams must be loaded into one  of these cache locations before they can be downloaded to X0  By default  all XO  configurations are stored in SRAM cache location  0  However  the user can control this  cache behavior using the ConfigureCache method  For example     ACS_CONFIG config    config pe_mask   SLAAC_X0   slboard  gt LoadConfigurationFile filename   amp config    slboard  gt ConfigureCache  amp config  Flash  1         would cause the configuration to be cached in location  1 in flash RAM  then  downloaded  Think really hard before you write something to flash location  0  as this  is the default power up PCI interface  overwriting this with a bad bitstream may render  your board inoperable  until you can patch in a correct bitstream via download cable    As another example  the following shows how to configure XO with the bitstream that is  already in SRAM cache location  3     ACS_CONFIG config    config pe_mask   SLAAC_X0O    config bitstream   NULL     Setting this to NULL means use the     previously cached bitstream    slboard  gt Configure
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
Fiche technique Bona Resident Plus  Tecumseh AJA4482YXCXA Performance Data Sheet    Manual de usuario SIPTAR  ESTEL-3D v5p6 User Manual  Instrucciones de uso - Harman/Becker Automotive Systems GmbH    Copyright © All rights reserved. 
   Failed to retrieve file