US5854939AExpiredUtility

Eight-bit microcontroller having a risc architecture

Assignee: ATMEL CORPPriority: Nov 7, 1996Filed: Nov 7, 1996Granted: Dec 29, 1998
Est. expiryNov 7, 2016(expired)· nominal 20-yr term from priority
G06F 9/30018G06F 9/3885G06F 9/30138G06F 9/30112G06F 9/30101G06F 13/00G06F 9/3001G06F 15/7814G06F 9/342G06F 9/30021
33
PatentIndex Score
12
Cited by
24
References
20
Claims

Abstract

An eight-bit RISC based microcontroller includes an eight-bit register file having a dedicated arithmetic logic unit (ALU), in addition to a general purpose eight-bit ALU. The register file further includes means for combining a pair of registers to provide a logical sixteen-bit register for indirect addressing. The dedicated ALU is a sixteen-bit ALU which provides certain arithmetic functions for the register pair, thus alleviating the computational burdens that would otherwise be imposed on the general purpose eight-bit ALU. A further feature of the invention is the inclusion of a paging register which is combined with the contents of the logical sixteen-bit register to provide an even greater addressing range. Yet another feature of the eight-bit microcontroller of the present invention is the means for directly reading and writing to any bit position within the register file with a single instruction. This avoids having to perform various load, shift and/or masking operations needed by prior art microcontrollers.

Claims

exact text as granted — not AI-modified
We claim: 
     
       1. A microcontroller having a Harvard architecture, comprising: a program bus;   a program memory store for storing programs;   an instruction decoder unit coupled to said program store via said program bus;   an eight-bit data bus separate from said program bus;   randomly accessible memory separate from said program store coupled to said eight-bit data bus;   a register file coupled to said eight-bit data bus, said register file having a plurality of eight-bit registers, said register file further having means for combining two of said eight-bit registers to be accessed as a single logical sixteen-bit register;   a general purpose ALU coupled to receive the contents of two of said eight-bit registers, said general purpose ALU having an output coupled to said eight-bit data bus;   a direct-address bus coupling said program execution unit to directly access said data store and said register file during program execution; and   an indirect-address bus providing said register file with indirect data access to said randomly accessible memory during program execution;   said register file further including a dedicated ALU coupled to said means for combining in order to perform arithmetic functions on a logical sixteen-bit register accessed through said combining means;   said indirect-address bus having address-receiving means for receiving a sixteen-bit value from said combining means, thereby providing sixteen-bit indirect addressing.   
     
     
       2. The microcontroller of claim 1 wherein said register file further includes a selector means for outputting a numeric constant of -1, a numeric constant of +1, or a program-generated value, said dedicated ALU being coupled to receive output from said selector means in order to perform arithmetic with a logical sixteen-bit register accessed through said combining means. 
     
     
       3. The microcontroller of claim 2 wherein one of said two eight-bit registers is the low byte of said logical sixteen-bit register and the other of said two eight-bit registers is the high byte of said logical sixteen-bit register. 
     
     
       4. The microcontroller of claim 1 further including a paging register and address-forming means, coupled to said address-receiving means, for forming an address from the contents of said paging register and a sixteen-bit address provided by said combining means. 
     
     
       5. The microcontroller of claim 4 wherein said paging register is an eight-bit register, said paging register being coupled to said eight-bit data bus, whereby loading a value into said paging register specifies one of 256 pages of 64K bytes each. 
     
     
       6. The microcontroller of claim 1 further including a bit store for holding a single bit and means for transferring a bit between said bit store and a bit location in a register selected from said register file. 
     
     
       7. The microcontroller of claim 6 further including a status register coupled to said eight-bit data bus, said status register having a plurality of bit positions, one of which serves as said bit store. 
     
     
       8. In an eight-bit microcontroller having a program bus, a program store, a program execution unit coupled to said program store via said program bus, an eight-bit data bus, a data store separate from said program store coupled to said data bus, a general purpose eight-bit ALU having an output coupled to said data bus, and a first address bus coupling said program execution unit to said data store, the improvement comprising: a register file having a plurality of eight-bit registers accessible by said general purpose eight-bit ALU to provide eight-bit arithmetic on two of said eight-bit registers, said register file further having register means for providing access to two of said registers as a sixteen-bit register, said register file further having a sixteen-bit ALU and a value selector, said sixteen-bit ALU being coupled to receive a sixteen-bit datum from said register means and to receive a numeric value from said value selector to perform a computation therewith; and   a second address bus for receiving the result of a computation from said sixteen-bit ALU, said second address bus being coupled between said register file and said data store, the result of said computation being used as an address of a memory location in said data store.   
     
     
       9. The eight-bit microcontroller of claim 8 wherein said value selector provides a numeric constant of -1, a numeric constant of +1, or a program-generated numeric value. 
     
     
       10. The eight-bit microcontroller of claim 9 wherein said register file includes means for transferring either the result of said computation of said sixteen-bit ALU or a sixteen-bit datum from said register means to said second address bus. 
     
     
       11. The eight-bit microcontroller of claim 10 further including a paging register and means for forming an extended address based on the contents of said paging register and a sixteen-bit address provided from said register means. 
     
     
       12. The eight-bit microcontroller of claim 11 further including an external address bus and means for selectively coupling said extended address to said external address bus and to said second address bus. 
     
     
       13. The eight-bit microcontroller of claim 12 wherein said paging register is an eight-bit register. 
     
     
       14. The eight-bit microcontroller of claim 12 further including a bit store and means for transferring a one-bit datum between said bit store and a bit location in a register of said register file. 
     
     
       15. The eight-bit microcontroller of claim 14 further including a status register coupled to said eight-bit data bus, said bit store being a bit location in said status register. 
     
     
       16. An eight-bit microcontroller having a Harvard-based architecture, comprising: a program instruction decoder for decoding program instructions thereby generating control signals;   a randomly accessible memory;   a register file having a plurality of eight-bit registers, register means for accessing two of said eight-bit registers as a logical single sixteen-bit register, a numeric value selector for outputting either a "+1" value or a "-1" value, and a sixteen-bit adder for adding the output of said numeric value selector to said logical single sixteen-bit register;   an eight-bit ALU coupled to receive the contents of two of said eight-bit registers for arithmetic operations thereon;   a status register having a transfer bit for receiving a bit from one of said eight-bit registers and for copying a bit to one of said eight-bit registers;   a bit transfer means for transferring a bit between one of said eight-bit registers and said transfer bit of said status register;   an eight-bit data bus coupling together said data store, said register file, said eight-bit ALU, said status register, and said bit transfer means;   an address bus coupling said register file to said randomly accessible memory to access memory locations therein; and   control lines for carrying said control signals to said register file, said eight-bit ALU, said status register, and said bit transfer means.   
     
     
       17. The microcontroller of claim 16 including a first subset of program instructions each having a numeric opcode specifying an increment or a decrement code and a register-pair opcode specifying one of a pair of said eight-bit registers, wherein said instruction decoder is characterized by generating first control signals in response to said register-pair opcode and said numeric opcode which cause: said register means to access said pair of registers as a sixteen-bit register; said numeric value selector to output a "+1" or a "-1"; and said sixteen-bit adder to add said output of said selector to said sixteen-bit register. 
     
     
       18. The microcontroller of claim 17 wherein said numeric value selector includes means for receiving a numeric constant and for outputting said numeric constant, some of said first subset of program instructions having numeric opcodes which specify a numeric value, wherein said instruction decoder is further characterized by generating second control signals in response to those of said numeric opcodes which specify a numeric value, said second control signals being a binary representation of said numeric value which are received by said numeric value selector. 
     
     
       19. The microcontroller of claim 18 further including a second subset of program instructions each having a register opcode identifying a register in said register file and a bit opcode specifying a bit position of the register identified by said register opcode, wherein said instruction decoder is further characterized by generating third control signals in response to said register opcode and said bit opcode which cause said bit transfer means to transfer a bit between said transfer bit of said status register and the bit position designated by said register opcode and by said bit opcode. 
     
     
       20. The microcontroller of claim 19 further including a program instruction having a destination register opcode and a source register opcode, each specifying one of said eight-bit registers, said status register further including a carry bit, said eight-bit ALU being coupled to receive said carry bit, wherein said instruction decoder is further characterized by generating a fourth set of control signals in response to said destination and said source register opcodes which cause said eight-bit ALU to perform the following arithmetic computation:   Rd-Rr-C,     where Rd and Rr are the contents of registers respectively identified by said destination register opcode and said source register opcode, and C is the content of said carry bit.

Join the waitlist — get patent alerts

Track US5854939A — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.