Syllabus

Notes

Lectures

Staff

Labs

Resources

211

 

 CprE 211 - Microcontrollers and Digital Systems Design

Department of Electrical & Computer Engineering   
Iowa State University

 

Frequently Asked Questions


 

What is the Quick Check?

The Quick Check exercise is completed in class for one or more of the following purposes:

·        To check attendance and provide data for the participation part of the grade

·        To check student’s understanding about a concept recently learned in class, possibly giving feedback to improve course content

·        To check student’s background on a particular topic, possibly giving feedback to develop course content

·        To give students a chance to think about course content

The Quick Check is not graded for correctness.  If you complete and hand in the Quick Check, you will receive credit.

 

What does “abstraction” mean?

Programming languages bridge the gap between the real-world and the underlying system. A key characteristic of a programming language is its level of abstraction. Abstraction implies hiding of information – a gain in simplicity, clarity, verifiability, portability versus potential performance degradation.

For an example of levels of abstraction in terms of hardware think about CprE 210. The smallest building block for digital electronic circuits is the transistor.  That’s a low level of abstraction. Built on top of this are higher levels.

1.      Transistors

2.      Logic gates (interconnections of transistors) 

3.      Combinational and sequential MSI logic devices such as decoders, muxes, counters, or registers

4.      Arithmetic logic unit, control unit

5.      Processors

“… Progress in computer development has been based on increasing abstraction away from the physical aspects of the computer toward more accurate representations of the real world. From switches to paper tape to operating systems to programming languages; from mainframes to minicomputers to PCs to embedded devices; as computers get more sophisticated, users are able to spend more time thinking about the work they want to accomplish and less time thinking about telling the computer how to accomplish that work.” --http://xml.oreilly.com

What is the difference between big endian and little endian byte ordering?

From the Jargon Dictionary:

big-endian     adj.     [common; From Swift's "Gulliver's Travels" via the famous paper "On Holy Wars and a Plea for Peace" by Danny Cohen, USC/ISI IEN 137, dated April 1, 1980] 1. Describes a computer architecture in which, within a given multi-byte numeric representation, the most significant byte has the lowest address (the word is stored big-end-first). Most processors, including the IBM 370 family, the PDP-10, the Motorola microprocessor families, and most of the various RISC designs are big-endian.

little-endian     adj.     Describes a computer architecture in which, within a given 16- or 32-bit word, bytes at lower addresses have lower significance (the word is stored little-end-first). The PDP-11 and VAX families of computers and Intel microprocessors and a lot of communications and networking hardware are little-endian.

 

From Webopedia:

The adjectives big-endian and little-endian refer to which bytes are most significant in multi-byte data types and describe the order in which a sequence of bytes is stored in a computer’s memory.

In a big-endian system, the most significant value in the sequence is stored at the lowest storage address (i.e., first). In a little-endian system, the least significant value in the sequence is stored first. For example, consider the number 1025 (2 to the tenth power plus one) stored in a 4-byte integer:

00000000 00000000 00000100 00000001

Address

Big-Endian representation of 1025

Little-Endian representation of 1025

00
01
02
03

00000000
00000000
00000100
00000001

00000001
00000100
00000000
00000000

Many mainframe computers, particularly IBM mainframes, use a big-endian architecture. Most modern computers, including PCs, use the little-endian system. The PowerPC system is bi-endian because it can understand both systems.

Converting data between the two systems is sometimes referred to as the NUXI problem. Imagine the word UNIX stored in two 2-byte words. In a Big-Endian systems, it would be stored as UNIX. In a little-endian system, it would be stored as NUXI.

Note that the example above shows only big- and little-endian byte orders. The bit ordering within each byte can also be big- or little-endian, and some architectures actually use big-endian ordering for bits and little-endian ordering for bytes, or vice versa.

The terms big-endian and little-endian are derived from the Lilliputians of Gulliver's Travels, whose major political issue was whether soft-boiled eggs should be opened on the big side or the little side. Likewise, the big-/little-endian computer debate has much more to do with political issues than technological merits.