IOIF2.TXT Driver File Contents (PCI_ALLc.zip)


               PCI-TC BOARD PCI INTERFACE PROTOCOL



Background:
This  document explains how application software  must  interface 
with our PCI-TC family of boards once PCI configuration has  been 
completed  (and I/O operations enabled).  The following,  written 
from the perspective of the application software, models the PCI-
TC  board  as using a Dual Port RAM (DPRAM inside  the  FPGA)  to 
provide the primary interface to the on-board AVR microcontroller 
(coprocessor).  Only I/O accesses are described here.


Sending Commands to the Board:
Whenever  the application software writes data to  the  "Host-to-
Board  Mailbox  Port"  at  PCI offset  address  2Fh,  a  hardware 
interrupt is generated for the coprocessor, which then reads that 
command byte as part of its interrupt service routine.  Note that 
the  write to PCI offset address 2Fh could be accomplished via  a 
byte  (8-bit)  write to 2Fh, a word (16-bit) write to 2Eh,  or  a 
doubleword (32-bit) write to 2Ch.  The application software  must 
take great care to avoid inadvertently writing data to 2Fh  while 
updating registers 2Ch-2Eh (unless that is the desired effect).


Receiving Commands from the Board:
Whenever the coprocessor writes data to the DPRAM register at PCI 
offset address 0Fh, a special "INTA" flag is set inside the  FPGA 
which can be read via the byte at PCI offset address FEh (bit 0).  
If  enabled,  this will also simultaneously drive the  PCI  INTA# 
line  low  (see separate discussion).  Whenever  the  application 
software  reads this "Board-to-Host Mailbox Port" at  PCI  offset 
address  0Fh, the "INTA" flag is automatically cleared,  and  the 
PCI INTA# line is automatically released (Hi-Z).


How to Enable PCI INTA# Operations:
If PCI hardware interrupts are to be used with this board,  write 
32-bit  doubleword 00000010h (bit 4 high, all other bits low)  to 
PCI offset address FCh.  Word and byte writes will not work!  The 
INTA#  line state will be unaffected by this  write.   Subsequent 
coprocessor writes to 0Fh will cause INTA# to be pulled low.  The 
interrupt enable status is determined by reading FEh bit 4.


How to Disable PCI INTA# Operations:
Write  32-bit  doubleword 00000000h to PCI  offset  address  FCh.  
Word  and  byte writes will not work properly!   The  INTA#  line 
state  will be unaffected by this write.  Subsequent  coprocessor 
writes to 0Fh will have no effect on INTA#.




               PCI-TC BOARD PCI INTERFACE PROTOCOL
                           (continued)



Interrupt vs. Polled Operations:
By default, after any hardware reset, the board's "INTA#"  output 
driver is disabled (Hi-Z).  Polled operations are simpler and are 
preferred  for  PCI-TC applications unless  the  polling  latency 
becomes unacceptable, perhaps because the system software  spends 
a  lot  of time doing other things, in which  case  PCI  hardware 
interrupts  may  become necessary.  If  hardware  interrupts  are 
being  used,  all  "data  ready"  and  "command  response"  codes 
appearing at DPRAM register 0Fh will cause a hardware  interrupt, 
and MUST be handled by the ISR.


Polled Mode, Receiving Codes:
1) Read  FEh, wait for bit 0 (INTA flag) to go  high,  indicating 
   that  the coprocessor has written data to DPRAM register  0Fh.  
   Save this byte for later.
2) Read  code byte from DPRAM register 0Fh.   This  automatically 
   clears the INTA flag.
3) Read/process data registers as needed.
4) If  FEh  bit  2  is already low (from  #1  above),  skip  this 
   section.   Otherwise,  read  FEh, wait for bit 2  to  go  low, 
   indicating that the coprocessor is ready to receive a command. 
   If  bit 2 does not go low within a reasonable amount  of  time 
   (20ms?),  assume  that the PCI-TC board has  failed  and  take 
   appropriate action.
5) Write 00h to 2Fh.  This enables the next coprocessor code.
Note that the coprocessor cannot sense the INTA flag state, so it 
will  wait for the appropriate interrupt acknowledgement  command 
before  writing  any  more  data to  DPRAM  register  0Fh.   This 
theoretically prevents the coprocessor from overworking the  host 
processor.


Polled Mode, Sending Commands:
1) Read  FEh,  wait  for bit 2 to go  low,  indicating  that  the 
   coprocessor is ready to receive the command. If bit 2 does not 
   go low within a reasonable amount of time (20ms?), assume that 
   the PCI-TC board has failed and take appropriate action.
2) Write  command  byte  to  2Fh.   This  automatically  sends  a 
   hardware interrupt to the coprocessor.
3) Begin  polling,  as  outlined  above,  until  the  appropriate 
   command  response code is received.  Be sure to  store/process 
   other  codes which may be received at 0Fh (data ready,  etc.).  
   If  the appropriate command response is not received within  a 
   reasonable  amount  of time (20ms?), assume  that  the  PCI-TC 
   board has failed and take appropriate action.




               PCI-TC BOARD PCI INTERFACE PROTOCOL
                           (continued)



Interrupt Operations Overview:
The INTA# hardware interrupt output from the PCI-TC board may  be 
connected  directly to the interrupt output line(s) of other  PCI 
resources,  and  may  also be mapped  (depending  on  motherboard 
wiring)  to  just about any host PC  interrupt  controller  input 
line.   Whenever  a PCI-TC board's ISR is called, it  must  first 
read  PCI offset address FEh, bit 1 (INTA_DRVR flag),  to  ensure 
that this board is indeed driving the interrupt line active.


Interrupt Mode, Receiving Codes (via ISR only!):
1) Read FEh, make sure bit 1 (INTA_DRVR flag) is high, indicating 
   that this board is indeed driving the INTA# line. Save this byte.
2) Read  code byte from DPRAM register 0Fh.   This  automatically 
   clears the INTA_DRVR flag and releases the INTA# line.
3) Read/process data registers as needed.
4) If  FEh  bit  2  is already low (from  #1  above),  skip  this 
   section.   Otherwise,  read  FEh, wait for bit 2  to  go  low, 
   indicating that the coprocessor is ready to receive a command. 
   If  bit 2 does not go low within a reasonable amount  of  time 
   (20ms?),  assume  that the PCI-TC board has  failed  and  take 
   appropriate action.
5) Write 00h to 2Fh.  This enables the next coprocessor code.
6) If  the  software "BUSY" flag is cleared, skip  this  section.  
   Otherwise, read FEh, wait for bit 2 to go low, indicating that 
   the  coprocessor is ready to receive a command. If bit 2  does 
   not go low within a reasonable amount of time (20ms?),  assume 
   that the PCI-TC board has failed and take appropriate  action.  
   This step guarantees that the main program will not  overwrite 
   the 00h command byte just sent.
7) Return from ISR.


Interrupt Mode, Sending Commands (from main application):
1) Set a software "BUSY" flag.
2) Read  FEh,  wait  for bit 2 to go  low,  indicating  that  the 
   coprocessor is ready to receive the command. If bit 2 does not 
   go low within a reasonable amount of time (20ms?), assume that 
   the PCI-TC board has failed and take appropriate action.
3) Write  command  byte  to  2Fh.   This  automatically  sends  a 
   hardware interrupt to the coprocessor.
4) Wait for ISR to receive the appropriate command response code.  
   Be  sure  to  store/process  other codes  which  may  also  be 
   received  by the ISR (data ready, etc.).  If  the  appropriate 
   command response is not received within a reasonable amount of 
   time (20ms?), assume that the PCI-TC board has failed and take 
   appropriate action.
5) Clear the software "BUSY" flag.


               PCI-TC BOARD PCI INTERFACE PROTOCOL
                           (continued)


List of Valid Commands:
Following  are command codes which you can send to the  board  by 
writing them to the "Host-to-Board Mailbox Port" at 2Fh:

00h  =>  Enable next code in mailbox port at 0Fh.

02h  =>  Board software reset.  Does not reconfigure the FPGA
         (which contains PCI configuration information).
         Allow about 500ms for completion.

03h  =>  Change board operations to SMPTE mode and Idle Mode.
04h  =>  Change board operations to EBU mode and Idle Mode.

20h  =>  Change board operations to Idle Mode.
21h  =>  Change board operations to LTC Reader Mode.
22h  =>  Change board operations to VITC Reader Mode.
23h  =>  Change board operations to Auto LTC/VITC Reader Mode.

Note that the PCI-LTC/RDR board boots up in LTC Reader Mode,  and 
that  it  will read both SMPTE and EBU LTC  automatically.   Thus 
normally no mode control commands need to be sent to this board.

Note  also  that if you send mode control command 23h to  a  PCI-
LTC/RDR board, for example, the board will reply with a 21h code, 
indicating  that it is in LTC Reader Mode, which is  the  closest 
mode available to what was requested.

Sending any other commands to the board must be done at your  own 
risk, as they may damage the board and require a repair return.




List of Command Responses and Interrupt Codes:
Following  are the code bytes which you can expect to  find  when 
reading the "Board-to-Host Mailbox Port" at 0Fh:

xxh  =>  Echo of the command code you sent to the board at 2Fh
         if everything is OK (a command acknowledgement code).

13h  =>  TC reader data is ready (must enable 2Eh bit 0 first!).

50h  =>  TC comparator match found (must enable 2Eh bit 5 first!).

Fxh  =>  ERROR of some kind, such as an unknown command.

More  codes  will  be added to this list as  newer  board  models 
become available.


Download Driver Pack

How To Update Drivers Manually

After your driver has been downloaded, follow these simple steps to install it.

  • Expand the archive file (if the download file is in zip or rar format).

  • If the expanded file has an .exe extension, double click it and follow the installation instructions.

  • Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.

  • Find the device and model you want to update in the device list.

  • Double-click on it to open the Properties dialog box.

  • From the Properties dialog box, select the Driver tab.

  • Click the Update Driver button, then follow the instructions.

Very important: You must reboot your system to ensure that any driver updates have taken effect.

For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.

server: ftp, load: 1.22