Motorola 68000 16/32-Bit Microprocessor Family

Posted by: repair  :  Category: Instructive Microprocessors and Microcomputer
Motorola followed its 6800 family by leaping directly to a hybrid 16/32-bitmicroprocessor architecture. Introduced in 1979, the 68000 is a 16-bitmicroprocessor, due to its 16-bit ALU, but it contains all 32-bit registers anda linear, nonsegmented 32-bit address space. (The original 68000 did notbring out all 32 address bits as signal pins but, more importantly, there are noarchitectural limitations of using all 32 bits.) That the register and memoryarchitecture is inherently 32 bits made the 68000 family easily scalable toa full 32-bit internal architecture. Motorola upgraded the 68000 family withtrue 32-bit devices, including the 68020, 68040, and 68060, until switchingto the PowerPC architecture in the latter portion of the 1990s for newhigh-performance computing applications. Apple Computer used the 68000family in their popular line of Macintosh desktop computers. Today, the68000 family lives on primarily as a mid-level embedded-processor coreproduct. Motorola manufacturers a variety of high-end microcontrollersthat use 32-bit 68000 microprocessor cores. However, in recent yearsMotorola has begun migrating these products, as well as their general-purposemicroprocessors, to the PowerPC architecture, reducing the number of newdesigns that use the 68000 family.
The 68000 inherently supports modern software operating systems (OSs)by recognizing two modes of operation: supervisor mode and user mode.A modern OS does not grant unlimited access to application software inusing the computers resources. Rather, the OS establishes a restrictedoperating environment into which a program is loaded. Depending on thespeci?c OS, applications may not be able to access certain areas of memoryor I/O devices that have been declared off limits by the OS. This can preventa fault in one program from crashing the entire computer system. The OSkernel, the core low-level software that keeps the computer running properly,has special privi- leges that allow it unrestricted access to the computer forthe purposes of establishing all of the rules and boundaries under whichprograms run. Hardware support for multiple privilege levels is crucial forsuch a scheme to prevent unauthorized programs from freely accessing restrictedresources. As microprocessors developed over the last few decades, morehardware support for OS privileges was added. That the 68000 included suchconcepts in 1979 is a testimony to its scalable architecture.
Sixteen 32-bit general-purpose registers, one of which is a user stack pointer(USP), and an 8-bit condition code register are accessible from user mode asshown in Fig. 6.11. Additionally, a supervisor stack pointer (SSP) and eightadditional status bits are accessible from supervisor mode. Computer systemsdo not have to implement the two modes of operation if the application doesnot require it. In such cases, the 68000 can be run permanently in supervisormode to enable full access to all resources by all programs. The SSP is usedfor stack operations while in supervisor mode, and the USP is used for stackoperations in user mode. User mode programs cannot change the USP,preventing them from relocating their stacks. Most modern operating systemsare multitasking, mean- ing that they run multiple programs simultaneously. Inreality, a microprocessor can only run one program at a time. A multitaskingOS uses a timer to periodically interrupt the microprocessor, perhaps 20 to100 times per second, and place it into supervisor mode. Each time supervisormode is invoked, the kernel performs various maintenance tasks and swapsthe currently running program with the next program in the list of running programs.This swap, or context switch, can entail substantial modi?cations to themicroprocessors state when it returns from the kernel timer interrupt. In thecase of an original 68000 microprocessor, the kernel could change the returnvalue of the PC, USP, the 16 general-purpose registers, and the status register.When normal execution resumes, the microprocessor is now executing adifferent program in exactly the same state at which it was previously interrupted,because all of its registers are in the same state in which they were left. In such ascenario, each program has its own private stack, pointed to by akernel-designated stack pointer.
The eight data registers, D0D7, can be used for arbitrary ALU operations. Theeight address registers, A0A7, can all be used as base addresses for indirectaddressing and for certain 16- and 32-bit ALU operations. All 16 registers canbe used as index registers. While operating in user mode, it is illegal to accessthe SSP or the supervisor portion of the status register, SR. Such instructions willcause an exception, whereby a particular interrupt is asserted, which causes the68000 to enter supervisor mode to handle the fault. (Exception and interrupt areoften used synonymously in computer contexts.) Very often, the OS kernel willterminate an application that causes an exception to be generated. The registersshown above are present in all 68000 family members and, as such, aresoftware is compatible with subsequent 68xxx microprocessors. Newermicroprocessors contain additional registers that provide more advanced privilegelevels and memory management. While the 68000 architecture fundamentallysupports a 4-GB (32-bit) address space, early devices were limited in termsof how much physical memory could actually be addressed as a result of pinlimitations in the packaging. The original 68000 was housed in a 64-pin DIP,leaving only 24 address bits usable, for a total usable memory space of 16 MB.When Motorola introduced the 68020, the ?rst fully 32-bit 68000 microprocessor,all 32 address bits were made available. The 68000 devices are big-endian,so the MSB is stored in the lowest address of a multibyte word.

FIGURE 6.11 68000 register set.

FIGURE 6.11 68000 register set.

The 68000 supports a 16-MB address space, but only 23 address bits, A[23:1],are actually brought out of the chip as signal pins. A[0] is omitted and is unnecessary,because it would specify whether an even (A[0] = 0) or odd (A[0] = 1) byte isbeing accessed; and, because the bus is 16 bits wide, both even and odd bytescan be accessed simultaneously. However, provisions are made for byte-wideaccesses in situations where the 68000 is connected to legacy eight-bit peripheralsor memories. Two data strobes, upper (UDS*) and lower (LDS*), indicatewhich bytes are being ac- cessed during any given bus cycle. These strobes aregenerated by the 68000 according to the state of the internal A0 bit andinformation on the size of the requested transaction. Bus transactions aretriggered by the assertion of address strobe (AS*), the appropriate data strobes,and R/W* as shown in Fig. 6.12. Prior to AS*, the 68000 asserts the desiredaddress and a three-bit function code bus, FC[2:0]. The function code busindicates which mode the processor is in and whether the transaction is aprogram or data access. This information can be used by external logic toqualify transactions to certain sensitive memory spaces that may be off limitsto user programs. When read data is ready, the external bus interface logicasserts data transfer acknowledge (DTACK*) to inform the microprocessorthat the transaction is complete. As shown, the 68000 bus can be operated ina fully asyn-chronous manner. When operated asynchronously, DTACK* isremoved after the strobes are removed, ensuring that the 68000 detected theassertion of DTACK*. If DTACK* is removed prior to the strobes, thereis a chance of marginal timing where the 68000 may not properly detect theacknowledge, and it may wait forever for an acknowledge that has nowpassed. Writes are very similar to reads, with the obvious difference thatR/W* is brought low, and data is driven by the 68000. Another differenceis that the data strobe assertion lags that of AS*.

FIGURE 6.12 68000 asynchronous bus timing.

FIGURE 6.12 68000 asynchronous bus timing.

Advanced microprocessors such as the 68000 are designed to recognize faultconditions wherein the requested bus transaction cannot be completed. A busfault can be caused by a variety of problems, including unauthorized access(e.g., user mode tries to write to a protected supervisor data space) or anaccess to a section of memory that is not ?lled by a memory or peripheraldevice. Software should never access areas of memory that are off limits,because the results are unpredictable. Therefore, rather than simply issuinga false DTACK* and continuing with normal operation, the 68000 containsa bus error signal (BERR*) that behaves like DTACK* but triggers anexception rather than continuing normal execution. It is the responsibility ofexternal logic to manage the DTACK* and BERR* signals according tothe speci?c con?guration and requirements of the particular system.Operating the 68000 bus in an asynchronous manner is easy, but it reducesits bandwidth, because delays must be built into the acknowledge process toguarantee that both the 68000 and the interface logic maintain synchronization.Figure 6.12 shows read data being asserted prior to DTACK* and anarbitrary delay between the release of AS* and that of DTACK*. The datadelay is necessary to guar- antee that the 68000 will see valid data when itdetects a valid acknowledge. The second delay is necessary to ensure thatthe 68000 completes the transaction, as noted previously. These delays canbe eliminated if the bus is operated synchronously by distributing themicroprocessor clock to the interface logic and guaranteeing that varioussetup and hold timing requirements are met as speci?ed by Motorola. Insuch a con?guration, it is known from Motorolas data sheet that the68000 looks for DTACK* each clock cycle, starting at a ?xed time afterasserting the strobes, and then samples the read-data one cycle after detectingDTACK* being active. Because synchronous timing rules are obeyed,it is guaranteed that the 68000 properly detects DTACK* and, therefore,DTACK* can be removed without having to wait for the removal of thestrobes. 68000 synchronous bus timing is shown in Fig. 6.13, where eachtransaction lasts a minimum of four clock cycles. A four-cycle transactionis a zero wait state access. Wait states can be added by simply delayingthe assertion of DTACK* to the next cycle. However, to maintain propertiming, DTACK* (and BERR* and read-data) must always obey propersetup and hold requirements. As shown in the timing diagram, eachsignal transition, or edge, is time-bounded relative to a clock edge.Read timing allows a single clock cycle between data strobe assertion and thereturn of DTACK* for a zero wait-state transaction. However, zero wait-statewrites require DTACK* assertion at roughly the same time as the data strobes.Therefore, the bus interface logic must make its decision on asserting DTACK*based on the requested address when AS* is asserted. If the requested deviceis operational, DTACK* can be immediately asserted for a fast transaction.Unlike reads, where the microprocessor must wait for a device to return data,writes can be acknowledged before they are actually transferred to the device.In such a scheme, writes are posted within the bus interface logic.One or two cycles later, when the device accepts the posted write data, thebus interface logic ?nally completes the transaction without having delayedthe microprocessor. If completion of the posted- write transaction takeslonger than a few cycles, it could force a subsequent access to the samedevice to incur wait states. Either a read or a write would be blockeduntil the original write was able to complete, thus freeing the device tohandle the next transaction.

FIGURE 6.13 68000 synchronous bus timing.

FIGURE 6.13 68000 synchronous bus timing.

In addition to the basic bus interface, the 68000 supports bus arbitration toenable DMA or other logic to use the microprocessor bus for arbitrary applications.A bus request (BR*) signal is asserted by a device that wants to temporarily gaincontrol of the bus. On the next clock cycle, when the microprocessor is notinhibited by other operations, it asserts a bus grant (BG*) signal and places itsaddress, data, and control signals into tri-state so that they may be driven by theother device. The re- questing device then asserts bus grant acknowledge(BGACK*) to signal that it is controlling the bus, and it is then free to assertits own strobes, address, and data signals.
A variety of interrupts and exceptions are supported by the 68000. Some aretriggered as a result of instruction execution and some by external signals (e.g.,BERR* or an interrupt request). Examples of instruction exceptions are illegaluser mode register accesses or a divide-by-zero error. Most microprocessorsthat provide division capability contain some type of divide-by-zero errorhandling, because the result of such an operation is mathematically unde?nedand is usually the result of a fault in the program. The 68000 contains anexception vector table that is 1,024 bytes long and resides at the beginningof memory at address 0. In a multitasking system, the bus interface logic mayrestrict access to the vector table to supervisor mode only. In such a case, abus error could be triggered if a user mode program, indicated by FC[2:0],tried to write the table. Each of the 256 vector entries is four bytes longand provides the starting address of the associated ISR. The one deviationfrom this rule is the reset vector, which actually consists of two entries at wordaddresses 0 and 4.
Upon reset, the 68000 fetches an initial PC value from address 4 and an initialSSP value from address 0. Vectors 0 through 63 are assigned or reserved byMotorola for various hardware exceptions. Vectors 64 through 255 areassigned as user interrupt vectors. Like other microprocessors in its category,the 68000 supports bus vectoring of user interrupts where an external interruptcontroller asserts an interrupt number onto the data bus during an interruptacknowledge cycle performed by the 68000 in response to an interruptrequest. This interrupt number is multiplied by four and used to index intothe exception table to fetch the address of the appropriate ISR.

By : E-book Complete_Digital_Design

Intel 8086 16-Bit Microprocessor Family

Posted by: repair  :  Category: Instructive Microprocessors and Microcomputer
Intel moved up to a 16-bit microprocessor, the 8086, in 1978 just two years afterintroducing the 8085 as an enhancement to the 8080. The x86 family is famousfor being chosen by IBM for their original PC. As PCs developed during thepast 20 years, the x86 family grew with the industry ?rst to 32 bits (80386,Pentium) and more recently to 64 bits (Itanium). While the 8086 was a newarchitecture, it retained certain architectural characteristics of the 8080/8085such that assembly language programs written for its predecessors could beconverted over to the 8086 with little or no modi?cation. This is one of thekey reasons for its initial success.
The 8086 contains various 16-bit registers as shown in Fig. 6.9, some of whichcan be manipu- lated one byte at a time. AX, BX, CX, and DX aregeneral-purpose registers that have alternate functions and that can be treatedas single 16-bit registers or as individual 8-bit registers. The accumulator,AX, and the ?ags register serve their familiar functions. BX can serve as ageneral pointer. CX is a loop iteration count register that is used inherentlyby certain instructions. DX is used as a companion register to AX whenperforming certain arithmetic operations such as integer division or handlinglong integers (32 bits).
The remaining registers are pointers of various types that index into the 8086ssomewhat awk- ward segmented memory structure. Despite being a 16-bitmicroprocessor with no register exceeding 16 bits in size, Intel recognized theneed for more than 64 kB of addressable memory in more advanced computers.One megabyte of memory space was decided upon as a suf?ciently largeaddress space in the late 1970s, but the question remained of how to accessthat memory with 16-bit pointers. Intels solution was to have programmersarbitrarily break the 1 MB address space into multiple 64-kB special-purposesegments one for instructions (code segment), two for data (primary data andextra data), and one for the stack. Memory operations must reference oneof these de?ned segments, requiring only a 16-bit pointer to address anylocation within a given segment. Segments can be located anywhere in memory,as shown in Fig. 6.10, and can be moved at will to provide ?exibility fordifferent applications. Additionally, there is no restriction on overlapping ofsegments.
Each segment register represents the upper 16 bits of a 20-bit pointer(220 = 1 MB) where the lower 4 bits are ?xed at 0. Therefore, a segment registerdirectly points to an arbitrary location in 1 MB of memory on a 16-byte boundary.A pointer register is then added to the 20-bit segment address to yield a ?nal20-bit address, the effective address, with which to fetch or store data.Algebraically, this relationship is expressed as: effective address =(segment pointer ? 16) + offset pointer.

FIGURE 6.9 8086 register set.

FIGURE 6.9 8086 register set.

FIGURE 6.10 8086 segments.

FIGURE 6.10 8086 segments.

Inside the microprocessor, this math is performed by shifting the segment pointer(0×135F) left by four bits and then adding the offset pointer (0×0102) asshown below.

This segmented addressing scheme has some awkward characteristics. First,programs must orga- nize their instructions and data into 64-kB chunks andproperly keep track of which portions are be- ing accessed. If data outsideof the current segments is desired, the appropriate segment register must beupdated. Second, the same memory location can be represented by multiplecombinations of segment and offset values, which can cause confusion in sortingout which instruction is accessing which location in memory. Nonetheless,programmers and the manufacturers of their development tools have ?guredout ways to avoid these traps and others like them.
Instructions that reference memory implicitly or explicitly determine whichoffset pointer is added to which segment register to yield the desired effectiveaddress. For example, a push or pop instruction inherently uses the stackpointer in combination with the stack segment register. However, an instructionto move data from memory to the accumulator can use one of multiple pointerregisters relative to any of the segment registers.
The 8086s reset and interrupt vectors are located at opposite ends of thememory space. On reset, the instruction pointer is set to 0xFFFF0, and themicroprocessor begins executing instructions from this address. Therefore,rather than being a true vector, the 16-byte reset region contains normalexecutable instructions. The interrupt vectors are located at the bottom ofthe memory space starting from address 0, and there are 256 vectors, onefor each of the 256 interrupt types. Each interrupt vector is composed of a2-byte segment address and a 2-byte offset address, from which a 20-biteffective address is calculated. When the 8086s INTR pin is driven high,an interrupt acknowledge process begins via the INTA* output pin. The8086 pulses INTA* low twice and, on the second pulse, the interruptingperipheral drives an interrupt type, or vector number, onto the eight lowerbits of the data bus. The vector number is used to index into the interruptvector table by multiplying it by 4 (shifting left by two bits), because each vectorconsists of four bytes. For example, interrupt type 0×03 would cause themicroprocessor to fetch four bytes from addresses 0×0C through 0×0F.Interrupts triggered by the INTR pin are all maskable via an internal control bit.Software can also trigger interrupts of various types via the INT instruction.A nonmaskable interrupt can be triggered by external hardware via the NMIpin. NMI initiates the type-2 interrupt service routine at the address indicatedby the vector at 0×08-0×0B.
Locating the reset boot code at the top of memory and the interrupt vectors atthe bottom often leads to an 8086 computer architecture with ROM at the topand some RAM at the bottom. ROM must be at the top, for obvious reasons.Placing the interrupt vector table in RAM enables a ?exible system in whichsoftware applications can install their own ISRs to perform various tasks. Onthe original IBM PC platform, it was not uncommon for programs to insert theirown ISR addresses into certain interrupt vectors located in RAM. The systemtimer and keyboard interrupts were common objects of this activity. Becausethe PCs operating system already implemented ISRs for these interrupts, theprogram could redirect the interrupt vector to its own ISR and then call thesystems default ISR when its own ISR completed execution. If properly done,this interrupt chaining process could add new features to a PC without harmingthe existing housekeeping chores performed by the standard ISRs. Chainingthe keyboard interrupt could enable a program that is normally dormant topop up each time a particular key sequence is pressed.
Despite its complexity and 16-bit processing capability, the 8086 was original lyhoused in a 40-pin DIP the same package used for most 8-bit processors of the time. Intel chose to use a multiplexed address/data scheme similar to that usedon the 8051 microcontroller, thereby saving 16 pins. The 8086s 20-bit addressbus is shared by the data bus on the lower 16 bits and by status ?ags on the upper 4 bits. Combined with additional signals, these status ?ags control the microprocessors bus interface. As with Intels other microprocessors, the 8086contains separate address spaces for memory and I/O devices. A control pinon the chip indicates whether a transaction is memory or I/O.
While the memory space is 1 MB in size, the I/O space is only 64 kB. The8086 bus interface oper- ates in one of two modes, minimum and maximum,determined by a control pin tied either high or low, respectively. In each ofthese two modes, many of the control and status pins take on different functions.In minimum mode, the control signals directly drive a standard Intel-style bussimilar to that of the 8080 and 8051, with read and write strobes and addresslatch enable. Other signals include a READY signal for inserting wait states forslow peripherals and a bus grant/acknowledge mechanism for supporting DMAor similar bus-sharing peripherals. Minimum mode is designed for smallersystems in which little address decoding logic is necessary to interface the 8086to memory and peripherals devices. Maximum mode is designed for largersystems where an Intel companion chip, the 8288 bus controller, integratesmore complex bus control logic onto an off-the-shelf IC. In maximum mode,certain status and control pins communicate more information about what typeof transaction is being performed at any given time, enabling the 8288 to takeappropriate action.
The 8086s 16-bit data bus is capable of transacting a single byte at a time forpurposes of access- ing byte-wide peripherals. One early advantage of the 8086was its backward bus compatibility with the 8080/8085. In the 1970s, Intelmanufactured a variety of I/O peripherals such as timers and parallel I/Odevices for their eight-bit microprocessors. The 8086s ability to performbyte-wide trans- actions enabled easy reuse of existing eight-bit peripheralproducts. Two signals, byte high enable (BHE*) and address bit zero (A[0]),communicate the width and active byte of each bus transaction as shown inTable 6.3.

Intels microprocessors follow the little-endian byte ordering convention.Little-endian refers to the practice of locating the LSB of a multibyte quantity ina lower address and the MSB in a higher address. In a little-endian 16-bitmicroprocessor, the value 0×1234 would be stored in memory by locating 0×12into address 1 and 0×34 into address 0. Big-endian is the opposite: locating theLSB in the higher address and the MSB in the lower address. Therefore, abig-endian 16-bit microprocessor would store 0×12 into address 0 and 0×34into address 1. To clarify the difference, Table 6.4 shows little-endian versusbig-endian for 16- and 32-bit quantities as viewed from a memory chipsperspective. Here, ADDR represents the base address of a multibyte dataelement.
Proponents of little-endian argue that it makes better sense, because the lowbyte goes into the low address. Proponents of big-endian argue that it makes better sense, because data is stored in memory as you would read and interpret it. Thechoice of endianness is rather religious and comes down to personal preference.Of course, if you are designing with a little-endian microprocessor, life will bemade simpler to maintain the endianness consistently throughout the system.

At the time of the 8086s introduction, 16-bit desktop computer systems werealmost unheard of and could be substantially more expensive than 8-bit systemsas a result of the increased memory size required to support the larger bus. Toalleviate this problem and speed market acceptance of its architecture, Intelintroduced the 8088 microprocessor in 1979, which was essentially an 8086with an eight-bit data bus. A lower-cost computer system could be built with the8088, because fewer EPROM and RAM chips were necessary, system logicdid not have to deal with two bytes at a time, and less circuit board wiring wasrequired. A tremendous bene?t to Intel in designing the 8088 was the factthat it was chosen by IBM as the low-cost 16-bit heart of the original PC/XTdesktop computer, thereby locking the x86 microprocessor family into theIBM PC architecture for decades to come.
A variety of companion chips were developed by Intel to supplement the8086/8088. Among these was the 8087 math coprocessor that enhanced the 8086scomputational capabilities with ?oating-point arithmetic operations. Floating-pointarithmetic refers to a computers handling of real numbers as compared to integers.The task of adding or multiplying two real numbers of arbitrary magnitude is farmore complex than similar integer operations. Certain applications such as scienti?csimulations and realistic games that construct a virtual reality world make signi?cantuse of ?oating-point operations. The 8087 is a coprocessor rather than a peripheral,because it sits on the microprocessor bus in parallel with the 8086 and watches forspecial ?oating-point instructions.
These instructions are then executed automatically by the 8087 rather than havingto wait for the 8086 to request an operation. The 8086 was designed with the 8087sexistence in mind and ignores instructions destined for the 8087. Therefore, softwaremust speci?cally know if a math coprocessor is installed to run correctly. Manyprograms that ran on older systems with or without a coprocessor would ?rst testto see if the coprocessor was installed and then execute either an optimized set ofroutines for the 8087 or a slower set of routines that emulated the ?oating-pointoperations via conventional 8086 instructions.
As the x86 family developed, the optional math coprocessor was eventuallyintegrated alongside the integer processor on the same silicon chip. The 8087 gaveway to the 80287 and 80387 when the 80286 and 80386 microprocessors wereproduced. When Intel introduced the 80486, the coprocessor, or ?oating-pointunit (FPU), was integrated on chip. This integration resulted in a somewhat moreexpensive product, so Intel released a lower-cost 80486SX microprocessorwithout the coprocessor. An 80487SX was made available to upgrade systemsoriginally sold with the 80486SX chips, but the overall situation provedsomewhat chaotic with various permutations of microprocessors and systemswith and without coprocessors. Starting with the Pentium, all of Intels high-endmicroprocessors contain integrated FPUs. This trend is not unique to Intel.High-performance microprocessors in general began integrating the FPU atroughly the same time because of the performance bene?ts and the overallsimplicity of placing the microprocessor and FPU onto the same chip.
By : E-book Complete_Digital_Design

Advanced Microprocessor Concepts

Posted by: repair  :  Category: Instructive Microprocessors and Microcomputer
Computer architecture is central to the design of digital systems, because mostdigital systems are, at their core, computers surrounded by varying mixes ofinterfaces to the outside world. It is dif?cult to know at the outset of a project howadvanced architectural concepts may ?gure into a design, because advanceddoes not necessarily mean expensive or complex. Many technologies that wereoriginally developed for high-end supercomputers and mainframes eventuallyfound their way into consumer electronics and other less-expensive digital systems.This is why a digital engineer bene- ?ts from a broad understanding of advancedmicroprocessor and computing concepts a wider palette of potential solutionsenables a more creative and effective design process.
This chapter introduces a wide range of technologies that are alluded to in manytechnical speci?- cations but are often not understood suf?ciently to take fulladvantage of their potential. What is a 200-MHz superscalar RISC processorwith a four-way set associative cache? Some people hear the term RISC andconjure up thoughts of high-performance computing. Such imagery is notincorrect, but RISC technology can also be purchased for less than one dollar.Caching is another big computer term that is more common than many peoplethink.
An important theme to keep in mind is that microprocessors and the systemsthat they plug into are inextricably interrelated, and more so than simply byvirtue of their common physical surround- ings. The architecture of onedirectly in?uences the capabilities of the other. For this reason, the two needto be considered simultaneously during the design process. Among manyother factors, this makes computer design an iterative process. One maybegin with an assumption of the type of mi- croprocessor required andthen use this information to in?uence the broader system architecture.
When system-level constraints and capabilities begin to come into focus,they feed back to the microprocessor requirements, possibly altering themsomewhat. This cycle can continue for several iterations until a design isrealized in which the microprocessor and its supporting peripherals arewell matched for the application.
By : E-book Complete_Digital_Design