<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>appliancerepairfirst &#187; address</title>
	<atom:link href="http://appliancerepairfirst.com/tag/address/feed/" rel="self" type="application/rss+xml" />
	<link>http://appliancerepairfirst.com</link>
	<description>Get free appliance repair and troubleshooting advice.</description>
	<lastBuildDate>Sun, 05 Sep 2010 19:17:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Asynchronous Sram</title>
		<link>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/memory-digital-fandamentals-complete-digital-design/asynchronous-sram/</link>
		<comments>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/memory-digital-fandamentals-complete-digital-design/asynchronous-sram/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 23:22:17 +0000</pubDate>
		<dc:creator>repair</dc:creator>
				<category><![CDATA[Memory]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[feedback circuit]]></category>
		<category><![CDATA[logic element]]></category>
		<category><![CDATA[logic state]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[SRAM]]></category>
		<category><![CDATA[theloop]]></category>

		<guid isPermaLink="false">http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/memory-digital-fandamentals-complete-digital-design/asynchronous-sram/</guid>
		<description><![CDATA[Static RAM, or SRAM, is the most basic and easy to use type of volatile  memoryand is found in almost every computer in one form or another. An SRAM  deviceis conceptually easy to understand, consisting of an array of latches  along withcontrol and decode logic to resolve the address that is being [...]]]></description>
			<content:encoded><![CDATA[<div>Static RAM, or SRAM, is the most basic and easy to use type of volatile  memoryand is found in almost every computer in one form or another. An SRAM  deviceis conceptually easy to understand, consisting of an array of latches  along withcontrol and decode logic to resolve the address that is being read or  written atany given time. Each latch is a feedback circuit that traps and  maintains aparticular logic state. A typical SRAM bit implementation is shown in  Fig. 4.7.</div>
<p><span style="font-family: Times New Roman;"></span></p>
<p><img src="/complete-digital-design_images/20100131144417.jpg" alt="FIGURE 4.7 SRAM bit feedback latch." /></p>
<div>FIGURE 4.7 SRAM bit feedback latch.</div>
<div>An SRAM latch is created by connecting two inverters in a loop. One side of  theloop remains sta- ble at the desired logic state, and the other remains  stable at theopposite state. Inverters are used rather than noninverting  buffers, because aninverter is the simplest logic element to construct. The two  pass transistors oneither side of the latch enable both writing and reading.  When writing, the transistorsturn on and force each half of the loop to whatever  state is driven on the verticalbit lines. When reading, the transistors also  turn on, but the bit lines are sensedrather than driven. Typical SRAM  implementations require six transistors per bitof memory: two transistors for  each inverter and the two pass transistors. Someimplementations use only a  single transistor per inverter, requiring only fourtransistors per  bit.<br />
Discrete asynchronous SRAM devices have been around for decades. In the  1980s,the 6264 and 62256 were manufactured by multiple vendors and used in  applicationsthat required simple RAM architectures with relatively quick access  times and lowpower consumption. The 62xxx family is numbered according to its  density inkilobits. Hence, the 6264 provides 65,536 bits of RAM ar- ranged as 8k  ? 8.The 62256 provides 262,144 bits of RAM arranged as 32k ? 8.  Beingmanufactured in CMOS technology and not using a clock, these devicesconsume  very little power and draw only microamps when not being accessed.<br />
The 62xxx  family pin assignment is virtually identical to that of the 27xxx EPROMfamily,  enabling system designs where either EPROM or SRAM can be substitutedinto the  same location with only a couple of jumpers to set for unique signals suchas the  program-enable on an EPROM or write-enable on an SRAM. Like anEPROM or basic  ?ash device, asynchronous SRAMs have a simple interfaceconsisting of address,  data, chip select, output enable, and write enable. Thisinterface is shown in  Fig. 4.8.<br />
Writes are performed whenever the WE* signal is held low.  Therefore, one mustensure that the desired address and data are stable before  asserting WE* andthat WE* is removed while address and data remain stable.  Otherwise, thewrite may corrupt an undesired memory location. Unlike an EPROM,  but like?ash, the data bus is bidirectional during normal operation. The ?rst  twotransactions shown are writes as evidenced by the separate assertions ofWE*  for the duration of address and data stability. As soon as the writesare  completed, the microprocessor should release the data bus to thehigh-impedance  state. When OE* is asserted, the SRAM begins driving thedata bus and the output  re?ects the data contents at the locations speci?edon the address  bus.<br />
Asynchronous SRAMs are available with access times of less than 100 ns  forinexpensive parts and down to 10 ns for more expensive devices. Access  timemeasures both the maximum delay between a stable read address and  itscorresponding data and the minimum duration of a write cycle. Their ease  ofuse makes them suitable for small systems where megabytes of memory arenot  re-quired and where reduced complexity and power consumption arekey  requirements. Volatile memory doesnt get any simpler than  asynchronousSRAM.<br />
Prior to the widespread availability of ?ash, many computer  designs in the 1980sutilized asyn- chronous SRAM with a battery backup as a  means of implementingnonvolatile memory for storing con?guration information.  Because an idle SRAMdraws only microamps of current, a small battery can  maintain an SRAMscontents for several years while the main power is turned off.  Using SRAM inthis manner has two distinct advantages over other technologies:  writes arequick and easy, because there are no complex EEPROM or ?ash  programmingalgorithms, and there is no limit to the number of write cycles  performed overthe life of the product. The downsides to this approach are a lack  of securityfor protecting valuable con?guration information and the need for a  battery tomaintain the memory contents. Requiring a battery increases the  complexity ofthe system and also begs the question of what happens when the  battery wearsout. In the 1980s, it was common for a PCs BIOS con?guration to be  storedin battery-backed CMOS SRAM. This is how terms like the CMOS andCMOS setup  entered the lexicon of PC administration.</div>
<p><img src="/complete-digital-design_images/20100131144546.jpg" alt="FIGURE 4.8 62xxx SRAM interface." /></p>
<div>FIGURE 4.8 62xxx SRAM interface.</div>
<div>SRAM is implemented not only as discrete memory chips but is commonly  foundintegrated within other types of chips, including microprocessors.  Smallermicroprocessors or microcontrollers (microprocessors integrated with  memoryand peripherals on a single chip) often contain a quantity of on-board  SRAM.More complex microprocessors may contain on-chip data caches  implementedwith SRAM.</div>
<div></div>
<div>By : E-book Complete_Digital_Design</div>
]]></content:encoded>
			<wfw:commentRss>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/memory-digital-fandamentals-complete-digital-design/asynchronous-sram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intel 8086 16-Bit Microprocessor Family</title>
		<link>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/instructive-microprocessors-and-microcomputer/intel-8086-16-bit-microprocessor-family/</link>
		<comments>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/instructive-microprocessors-and-microcomputer/intel-8086-16-bit-microprocessor-family/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 09:11:54 +0000</pubDate>
		<dc:creator>repair</dc:creator>
				<category><![CDATA[Instructive Microprocessors and Microcomputer]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[assembly language programs]]></category>
		<category><![CDATA[B.
Locating]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[bus]]></category>
		<category><![CDATA[F.Interrupts]]></category>
		<category><![CDATA[general purpose registers]]></category>
		<category><![CDATA[iteration count]]></category>
		<category><![CDATA[loop iteration]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[O.While]]></category>

		<guid isPermaLink="false">http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/instructive-microprocessors-and-microcomputer/intel-8086-16-bit-microprocessor-family/</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div><span>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.<br />
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).<br />
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.<br />
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.</span></div>
<p><img src="/complete-digital-design_images/20100202153737.jpg" alt="FIGURE 6.9 8086 register set." /></p>
<p>FIGURE 6.9 8086 register set.</p>
<p><a href="/complete-digital-design_images/20100202153802.jpg" target="_blank"><img src="/complete-digital-design_images/20100202153802.jpg" border="0" alt="FIGURE 6.10 8086 segments." width="476" height="276" /></a></p>
<p>FIGURE 6.10 8086 segments.</p>
<div><span>Inside the microprocessor, this math is performed by shifting  the segment pointer(0&#215;135F) left by four bits and then adding the offset pointer  (0&#215;0102) asshown below.</span></div>
<p><img src="/complete-digital-design_images/20100202153859.jpg" alt="" /></p>
<div><span>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.<br />
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.<br />
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&#215;03 would cause themicroprocessor to fetch four bytes  from addresses 0&#215;0C through 0&#215;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&#215;08-0&#215;0B.<br />
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.<br />
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.<br />
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.<br />
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.</span></div>
<p><img src="/complete-digital-design_images/20100202154032.jpg" alt="" /></p>
<div><span>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&#215;1234 would be stored in memory  by locating 0&#215;12into address 1 and 0&#215;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&#215;12 into  address 0 and 0&#215;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.<br />
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. </span></div>
<p><img src="/complete-digital-design_images/20100202154113.jpg" alt="" /></p>
<div><span>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.<br />
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.<br />
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.<br />
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.</span></div>
<div></div>
<div><span>By : E-book Complete_Digital_Design</span></div>
]]></content:encoded>
			<wfw:commentRss>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/instructive-microprocessors-and-microcomputer/intel-8086-16-bit-microprocessor-family/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Motorola 6800 Eight -Bit Microprocessor Family</title>
		<link>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/instructive-microprocessors-and-microcomputer/motorola-6800-eight-bit-microprocessor-family/</link>
		<comments>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/instructive-microprocessors-and-microcomputer/motorola-6800-eight-bit-microprocessor-family/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 21:27:32 +0000</pubDate>
		<dc:creator>repair</dc:creator>
				<category><![CDATA[Instructive Microprocessors and Microcomputer]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[bus]]></category>
		<category><![CDATA[clock]]></category>
		<category><![CDATA[microprocessor]]></category>
		<category><![CDATA[microprocessor market]]></category>
		<category><![CDATA[pc stack]]></category>
		<category><![CDATA[PIA]]></category>
		<category><![CDATA[stack pointer]]></category>

		<guid isPermaLink="false">http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/instructive-microprocessors-and-microcomputer/motorola-6800-eight-bit-microprocessor-family/</guid>
		<description><![CDATA[As the microprocessor market began to take off, Motorola  jumped into the frayand introduced its eight-bit 6800 in 1974, shortly after the  8080 ?rst appeared.While no longer available as a discrete microprocessor, the  6800 is signi?cant,because it remains in Motorolas successful 68HC05/68HC08 and  68HC11microcontroller families and also serves as a vehicle [...]]]></description>
			<content:encoded><![CDATA[<div><span>As the microprocessor market began to take off, Motorola  jumped into the frayand introduced its eight-bit 6800 in 1974, shortly after the  8080 ?rst appeared.While no longer available as a discrete microprocessor, the  6800 is signi?cant,because it remains in Motorolas successful 68HC05/68HC08 and  68HC11microcontroller families and also serves as a vehicle with which to learn  thebasics of computer architecture. Like the 8080, the 6800 is housed in a  40-pinDIP and features a 16-bit address bus and an 8-bit data bus. All of the  basicregister types of a modern microprocessor are implemented in the 6800,  asshown in Fig. 6.1: a program counter (PC), stack pointer (SP), index  register(X), two general-purpose accumulators (ACCA and ACCB), and status?ags  set by the ALU in the condition code register (CCR). ACCA is theprimary  accumulator, and some instructions oper- ate only on this registerand not ACCB.  A half-carry ?ag is included to enable ef?cient binary codeddecimal (BCD)  operations. After adding two BCD values with normal binaryarithmetic, the half-  carry is used to convert illegal results back to BCD. The6800 provides a special  instruction, decimal adjust ACCA (DAA), for thisspeci?c purpose. A somewhat  out-of-place interrupt mask bit is alsoimplemented in the CCR, because this was  an architecturally convenient placeto locate it. Bits in the CCR are modi?ed  through either ALU operations ordirectly by transferring the value in ACCA to  the CCR.<br />
The 6800 supports three interrupts: one nonmaskable, one maskable,  andone software interrupt. More recent variants of the 6800 support  additionalinterrupt sources. A software interrupt can be used by any program  runningon the microprocessor to immediately jump to some type of  maintenanceroutine whose address does not have to be known by the calling  program.When the software interrupt instruction is executed, the 6800 reads  theappropriate interrupt vector from memory and jumps to the indicated  address.The 6800s reset and interrupt vectors are located at the top of memory,  aslisted in Table 6.1, which generally dictates that the boot ROM be  locatedthere as well. For example, an 8-kB 27C64 EPROM(8,192 bytes = 0&#215;2000  bytes) would occupy the address range 0xE000through 0xFFFF. Each vector is 16  bits wide, enough to specify the fulladdress of the associated routine. The MSB  of the address, A[15:8], islocated in the low, or even, byte address, and the  LSB, A[7:0] is locatedin the high, or odd, byte address.</span></div>
<p><img src="/complete-digital-design_images/20100201181009.jpg" alt="" /></p>
<p><a href="/complete-digital-design_images/20100201181039.jpg" target="_blank"><img src="/complete-digital-design_images/20100201181039.jpg" border="0" alt="FIGURE 6.1 6800 registers." width="439" height="150" /></a></p>
<p>FIGURE 6.1 6800 registers.</p>
<div><span>An external clock driver circuit that provides a two-phase  clock (two clocksignals 180? out of phase with respect to each other) is  required for the original6800. Motorola simpli?ed the design of 6800-based  computer systems byintroducing two variants, the 6802 and 6808. The 6802  includes an on-boardclock driver circuit of the type that is now standard on  many microprocessorsavailable today. Such clock drivers require only an external  crystal to createa stable, reliable oscillator with which to clock the  microprocessor. A crystalis a two-leaded component that contains a specially cut  quartz crystal.The quartz can be made to resonate at its natural frequency by  electricalstimulus cre- ated within the microprocessors on-board clock driver  circuitry.A crystal is necessary for this pur- pose, because its oscillation  frequency ispredictable and stable. The 6802 also includes 128 bytes of on-board  RAMto further simplify certain systems that have small volatile memory  requirements.For customers who wanted the simpli?ed clocking scheme of the  6802without paying for the on-board RAM, Motorolas 6808 kept the clockingand  removed the RAM.<br />
Using a 6802 with its internal RAM, a functional computer  could be constructedwith only two chips: the 6802 and an EPROM. Unfortunately,  such a computerwould not be very useful, because it would have no I/O with which  to interactwith the outside world. Motorola manufactured a variety of peripheral  chipsintended for direct connection to the 6800 bus. Among these were the  6821peripheral interface adapter (PIA) and the 6850 asynchronous  communicationsinterface adapter (ACIA), a type of UART. The PIA provides 20 I/O  signalsarranged as two 8-bit parallel ports, each with two control signals.  Applicationsincluding basic pushbutton sensing and LED driving are easy with the  6821.The 6800 bus uses asynchronous control signals, meaning that memory andI/O  devices do not explicitly require access to the microprocessor clock  tocommunicate on the bus. However, many of the 6800 peripherals requiretheir own  copy of the clock to run internal logic.<br />
As with all synchronous logic, the  6800s bus is internally controlled by themicroprocessor clock, but the nature of  the control signals enables asynchronousread and write transactions without  referencing that clock, as shown in Fig. 6.2.An address is placed onto the bus  along with the proper state of the R/Wselect signal (read = 1, write = 0) and a  valid memory address (VMA) enablethat indicates an active bus cycle. In the case  of a write, the write data isdriven out some time later. For reads, the data  must be returned fast enoughto meet the microprocessors timing speci?cations.  The 6802/6808 weremanufactured in 1-, 1.5-, and 2-MHz speed grades. At 2 MHz, a  peripheraldevice has to respond to a read request with valid data within 210 ns  afterthe assertion of address, R/W, and VMA. A peripheral has up to 290 nsfrom  the assertion of these signals to complete a write transaction.<br />
*In a real  system, VMA, combined with address decoding logic, would drivethe individual  chip select signals to each peripheral.<br />
In some situations, slow peripherals  may be used that cannot execute a bustransaction in the time allowed by the  microprocessor. The 6800 architecturedeals with this by stretching the clock  during a slow bus cycle. A clockcycle can be stretched as long as 10 ?s,  enabling extremely slow peripheralsby delaying the next clock edge that will  advance the microprocessorsinternal state and termi- nate a pending bus cycle.  This stretching isperformed by an external clock circuit for a 6800, or by the  internal clockof the 6802/6808. As with many modern microprocessors, the  6802/6808provides a pin that delays the end of the current bus cycle. This  memoryready (MR) signal is normally high, signaling that the addressed device  isready. When brought low, the clock is internally stretched until MR goeshigh  again. Early microprocessors such as the 6800 used clock stretchingto delay bus  cy- cles. Most modern microprocessors maintain a constantclock frequency and,  instead, insert discrete wait states, or extra clockcycles, into a bus  transaction when a similar type of signal is asserted.This latter method is  usually preferable in a synchronous system becauseof the desire to maintain a  simple clock circuit and to not disrupt otherlogic that may be running on the  microprocessor clock.</span></div>
<p><img src="/complete-digital-design_images/20100201181253.jpg" alt="FIGURE 6.2 6802/6808 basic bus timing." /></p>
<p>FIGURE 6.2 6802/6808 basic bus timing.</p>
<div><span>Motorolas success with the 6800 motivated it to introduce the  upgraded 6809in 1978. The 6809 is instruction set compatible with the 6800 but  includesseveral new registers that enable more ?exi- ble access to memory. Two  stackpointers are present: the existing hardware controlled register for  subroutinecalls and interrupts, and another for user control. The user stack  pointer canbe used to ef?ciently pass parameters to subroutines as they are  called withoutcon?icting with the microprocessors push/pop operations involving  theprogram counter and other registers. A second index register and the  abilityto use any of the four 16-bit pointer registers as index registers were  addedto enable the simultaneous handling of multiple data structure pointers  withouthaving to continually save and recall index register values. The 6809s  twoaccumulators can be concatenated to form a 16-bit accumulator that  enables16-bit arithmetic with an enhanced ALU. This ALU is also capable of  eight-bitunsigned multiplication, which made the 6809 one of the ?rst  integratedmicroprocessors with multiplication capability.<br />
Other improvements  in the 6809 included a direct page register (DPR) for amore ?exible eight- bit  direct addressing mode. The 8-bit DPR, representingA[15:8], is combined with an  8-bit direct address, representing A[7:0], toform a 16-bit direct address,  thereby enabling an 8-bit direct address toreference any location in the  complete 64-kB address space. The 6809 alsoincluded a more advanced bus  interface with direct support for an externalDMA controller. Several desktop  computers, including the Tandy/RadioShack TRS-80 Color Computer, and various  platforms, including arcadegames, utilized the 6809.<br />
While still available  from odd-lot retail outlets, the original 6800 family membersare no longer  practical to use in many computing applications. Their capabilities,once leading  edge, are now available in smaller, more integrated ICs at lowercost and with  lower power consumption. However, the 6800 architecture isalive and well in the  68HC05/68HC08 and 68HC11 microcontroller familiesthat are based on the  6800/6802/6808 and 6809 architectures, respectively.These microcontrollers are  available with a wide range of integrated featureswith on-board RAM, ROM (mask  ROM, EE-PROM, or EPROM), serialports, timers, and analog-to-digital  converters.</span></div>
<div></div>
<div><span><br />
</span></div>
<p>By : E-book Complete_Digital_Design</p>
]]></content:encoded>
			<wfw:commentRss>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/instructive-microprocessors-and-microcomputer/motorola-6800-eight-bit-microprocessor-family/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assembly Language  And Addressing Modes</title>
		<link>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/assembly-language-and-addressing-modes/</link>
		<comments>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/assembly-language-and-addressing-modes/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 01:09:16 +0000</pubDate>
		<dc:creator>repair</dc:creator>
				<category><![CDATA[Basic Computer Architecture]]></category>
		<category><![CDATA[A. Indirect]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[assembly language program]]></category>
		<category><![CDATA[assembly language programs]]></category>
		<category><![CDATA[bit]]></category>
		<category><![CDATA[instruction]]></category>
		<category><![CDATA[instruction mnemonics]]></category>
		<category><![CDATA[PC. A]]></category>
		<category><![CDATA[PC. Relative]]></category>
		<category><![CDATA[PC. The]]></category>

		<guid isPermaLink="false">http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/assembly-language-and-addressing-modes/</guid>
		<description><![CDATA[With the hardware ready, a computer requires software to make it more than an
inactive collection of components. Microprocessors fetch instructions from program
memory, each consisting of an opcode and, optionally, additional operands following
the opcode. These opcodes are binary data that are easy for the microprocessor to
decode, but they are not very readable by a person. To [...]]]></description>
			<content:encoded><![CDATA[<p>With the hardware ready, a computer requires software to make it more than an<br />
inactive collection of components. Microprocessors fetch instructions from program<br />
memory, each consisting of an opcode and, optionally, additional operands following<br />
the opcode. These opcodes are binary data that are easy for the microprocessor to<br />
decode, but they are not very readable by a person. To enable a programmer to<br />
more easily write software, an instruction representation called assembly language<br />
was developed. Assembly language is a low-level language that directly represents<br />
each binary opcode with a human-readable text mnemonic. For example, the<br />
mnemonic for an unconditional branch-to-subroutine instruction could be BSR.<br />
In contrast, a high-level language such as C++ or Java contains more complex<br />
logical expressions that may be automatically converted by a compiler to dozens<br />
of microprocessor instructions. Assembly language programs are assembled,<br />
rather than compiled, into opcodes by directly translating each mnemonic into<br />
its binary equivalent.</p>
<p>Assembly language also makes programming easier by enabling the usage of<br />
text labels in place of hard-coded addresses. A subroutine can be named FOO,<br />
and when BSR FOO is encountered by the assembler, a suitable branch target<br />
address will be automatically calculated in place of the label FOO. Each type of<br />
assembler requires a slightly different format and syntax, but there are general<br />
assembly language conventions that enable a programmer to quickly adapt to<br />
speci?c implementations once the basics are understood. An assembly language<br />
program listing usually has three columns of text followed by an optional comment<br />
column as shown in Fig. 3.14. The ?rst column is for labels that are placeholders<br />
for addresses to be resolved by the assembler. Instruction mnemonics are located<br />
in the second column. The third column is for instruction operands.</p>
<p>This listing uses the Motorola 6800 familys assembly language format. Though<br />
developed in the 1970s, 68xx microprocessors are still used today in embedded<br />
applications such as automobiles and industrial automation. The ?rst line of this<br />
listing is not an instruction, but an assembler directive that tells the assembler to<br />
locate the program at memory location $100. When assembled, the listing is<br />
converted into a memory dump that lists a range of memory addresses and<br />
their corresponding contents opcodes and operands. Assembler directives<br />
are often indicated with a period pre?x. The program in Fig. 3.14 is very simple:<br />
it counts to 30 ($1E) and then sends the Z character out the serial port. It<br />
continues in an in?nite loop by returning to the start of the program when the<br />
serial port routine has completed its task. The subroutine to handle the serial<br />
port is not shown and is referenced with the SEND_CHAR label. The program<br />
begins by clearing accumulator A (the 6800 has two accumulators: ACCA and<br />
ACCB). It then enters an incrementing loop where the accumulator is incremented<br />
and then compared against the terminal count value, $1E. The # pre?x tells the<br />
assembler to use the literal value $1E for the comparison. Other alternatives are<br />
possible and will soon be discussed. If ACCA is unequal to $1E, the<br />
microprocessor goes back to increment ACCA. If equal, the accumulator is<br />
loaded with the ASCII character to be transmitted, also a literal operand.<br />
The assumption here is that the SEND_CHAR subroutine transmits whatever<br />
is in ACCA. When the subroutine ?nishes, the program starts over with the<br />
branch-always instruction.</p>
<p>Each of the instructions in the preceding program contains at least one operand.<br />
CLRA and INCA have only one operand: ACCA. CMPA and LDAA each have<br />
two operands: ACCA and associated data. Complex microprocessors may<br />
reference three or more operands in a single instruction. Some instructions can<br />
reference different types of operands according to the requirements of the program<br />
being implemented. Both CMPA and LDAA reference literal operands in this<br />
example, but a pro- grammer cannot always specify a predetermined literal data<br />
value directly in the instruction sequence.  Operands can be referenced in a<br />
variety of manners, called addressing modes, depending on the type of instruction<br />
and the type of operand. Some types of instructions inherently use only one<br />
addressing mode, and some types have multiple modes. The manners of<br />
referencing operands can be categorized into six basic addressing modes: implied,<br />
immediate, direct, relative, indirect, and indexed. To fully understand how a<br />
microprocessor works, and to ef?ciently utilize an instruction set, it is<br />
necessary to explore the various mechanisms used to reference data.</p>
<p>Implied addressing speci?es the operand of an instruction as an inherent property<br />
of that instruction. For example, CLRA implies the accumulator by de?nition.<br />
No additional addressing information following the opcode is needed.</p>
<p><img src="/complete-digital-design_images/20100131132810.jpg" alt="FIGURE 3.14 Typical assembly language listing." /></p>
<p>FIGURE 3.14 Typical assembly language listing.</p>
<p>Immediate addressing places an operands value literally into the instruction<br />
sequence. LDAA#Z has its primary operand immediately available following the<br />
opcode. An immediate oper-and is indicated with the # pre?x in some assembly<br />
languages. Eight-bit microprocessors with eight-bit instruction words cannot ?t an<br />
immediate value into the instruction word itself and, therefore, require that an<br />
extra byte following the opcode be used to specify the immediate value. More<br />
powerful 32-bit microprocessors can often ?t a 16-bit or 24-bit immediate value<br />
within the instruction word. This saves an additional memory fetch to obtain the<br />
operand.</p>
<p>Direct addressing places the address of an operand directly into the instruction<br />
sequence. Instead of specifying LDAA #Z, the programmer could specify<br />
LDAA $1234. This version of the instruction would tell the microprocessor to<br />
read memory location $1234 and load the resulting value into the accumulator.<br />
The operand is directly available by looking into the memory address speci?ed<br />
just following the instruction. Direct addressing is useful when there is a need to<br />
read a ?xed memory location. Usage of the direct addressing mode has a slightly<br />
different impact on various microprocessors. A typical 8-bit microprocessor has a<br />
16-bit address space, meaning that two bytes following the opcode are necessary<br />
to represent a direct address. The 8-bit microprocessor will have to perform two<br />
additional 8-bit fetch operations to load the direct address. A typical 32-bit<br />
microprocessor has a 32-bit address space, meaning that 4 bytes following the<br />
opcode are necessary. If the 32-bit microprocessor has a 32-bit data bus, only<br />
one additional 32-bit fetch operation is required to load the direct address.</p>
<p>Relative addressing places an operands relative address into the instruction<br />
sequence. A relative address is expressed as a signed offset relative to the current<br />
value of the PC. Relative addressing is often used by branch instructions, because<br />
the target of a branch is usually within a short distance of the PC, or current<br />
instruction. For example, BNE INC_LOOP results in a branch-if-not-equal<br />
backward by two instructions. The assembler automatically resolves the addresses<br />
and calculates a relative offset to be placed following the BNE opcode. This<br />
relative operation is performed by adding the offset to the PC. The new PC value<br />
is then used to resume the instruction fetch and execution process. Relative<br />
addressing can utilize both positive and negative deltas that are applied to the<br />
PC. A microprocessors instruction format constrains the relative range that can<br />
be speci?ed in this addressing mode. For example, most 8-bit microprocessors<br />
provide only an 8-bit signed ?eld for relative branches, indicating a range<br />
of +127/128 bytes. The relative delta value is stored into its own byte just<br />
after the opcode. Many 32-bit microprocessors allow a 16-bit delta ?eld and<br />
are able to ?t this value into the 32-bit instruction word, enabling the entire<br />
instruction to be fetched in a single memory read. Limiting the range of a<br />
relative operation is generally not an excessive constraint because of<br />
softwares locality property. Locality in this context means that the set of<br />
instructions involved in performing a speci?c task are generally relatively<br />
close together in memory. The locality property covers the great majority of<br />
branch instructions. For those few branches that have their targets outside of<br />
the allowed relative range, it is necessary to perform a short relative branch to<br />
a long jump instruction that speci?es a direct address. This reduces the<br />
ef?ciency of the microprocessor by having to perform two branches when<br />
only one is ideally desired, but the overall ef?ciency of saving extra memory<br />
accesses for the majority of short branches is worth the trade-off.</p>
<p>Indirect addressing speci?es an operands direct address as a value contained<br />
in another register. The other register becomes a pointer to the desired data. For<br />
example, a microprocessor with two accumulators can load ACCA with the<br />
value that is at the address in ACCB. LDAA (ACCB) would tell the<br />
microprocessor to put the value of accumulator B onto the address bus,<br />
perform a read, and put the returned value into accumulator A. Indirect<br />
addressing allows writing software routines that operate on data at different<br />
addresses. If a programmer wants to read or write an arbitrary entry in a data<br />
table, the software can load the address of that entry into a microprocessor<br />
register and then perform an indirect access using that register as a pointer.<br />
Some microprocessors place constraints on which registers can be used as<br />
references for indirect addressing. In the case of a 6800 microprocessor,<br />
LDAA (ACCB) is not actually a supported operation but serves as a<br />
syntactical example for purposes of discussion.</p>
<p>Indexed addressing is a close relative (no pun intended) of indirect addressing,<br />
because it also refers to an address contained in another register. However,<br />
indexed addressing also speci?es an off-set, or index, to be added to that<br />
register base value to generate the ?nal operand address:</p>
<p>base + offset = ?nal address.</p>
<p>Some microprocessors allow general accumulator registers to be used as<br />
base-address registers, but others, such as the 6800, provide special index<br />
registers for this purpose. In many 8-bit microprocessors, a full 16-bit address<br />
cannot be obtained from an 8-bit accumulator serving as the base address.<br />
Therefore, one or more separate index registers are present for the purpose<br />
of indexed addressing. In contrast, many 32-bit microprocessors are able to<br />
specify a full 32-bit address with any general-purpose register and place no<br />
limitations on which register serves as the index register. Indexed addressing<br />
builds upon the capabilities of indirect addressing by enabling multiple address<br />
offsets to be referenced from the same base address. LDAA (X+$20) would<br />
tell the microprocessor to add $20 to the index register, X, and use the<br />
resulting address to fetch data to be loaded into ACCA. One simple example<br />
of using indexed addressing is a subroutine to add a set of four numbers<br />
located at an arbitrary location in memory. Before calling the subroutine, the<br />
main program can set an index register to point to the table of numbers. Within<br />
the subroutine, four individual addition instructions use the indexed addressing<br />
mode to add the locations X+0, X+1, X+2, and X+3. When so written, the<br />
subroutine is ?exible enough to be used for any such set of numbers. Because<br />
of the similarity of indexed and indirect addressing, some microprocessors<br />
merge them into a single mode and obtain indirect addressing by performing<br />
indexed addressing with an index value of zero.</p>
<p>The six conceptual addressing modes discussed above represent the various<br />
logical mechanisms that a microprocessor can employ to access data. It is<br />
important to realize that each individual microprocessor applies these addressing<br />
modes differently. Some combine multiple modes into a single mode (e.g.,<br />
indexed and indirect), and some will create multiple submodes out of a single<br />
mode. The exact variation depends on the speci?cs of an individual<br />
microprocessors architecture.</p>
<p>With the various addressing modes modifying the speci?c opcode and operands<br />
that are presented to the microprocessor, the bene?ts of using assembly language<br />
over direct binary values can be observed. The programmer does not have to<br />
worry about calculating branch target addresses or resolving different addressing<br />
modes. Each mnemonic can map to several unique opcodes, depending on<br />
the addressing mode used. For example, the LDAA instruction in Fig. 3.14 could<br />
easily have used extended addressing by specifying a full 16-bit address at which<br />
the ASCII transmit-value is located. Extended addressing is the 6800s mechanism<br />
for specifying a 16-bit direct address. (The 6800s direct addressing involves only<br />
an eight-bit address.) In either case, the assembler would determine the correct<br />
opcode to represent LDAA and insert the correct binary values into the memory<br />
dump. Additionally, because labels are resolved each time the program is<br />
assembled, small changes to the program can be made that add or remove<br />
instructions and labels, and the assembler will automatically adjust the resulting<br />
addresses accordingly.</p>
<p>Programming in assembly language is different from using a high-level language,<br />
because one must think in smaller steps and have direct knowledge about the<br />
microprocessors operation and architecture. Assembly language is processor-<br />
speci?c instead of generic, as with a high-level language. Therefore, assembly<br />
language programming is usually restricted to special cases such as boot code<br />
or routines in which absolute ef?ciency and performance are demanded.<br />
A human programmer will usually be able to write more ef?cient assembly<br />
language than a high-level language compiler can generate. In large programs,<br />
the slight inef?ciency of the compiler is well worth the trade-off for ease of<br />
programming in a high-level language. However, time-critical routines such<br />
as I/O drivers or ISRs may bene?t from manual assembly language coding.</p>
<p>By : E-book Complete_Digital_Design</p>
]]></content:encoded>
			<wfw:commentRss>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/assembly-language-and-addressing-modes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Address Banking</title>
		<link>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/address-banking/</link>
		<comments>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/address-banking/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 13:01:19 +0000</pubDate>
		<dc:creator>repair</dc:creator>
				<category><![CDATA[Basic Computer Architecture]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[banking]]></category>
		<category><![CDATA[bit bank]]></category>
		<category><![CDATA[large data structures]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[memory scheme]]></category>
		<category><![CDATA[microprocessor]]></category>

		<guid isPermaLink="false">http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/address-banking/</guid>
		<description><![CDATA[A microprocessors address space is normally limited by the width of its address
bus, but supplemental logic can greatly expand address space, subject to certain
limitations. Address banking is a technique that increases the amount of memory
a microprocessor can address. If an application requires 1 MB of RAM for
storing large data structures, and an 8-bit microprocessor is [...]]]></description>
			<content:encoded><![CDATA[<p>A microprocessors address space is normally limited by the width of its address<br />
bus, but supplemental logic can greatly expand address space, subject to certain<br />
limitations. Address banking is a technique that increases the amount of memory<br />
a microprocessor can address. If an application requires 1 MB of RAM for<br />
storing large data structures, and an 8-bit microprocessor is used with a 64-kB<br />
address space, address banking can enable the microprocessor to access the full<br />
1 MB one small section at a time.</p>
<p>Address banking, also known as paging, takes a large quantity of memory, divides<br />
it into multiple smaller banks, and makes each bank available to the microprocessor<br />
one at a time. A bank address register is maintained by the microprocessor and<br />
determines which bank of memory is selected at any given time. The selected<br />
bank is accessed through a portion of the microprocessors ?xed address space,<br />
called a window, set aside for banked memory access. As shown in Fig. 3.10a,<br />
the upper 16 kB of address space provides direct access to one of many 16-kB<br />
pages in the larger banked memory structure. Figure 3.10b shows the logical<br />
implementation of this banked memory scheme. A 22-bit combined address is<br />
sent to the 4-MB banked memory structure: 256 pages ? 16 kB per page<br />
= 4 MB. These 22 bits are formed through the concatenation of the 8-bit bank<br />
address register and 14 of the microprocessors low-order address bits, A[13:0].<br />
The eight bank-address bits are changed infrequently whenever the<br />
microprocessor is ready for a new page in memory. The 14 microprocessor-<br />
address bits can change each time the window is accessed.</p>
<p><a href="/complete-digital-design_images/20100131125944.jpg" target="_blank"><img src="/complete-digital-design_images/20100131125944.jpg" border="0" alt="FIGURE 3.10 Address banking." width="464" height="157" /></a></p>
<p>FIGURE 3.10 Address banking.</p>
<p>The details of a banking scheme can be modi?ed according to the applications<br />
requirements. The bank access window can be increased or decreased, and more<br />
or fewer pages can be de?ned. If an application operates on many small sets of<br />
data, a larger number of smaller pages may be suitable. If the data or software<br />
set is widely dispersed, it may be better to increase the window size as much as<br />
possible to minimize the bank address register update rate.</p>
<p>While address banking can greatly increase the memory available to a<br />
microprocessor, it does so with the penalties of increased access time on page<br />
switches and more complexity in managing the segmented address space.<br />
Each time the microprocessor wants to access a location in a different page,<br />
it must update the bank address register. This penalty is acceptable in some<br />
applications. How- ever, if the application requires both consistently fast<br />
access time and large memory size, a faster, more expensive microprocessor<br />
may be required that suits these needs.</p>
<p>The complexity of managing the segmented address space dissuades some<br />
engineers from em- ploying address banking. Software usually bears the brunt<br />
of recognizing when necessary data re- sides in a different page and then<br />
updating the bank address register to access that page. It is easier for<br />
software to deal with a large, continuous address space. With the easy<br />
availability and low cost of 32-bit microprocessors, address banking is not<br />
as common as it used to be. However, if an 8-bit microprocessor must be<br />
used for cost reduction or other limitations, address banking may be useful<br />
when memory demands increase beyond 64 kB.</p>
<p>By : E-book Complete_Digital_Design</p>
]]></content:encoded>
			<wfw:commentRss>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/address-banking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementation of An Eight-Bit Computer</title>
		<link>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/implementation-of-an-eight-bit-computer/</link>
		<comments>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/implementation-of-an-eight-bit-computer/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 11:05:27 +0000</pubDate>
		<dc:creator>repair</dc:creator>
				<category><![CDATA[Basic Computer Architecture]]></category>
		<category><![CDATA[A]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[bus]]></category>
		<category><![CDATA[core microprocessor]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[microprocessor architecture]]></category>
		<category><![CDATA[microprocessor core]]></category>

		<guid isPermaLink="false">http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/implementation-of-an-eight-bit-computer/</guid>
		<description><![CDATA[Having discussed some of the basic principles of microprocessor architecture and
operation, we can examine how a microprocessor ?ts into a system to form a computer.
Microprocessors need external memory in which to store their programs and the data
upon which they operate. In this context, ex- ternal memory is viewed from a logical
perspective. That is, the memory [...]]]></description>
			<content:encoded><![CDATA[<p>Having discussed some of the basic principles of microprocessor architecture and<br />
operation, we can examine how a microprocessor ?ts into a system to form a computer.<br />
Microprocessors need external memory in which to store their programs and the data<br />
upon which they operate. In this context, ex- ternal memory is viewed from a logical<br />
perspective. That is, the memory is always external to the core microprocessor<br />
element. Some processor chips on the market actually contain a certain quantity of<br />
memory within them, but, logically speaking, this memory is still external to the actual<br />
microprocessor core.</p>
<p>In the general sense, a computer requires a quantity of nonvolatile memory, or<br />
ROM, in which to store the boot code that will be executed on reset. The ROM<br />
may contain all or some of the micro- processors full set of software. A small<br />
embedded computer, such as the one in a microwave oven, contains all its software<br />
in ROM. A desktop computer contains very little of its software in ROM. A<br />
computer also requires a quantity of volatile memory, or RAM, that can be used<br />
to store data associated with the various tasks running on the computer. RAM<br />
is where the microprocessors stack is lo- cated. Additionally, RAM can be used<br />
to hold software that is loaded from an external source.</p>
<p>For purposes of discussion, consider the basic eight-bit computer shown in Fig. 3.7<br />
with a small quantity of memory and a serial port with which to communicate with<br />
the outside world. Eight kilobytes of ROM is suf?cient to store boot code and<br />
software, including a serial communications program. Eight kilobytes of RAM is<br />
suf?cient to hold data associated with the ROM software, and it also enables<br />
loading additional software not already included in the ROM. The control signals<br />
in this hypothetical computer are active-low, as are the control signals in most<br />
computer designs that, according to convention, have been in widespread use<br />
for the past few decades. Active-low signal names have some type of symbol<br />
as a pre?x or suf?x to the signal name that distinguishes them from active-high<br />
signals. Common symbols used for this purpose include #, *, , and _. From a<br />
logical perspective, it is perfectly valid to use active-high signaling. However,<br />
because most memory and peripheral devices conform to the active-low<br />
convention, it is often easier to go along with the established convention.</p>
<p><img src="/complete-digital-design_images/20100131124329.jpg" alt="FIGURE 3.7 Eight-bit computer block diagram." /></p>
<p>FIGURE 3.7 Eight-bit computer block diagram.</p>
<p>While hypothetical, the microprocessor shown contains characteristics that are<br />
common in off- the-shelf eight-bit microprocessors. It contains an 8-bit data<br />
bus and a 16-bit address bus with a total address space of 64 kB. The<br />
combined MPU bus, consisting of address, data, and control signals, is<br />
asynchronous and is enabled by the assertion of read and write enable signals.<br />
When the micropro- cessor wants to read a location in memory, it asserts the<br />
appropriate address along with RD* and then takes the resulting value driven<br />
onto the data bus. As shown in the diagram, memory chips usually have<br />
output enable (OE*) signals that can be connected to a read enable. Such<br />
devices continuously decode the address bus and will emit data whenever<br />
OE* is active.</p>
<p>Not all 64 kB of address space is used in this computer. Address decoding logic<br />
breaks the single 64-kB space into four 16-kB regions. According to the state<br />
of A[15:14], one and only one of the chip select signals is activated. The address<br />
decoding follows the truth table shown in Table 3.1 and establishes four<br />
address ranges.</p>
<p>Once decoded into regions, A[13:0] provides unique address information to the<br />
memory and I/O devices connected to the MPU bus. One memory region, the<br />
upper 16 kB, is currently left unused. It may be used in the future if more memory<br />
or another I/O device is added. Each memory and I/O device has a chip select<br />
input and will respond to a read or write command only when that select signal<br />
is active. Furthermore, each chip, including the microprocessor, contains internal<br />
tri-state buffers to prevent contention on the bus. The tri-state buffers are not<br />
enabled unless the chips select signal is active and a read is being performed<br />
(a write, in the case of the microprocessor). Without external address decoding,<br />
none of these chips can share an address region with any other devices, because<br />
they do not have enough address bits to fully decode the entire 16-bit address bus.</p>
<p><img src="/complete-digital-design_images/20100131124432.jpg" alt="" /></p>
<p>Not all address bits are used by the memory and serial port chips. The ROM<br />
and RAM are each only 8k in size. Therefore, only 13 address bits, A[12:0],<br />
are required and, as a result, A[13] is left unconnected. The serial port has far<br />
fewer memory locations and therefore uses only A[3:0], for a maximum of<br />
16 unique addresses.</p>
<p>When a device does not utilize all of the address bits that have been allocated for<br />
its particular address region, the potential for aliasing exists. The ROM occupies<br />
only 8k (13 bits) of the 16k (14 bits) address region. Therefore, the ROM has<br />
no knowledge of any additional addresses above 8k: the region from 0&#215;2000<br />
to 0&#215;3FFFF. What happens if the MPU tries to read location 0&#215;2000? 0&#215;2000<br />
differs from 0&#215;0000 only in the state of A[13]. Because the ROM does not have<br />
any knowledge of A[13], it interprets 0&#215;2000 to be 0&#215;0000. In other words,<br />
0&#215;2000 aliases to 0&#215;0000. Similarly, the entire upper 8k of the address region<br />
aliases to the lower 8k. In the case of the serial port controller, there is a greater<br />
degree of aliasing, because the serial port only uses A[3:0]. This means that there<br />
can be only 16 unique address locations in the entire 16k region. These 16 locations<br />
will therefore appear to be replicated 210 = 1,024 times as indicated by the ten<br />
unused address bits, A[13:4].</p>
<p>As long as the software is properly written to understand the computers memory<br />
map, it will properly access the memory locations that are available and will<br />
avoid aliased portions of the memory map. Aliasing is not a problem in itself but<br />
can lead to problems if software does not access memory and peripherals in<br />
the way in which the hardware engineer intended. If software is written for<br />
the hypothetical computer with the incorrect assumption that 16 kB of RAM<br />
is present, data may be unwittingly corrupted when addresses between 0&#215;6000<br />
and 0&#215;7FFF are written, because they will alias to 0&#215;4000-0&#215;5FFF and<br />
overwrite any existing data.</p>
<p>When the MPU wants to read data from a particular memory location, it asserts<br />
that address onto A[15:0]. This causes the address decoder to update its chip<br />
select outputs, which enables the appro- priate memory chip or the serial port.<br />
After allowing time for the chip select to propagate, the RD* signal is asserted,<br />
and the WR* signal is left unasserted. This informs the selected device that a read<br />
is requested. The device is then able to drive the data bus, D[7:0], with the<br />
requested data. After allowing some time for the read data to be driven, the<br />
MPU captures the data and releases the RD* sig- nal, ending the read request.<br />
The sequence of events, or timing, for the read transaction is shown in Fig. 3.8.</p>
<p>This type of MPU bus is asynchronous, because its sequence of events is not<br />
driven by a clock but rather by the assertion and removal of the various signals<br />
that are timed relative to one another by the MPU and the devices with which it<br />
is communicating. For this interface to work properly, the MPU must allow<br />
enough time for the read to occur, regardless of the speci?c device with which<br />
it is com- municating. In other words, it must operate according to the capabilities<br />
of the slowest device the least common denominator.</p>
<p><img src="/complete-digital-design_images/20100131124556.jpg" alt="FIGURE 3.8 MPU read timing." /></p>
<p>FIGURE 3.8 MPU read timing.</p>
<p>Write timing is very similar, as seen in Fig. 3.9. Again, the MPU asserts the desired<br />
address onto A[15:0], and the appropriate chip select is decoded. At the same time,<br />
the write data is driven onto D[7:0]. Once the address and data have had time to<br />
stabilize, and after allowing time for the chip select to propagate, the WR* enable<br />
signal is asserted to actually trigger the write. The WR* signal is de-asserted while<br />
data, address, and chip select are still stable so that there is no possibility of writing<br />
to a different location and corrupting data. If the WR* signal is de-asserted at the<br />
same time as the others, a race condition could develop wherein a particular<br />
device may sense the address (or data or chip select) change just prior to WR*<br />
changing, resulting in a false write to another location or to the current location<br />
with wrong data. Being an asynchronous interface, the duration of all signal as-<br />
sertions must be suf?cient for all devices to properly execute the write.</p>
<p>An MPU interrupt signal is asserted by the serial port controller to enable easier<br />
programming of the serial port communication routine. Rather than having software<br />
continually poll the serial port to see if data are waiting, the controller is con?gured<br />
to assert INTR* whenever a new byte arrives. The MPU is then able to invoke<br />
an ISR, which can transfer the data byte from the serial port to the RAM. The<br />
interrupt also helps when transmitting data, because the speed of the typical<br />
serial port (often 9,600 to 38,400 bps) is very slow as compared to the clock<br />
speed of even a slow MPU (1 to 10 MHz). When the software wants to send a<br />
set of bytes out the serial port, it must send one byte and then wait a relatively<br />
long time until the serial port is ready for the next byte. Instead of polling in a loop<br />
between bytes, the serial port controller asserts INTR* when it is time to send the<br />
next byte. The ISR can then respond with the next byte and return control to the<br />
main program that is run- ning at the time. Each time INTR* is asserted and the<br />
ISR responds, the ISR must be sure to clear the interrupt condition in the serial<br />
port. Depending on the exact serial port device, a read or write to a speci?c<br />
register will clear the interrupt. If the interrupt is not cleared before the ISR<br />
issues a return-from-interrupt, the MPU may be falsely interrupted again for<br />
the same condition.</p>
<p><img src="/complete-digital-design_images/20100131124656.jpg" alt="FIGURE 3.9 MPU write timing." /></p>
<p>FIGURE 3.9 MPU write timing.</p>
<p>This computer contains two other functional elements: the clock and reset circuits.<br />
The 1-MHz clock must be supplied to the MPU continually for proper operation.<br />
In this example design, no other components in the computer require this clock.<br />
For fairly simple computers, this is a realistic scenario, because the buses and<br />
memory devices operate asynchronously. Many other computers, however, have<br />
synchronous buses, and the microprocessor clock must be distributed to other<br />
components in the system.</p>
<p>The reset circuit exists to start the MPU when the system is ?rst turned on. Reset<br />
must be applied for a certain minimum duration after the power supply has<br />
stabilized. This is to ensure that the digital circuits properly settle to known<br />
states before they are released from reset and allowed to begin normal<br />
operation. As the computer is turned on, the reset circuit actively drives the<br />
RST* signal. Once power has stabilized, RST* is de-asserted and remains<br />
in this state inde?nitely.</p>
<p>By : E-book Complete_Digital_Design</p>
]]></content:encoded>
			<wfw:commentRss>http://appliancerepairfirst.com/complete-digital-design/digital-fandamentals/basic-computer-architecture/implementation-of-an-eight-bit-computer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.588 seconds -->
