`Michelson
`
`[54] REPROGRAMMABLE PCMCIA CARD AND
`METHOD AND APPARATUS EMPLOYING
`SAL/IE
`
`[75] Inventor: 1114:1151? S. Michelson. North Andover,
`
`[73] Assignee: Data Translation, Inc.. Mass.
`
`[21] Appl. No.: 397,390
`5
`F? d_
`M 2
`e '
`at‘ ’ 199
`[22]
`[51] Int. Cl.6 ......................... .. G06F 13/10; G06F 15/177
`[52] us. 01. ................ .. 395/828; 395/282; 395/283;
`395/284; 395/822
`[58] Field of Search ................................... .. 395/889. 392,
`395/282_ 283‘ 284_ 828‘ 830
`
`[56]
`
`References Cited
`
`US. PATENT DOCUIVIENTS
`5/1991 Gamer et a1. ......................... .. 364/200
`5,014,193
`6/1991 Fulchenlr. et a1. .
`364/900
`5,023,832
`7/1991 Dolazza et a1.
`353/133
`5,034,813
`5,257,387 10/1993 Richek et a1. ..
`395/800
`5,263,148 11/1993 lonesilnet a1.
`395/500
`5,301,344
`4/1994 Kolchmsky ....... ..
`395/800
`2?? at a]
`8/1994 Brousitt'g‘gt'gl"
`
`5’334’O46
`
`439/540
`
`US005628028A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,628,028
`May 6, 1997
`
`7/1995 Crick et a1. ........................... .. 395/700
`5,432,941
`5,517,646 5/1996 Piccirillo et a1. . . . . . .
`. . . .. 395/700
`5,535,331
`7/1996 Swoboda et a1. .... ..
`395/183.21
`5,548,759
`8/1996 Lipe ...................................... .. 395/600
`OTHER PUBLICATIONS
`
`Personal Computer Memory Card International Association.
`“PCMCIA PC Cal-d Standard,” P. i-ixx, 1-1—1—4. 2—1—
`2-4, 3-1-3-28. 4-1—4—38. Jul. 1993.
`Bindra. Electronic Engineering Times. “FPGAs moving to
`boost DSP applications,” Issue 837, Feb. 27, 1995.
`Fuller, Electronic Engineering Times, “AT&T rolls
`40-000~gat¢ Orea FPGA?’ Issue 831F611 27. 1995
`Romanchi Test & Measurement World, “Portables AIe PIO
`liferating.” pp. 41-44. Feb. 15, 1995.
`Beachler ct ?1-’ Electronic Enginee'i'lg Time “Recon?gu
`ration ShOWlIlg Promise,” pp. T—41—T—44. Apr. 11. 1994.
`Hutchings et a1., Electronic Engineering Times, “Digital
`Signal Processing. Recon?guring Speeds Up Computing.”
`pp. 50-51. Oct. 17. 1994.
`
`pmila'y Examliwpjzick B‘ Harvey
`Assistant Examzner-J1gar Pauchoh
`.
`.
`.
`Mame)’, Agen’» 0’ F"m—F1sh & Rlchardson P-C
`
`ABSTRACT
`[57]
`A PCMCIA cal-d having an FPG A based card controller that
`is programmed with FPGA programming data stored on a
`host computer through a standard PCMCIA bus.
`
`5,357,573 10/1994 Walters . . . . . . . . . . . . . . .
`
`. . . . .. 380/25
`
`5,428,748
`
`6/1995 Davidson et a1. .................... .. 395/829
`
`26 Claims, 4 Drawing Sheets
`
`DATA ACQUISITION PCMCIA CARD
`14
`
`I
`L
`
`81
`La 5 80
`E8‘
`
`86
`
`p] 82
`
`76
`
`34
`
`i
`
`736
`
`.64
`cMcIA DATA 66
`c‘
`68
`L
`PCM A
`PCMCIA comaor 'FJIERFACE
`:E'MCM
`CONNECTOR >
`'62
`PCMCIA ADDRESS
`29
`
`12
`€R|PHERAL DAT7A4
`6—0
`I
`PCMCIA
`P?IrHrRAL comnéi COTQSZLLER
`7'0
`v1*’12TIPHERAI. ADDRES'S
`
`\
`
`28
`
`l
`
`3 EéZROM
`
`
`F1;;"*"—“ | PROGRAMMING
`I
`CIRCUIT
`
`68
`
`RIIasET s3‘
`__|
`
`)IzsPRocIzAiw as
`[
`
`l_ m _ _ _ ? _ ____
`
`__ _ — —‘
`
`I
`
`78
`
`EXTERNAL
`CONNECTOR
`
`l
`88
`BUS To IBM
`l
`|
`$30
`' L DIGITAL No l’
`
`BLACKBERRY Ex. 1003, page 1
`
`
`
`U.S. Patent
`
`May 6, 1997
`
`Sheet 1 of 4
`
`5,628,028
`
`~_muEE9.5<_u.2u._0%0
`
`EIOLDBNNOD 'lVN2l3.LX3
`
`omm6
`
`2o~:$
`
`Ejofizou9:3
`
`mm
`
`3::u~__u
`
`
`
`>E<zo:uzEn_~_<u
`
`_..0_n_
`
`zo:.<u_:._<
`
`$_<>>Eom
`
`EEl.2.%2
`
`BLACKBERRY EX. 1003, page 2
`
`I~.~.
`
`960:.
`
`<_U«ZUn_
`
`~m_E<n_<
`
`_>.m._.m>m
`
`ON
`
`
`
` 22u5>m<_U<<Um
`
`xx‘
`
`
`
`mfinmzou._.mO_.._
`
`,_o§m_o~_On_O._.n_<._
`
`BLACKBERRY Ex. 1003, page 2
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May 6, 1997
`
`Sheet 2 of 4
`
`5,628,028
`
`mumv2
`
`
`
`
`
`macaw.o$ouoEw.__e:::woa<09.v3uw_mm.E0:32...
`
`
`
`
`
`
`
`vvmmtcmoumz.833<_U2Un_
`
`
`
`Emu<_U<<Un_B:o_tomc_
`
`¢m
`
`<_U2U._mE§moEEgooum.t3c_
`
`
`
`w._m>$_ommm+Umwusuwxm._ommmu9_n_
`
`
`
`Ea3:5;<_u2u.__32:
`
`
`
`n_Eumumt3:_
`
`
`
`
`
`.9?Bmmmuoi39::.:__:;%_.<
`
`
`
`.._:>>2w:_m.mo_>2<UnE._m=o.::ou
`
`
`
`<U.E_v3um_wmofE0:«Eu9:
`
`w__...3%w.__=_e2woa
`
`
`
`
`
`_o._mu<_U2Un_USNSo;mmzawficou
`
`
`
`E;9%8£::_._<_u$.u._
`
`
`
`
`
`_._m:o:.=205$m_umtmm..25
`
`N._0_n_
`
`
`
`
`
`_m:o:a._mmom._m«mo;canEmu<_UEUn_
`
`<9:ca33.3wcmohmitom
`
`
`
`2:Satmc_EEEmo:_
`
`
`
`
`
`:o:mu__.Emmwuzuwxw.ommmuo.n_
`
`om
`
`BLACKBERRY EX. 1003, page 3
`
`BLACKBERRY Ex. 1003, page 3
`
`
`
`
`
`
`
`US. Patent
`
`May 6, 1997
`
`Sheet 3 0f 4
`
`5,628,028
`
`BLACKBERRY Ex. 1003, page 4
`
`
`
`US. Patent
`
`May 6, 1997
`
`Sheet 4 0f 4
`
`5,628,028
`
`LL 4 > DATA 10 ’
`
`68 PIN
`PCMCIA
`CONNECTOR ,\
`‘ADDRESS 10’4
`
`6
`
`99
`
`FPGA
`11E
`
`‘
`
`‘L
`
`a
`
`(PRIOR ART)
`FIG. 4a
`
`\
`100‘ EPRQM
`
`RESET 112
`
`REPROGRAM 11'4
`
`1/10
`23:13am‘
`
`RESET 108
`
`13— >
`
`68 PIN
`PCMCIA
`CONNECTOR \
`
`DATA
`
`I1’ ADDRESS
`
`FPGA
`124
`_“
`
`120
`A’
`
`-
`
`126'
`
`\
`"'—--128
`\13O
`
`(PRIOR ART)
`
`EPROM
`
`RESET 132
`
`BLACKBERRY Ex. 1003, page 5
`
`
`
`1
`REPROGRAMMABLE PCMCIA CARD AND
`METHOD AND APPARATUS EMPLOYING
`SAME
`
`5,628,028
`
`2
`SUMMARY
`
`BACKGROUND
`This invention relates to programming and reprogram
`ming the hardware con?guration of a (PCMCIA) card.
`Personal computer memory card international association
`(PCMCIA) cards are computer cards that meet the minimum
`compliance requirements of the PCMCIA standard (e.g..
`release 2.1. which is hereby incorporated by reference).
`PCMCIA cards are typically used to add functionality or
`memory to a personal. portable. or desldop computer (i.e.,
`host computer). as described in PCMCIA Standard release
`2.1. The most popular PCMCIA cards are fax/modems and
`memory cards used in laptop computers. For example. a
`memory card having a hard disk drive can provide 200 MB
`of additional memory. Many other PCMCIA cards are
`available. including input/output (I/O) PCMCIA cards that
`transfer data between a host computer system and an I/O bus
`and data acquisition cards. Typically. data acquisition cards
`receive and digitize analog information from sensors and
`temporarily store the information before transferring it to the
`host computer. Additionally. data acquisition cards are used
`by the host computer to send control and data signals to
`external analog and digital controllers.
`A typical PCMCIA card includes a standard PCMCIA
`connector connected to a PCMCIA interface circuit through
`a standard PCMCIA bus. The PCMCIA interface circuit
`operates according to the standard PCMCIA protocol to send
`data to and receive data from a host computer. The typical
`PCMCIA card also includes a PCMCIA card controller that
`sends data to and receives data from the PCMCIA interface
`circuit and controls the operation of the functional hardware
`on the card. For example. if the PCMCIA card is a memory
`card. then the functional hardware is memory (e.g.. a bank
`of random access memory (RAM) chips (static or dynamic)
`or a hard disk drive) and the PCMCIA card controller
`controls reading and writing to the memory.
`PCMCIA card controllers and interface circuits can be
`implemented as hardwired logic (e.g.. one or more custom
`gate arrays) or as programmable logic (e.g.. one or more
`?eld programmable gate arrays (FPGAS). FPGAs are typi
`cally programmed for operation whenever power is cycled
`off and then on. For example, if a PCMCIA card is inserted
`within a powered-up host computer or inserted into a
`powered-down host computer that is then powered-up. the
`PCMCIA card FPGA is programmed.
`The programmable architecture of FPGAs is provided
`through programmable logic blocks interconnected by a
`hierarchy of routing resources. The devices are customized
`by loading programming data into internal static memory
`cells. FPGA programming data are design-speci?c data that
`de?ne the functional operation of the FPGA’s internal
`blocks and their interconnections (e.g.. the functional opera
`tion of the PCMCIA card controller and interface circuit).
`Typically. when a PCMCIA card. having the PCMCIA
`card controller and interface circuit implemented in an
`FPGA(s). is inserted in an operating (i.e., powered) host
`computer or is inserted in a powered down host computer
`that is then powered-up. the FPGA is programmed with
`FPGA programming data stored in non-volatile memory
`(e.g.. EPROM, EEPROM, Flash memory. etc.) on the PCM
`CIA card. The EPROM(s) required to store the FPGA
`65
`programming data generally consumes a large amount of the
`PCMCIA card real estate.
`
`10
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`In general. the invention includes a PCMCIA card having
`an FPGA based card controller that is programmed with
`FPGA programming data stored on a host computer through
`a standard PCMCIA bus. Storing FPGA programming data
`on the host computer allows a user access to a practically
`unlimited number of FPGA programming data ?les to pro
`gram and reprogram the FPGA of the PCMCIA FPGA based
`card controller for diiferent applications and permits a user
`to supplement. update. improve. or otherwise modify opera
`tion for existing applications. Additionally. storing the
`FPGA programming data ?les on the host computer saves
`valuable PCMCIA card real estate. reduces the amount of
`power required by the card during FPGA programming, and
`reduces the cost of the PCMCIA hardware.
`In preferred embodiments. the host computer includes a
`PCMCIA adapter circuit coupled to a PCMCIA host socket
`which is mechanically and electrically connected to a PCM
`CIA card connector on the PCMCIA card. A PCMCIA
`interface circuit is connected to the PCMCIA card connector
`on the PCMCIA card. Using Card and Socket Services
`software stored in host memory. the host processor reads
`Card Information Structure (CIS) data from a memory
`device. such as an EEPROM. on the PCMCIA card and
`con?gures the host computer and PCMCIA card to operate
`together. Additionally. using application software stored in
`host memory, the processor selects an FPGA programming
`data ?le from host memory and sends data from the selected
`FPGA programming data ?le through the PCMCIA adapter
`circuit to the PCMCIA interface circuit. The PCMCIA
`interface circuit loads the data into a PCMCIA card con
`troller FPGA to program the FPGA. When an error or a
`different user application is detected or when a user creates
`a new FPGA programming data ?le or modi?es an existing
`FPGA programming data ?le. the processor is instructed to
`select another FPGA programming data ?le from host
`memory. The processor then sends data from the newly
`selected FPGA programming data ?le to the PCMCIA
`interface circuit, and the PCMCIA interface circuit loads the
`data into the PCMCIA card controller FPGA to reprogram
`the FPGA. The PCMCIA card may also have a functionality
`circuit that includes additional functional hardware speci?c
`to the function of the PCMCIA card.
`Additional advantages and features are apparent from the
`following.
`
`DETAILED DESCRIPTION
`
`FIG. 1 is a block diagram of a PCMCIA system including
`a host computer and a PCMCIA card. according to the
`invention.
`FIG. 2 is a ?ow chart depicting the steps required to
`con?gure a host computer and a PCMCIA card and the steps
`required to program a programmable PCMCIA FPGA based
`card controller with FPGA programming data resident in
`host memory.
`FIG. 3 is a block diagram of a data acquisition PCMCIA
`card, according to the invention.
`FIGS. 4a and 4b are block diagrams of prior art FPGA
`programming circuits.
`Referring to FIG. 1, a PCMCIA system 10 includes a host
`computer 12 and a PCMCIA card 14. Within host computer
`12, a PCMCIA adapter 16, connected to a standard 68 pin
`PCMCIA host socket 18 (eg. part number 146025-1. manu
`factured by AMP. Inc.). is coupled to a system bus 20 that
`interconnects PCMCIA adapter 16. a host processor 22. and
`
`BLACKBERRY Ex. 1003, page 6
`
`
`
`5 .628,028
`
`10
`
`20
`
`3
`a host memory 24. Within PCMCIA card 14. a PCMCIA
`interface chip 26 (e.g., part number Z86017. manufactured
`by Zilog). connected to a standard 68 pin PCMCIA card
`connector 28 (e. g., part number 535632-1. manufactured by
`AMP. Inc.). is coupled to a Card Information Structure (CIS)
`EEPROM 30 (e.g., part number )Gc90C21-SO8. manufac—
`tured by Atmel). a PCMCIA card controller 32. and a card
`functionality circuit 34. Both card controller 32 and card
`functionality circuit 34 are coupled to external connector 36
`(e.g.. part number 558134-1. manufactured by AMP. Inc.)
`No external connector is needed if the PCMCIA card is a
`memory card. and no card functionality circuit may be
`necessary where the PCMCIA card is an I/O card (i.e.. all
`functionality is located within the card controller 32).
`Address. data. and control signals are transferred between
`15
`host computer 12 and PCMCIA card 14 through PCMCIA
`adapter 16 and PCMCIA interface chip 26 which are
`designed to transfer data in accordance with PCMCIA
`release 2.1 protocol. PCMCIA cards are 3.37 inches (85.6
`mm) in length and 2.126 inches (54 mm) in width. However.
`there are three di?erent maximum thicknesses speci?ed for
`PCMCIA cards: a type one card is 0.13 inches (3.3 mm) in
`thickness; a type two card is 0.196 inches (5 mm) in
`thickness; and a type three card is 0.413 inches (10.5 mm)
`in thickness. The standard PCMCIA host socket is about
`2.126 inches (54 mm) in width and has 68 pins arranged in
`two rows. and the standard PCMCIA card connector is also
`about 2.126 inches (54 mm) in width and has 68 pin sockets
`that correspond to the pins of the host socket. The left side
`of the card connector is mechanically keyed diiferently from
`the right side. and the host socket is keyed to accept this
`con?guration to prevent the PCMCIA card from being
`inserted upside down.
`Referring also to FIG. 2, when PCMCIA card 14 card
`connector 28 is inserted in PCMCIA host socket 18 of host
`computer 12. PCMCIA adapter 16 recognizes (step 44) the
`insertion and interrupts (step 46) processor 22. Alternatively,
`if PCMCIA card 14 is inserted while host computer 12 is
`turned off (i.e., powered-down). host computer 12 learns of
`the existence of PCMCIA card 14 during the power-on
`procedure. Processor 22 then executes (step 48) Card and
`Socket Services 38 (C&SS) software resident in host
`memory 24 and through PCMCIA interface chip 26 reads
`CIS data from CIS EEPROM 30. As a minimum. the CIS
`data must su?iciently identify the PCMCIA card to the host,
`to enable the processor 22 to con?gure the host computer 12
`and the PCMCIA card 14 to operate together and to enable
`the processor to select the appropriate application software
`40 from host memory 24. The CIS data speci?cally identify
`the card manufacturer (e.g.. Data Translation, Inc.) and card
`identi?cation (ID) number and includes a variety of set-up
`information. including base address, interrupt level, size of
`address window, and other information regarding the card’s
`functionality. as speci?ed by release 2.1. The CIS data are
`entered into the EEPROM at the time of card manufacture
`and are not thereafter changed. Hence, con?guration of host
`computer 12 and PCMCIA card 14 is completed without the
`use of card controller 32.
`Processor 22 then executes (step 50) the application
`software 40 resident in host memory 24 that corresponds to
`PCMCIA card 14. The application software 40 causes the
`processor to either select a default FPGA programming data
`?le 42 from host memory 24 that corresponds to a particular
`application for PCMCIA card 14 or request input from the
`user as to which FPGA programming data ?le 42 is to be
`selected from host memory 24. Processor 22 then sends (step
`52) the data from the selected FPGA programming data file
`
`65
`
`4
`42 through PCMCIA adapter 16 to PCMCIA interface chip
`26. Interface chip 26 then programs (step 54) a ?eld pro
`grammable gate array (FPGA, not shown in FIG. 1) within
`card controller 32 by loading the data from the FPGA
`programming data ?le 42 into the FPGA. Where the appli
`cation software causes the processor to select a default data
`programming ?le. PCMCIA card 14 and host computer 12
`are made operable (step 56) without user intervention.
`Referring to FIG. 3. card controller 32 includes a PCM
`CIA card controller FPGA 60 (e.g.. part number
`XC3042TQ100-100. manufactured by
`as described
`in Xilinx Programmable Logic Data Book, which is hereby
`incorporated by reference). Through a standard PCMCIA
`bus (i.e.. PCMCIA address lines 62, data lines 64. and
`control lines 66) connected to PCMCIA connector 28,
`interface chip 26 receives FPGA programming data from
`host computer 12 (FIG. 1). Interface chip 26 initiates FPGA
`60 programming through FPGA programming circuit 68,
`which drives reset line 63 and reprogram line 65. and
`completes FPGA 60 programming by loading the FPGA
`programming data into FPGA 60 through peripheral data
`lines 72.
`The PCMCIA card interface circuit and PCMCIA card
`controller of typical prior art PCMCIA cards are usually
`combined in the same (i.e., common) FPGA. As a result, in
`order to send CIS data to the host. the FPGA has to ?rst be
`programmed with data stored in nonvolatile memory (e.g..
`one or more EEPROMs, EPROMs. or Flash memory) on the
`PCMCIA card. The nonvolatile memory requires valuable
`PCMCIA card real estate, and the power required by the
`memory during FPGA programming reduces the available
`battery power in portable computers,
`Referring to FIG. 4a, in a typical prior art PCMCIA card
`99, an EPROM(s) 100 is used to store FPGA programming
`data and is connected to a PCMCIA interface and card
`controller FPGA 102 through address lines 104 and data
`lines 106 (e.g., byte Wide parallel inputs). On power-up, a
`reset circuit (not shown) asserts a reset line 108 to FPGA 102
`and to a control circuit 110. Control circuit 110 asserts a reset
`line 112 to EPROM 100 and asserts a reprogram line 114 to
`EPROM 100 and FPGA 102 to initiate programming of
`FPGA 102 with FPGA programming data stored in EPROM
`100. As a result. PCMCIA card 99 is programmed without
`intervention from the host computer (not shown) to which
`PCMCIA card 99 is connected through PCMCIA card
`connector 116.
`Referring to FIG. 4b, in another typical prior art PCMCIA
`card 120, an EPROM 122 is used to store FPGA program
`ming data and is connected to a PCMCIA interface and card
`controller FPGA 124 through a serial data-in line 126. a
`strobe line 128, and a reprogram line 130. On power-up, a
`reset circuit (not shown) asserts a reset line 132 to FPGA 124
`and to EPROM 122 to initiate programming of FPGA 124
`with FPGA programming data stored in EPROM 122. As a
`result, again PCMCIA card 120 is programmed without
`intervention from the host computer (not shown) to which
`PCMCIA card 120 is connected through PCMCIA card
`connector 134.
`Referring again to FIG. 3, as an example, PCMCIA card
`14 is a data acquisition card. and card functionality circuit 34
`includes an analog to digital (A/D) converter 76 (e.g., part
`number LTC1290. manufactured by Linear Technology) and
`a digital to analog (D/A) converter 78 (e.g., part number
`MAX532, manufactured by Maxim) connected through
`external connector 36 to sensors (not shown) and an external
`analog controller (not shown). FPGA 60 is also connected to
`
`25
`
`30
`
`35
`
`40
`
`50
`
`55
`
`BLACKBERRY Ex. 1003, page 7
`
`
`
`10
`
`25
`
`30
`
`5
`an external digital controller (not shown) through external
`connector 36. The C&SS software 38. application software
`40. and FPGA programming data ?les 42 in host memory 24
`cause the processor 22 to program FPGA 60 to operate as a
`data acquisition PCMCIA card controller. to. e.g.. transfer
`data and control signals between host computer 12 and the
`external controllers.
`AID converter 76 receives analog signals from the sensors
`and converts them to digital signals before sending them
`over the A/D bus 82 to PCMCIA card controller FPGA 60.
`Card controller FPGA 60 stores data received from A/D
`converter 76 in a 5l2><9 FIFO 80 (e.g.. part number
`MS720lAL-50. manufactured by Mosel-Vitalic) using
`FIFO data-in signals 84 and FIFO control signals 86 before
`transferring the data to the host computer 12 through periph
`eral data lines 72 and PCMCIA interface chip 26.
`Data sent from host computer 12 for transmission to the
`external analog and digital controllers is ?rst stored in a
`5l2><9 FIFO 81 (e.g., part number MS7201AL-50, manu
`factured by Mosel-Vitalic) through PCMCIA interface chip
`26 and peripheral data lines 72. Card controller FPGA 60
`then retrieves the stored data from FIFO 81 through FIFO
`data-out signals 85 and sends the stored digital data over the
`D/A bus 88 to D/A converter 78 or over digital input/output
`(110) bus 90 directly through external connector 36 to the
`external digital controller. D/A converter 78 converts digital
`signals received from FPGA 60 into analog signals before
`sending them through external connector 36 to the external
`analog controller.
`‘
`As an example. external connector 36 has ?fteen pin
`connections: eight pins connected to A/D converter 76 and
`eight sensors (not shown); two pins connected to D/A
`converter 78 and to the external analog controller; four
`digital I/O pins connected to FPGA 60 and to the external
`digital controller; and one ground pin connected to ground
`For a variety of reasons. including the detection of a
`PCMCIA card controller 60 malfunction (e.g.. error condi
`tion detected) or the detection of a user request to change the
`PCMCIA card application (e.g., software interrupt). PCM
`CIA card controller 60 may be reprogramed. The host
`computer executes application software 40 (FIG. 1) in host
`memory 24 to select a new FPGA programming data ?le 42
`from host memory 24 and then sends the data from the
`newly selected FPGA'programming data ?le 42 through
`PCMCIA adapter 16 to PCMCIAinterface chip 26. Interface
`chip 26 uses FPGA programming circuit 68 to reset PCM
`CIA card controller FPGA 60 and enable reprogramming,
`and interface chip 26 completes reprogramming by loading
`the data from the newly selected FPGA programming data
`?le into card controller FPGA 60.
`For example, instead of simply storing all the data
`received from the sensors in the FIFO before sending it to
`the host computer. card controller FPGA 60 can be repro
`grammed with additional functionality that formats the data
`received from the sensors according to the host computer’s
`requirements before storing the data in the FIFO. Similarly,
`card controller FPGA 60 can be reprogrammed with addi
`tional functionality that analyzes the sensor data and inter
`rupts the host computer when predetermined thresholds are
`exceeded. In such a system. the host computer need not
`interact with the PCMCIA card unless a predetermined
`threshold is exceeded.
`For example. a data acquisition PCMCLA card may be
`coupled to a temperature controller and sensors for deter
`mining the temperature of a room. Such a PCMCIA card
`continually receives data from the sensors and. in a simple
`
`35
`
`50
`
`55
`
`65
`
`5,628,028
`
`6
`data acquisition card, the host computer periodically reads
`the data acquisition FIFO and analyzes the data to determine
`if predetermined temperature thresholds have been
`exceeded. The PCMCIA card could be reprogrammed to
`analyze the data received from the sensors and interrupt the
`host computer when a predetermined temperature threshold
`is exceeded. Hence. the host computer would only read the
`PCMCIA card FIFO when noti?ed that a threshold had been
`exceeded.
`Moreover. the operation of the PCMCIA card controller
`may need to change for different user applications. For
`example. if a temperature controller is moved to a smaller
`room where temperature ?uctuates more quickly, the PCM
`CIA card controller needs to be reprogrammed to accept data
`from the temperature sensors more frequently. In such a
`situation. the user noti?es the processor of a change in
`application and the processor selects a corresponding FPGA
`programming data ?le and sends the data to the PCMCIA
`interface which reprograms the PCMCIA card controller
`FPGA by loading the FPGA with the new FPGA program
`ming data.
`Typically host memory is very large and is supplemented
`with extended memory (not shown). Hence. a practically
`unlimited number of FPGA programming data ?les can be
`stored within the host computer and made available to the
`user. The programming and reprogramming of the PCMCIA
`card controller FPGA is limited only by the size (i.e..
`capability) of the FPGA. The functionality of the PCMCIA
`card is limited only by the ?xed hardware (i.e., the func
`tional hardware) on the PCMCIA card (e.g., A/D or D/A
`converters. contacts on and con?guration of the external
`connector. and FIFO size).
`For example. a PCMCIA card controller FPGA can be
`programmed to function as an I/O card controller, a data
`acquisition card controller. a fax/modem card controller, or
`a memory card controller; however. the PCMCIA card can
`only function as these card types if the additional functional
`hardware is available on the card. For an I/O card controller,
`the FPGA can be programmed (and reprograrmned) with the
`functionality required to transfer data between the host
`computer and the I/O bus (e.g., Small Computer System
`Interface (SCSI)). and, thus, the only additional functional
`hardware required is an external I/O bus connector and
`electrical conductors from the I/O bus connector to the
`FPGA. For a memory card, additional functional hardware
`typically includes a bank of static or dynamic RAM chips,
`ROM chips, ?ash memory. or a hard disk drive. and the
`addressing and refreshing functionality can be located
`within the PCMCIA card controller FPGA and, hence,
`reprogrammable. As an example, where a portion of a disk
`drive or a portion of a bank of RAMs becomes damaged and
`non-functional. the addressing functionality in the FPGA
`can be reprogrammed to address only the working portion of
`the memory hardware. For a fax/modem, additional func
`tional hardware generally includes a phone connection, A/D
`and D/A converters, bu?ers, and ampli?ers, and function
`ality controlling hardware, for instance, hardware control
`ling the baud rate. can be located within the FPGA and, thus,
`reprogrammable.
`The FPGA prograrmning data ?les can be supplied with
`the PCMCIA card or new, additional, or updated FPGA
`programming data ?les can be obtained at a later time.
`Similarly, users can create their own FPGA programming
`data ?les or make modi?cations as desired.
`The PCMCIA interface was described above as a particu
`lar integrated circuit chip; however, other hardware can be
`
`BLACKBERRY Ex. 1003, page 8
`
`
`
`7
`used to implement the functionality of the interface chip.
`Similarly, the PCMCIA card was described as a data acqui
`sition card, however. the programmable PCMCIA card con
`troller FPGA can be used on all PCMCIA card types (e.g.,
`fax modem. memory. etc.) with the FPGA programming data
`?les stored on a host computer.
`Other embodiments are within the following claims.
`What is claimed is:
`1. A method of con?guring the speci?c operating func
`10
`tionality for a PCMCIA card connected to a host computer
`via a standard PCMCIA card connector on said PCMCIA
`card and a standard PCMCIA host socket on said host
`computer comprising:
`storing at least one FPGA programming data ?le for
`con?guring a PCMCIA card controller FPGA in a host
`memory of said host computer.
`sending data from said FPGA programming data ?le to
`the PCMCIA interface circuit on the PCMCIA card
`through a standard PCMCIA bus, and
`programming the PCMCIA card controller FPGA to have
`said speci?c functionality by loading the FPGA with
`the data from said stored FPGA programming data ?le.
`whereby said PCMCIA card is not limited to a dedicated
`speci?c operating functionality provided on said card
`and can be programmed and reprogrammed with any
`one of a variety of FPGA programming data ?les
`provided by said host.
`2. The method of claim 1. further comprising:
`reading CIS data from a CIS storage device on the
`PCMCIA card through a PCMCIA interface circuit on
`the PCMCIA card and a PCMCIA adapter on the host
`computer. said sending of data being triggered by an
`application on said host responding to said CIS data.
`3. The method of claim 1. wherein more than one FPGA
`35
`programming data ?le is stored in said host memory, and
`further comprising:
`selecting another stored FPGA programming data ?le;
`sending data from said another stored FPGA program
`ming data ?le through the standard PCMCIA bus to the
`PCMCIA interface circuit on the PCMCIA card; and
`reprogramming the PCMCIA card controller FPGA by
`loading the FPGA with the data from said another
`stored FPGA programming data ?le.
`4. The method of claim 3, further comprising before
`selecting:
`detecting a new user application. said selecting being in
`response to said detecting.
`5. The method of claim 3, further comprising before
`selecting:
`detecting an error condition.
`6. The method of claim 1. further comprising:
`storing new FPGA programming data ?les in the host
`memory.
`7. The method of claim 6, further comprising:
`selecting a newly stored FPGA programming data ?le;
`sending data from said newly stored FPGA programming
`data ?le through the standard PCMCIA bus to the
`PCMCIA interface circuit on the PCMCIA card; and
`reprogramming the PCMCIA card controller FPGA by
`loading the FPGA with the data from said newly stored
`FPGA programming data ?le.
`8. A PCMCIA card comprising
`a printed circuit board;
`a standard PCMCIA card connector mounted on said
`printed circuit board;
`
`50
`
`20
`
`25
`
`40
`
`55
`
`60
`
`65
`
`5,628,028
`
`8
`a PCMCIA interface circuit electrically connected to the
`PCMCIA card connector for transferring data through
`the PCMCIA connector according to standard PCM
`CIA protocol. for transferring CIS data to a host com
`puter system. for transferring FPGA programming data
`received from the host computer system, said transfer
`ring of FPGA programming data being niggered in
`response to receipt of said CIS data at said host
`computer system, and for programming a PCMCIA
`card controller FPGA with said FPGA programming
`data received from said host computer system;
`a CIS storage device. electrically connected to the PCM
`CIA interface circuit. for storing CIS data; and
`a PCMCIA card controller. including the PCMCIA card
`controller FPGA. electrically connected to the PCM
`CIA interface circuit, for controlling the operation of
`the card to have speci?c operating functionality speci
`?ed by said FPGA programing data received from said
`host computer system.
`whereby said PCMCIA card is not limited to a dedicated
`speci?c operating functionality provided on said card
`and can be programmed and reprogramed with anyone
`of a variety of FPGA programming data ?les provided
`by said host.
`9. The PCMCIA card of claim 8, further comprising:
`an FPGA programming circuit electrically connected to
`the PCMCIA interface circuit and the PCMCIA card
`controller.
`10. The PCMCIA card of claim 8, wherein the CIS storage
`device is an EEPROM.
`11. The PCMCIA card of claim 8. further comprising:
`a card functionality circuit.
`12. The PCMCIA card of claim 11. wherein the PCMCIA
`card is a memory card and the functionality circuit includes:
`a bank of random access memory devices for storing data.
`13. The PCMCIA card of claim 11. wherein the PCMCIA
`card is a memory card and the functionality circuit includes:
`a disk drive for storing data.
`14. The PCMCIA card of claim 11. wherein the PCMCIA
`card is an I/O card and the functionality circuit includes:
`an external I/O bus connector; and
`conductors electrically connecting the I/O bus connector
`to the PCMCIA card controller FPGA.
`15. The PCMCIA card of claim 11, wherein the PCMCIA
`card is a fax/modem card and the functionality circuit
`includes:
`an external telephone connector;
`an AID converter coupled to the external telephone con
`nector and to the PCMCIA card controller FPGA;
`a D/A converter coupled to the external telephone con
`nector and to the PCMCIA card controller FPGA; and
`a buffer connected to the PCMCIA card controller FPGA.
`16. The PCMCIA card of claim 11, wherein the PCMCIA
`card is a data acquisition card and the functionality circuit
`includes:
`an external connector for connecting to one or more
`external sensors; and
`an A/D converter connected to the PCMCIA card con
`troller and connected to the external connector for
`receiving analog signals from the external sensors,
`wherein theA/D converter converts the received analog
`signals into digital signals before sending them to the
`PCMCIA card controller.
`
`BLACKBERRY Ex. 1003, page 9
`
`
`
`9
`17. The PCMCIA card of claim 16. where in the func
`tionality circuit further includes:
`a digital controller. wherein the PCMCIA card controller
`is connected to the external connector for sending
`digital signals to the external digital controller;
`an analog controller connected to the external connector;
`an