DVDs are currently popular media for distributing video content to users. DVDs are typically programmed with video content at a factory and shipped to a retail store or warehouse for sale to the public. Because a retail store or warehouse needs to stock a relatively large number of DVDs to ensure that a desired title is available for purchase, the retail store or warehouse needs to dedicate a relatively large amount of floor space for DVD storage racks and bins. While recordable DVDs are available, retail stores have not used recordable DVDs to program video content “on-the-fly” as an alternative to stocking factory-programmed DVDs. Recordable DVDs are generally more expensive than factory-programmed DVDs, and programming a recordable DVD with DVD-quality and length video content can require a relatively long amount of time. Also, without the proper security in place, video content owners may not want to authorize retail stores to locally-load video content because of the risk that an employee at a retail store could make unauthorized copies. Accordingly, recordable DVDs are primarily used today by end-users to store video content from home electronic devices.
Instead of purchasing a factory-programmed DVD from a retail store or warehouse, a consumer can rent a factory-programmed DVD from kiosks at locations such as convenience stores and apartment complexes. These kiosks do not program DVDs with video content but rather merely store some limited number of factory-programmed DVDs for rental. Since these kiosks only store a limited number of DVDs, a kiosk may not carry a video title desired by a user. Even if the kiosk carries the video title, the kiosk may not have a copy of that title available when a user wants to rent it.
a and 1b are front and rear perspective views, respectively, of a video kiosk of an embodiment.
a and 10b are top and rear views, respectively, of a transport mechanism of a video kiosk of an embodiment.
a, 11b, and 11c are front, top, and side views, respectively, of an arm and pickup head of a video kiosk of an embodiment.
a and 12b are top and side views, respectively, of a tray of interim packages of an embodiment.
a, 13b, 13c, and 13d are top, side, rear, and front views, respectively, of an interim package of an embodiment.
a, 14b, 14c, and 14d are top, side, rear, and front views, respectively, of a final package shell of an embodiment.
e is a section view of the final package shell of
a, 15b, and 15c are top, rear, and front views, respectively, of a final package shell of an embodiment.
d and 15e are section and side views, respectively, of the final package shell of
a, 16b, and 16c top, side, and section views, respectively, of an interim package of an embodiment.
a, 17b, and 17c are side, bottom, and top views, respectively, of the interim package of
a and 18b are side and top views, respectively, of a programming station of a video kiosk of an embodiment.
a and 22b are illustrations of security aspects of a video kiosk environment of an embodiment.
a, 24b, 24c, and 24d are illustrations of programming a memory device of an embodiment.
By way of introduction, the embodiments described below provide a digital content kiosk for on-the-fly programming of digital content onto a removable solid-state memory device. “Digital content” can take any suitable form, such as, but not limited to, video (with or without accompanying audio) (e.g., a movie, an episode of a TV show, a news program, etc.), audio (e.g., a song, a podcast, one or a series of sounds, etc.), still or moving images (e.g., a photograph, a computer-generated display, etc.), text (with or without graphics) (e.g., an article, a text file, etc.), a game, and a hybrid multi-media presentation of two or more of these forms. In the following examples, “digital content” takes the form of video content, and the “digital content kiosk” takes the form of a video kiosk. It should be noted that these are merely examples and other forms of digital content can be used. Accordingly, no specific form of digital content should be read into the claims unless explicitly recited therein.
There are several advantages associated with a video kiosk that provides on-the-fly programming of video content onto a removable solid-state memory device. First, a retail store can use one or more kiosks to replace its DVD storage racks and bins, thereby effectively creating additional floor space for the retail store to display other merchandise. In addition to becoming a practical replacement for DVD storage racks and bins in a retail store, a video kiosk can be used to sell video content in new markets, such as locations that do not have the floor space needed for DVD storage racks and bins. Similar to franchised ATMs, a video kiosk can be located in almost any location, including airports, convenience stores, and even movie theatres, where a kiosk can offer movie-goers a take-home version of a movie they just watched. Further, a video kiosk can almost entirely eliminate distribution channel costs for a video content owner, as, from a studio's perspective, the distribution cost would be similar to a pay-per-view system. Additionally, because a video kiosk programs video content on-the-fly, there is no risk of a video title being out of stock, as there currently is with retail stores and with kiosks that rent factory-programmed DVDs.
While the video kiosk can use any type of media, it is presently preferred that the video kiosk use a removable solid-state memory device, as solid-state memory devices are generally more portable and not as fragile as optical, magnetic, and other types of media. This is especially important in today's mobile environment where consumers want to be able to watch video content whenever and wherever they want. Although a removable solid-state memory device with suitable memory capacity is currently more expensive than a DVD, the additional cost is outweighed by the above-mentioned advantages (e.g., floor space gained by retailers, revenue generated by franchising into new markets, and distribution cost savings to video content owners). Additionally, as the price of solid-state memory devices continues to decrease, a solid-state-memory-device-based video kiosk solution becomes more and more financially attractive. As another advantage, players for solid-state memory devices can be less-expensive, smaller, and more portable than players for DVDs or other rotating media. This is especially true when a solid-state memory device contains a built-in digital decoder, in which case the player can contain a simple, inexpensive processor and a connector to a display device. As yet another advantage, solid-state memory devices can offer net-based DRM solutions that are not suitable for DVDs.
Solid-state memory devices also offer a fresh alternative to the DVD-saturated video market. Many consumers see next generation DVDs (HD DVD or BluRay) as nothing more than a glorified version of a regular DVD that costs twice as much. Many consumers are looking for something different from what they already have, and solid-state memory devices that store movie-quality and length videos are as revolutionary over DVDs as DVDs were over videocassettes. As studios, retailers, and consumers fully appreciate the advantages described above, solid-state memory devices can gain in popularity to the point of replacing DVDs as the predominant media for home video content, and video kiosks can be the preferred mechanisms for distributing such devices.
Video Kiosk Overview
Turning now to the drawings,
While it is presently preferred that the video kiosks of these embodiment be used with solid-state memory devices, a video kiosk can be altered to use other types of devices, such as, but not limited to, optical and magnetic memory devices. Also, it should be noted that the video kiosk 100 can be used exclusively to provide video content or can additionally be used to provide audio and other content, as well as provide information and other services. For example, in addition to providing video content, the video kiosk 100 can be used as an ATM, to access the Internet, to download songs, to provide directions, to print photos from a memory card, and to print movie or other types of tickets.
As shown in
The video kiosk 100 can optionally contain a key pad 145 to accept user input if the touch-screen function is unavailable.
Returning to
The video kiosk 100 further comprises a memory device delivery location, which in this embodiment, is a memory device output chute 160 accessed by a user by lifting a transparent, swinging door 163. In this embodiment, the swinging door 163 is part of a locked, removable panel 165 that provides service access to trays of memory devices stored in the video kiosk 100. In this embodiment, the video kiosk 100 stores memory devices and provides a user with one of those memory devices after the video kiosk 100 programs video content onto the memory device. In this way, the video kiosk 100 both programs and dispenses a memory device to a user. Instead of or in addition to dispensing a memory device to a user, the video kiosk 100 can include a memory device input port to allow a user to provide his own memory device to the video kiosk 100 for programming. However, there are several advantages associated with the video kiosk 100 dispensing a programmed memory device. For example, in some embodiments, the video kiosk 100 programs video content into a somewhat specialized memory device (e.g., a memory device with both a high-speed programming port and a conventional user port). If a user does not have such a memory device and if such a memory device is not readily available to the user when he wants to use the video kiosk 100 (e.g., if the video kiosk 100 is not located near a facility that sells such a memory device), the user would not be able to use the video kiosk 100. This problem is eliminated if the video kiosk 100 has its own supply of memory devices that can be programmed and dispensed to a user. Additionally, as described in more detail below, the video kiosk 100 can store a variety of different-shaped outer package shells and customize a programmed memory device to fit into the type of player owned by the user.
Turning now to
The video kiosk 100 also comprises circuitry to control the operation of its various electrical and electromechanical components. A memory device used by the video kiosk 100 can also comprise its own circuitry for controlling programming and other functions in the memory device. As used herein, the term “circuitry” (or “circuit”) can include one or more components and be a pure hardware implementation and/or a combined hardware/software (or firmware) implementation. Accordingly, “circuitry” can take the form of one or more of a microprocessor or processor and a computer-readable medium that stores computer-readable program code (e.g., software or firmware) executable by the (micro)processor, logic gates, switches, an application specific integrated circuit (ASIC), a programmable logic controller, and an embedded microcontroller, for example.
In operation, the video kiosk 100 receives a selection of video content either manually from a user using the touch-screen display 140 and/or the key pad 145 or automatically by a software agent in the video kiosk 100 (e.g., based on the user's past selections) (see, for example, U.S. patent application Ser. No. 09/823,489, filed Mar. 30, 2001, which is hereby incorporated by reference). The selected video content can be stored in one or more mass storage devices in the video kiosk 100 or retrieved from an external location on-the-fly. The video kiosk 100 establishes communication with a removable solid-state memory device (e.g., by sending various signals to the memory device after programming pins of the memory device are manually or automatically mated with programming pins in the video kiosk 100) and then programs the selected video content into a solid-state memory array in the memory device, which is ultimately provided to the user.
The next several sections present various embodiments of (1) exemplary memory devices, memory architectures, and programming techniques that can be used with the video kiosk 100, (2) exemplary mechanical and electrical components of the video kiosk 100, (3) exemplary security aspects of the video kiosk 100, and (4) exemplary uses of the video kiosk 100. It should be understood that these various embodiments can be used alone or in combination with one another.
In many environments, the video kiosk 100 would be used to program relatively large video files of relatively high-resolution content (e.g., a standard or high definition movie). In situations where a consumer waits in front of the video kiosk 100 as the programming occurs, it may be preferred to have the programming occur in a timely fashion (e.g., in a matter of a few minutes (or less) instead of tens of minutes) to avoid the consumer becoming impatient. Unfortunately, the ports of many conventional portable, solid-state memory devices cannot handle the desired programming bandwidth. (As used herein, a “port” refers to an interface between one component and another, external component and, in these embodiments, often takes the form of a collection of pins.) For example, many portable solid-state memory devices use an SD (or CompactFlash, etc.) port which is relatively easy to drive by portable consumer electronics products (e.g., media players, digital cameras, etc.). However, the programming rate associated with such a port can be in the range of 5 MB/sec to 20 MB/sec, which may be too slow for a video kiosk environment. For example, at a data rate of 20 MB/sec, programming a 20 GB video file can take almost 20 minutes, which may be too long for a consumer to wait in front of the video kiosk 100.
To address this problem, the memory device 300 shown in
Because the memory device 300 has two types of ports, the memory device 300 can provide “the best of both worlds”: the relatively high-speed programming port 310 can have the complexity needed for the video kiosk 100 to program the non-volatile memory IC 330 at a sufficiently fast rate, while the user port 320 can be a relatively simple and easy to drive port that is compatible with many conventional consumer electronics devices. In contrast, if the relatively high-speed port were used both as a programming port and a user port, there may be compatibility issues with conventional consumer electronics devices, as the high-speed port may be a specialized port that is incompatible with conventional ports commonly-used with consumer electronics devices. This incompatibility may cause the user to be less likely to use a video kiosk that if the memory device were easily used with his electronic equipment.
In a presently preferred embodiment, the high-speed programming port 310 takes the form of a DDR2 interface or a PCI Express interface. A DDR2 interface refers to a double-data-rate two synchronous dynamic random access memory interface, which has the ability to run its bus at twice the speed of the clock input of the port. In general, DDR2 stores data in memory cells on both the rising and falling edge of a clock. With DDR2, the bus can be, for example, 16 lines in parallel, so four bytes, each containing eight bits of data, can be transferred per clock cycle. Further information about DDR2 can be found in “DDR2 SDRAM Interfaces for Next-Gen Systems,” Electronic Engineering Times-Asia, Oct. 16-31, 2006, which is hereby incorporated by reference. A PCI Express interface is an interface technology that uses serial links known as “lanes.” Each lane carries a bandwidth of about 250 MB/sec. Technical specifications and other information about PCI Express can be obtained from PCI-Sig in Beaverton, Oreg. As another alternative, a DDR, Firewire, or Rambus interface can be used.
In the memory device 300 shown in
Signals from the programming logic in the video kiosk 100 can indicate to the non-volatile memory IC 430 and the controller IC 440 which of those ICs is using the bus. In particular, the video kiosk 100 can send the controller IC 440 a command that forces it to send a command to the non-volatile memory IC 430 (over NAND Flash compatible interface) to activate the non-volatile memory IC's high-speed inputs circuits. The controller IC 440 can watch for a response from the non-volatile memory IC 430 that indicates that the high-speed data transfer is complete, that a high-speed programming operation is complete, or that an error has occurred. (In the case of an error, a signal can be sent to the programming control logic in the video kiosk 100 to interrupt high-speed data transfer.) When such a response is received, the dual-use port 415 is returned to normal interface with the controller IC 440.
Returning now to
While allowing the high-speed programming port to be accessible by the user provides advantages, for safety, security, or simply aesthetic purposes, it may be desired to impede access to the relatively high-speed port 310 prior to providing the memory device 300 in
As an alternate way of impeding access to a relatively high-speed programming port, the relatively high-speed programming port can be exposed on an interim package that, after programming by the video kiosk 100, is combined with a final or outer package shell that covers the relatively high-speed programming port. This alternative is shown in
The use of an outer package shell 560 provides advantages in addition to just concealing the high-speed programming port 510 for aesthetic and other reasons. For example, by stocking a variety of different types and shapes of outer package shells (in addition to or instead of stocking memory devices with a dual-use port), the user or video kiosk 100 can select the appropriate outer package shell based on the user's memory device player. For example, the video kiosk 100 can enclose an interim package in an SD™ outer package shell if the user has a player that uses SD™ cards, while the video kiosk 100 can enclose an interim package in a Memory Stick™ outer package shell if the user has a player that uses Memory Sticks™. As noted above, this ability to customize an outer package provides an advantage over embodiments in which a user supplies his own memory device to the video kiosk for programming.
Several alternatives can be used. For example, an outer package shell can be designed to provide the form factor versatility described above without covering the high-speed programming port of the interim package. As another example, while the design of the outer package shell in
As indicated by the wide variety of exemplary memory devices described above, the video kiosk 100 can use any suitable type of memory device (e.g., a memory device with two separate ports or a dual-use port, a pre-assembled memory device or a memory device that is assembled by the video kiosk 100 from an interim package and an outer package shell, etc.). Also, a video kiosk 100 can stock a single type of memory device or a variety of different types of memory devices (even including those without high-speed programming functionality). To simplify the following discussion, the memory architectures and programming techniques described below will be discussed only in reference to the memory device 500 in
Returning to the drawings,
Even with this configuration of the high-speed programming port 510 and the high-speed input circuitry 630, a memory device may have one or more limitations that prevent it from being programmed at a sufficiently fast speed. For example, in some memory devices, one of the principle limitations on programming speed is power. Accordingly, even with a high-speed programming port, a memory device may not be able to generate enough power on its own to program its memory array at a sufficiently high rate. This is especially true for conventional memory devices used with portable consumer electronics. While a memory device can be modified to include charge pumps or other components to provide the needed power, the relatively large amount of area needed for those components may not be available on the IC. Accordingly, in this embodiment, the non-volatile memory IC 530 preferably comprises a programming voltage supply pad (PVSP) 640, through which the video kiosk 100 can supply some or all of the needed programming voltage to the memory device 500 from a 110 volt outlet via the power cord 170 (see
Another limitation that may prevent a memory device from being programmed at a sufficiently fast speed is the type of memory used in the memory array. For example, some memory types, such as NAND Flash, require several programming cycles to charge a memory element, determine whether the charge is present in the memory element, and then determine the level of the charge, if present. These various programming cycles add to the time needed for the video kiosk 100 to program video content into the memory device, and this extra time may cause the programming time to exceed a desired threshold. Accordingly, it may be desired to use a type of memory array that does not require as many programming cycles. For example, in one preferred embodiment, the memory array comprises a plurality of passive element memory cells comprising a diode and a switchable-resistance material (such as an antifuse layer). Because this type of memory cell is programmed simply by rupturing the diode, programming such a memory cell is a “blow-and-go” operation and does not require the various programming cycles used by NAND Flash. Accordingly, using a memory array of passive element memory cells comprising a diode and a switchable-resistance material (such as an antifuse layer) can provide faster programming bandwidth than NAND Flash or other types of memory arrays. In other embodiments, the antifuse memory element is replaced by a re-writable memory material such as a thin layer of nickel oxide, aluminum oxide, titanium oxide, PCMO, carbon-nano tubes, lightly-doped silicon, or other switchable-resistance materials. Additional details about a preferred diode-antifuse memory array are provided below.
Yet another limitation on programming speed is localized heating of the memory array to harmful temperatures. Even if a memory device is equipped with a high-speed programming port, power voltage supply pad, and/or a fast enough memory array to allow high-speed programming, localized heating of the memory array caused by high-speed programming can result in memory cells being damaged or the memory chip melting. Several techniques can be used to avoid localized heating of the memory array to harmful temperatures. For example, the video kiosk 100 can be equipped with a cooling system that cools the memory device as video content is being programmed into the memory device. As another example, the write circuitry in the memory device can be designed to program video content data in a distributed manner in the memory array to avoid localized heating. As programming data in a distributed manner may incur its own time penalty, it may be preferred to distribute data in an efficient manner. For example, in one presently preferred embodiment, which will be described in more detail below, the memory array is organized into a plurality of sub-arrays, and video content data is distributed among the plurality of sub-arrays. The memory device can also comprise a temperature sensor and circuitry operative to control the programming of the video content data based on a temperature sensed by the temperature sensor. For example, the circuitry can delay a programming operation or select fewer sub-arrays for programming if the temperature sensed by the temperature sensor exceeds a threshold amount.
With the general programming techniques and memory organization having been presented, the following paragraphs will describe a presently preferred memory architecture for use in a video kiosk environment. It again should be noted that any details presented herein are meant merely to illustrate the embodiments and should not be read into the claims unless explicitly recited therein. Also, the various embodiments can be used alone or in combination with one another.
Staring first with the architecture of the memory array 700, it is presently preferred that the memory array 700 take the form of a three-dimensional memory array. As used herein, a three-dimensional memory array refers to a memory array comprising a plurality of layers of memory cells stacked vertically above one another above a single silicon substrate. In this way, a three-dimensional memory array is a monolithic integrated circuit structure, rather than a plurality of integrated circuit devices packaged or die-bonded in close proximity to one another. Although a three-dimensional memory array is preferred, the memory array 700 can instead take the form of a two-dimensional (planar) array. The following patent documents, which are hereby incorporated by reference, describe suitable configurations for three-dimensional memory arrays, in which the three-dimensional memory array is configured as a plurality of levels, with word lines and/or bit lines shared between levels: U.S. Pat. Nos. 6,034,882; 6,185,122; 6,420,215; 6,631,085; and 7,081,377. Additional details of bias conditions, bias circuits, and layer decoder circuits particularly suitable for a three-dimensional memory array of write-once antifuse passive element memory cells are described in U.S. Pat. No. 6,618,295, which is hereby incorporated by reference.
In this embodiment, the memory cells in the three-dimensional memory array 700 are preferably passive element memory cells comprising a diode and a switchable resistance material (such as an antifuse layer) arranged in a vertical pillar between X lines (i.e., word or row lines) and Y lines (e.g., bit or column lines), as described in more detail in U.S. Pat. No. 6,951,780, which is hereby incorporated by reference. As compared to some other types of memory technology, passive element memory cells are very low cost. As used herein, a passive element memory array includes a plurality of two-terminal memory cells, each connected between an associated X-line and an associated Y-line. Each such memory cell has a non-linear conductivity in which the current in a reverse direction (i.e., from cathode to anode) is lower than the current in a forward direction. Application of a voltage from anode to cathode greater than a programming level changes the conductivity of the memory cell. The conductivity may decrease when the memory cell incorporates a fuse technology or may increase when the memory cell incorporates an antifuse technology. Such passive element memory cells may generally be viewed as having a current steering element directing current in one direction and another component that is capable of changing its state (e.g., a fuse, an antifuse, a capacitor, a resistive element, etc.). In certain preferred embodiments, the memory element is a diode-like structure having a p+ region separated from an n− region by an antifuse element. When the antifuse element is programmed, the p+ region is electrically connected to the n− region and forms a diode. The programming state of the memory element can be read by sensing current flow or voltage drop when the memory element is selected. In an alternative organic PEMA embodiment, the memory element is a diode-like structure having an anode region separated from a cathode region by an organic material layer whose conductivity changes as electrons are injected into the layer.
Preferably, the memory cells are comprised of semiconductor materials, as described in U.S. Pat. Nos. 6,034,882; 5,835,396; 6,420,215; and 6,515,888, each of which is hereby incorporated by reference. Although an antifuse memory cell is preferred, other types of memory arrays that are stackable over support circuits can be used, such as magnetoresistive random access memory (MRAM) and organic passive element arrays. MRAM is based on magnetic memory elements, such as a magnetic tunnel junction (MTJ), and is described in “A 2556 kb 3.0V ITIMTJ Nonvolatile Magnetoresistive RAM” by Peter K. Naji et al., published in the Digest of Technical Papers of the 2001 IEEE International Solid-State Circuits Conference, ISSCC 2001/Session 7/Technology Directions: Advanced Technologies/7.6, Feb. 6, 2001 and pages 94-95, 404-405 of ISSCC 2001 Visual Supplement, both of which are hereby incorporated by reference. Certain passive element memory cells incorporate layers of organic materials including at least one layer that has a diode-like characteristic conduction and at least one organic material that changes conductivity with the application of an electric field. U.S. Pat. No. 6,055,180 describes organic passive element arrays and is hereby incorporated by reference. Memory cells comprising materials such as phase-change materials and amorphous solids can also be used. See U.S. Pat. Nos. 5,751,012 and 4,646,266, both of which are hereby incorporated by reference. Memory cells can also comprise resistance change materials including transition metal oxides, as described in more detail in U.S. patent application Ser. No. 11/287,452, which is hereby incorporated by reference, and carbon nano-tube layers, which may be formed as described in U.S. patent application Ser. Nos. 10/860,432; 10/860,334; and 09/915,093; which are also hereby incorporated by reference.
Although the memory cells in the memory array 700 are preferably one-time programmable to increase programming bandwidth, some or all of the memory cells in the memory array 700 can be rewritable memory cells, as described, for example, in U.S. patent application Ser. No. 11/237,167, which is hereby incorporated by reference. In general, a rewritable memory cell may incorporate a reprogrammable memory material for which the conductivity may decrease or increase after application of a suitable electrical pulse. Additional alternatives can be used. For example, in the above description, an array line was generally shared by two levels of the memory array (i.e., memory planes). Alternatively, a memory array can be fabricated having two conductors for each plane that are not shared with other planes. A dielectric layer may be used to separate each such memory level. Also, while X-lines are usually orthogonal to Y-lines, they do not have to be. Moreover, the word and bit line organization of a memory array may also be easily reversed, having Y-lines organized as word lines and X-lines organized as bit lines. As an additional example, portions of an array may correspond to different output bits of given word.
Additionally, in some embodiments, a selected word line is driven to a voltage, and a selected bit line is sensed in a read mode, with memory cell anode terminals connected to word lines and cathode terminals connected to bit lines. However, other arrangements can be used. For example, in a three-dimensional (i.e., multi-level) memory array, an adjacent memory plane can be connected with a back-to-back diode stack memory array, as described in U.S. Pat. No. 6,034,882 (referred to above), or the directionality of memory cells can be reversed in the adjacent plane (e.g., a serial chain diode stack memory array as described in U.S. Pat. No. 6,631,085, which is hereby incorporated by reference) so that the anode terminals are connected to bit lines and the cathode terminals to word lines. Consequently, the designations herein of X-lines, word lines, row lines, Y-lines, bit lines, and column lines are illustrative and should not be viewed in a restrictive sense. For example, sensing circuits may be coupled to word lines rather than bit lines or may be used for both word lines and bit lines. It should be appreciated that the designations X-line and Y-line for various array lines of a memory array on a serial chain diode stack do not necessarily imply which terminal of the memory cells (i.e., anode or cathode) is coupled to the particular line, as with a back-to-back diode stack. An X-line may be coupled to the anode terminal of memory cells in one associated memory plane and may be coupled to the cathode terminal of memory cells in an adjacent memory plane.
Returning to the drawings, as shown in
In this embodiment, there are 8,192 memory cells on an X-line and 1,024 memory cells on a Y-line on each layer. The memory array 700 comprises eight layers of Y-lines and four layers of X-lines, which are associated with memory cells both above and below the X-lines. Each memory sub-array also has eight layers of memory cells. An X-line is selected for programming by applying ground bias. Multiple programming circuits associated with a sub-array drive multiple Y-lines to a programming voltage for a programming time of about 250 ns to program multiple cells associated with the X-line and Y-line. Unselected cells have a reverse bias, which causes a diode leakage current of about 1 pico Amp on about 64 million cells. This consumes a relatively significant amount power and can limit the number of sub-arrays that can be selected for programming simultaneously. In order to increase the programming bandwidth, one or more of the various techniques described above can be used (e.g., using an external source of programming voltage, controlling the number of sub-arrays that are programmed, distributing page data over many sub-arrays, and using temperature feedback circuitry). Further, as diode leakage increases exponentially with temperature, it is preferred that the video kiosk 100 comprise a cooling system to maintain chip temperature at about 40 degrees C. or lower, as will be described below.
The memory cells are preferably organized in many sub-arrays in an arrangement that allows high-programming bandwidth, as described in U.S. Pat. No. 7,106,652, which is hereby incorporated be reference. Higher-speed programming for antifuse memory cells can be accomplished by controlling the programming time using programming and read circuits that incorporate a method for sensing while programming, as described in more detail in U.S. Pat. No. 6,574,145, which is hereby incorporated by reference.
Because the memory array 700 is organized into many sub-arrays that are separately selectable in groups of one or more sub-arrays, various data bits of a data set can be physically spread out and mapped into a large number of associated sub-array groups to distribute the heat of the programming operation and achieve the highest possible programming data rate, as described in more detail in U.S. Pat. No. 6,633,509, which is hereby incorporated by reference. Preferably, the page register that contains the data to be programmed is divided into many portions, with each portion being associated with a sub-array and programming circuits, so data is programmed in parallel to many sub-arrays. In this way, the data to be programmed is organized so that a maximum number of sub-arrays are activated for programming simultaneously.
As programming in this fashion can still lead to overheating, it is presently preferred that the video kiosk 100 contain a cooling system (as described below) to keep the temperature of the memory IC below 40 degrees C. This should allow the maximum number of sub-arrays containing data to be safely programmed simultaneously. Additionally or alternatively, the non-volatile memory IC 530 can comprise a temperature sensor and circuitry responsive to the temperature sensor to delay programming operations or to reduce the number of sub-arrays activated for programming simultaneously based on the temperature of the IC 530. A preferred method of controlling programming conditions based on temperature is described in more detail in U.S. Pat. No. 6,735,546, which is hereby incorporated by reference.
Further, as discussed above, the non-volatile memory IC 530 in this embodiment comprises a programming voltage supply pad 640, which preferably receives an external source of programming voltage of about 4 volts to 15 volts, as required by the memory cells. Since the high voltage is not generated on chip, the number of sub-arrays active for programming simultaneously and the number of bits in each sub-array being programmed can increase without overheating the memory IC 530. The use of an external source of programming voltage is described in more detail in U.S. Pat. No. 6,545,898, which is hereby incorporated by reference. As discussed above, in this embodiment, the external source of programming voltage preferably comes from the video kiosk 100.
Turning now to a specific example, in this embodiment, the high-speed input circuitry 630 acts as a latch that captures data on the 16-data-input-line high-speed bus every 5 ns (i.e., on the rising and falling edges of the 10 ns clock). (The high-speed input circuitry 630 can also handle differential voltage when the high-speed programming port is a PCI Express interface). As shown in
To program the 128 sub-arrays in parallel, a distributed page register is used.
Data from the high speed input circuitry 630 is temporarily stored in a page register that is distributed as 128 portions associated with the 128 groups of sub-arrays. Each individual page register slice 830 has 32 bits of information associated with the 32 cycles to complete a page of programming. The shadow page register 840 has the same structure as the page register 830 and is associated one-to-one with the page register 830. While the page register data is being programmed, the shadow page register 840 can be loaded with the next page of data from the high speed input circuitry 630. A highly-parallel transfer of data from shadow page register 840 to the page register slice 830 is used. Thus, the programming operation is pipelined to increase sequential page programming performance by almost two times.
In one embodiment, 128 sub-arrays are activated for programming, with eight cells selected for programming simultaneously in each sub-array. 32 cycles of programming complete the programming of a page of data containing 4,096 bytes of data. (The page size may not be exactly 4,096 bytes because of extended page space and other overhead.) Each programming cycle (including overhead to bias sub-arrays and control write circuits) is about 320 ns. Therefore, a programming data rate of 400 MB/sec can be achieved.
In conclusion, it should again be noted that the examples set forth above were merely used to illustrate these embodiments and are not intended as a limitation on the claims. Various alternatives can be used, and the details set forth above should not be read into the claims unless explicitly recited therein.
Returning to the drawings,
Turning first to the movement of the carriage assembly 1005, the first and second tracks 1010, 1020 each comprise two rails 1012, 1014, 1022, 1024, which can be integral with or separate from the tracks 1010, 1020. The carriage assembly 1005 comprises first and second carriage components 1030, 1040, each with two wheels 1032, 1034, 1042, 1044 that rest on the rails 1012, 1014, 1022, 1024 of the respective tracks 1010, 1020 and allows the carriage components 1030, 1040 to roll thereupon. (In an alternate embodiment, instead of using wheels, the first and second carriage components 1030, 1040 can rest directly on and slide along the rails 1012, 1014, 1022, 1024.) In this embodiment, first and second screw drives 1050, 1055 are used to move the carriage assembly 1005 along the first and second tracks 1010, 1020. (Although any type of movement mechanism can be used, screw drives 1050, 1055 are preferred in this embodiment because they provide precision and good range of motion in a constrained space.) Each screw drive 1050, 1055 is coupled with a respective screw 1052, 1057, which is supported by a respective screw support 1054, 1059. The first and second carriage components 1030, 1040 each comprise respective holes 1033, 1043 through which the respective screws 1052, 1057 are threaded. As the screw drives 1050, 1055 turn the screws 1052, 1057 in one direction, the first and second carriage components 1030, 1040 (and, thus, the carriage assembly 1005) move from left to right along the first and second tracks 1010, 1020. Similarly, as the screw drives 1050, 1055 turn the screws 1052, 1057 in the opposite direction, the first and second carriage components 1030, 1040 (and, thus, the carriage assembly 1005) move from right to left along the first and second tracks 1010, 1020. Through this movement, the screw drives 1050, 1055 can move the pickup head 1150 to a desired location along the X axis.
The carriage assembly 1005 contains two lateral support rails 1007, 1009 and components to move the arm 1100 and pickup head 1150 along the two lateral support rails 1007, 1009 in the Y direction. Specifically, the carriage assembly 1005 comprises dual screw drives 1060 that turn screws 1062, 1064, which are supported by screw supports 1065 and are threaded through two holes 1102, 1104 in the arm 1100 (see
The arm 1100 and pickup head 1150 are shown in more detail in
In summary, the transport mechanism 1000 allows the fingers 1160, 1165 of the pickup head 1150 to move to any desired X, Y, and Z location in the video kiosk 100, so that the grips 1162, 1167 of the pickup head 1150 can move the memory device component to the various processing stations in the video kiosk 100 and, ultimately, deliver the final memory device product to the user. By way of example only, in one embodiment, the fingers 1160, 1165 are about six inches long, the body of the pickup head 1150 is about one inch long, the support arms 1125, 1127, 1129 are about eight inches long, and the arm 1100 is about four inches long. Because there is a shorter distance from the component 1114 to the pivot point 1116 than from the pivot point 1116 to the body 1155 of the pickup head 1150, the screw drive 1114 can translate the pickup head 1150 quite a bit up and down with a relatively small amount of rotation (preferably, the screw drive 1114 can pivot the support arms +/−45 degrees with respect to normal). Also in this embodiment, the dimensions of the trays 910, 920, 930, and the various stations 940, 950, 960 are about six inches left to right and twelve inches top to bottom. Because the fingers 1160, 1165 are about six inches long in this embodiment and the trays 910, 920 are about six inches wide, the grips 1162, 1167 of the fingers 1160, 1165 will be able to grab memory device components anywhere on the trays 910, 920. Also, as mentioned above, because the pickup head 1140 can be translated in the Z direction, the fingers 1160, 1165 of the pickup head 1140 will be able to grab memory device components on stacked trays. In one embodiment, the fingers 1160, 1165 have a height of about a half inch, and there is about two inches or less between two stacked trays.
Returning to
As mentioned above, in this embodiment, both the trays of interim packages 910 and the tray of final package shells 920 are placed in the video kiosk 100 through the removable panel 165 in the front of the video kiosk 100 (see
The interim package and the final package shell can take any suitable form. As mentioned above, different interim packages can be used with different memory capacities. This can allow the video kiosk 100 to choose the appropriate interim package based on the size of the selected video content and charge the customer accordingly. Although it is presently preferred in this embodiment that the interim packages have the same shape, in other embodiments, different interim packages can have different shapes (with or without having different memory capacities). Similarly, the video kiosk 100 can stock a variety of different-shaped final package shells, which allows a user or the video kiosk 100 to select a desired form factor/format compatible with the user's memory device player. Examples of the final package shells include, but are not limited to, those that are compatible with the following form factors/formats: CompactFlash™ (CF™) Storage Card, SD™, SD™(HC), MiniSD™(HC), MMC™, MMCPlus™, MMCmobile™, MicroSD™(HC), Memory Stick™, Memory Stick PRO™, Memory Stick Duo™, and Memory Stick PRO Duo™. The next several drawings illustrate several interim packages and final package shells. These drawings are for illustration purposes only, and it should be noted that other types of interim packages and final package shells can be used.
Returning to the drawings,
e is a section view of the final package shell 1400 assembled onto the interim package 1300 of
a, 15b, and 15c are top, rear, and front views, respectively, of an alternate final package shell 1500 that can be used with the interim package 1300 of
In the previously-described embodiments, the high-speed programming pins 1310 and the user pins 1320 were on two surfaces of the same side of the interim package 1300. In an alternate interim package 1600 shown in
The interim package 1600 of
The high-speed programming pins of the programming port 1800 mate with the high-speed programming port 1610 of the interim package 1600 to provide electrical and mechanical communication between the interim package 1600 and the video kiosk 100. Control circuitry (not shown) of the video kiosk 100 then commences programming video content into the memory array of the non-volatile memory IC 1640 of the interim package 1600. As this programming occurs, the fan 1810 and the cooling plate 1830 cool the interim package 1600 to avoid overheating. (In addition to or instead of using the cooling system of the video kiosk 100, the interim package 1600 can use one or more of the above-described programming techniques to avoid overheating.)
Before, during, or after the programming of the interim package 1600 is complete, the pickup head 1150 grabs the appropriate final package shell 1700 from the tray of final package shells 920 with its finger grips 1162, 1167 and positions it on a mount 1900 in the final package station 950 (see
As shown in
Before or after the final memory package 2000 is delivered to the label station 960, the pickup head 1150 can plug the final memory package 2000 into an appropriately-sized slot in the plurality of slots 1870 in the programming station 940. Each slot comprises contacts that can mate with the user port of a final memory package, and the read/write electronics 1880 can perform verification of the programmed video content and/or store additional information in the memory array.
When the final memory package 2000 is ready to be delivered to the end user, the arm 1100 raises the pickup head 1150 to position the final memory package 2000 above the opening 970 of the chute 160 (see the diagrammatic illustration in FIG. 21). When the pickup head 1150 releases its grip, the final memory package 2000 drops through the opening and slides down the chute 160, where it can be picked-up by the user by opening the swinging door 163.
There are many alternatives that can be used with these embodiments. For example, many alternative structures can be used for the transport mechanism. In one alternate embodiment, instead of using a movable carriage, a rotating arm is used, and the various processing stations are located in a circle along the circumference defined by the radius of the rotating arm. In yet another alternate embodiment, multiple arms are used, instead of the single arm described above. Irrespective of the transport mechanism used, one or more of the processing stations can have its own system for moving a part. For example, the label station can have a conveyor belt to move a memory device from a label-feed-and-application sub-station to an ink-jet-printer-head sub-station. Further, as indicated above, each processing station can have a different configuration than the configuration presented herein (e.g., the final package station can use only pressure instead of heat to combine an interim package and outer package shell), and fewer or more processing stations can be used. As yet another example, in embodiments where the video kiosk comprises a memory device input, which allows a user to supply his own memory device to the video kiosk, the memory device input can merely be an exposed port that couples with a port on the user-supplied memory device, or the memory device input port can receive a memory device and provide it to the video kiosk's internal transport mechanism for movement among various processing stations in the video kiosk. As can be seen from these exemplary alternatives, the embodiments described above are merely for illustration purposes, and many alternatives can be used. Accordingly, the details presented herein should not be read into the claims unless explicitly recited therein.
While video content can be stored in the video kiosk 100 and programmed into a memory device in an unprotected form, it may be preferred to equip the video kiosk 100 with a security system to ensure that video content is stored securely both in the video kiosk 100 and in the programmed memory device. With such a security system in place to prevent unauthorized copies, studios and other video content owners may be more likely to allow their video content to be locally-loaded onto a removable solid-state memory device by the video kiosk 100. The following paragraphs provide examples of various types of security mechanisms that can be used. Of course, other types of security mechanisms can be used, and any of these security embodiments can be used alone or in combination with the other embodiments described herein.
Returning to the drawings,
The transfer of video content from the content server 2210 to the video kiosk 100 can take place at any time. For example, the video kiosk 100 can make regular connection to the content server 2210 to download video content, so that video content is stored in the local mass storage device 2200 prior to a user selecting the video content via the video kiosk's user interface. Alternatively, if the local mass storage device 2200 does not have a video title desired by a user, the video kiosk 100 can contact the content server 2210 on-the-fly to download the desired video content. Preferably, the connection between the video kiosk 100 and the content server 2210 is suitably fast (e.g., at a broadband connection speed), so the user does not have to wait too long for the downloading to be complete. As yet another alternative, instead of pre-downloading video content or downloading video content on-the-fly, a service technician at the physical location of the video kiosk 100 can upload video content to the local mass storage device 2200 (e.g., by using a laptop computer connected to one of the plurality of ports 180) or by swapping out the local mass storage device 2200 in the video kiosk 100 with another local mass storage device that contains new video content.
The video kiosk 100 also comprises a local secure storage device 2230 that stores the keys (e.g., “content encryption keys” or “CEKs”) needed to decrypt the encrypted video content stored in the local mass storage device 2200. Although the local secure storage 2230 is separate from the local mass storage device 2200 in this embodiment, the local secure storage 2230 device can be part of the local mass storage device 2200. In this embodiment, the keys are downloaded from a key server 2240 accessible via the Internet 2220 using a secure transmission protocol (a “secure channel”) to prevent someone from gaining unauthorized access to the transmitted keys. While a secure transmission is generally slower than an un-secure transmission because of the security protocols involved, because the keys contain a limited about of data, the delays imposed by the security protocols should not be that noticeable by the user. As with encrypted video content, the video kiosk 100 can download the keys before or in response to a selection of video content by a user, and the keys can be locally delivered by a service technician instead of downloaded over a network.
As shown in
Although any number of keys can be used, it is presently preferred that there be one key for each video content title stored in the local mass storage device 2200. Instead of all of the encrypted copies of a given video title having the same encryption key, a key can be periodically changed, and the encrypted video content on the content server 2210 can be revised accordingly. In this situation, it may be preferred to download the key from the key server 2240 when the encrypted video content is downloaded from the content server 2210 to keep synchronization between the key and the encrypted video content file. Alternatively, the control software and circuits 2250 in the video kiosk 100 can re-encrypt the video content stored in the local storage 2200 with the new key.
Returning to
The programming circuits 2260 also program the associated content encryption key (“CEK”) 2274 for the encrypted video content 2272 into the removable memory device 2270 (preferably also using the fast programming connection or, alternatively, using a slower-connection port). Preferably, the programming circuits 2260 program the CEK 2274 into the removable memory device 2270 using a secure mechanism so the CEK 2274 cannot be intercepted during the transfer. Since the CEK 2272 comprises only a relatively limited amount of data, the delay caused by using a secure transfer mechanism should not be that noticeable to the user.
In one embodiment, the controller circuits 2276 also comprise a decryption engine to decrypt the encrypted video content 2272 using the CEK 2274 and provide the decrypted data to a playback device at a speed sufficient for user enjoyment of the video content. This speed generally requires a much slower connection than the fast programming connection used to program the video content in the memory device 2270 (e.g., the speed needed to provide “real time” playback of the video content from the memory device 2270). Accordingly, as discussed above, in one embodiment, the memory device 2270 comprises two ports: (1) a high-speed programming port (e.g., a DDR2 interface that can provide a write speed of about 500 MB/sec or more) used to provide a fast programming connection and (2) a conventional, easy-to-drive user port, such as an SD port in communication with a page-based NAND Flash interface, to provide a data rate of about 5-20 MB/sec. As also mentioned above, if desired, user access to the high-speed programming port can be impeded (e.g., using non-conductive ink, a label, or an outer package shell), or a memory device with a dual-use port (e.g., a PCI express interface) can be used.
There are several alternatives that can be used with these embodiments. For example, while a decryption engine is relatively low-cost circuitry, some memory devices may not be equipped with a built-in decryption engine. In this alternative, the memory device can output the encrypted video content and the associated CEK to a video playback device for decryption. However, it is preferred that the CEK be transferred to the video playback device using a secure channel and that the video playback device authenticate itself to the memory device as a device that can be trusted with the CEK. In another alternative, which will be described in more detail below, the security system on the memory device can allow the transfer of the encrypted video content without the associated CEK. Consider, for example, the situation in which a first user purchases a video title and has both the encrypted video content and the associated CEK on his memory device. This first user could copy the encrypted video content from his memory device onto a second user's memory device. A later time, the second user could enable that video content by interacting with another kiosk (or other device connected to the key server) to download the associated CEK. Additionally, selected copies can be made and controlled from the first user's copy, with or without assessing a fee. For example, the first user could be allowed to make (or “check-out”) lower-resolution copies of the video from the “master copy” on his memory device. In yet another alternative, the video kiosk can program the encrypted video content—but not the CEK—into a memory device, and the memory device can be delivered to the user before payment of the video content/memory device is arranged. Without the CEK, the user cannot view the video content, so he would not have an incentive to take the memory device from the store without paying for it. At a separate kiosk or programming station, preferably at the checkout area of the store, a store employee can receive payment from the user and program the CEK in the memory device. (In an alternative embodiment, the user uses the video kiosk merely to make a video selection and picks up the programmed memory device from the checkout area of the store.)
In yet another alternative, to provide an even more robust security system, video content stored in the video kiosk 100 can be encrypted differently from the video content stored in the removable memory device (instead of using the same key, as in the above embodiments). In operation, when the memory device receives the encrypted video content and key from the video kiosk 100, the memory device can decrypt the video content using the key and then re-encrypt the video content on-the-fly with a separate key stored in the memory device. However, if a memory device has processing power limitations, it may not be able to perform decryption and re-encryption in real time while still achieving a desired high data rate (e.g., 500 MB/sec).
While a variety of suitable security mechanisms can be used, it is presently preferred that the removable memory device 2270 of
In the TrustedFlash™ approach, the video content is encrypted and decrypted using a secure key (CEK) contained within the memory device and not accessible outside of it. The user interacts with the removable storage device by authenticating to the device and, when authenticated, a “system agent” within the device creates and manages the allowed user permissions to the content on a user-by-user basis and on a content-file-by-content-file basis (or group of files). In this case, the high-speed programming circuits 2260 of
The content from the kiosk can be either encrypted or not, but is preferably re-encrypted and stored using a CEK known only to the memory device. Prior to beginning the download, the kiosk authenticates to the memory device and establishes a file identification for the succeeding content. This interaction is controlled by an “Access Control Record” (ACR) or “Rights Object” (RO) created within the TrustedFlash™ device that associates the internal CEK with this file identification and initializes the internal encryption engine to perform encryption of the succeeding data using this CEK. As the data is transferred to the device, it is encrypted by the encryption engine and stored in an encrypted format in a restricted region of the memory device. (In one embodiment, the encryption engine is operative to keep up with the data transfer rate of the high-speed programming interface (e.g., the encryption can be 64-bit combinatorial encryption, which operates at a sub-multiple of the high-speed transfer clock rate).) In one embodiment, the kiosk can establish the specific rights associated with the current user who has purchased the content by creating an ACR for that user containing those specific rights which have been purchased. In another embodiment, the kiosk can identify the content, and an ACR containing the user rights associated with the content can be created at a subsequent step or location, for example at the checkout counter or even at the playback device. Such rights, as detailed in the applications cited above, can include the number of allowed accesses, the type of access (for example, preview, low-resolution playback, high-resolution playback, etc), type or serial number of allowed playback devices, the duration time period of accesses, etc.
When access to the stored content is desired, the user again authenticates to the memory device through the Access Control Record and identifies the content requested using the content identification assigned by the kiosk when loading the content. Depending on the access model and rights, the authentication can be highly restricted or widely open for anyone to access the content within the other allowed access parameters. In one embodiment, authentication may be automatic, and any playback machine can access the content through the user interface as long as any other restrictions of the Rights Object associated with the selected content file identification are met. In another embodiment, the content may only be accessed via a specific playback device. In this embodiment, the playback device (or another device accessible to the playback device at the time of playback) authenticates to the memory device. Included within the scope of this embodiment is the purchase of rights via an Internet connection to a Key Server such as 2240 of
Turning again to the drawings,
In this embodiment, the control program and electronics 2300 display movie trailers or advertisements on the video touch screen 140 while waiting for an active user. These trailers or advertisements can be stored in the storage device 2310 or can be downloaded from the Internet or other network location. When a user touches the screen 140, the control program and electronics 2300 display a graphical user interface, which can include, for example, an options menu including an option to acquire the video content that was just shown on the screen, an option to view a menu of similar video titles, and an option to search for video content based on movie type, movie name, actors, etc. Using these or other menus, the user can indicate a video selection choice by touching the desired title displayed on the touch screen display 140. Alternatively, the user can use the key pad 145 or some other user interface element on or in communication with the video kiosk 100 to make the selection (e.g., a track ball, microphone, stylus, remote control device, etc.).
As another alternative, the control program and electronics 2300 can present a user with a log-in screen. After the user logs-in to the video kiosk 100, the control program and electronics 2300 can retrieve the user's record from the storage device 2310 or from data servers accessible over the Internet. The user's record can contain, for example, user profile information, preference data, information on prior video selections, recommended video selections, “wish list” video selections, account information, and payment transaction verification. Account information, “wish list” video selections, and other information in the record can be updated by the user at the video kiosk 100, at another video kiosk, or on-line using a computer or other device. Based on the user's record, the control program and electronics 2300 can automatically select video content for the user or can present a list of recommendations. “Method for Field-Programming a Solid-State Memory Device with a Digital Media File,” U.S. patent application Ser. No. 09/823,489, filed Mar. 30, 2001, which is hereby incorporated by reference, describes various content selection embodiments and other embodiments that can be used with this and any other embodiment described herein.
Irrespective of the selection process, after video content is selected, the control program and electronics 2300 can display another screen presenting options for the quality level of the video content versus price, which can be updated based on the available media in the video kiosk 100 (as described in more detail below). The control program and electronics 2300 can then present a payment screen to facilitate the purchase of the video content and removable memory device. Payment can be made either through the payment device 150 on the video kiosk 150, or the cost of the video content can be deducted from the user's account or automatically charged to a credit card on file in the user's record. After the user confirms the purchase, the control program and electronics 2300 initiate the media programming process described above. As the memory device is being programmed, the control program and electronics 2300 can display trailers of related video titles, advertisements, options to search and purchase other video content, and options to provide other services.
If the selected video content is stored in the local storage device 2310, the control program and electronics 2300 can begin programming the media device immediately. However, it is possible that the selected video content will not be stored in the local storage device 2310. For example, in one embodiment, the storage device 2310 stores trailers, advertisements, and frequently-requested video content, and if the selected video content is not among the stored frequently-requested video content, the control program and electronics 2300 can retrieve the selected video content from the video content servers accessible over the Internet (or other network). If downloading the video content will take a long time, the video kiosk 100 can display a message requesting the user to return in a time greater than the predicted download time for the requested video content.
As described above, in one embodiment, the video content is programmed into the memory device in an encrypted form, and the control program and electronics 2300 also program a decoding key (e.g., a content encoding key (“CEK”)) in the memory device. If programming the decoding key is the last step in the programming process, it may be preferred to wait until the key is programmed into the memory device before processing payment. Alternatively, the video kiosk's memory device delivery chute 160 (see
The control program and electronics 2300 can also contain sales delivery optimization algorithms to calculate available space on a to-be- (or already-) programmed memory device and can provide flexible on-the-fly-delivery of video content based on that calculation. For example, the control program and electronics 2300 can record additional features or delete features (with or without a price adjustment) to efficiently use a media capacity. These and other features will be described below with reference to
In the example shown in
Also, as shown in
As mentioned above, the control program and electronics 2300 can be used to implement other business models. For example, the control program and electronics 2300 can pre-load extra features or additional video in an encrypted form without the CEK needed to access those features/videos. When the user later connects the memory device to his player, a message can be displayed indicating that additional content is available and providing instructions on how the user can purchase the key to enable use of the content. As another example, the message can be displayed on the video kiosk 100 or printed on the package of the memory device, so the user is informed of the option to purchase the key on-the-spot (at the video kiosk or at a checkout area in the store).
Returning again to the drawings,
The control program and electronics 2300 can track the rate of program fails and predict if the overall video content programming to the memory device will succeed or fail. If the control program and electronics 2300 predict failure and the memory device has enough room for a lower-quality version of the video content, the control program and electronics 2300 can offer the lower-quality version of the video content to the user at a discount. If the user accepts the offer, the control program and electronics 2300 program the lower-quality version of the video content into the memory device and deliver the memory device to the user. If the user declines the offer, the control program and electronics 2300 program the originally-selected video content onto a new memory device.
In one embodiment, the control program and electronics 2300 note the available space and partially-programmed state of a memory device (e.g., in a log in a storage area of the video kiosk 100) and places the memory device in the recycling tray 930 of the video kiosk 100 (see
Also included within the scope of these embodiments is the re-use of previously programmed devices. As described earlier with respect to TrustedFlash™ devices, new rights can be easily applied for a new user, and a previously-used device can be added to the local kiosk inventory. In this case, only the Rights Object needs to be updated for the new user; no new content need be loaded, and the acquisition time for the user would be of the order of a few seconds, primarily limited by kiosk mechanical movement and credit card verification. As an incentive to acquire “used” memory devices, the kiosk owner may offer a discount or rebate when a user returns a previously-purchased memory device.
As mentioned above, the partially-programmed state of a memory device can be programmed into the memory device. This concept will be illustrated in conjunction with the memory device 2600 in
It should be noted that capacities do not have to be binary as shown in the table and that much larger capacities, which tend to increase with time, can be used. Further, a special page (such as page zero) can be used to hold manufacturing information and the partially-good designations. The partially-good designations could optionally be stored on chip in a separate, small memory cell array.
In operation, when the video kiosk 100 contacts the memory device 2600, the control logic state machine 2620 sends a read designation request to the memory 2630 for the partially-good designation. When the control logic state machine 2620 receives the capacity code and type, it sends that information to the video kiosk 100. If the video kiosk 100 chooses to use the memory device, it sends a logic address of a programming location. The control logic state machine 2620 uses address translation logic 2625 to translate this logical address into a physical address of the memory array 2610. Because the address translation logic 2625 receives pointer information from the partially-good designation, the address translation logic 2625 will provide translated physical addresses only for the good portions of the memory array 2610. A similar process occurs during read, with the page register 2640 being used to temporarily store data that will be outputted by the memory device 2600.
As mentioned above, it is preferred that the partially-good designation be stored in a non-volatile memory array of one-time programmable memory cells. Although the data in this memory 2620 will be updated as information about pointers and unused memory areas change, because the memory 2620 is one-time programmable, the original, unmodified data will still be present in the memory 2620 even after updated information is written. Preferably, pointers are used to point to the most-recent information about pointers and unused memory areas, as described in more detail in U.S. Pat. No. 7,062,602, which is hereby incorporated by reference. Additionally, firmware in the memory array 2610 can be updated using a similar mechanism.
There are many alternatives that can be used with these embodiments. For example, in addition to programming a key into the memory device, the video kiosk 100 can program a license that provides DRM restrictions for the video content (e.g., limited number of uses, time limitations, etc.). In this alternative, the memory device or player can contain functionality to validate the license. As there are many alternatives that can be used, details presented in these embodiments should not be read into the claims unless explicitly recited therein.
Many embodiments relating to digital content kiosks were described above. While “digital content” took the form of video content and the “digital content kiosk” took the form of a video kiosk in many of the above examples, it should again be noted that these are merely examples and other forms of digital content can be used. Accordingly, no specific form of digital content should be read into the claims unless explicitly recited therein. It is also important to again note that any of these embodiments can be used alone or in combination. For example, any of the exemplary security aspects discussed above can be used without or without any of the exemplary memory devices, architectures, and programming techniques discussed above.
Finally, it is intended that the foregoing detailed description be understood as an illustration of selected forms that the invention can take and not as a definition of the invention. It is only the following claims, including all equivalents, that are intended to define the scope of this invention. Also, some of the following claims may state that a component is operative to perform a certain function or configured for a certain task. It should be noted that these are not restrictive limitations. It should also be noted that the acts recited in the claims can be performed in any order—not necessarily in the order in which they are recited. Additionally, any aspect of any of the preferred embodiments described herein can be used alone or in combination with one another.