Professional Documents
Culture Documents
Lecture Slides
Lecture Slides
CMP 751
Digital Computer Design
1.1 Definitions
Digital has to do with system of one and zero or
binary. Computer system operates on one and
zero, one for high and zero low voltage. Because of
that any system that make use of computer system
or major components of computer are said to be
digital.
The way a computer system, which is digital is
designed is referred to as digital design.
The architecture shows the major
design concepts and strategies.
Many concepts in mathematics
and electronics are used in the
design.
This course intends to take you
into what lies beneath the laptop
or desktop you operates and three
are pre-requisites: A) Mathematics
B) Electronics, and
C) Programming
Abstraction: is a method
used in studying a complex
system that cannot be
viewed conveniently in full,
so some parts are made to
become hiding and few
components are studied.
Abstraction is used in
studying digital computer
design. The diagram beside
shows level of abstraction for digital computer
design.
Abstraction
When you are working at one level of abstraction, it is
good to know something about the levels of abstraction
immediately above and below where you are working.
For example, a computer scientist cannot fully optimize
code without understanding the architecture for which
the program is being written. A device engineer cannot
make wise trade-offs in transistor design without
understanding the circuits in which the transistors will be
used.
Discipline
Discipline is the act of intentionally restricting your design
choices so that you can work more productively at a higher
level of abstraction. . Using interchangeable parts is a
familiar application of discipline. Interchangeable parts
example is computer assembly, professional system
engineer buys the several components in the system unit,
couples them and comes up with a system unit.
Digital vs Analog Circuits
Digital circuits use discrete voltage, while
analog circuits use continuous voltage.
Analog circuits are the ancestors of their
digital counterparts, but the use of digital
ones are taken over the analog ones.
The 3 Y’s
In addition to abstraction and
discipline, designers use the three “-y’s” to
manage complexity: i. Hierarchy, ii.
Modularity, and iii. Regularity..
Boolean Logic
George Boole developed a system of
logic operating on binary variables that
is now known as Boolean logic. Each of
Boole’s variables could be TRUE or
FALSE. Electronic computers commonly
use a positive voltage to represent '1' and zero volts to
represent '0'.
The beauty of the digital abstraction is that digital
designers can focus on 1’s and 0’s, ignoring whether the
Boolean variables are physically represented with specific
voltages, rotating gears, or even hydraulic fluid levels.
Beneath the Digital Abstraction
Supply Voltage
4.2 SR Latch
One of the simplest sequential
circuits is the SR latch, which is
composed of two cross-coupled
NOR gates.
The latch has two inputs, S and R,
and two outputs, Q and Q: The SR
latch is similar to the cross-
coupled inverters, but its state can be controlled through
the S and R inputs, which set and reset the output Q.
• Case I: R = 1, S = 0 N1 sees at least one TRUE input,
R, so it produces a FALSE output on Q. N2 sees both
Q and S FALSE, so it produces a TRUE output on Q:
• Case II: R = 0, S = 1 N1 receives inputs of 0 and Q:
Because we don’t yet know Q, we can’t determine
the output Q. N2 receives at least one TRUE input, S,
so it produces a FALSE output on Q: Now we can
revisit N1, knowing that both inputs are FALSE, so
the output Q is TRUE.
• Case III: R = 1, S = 1 N1 and N2 both see at least one
TRUE input (R or S), so each produces a FALSE
output. Hence Q and Q are both FALSE.
• Case IV: R = 0, S = 0 N1 receives inputs of 0 and Q:
Because we don’t yet know Q, we can’t determine
the output. N2 receives inputs of 0 and Q. Because
we don’t yet know Q, we can’t determine the
output. Now we are stuck. This is reminiscent of the
cross-coupled inverters. But we know that Q must
either be 0 or 1. So we can solve the problem by
checking what happens in each of these subcases.
• Case IVa: Q = 0 Because S and Q are FALSE,
N2 produces a TRUE output on Q, as
shown in Figure 3.4(a). Now N1 receives
one TRUE input, Q, so its output, Q, is
FALSE, just as we had assumed.
• Case IVb: Q = 1 Because Q is TRUE, N2
produces a FALSE output on Q, as shown
in Figure 3.4(b). Now N1 receives two
FALSE inputs, R and Q, so its output, Q, is
TRUE, just as we had assumed.
Putting this all together, suppose Q has some
known prior value, which we will call Qprev,
before we enter Case IV. Qprev is either 0 or
1, and represents the state of the system.
When R and S are 0, Q will remember this
old value, Qprev, and Q will be its
complement, Qprev : This circuit has
memory.
The inputs S and R stand for Set and Reset. To set a bit
means to make it TRUE. To
reset a bit means to make it
FALSE. The outputs, Q and Q, are normally
complementary.
The SR latch is represented by the symbol in beside.
Using the symbol is an application of abstraction and
modularity. There are various ways to build an SR
latch, such as using different logic gates
or transistors. Nevertheless, any circuit
element with the relationship specified
by the truth table and the symbol is
called an SR latch.
4.3 D Latch
The SR latch is awkward because
it behaves strangely when both S
and R are simultaneously
asserted. Moreover, the S and R
inputs conflate the issues of
what and when. Asserting one of
the inputs determines not only
what the state should be but also
when it should change. Designing
circuits becomes easier when these questions of what and
when are separated.
The D latch solves these problems. It has two inputs. The data input, D,
controls what the next state should be. The clock input, CLK, controls
when the state should change.
For convenience, we first consider the internal nodes D, S, and R. If CLK =
0, both S and R are FALSE, regardless of the value of D. If CLK = 1, one
AND gate will produce TRUE and the other FALSE, depending on the
value of D. Given S and R, Q and Q are determined.
Observe that when CLK = 0, Q remembers its old value, Qprev. When
CLK = 1, Q = D. In all cases, Q is the complement of Q, as would seem
logical. The D latch avoids the strange case of simultaneously asserted R
and S inputs.
Putting it all together, we see that the clock controls when data flows
through the latch. When CLK = 1, the latch is transparent. The data at D
flows through to Q as if the latch were just a buffer. When CLK = 0, the
latch is opaque. It blocks the new data from flowing through to Q, and Q
retains the old value. Hence, the D latch is sometimes called a
transparent latch or a level-sensitive latch.
The D latch updates its state continuously while CLK = 1. We shall see
later in this section that it is useful to update the state only at a specific
instant in time. The D flip-flop described in the next section does just
that.
Summary
Latches and flip-flops are the fundamental
building blocks of sequential circuits.
Remember that a D latch is level-sensitive,
whereas a D flipflop is edge-triggered. The
D latch is transparent when CLK = 1,
allowing the input D to flow through to the
output Q. The D flip-flop copies D to Q on
the rising edge of CLK. At all other times,
latches and flip-flops retain their old state.
A register is a bank of several D flip-flops
that share a common CLK signal.
5.1 HARDWARE DESCRIPTION LANGUAGE
Thus far, we have focused on designing combinational and
sequential digital circuits at the schematic level. The process
of finding an efficient set of logic gates to perform a given
function is labour intensive and error prone, requiring
manual simplification of truth tables or Boolean equations
and manual translation of finite state machines (FSMs) into
gates. In the 1990s, designers discovered that they were far
more
productive
if they worked at a higher level of abstraction,
specifying just the logical function and allowing a
computer-aided design (CAD) tool to produce the
optimized gates. The specifications are generally
given in a hardware description language (HDL). The
two leading hardware description languages are
SystemVerilog and VHDL
You can download system verilog IDE via
https://www.mentor.com/comp
any/higher_ed/modelsimstudent-edition or you can use an
online IDE at
https://www.edaplayground.co m/
SystemVerilog and VHDL are built on similar principles but
have different syntax, in this course attention will be given
to System verilog, students can easily learn VHDL on their
own if they like since the two are similar in most cases.
HDL is recommended to
students because
Digital computers are nowadays design in HDLs and not
schematic design.
Module
A block of hardware with inputs and outputs is called a
module. An AND gate, a multiplexer, and a priority circuit
are all examples of hardware modules. The two general
styles for describing module functionality are behavioural
and structural. Behavioural models describe what a module
does. Structural models describe how a module is built from
simpler pieces; it is an application of hierarchy.
Assignment Students should learn more about system
verilog syntax at https://en.wikipedia.org/wiki/Sy
stemVerilog
SystemVerilog started with the donation of the Superlog
language to Accellera in 2002 by the startup company Co-
Design Automation.[1] The bulk of the verification
functionality is based on the OpenVera language donated
by Synopsys. In 2005, SystemVerilog was adopted as IEEE
Standard 1800-
2005.[2] In 2009,
the standard was merged with the base Verilog (IEEE
13642005) standard, creating IEEE Standard 1800-2009. The
current version is IEEE standard 1800-2017. Example 1
illustrate behavioural descriptions of a module that
computes the Boolean function
from
explanation
A SystemVerilog module begins with the module name and a listing of the
inputs and outputs. The assign statement describes combinational logic. ~
indicates NOT, & indicates AND, and | indicates OR.
logic signals such as the inputs and outputs are Boolean variables (0 or 1).
They may also have floating and undefined values.
The logic type was introduced in SystemVerilog. It supersedes the reg type,
which was a perennial source of confusion in Verilog. logic should be used
everywhere except on signals with multiple drivers. Signals with multiple
drivers are called nets
5.2 Simulation and synthesis
The two major purposes of HDLs are logic simulation and
synthesis. During simulation, inputs are applied to a
module, and the outputs are checked to verify that the
module operates correctly. During synthesis, the textual
description of a module is transformed into logic gates.
Simulation
Humans routinely make mistakes. Such errors in
hardware designs are called bugs. Eliminating the bugs from
a digital system is obviously important, especially
when customers are paying money and lives depend on the
correct operation. Testing a system in the laboratory is
timeconsuming. Discovering the cause of errors in the lab
can be extremely difficult, because only signals routed to the
chip pins can be observed. There is no way to directly
observe what is happening inside a chip. Correcting errors
after the system is built can be devastatingly expensive.
Synthesis
Logic synthesis transforms
HDL code into a netlist
describing the hardware
(e.g., the logic gates and the wires connecting
them). The logic synthesizer might perform
optimizations to reduce the amount of hardware
required. The netlist may be a text file, or it may be
drawn as a schematic to help visualize the circuit.
Because our primary interest is to build hardware, we will emphasize a
synthesizable subset of the languages. Specifically, we will divide HDL
code into synthesizable modules and a testbench. The synthesizable
modules describe the hardware. The testbench contains code to apply
inputs to a module, check whether the output results are correct, and
print discrepancies between expected and actual outputs. Testbench
code is intended only for simulation and cannot be synthesized.
One of the most common mistakes for beginners is to think of HDL as a
computer program rather than as a shorthand for describing digital
hardware. If you don’t know approximately what hardware your HDL
should synthesize into, you probably won’t like what you get. You might
create far more hardware than is necessary, or you might write code
that simulates correctly but cannot be implemented in hardware.
Instead, think of your system in terms of blocks of combinational logic,
registers, and finite state machines. Sketch these blocks on paper and
show how they are connected before you start writing code.
In our experience, the best way to learn an HDL is by example. HDLs
have specific ways of describing various classes of logic; these ways are
called idioms. When you need to describe a particular kind of hardware,
look for a similar example and adapt it to your purpose.
5.3 Combinational Logic
Software design is a process to conceptualize the software
requirements into software implementation. Software
design takes the user requirements as challenges and tries
to find optimum solution. There are multiple variants of
software design. Bitwise operators
Bitwise operators act on singlebit signals or on multi-bit
busses. For example, the inv SystemVerilog
module inv(input logic [3:0] a, output
logic [3:0] y); assign y = ~a;
endmodule
Explanation a[3:0] represents a 4-bit bus. The bits, from
most significant to least significant, are a[3], a[2], a[1], and
a[0]. This is called little-endian order, because the
least significant bit has the smallest bit number.
module describes four inverters connected to 4-bit busses.
Example 3
The gates module in HDL Example 4.3 demonstrates bitwise operations
acting on 4-bit busses for other basic logic functions.
If we define intermediate
signals, P and G, P=A B G = AB we can rewrite the full
adder as follows:
P and G are called internal variables,
because they are neither inputs nor
outputs but are used only internal to
module fulladder(input
logic a, b, cin, output
logic s, cout); logic p,
assign s = p ^ cin;
cin); Endmodule
Project 5.7 what is the
5.8 Operator
Precedence & Numbers
Numbers can be specified in binary,
octal, decimal, or hexadecimal (bases
2, 8, 10, and 16, respectively). The size,
i.e., the number of bits, may optionally
be given, and leading zeros are
inserted to reach this size. Underscores in numbers are ignored and can be
helpful in breaking long numbers into more readable chunks. The format for
declaring constants is N'Bvalue, where N is the size in bits, B is a letter indicating
the base, and value gives the value. For
example, 9'h25 indicates a 9-bit
number with a value of 2516 = 3710 =
0001001012. SystemVerilog supports 'b
for binary, 'o for octal, 'd for decimal,
and 'h for hexadecimal. If the base is
omitted, it defaults to decimal.
If the size is not given, the
number is assumed to have as
many bits as the expression in
which it is being used. Zeros are
automatically padded on the
front of the number to bring it
up to full size. For example, if w
is a 6-bit bus, assign w = 'b11 gives w the value 000011. It is better
practice to explicitly give the size. An exception is that '0 and '1 are
SystemVerilog idioms for filling a bus with all 0s and all 1s,
respectively.
5.9 Z’s and X’s
HDLs use z to indicate a floating value, z is particularly useful for describing a
tristate buffer, whose output floats when the enable is 0.
Similarly, HDLs use x to indicate an invalid logic level. If a bus is simultaneously
driven to 0 and 1 by two enabled tristate buffers (or other gates), the result is x,
indicating contention. If all the tristate buffers driving a bus are simultaneously
OFF, the bus will float, indicated by z. At the start of simulation, state nodes such
as flip-flop outputs are initialized to an unknown state (x in
SystemVerilog and u in VHDL). This is
module tristate(input logic [3:0] a, input
logic en, output tri [3:0] y); assign y = en
? a :
4'bz;
Endmodule
sim
ult
ane
ous
ly
in
the
n3
;
simulation results). These delays are assign #1 {ab, bb, cb} =
ignored during synthesis; the delay of a
~{a, b, c};
gate produced by the synthesizer assign #2 n1 = ab & bb &
depends on its tpd and tcd cb; assign
#2 n2 = a & bb
specifications, not on numbers in HDL
& cb;
code.
assign #2 n3 = a & bb & c; assign #4 y = n1 | n2 |
n3; endmodule
SystemVerilog files can include a
timescale directive that indicates the value of each time unit. The
statement is of the form 'timescale unit/precision. In this file, each
unit is 1 ns, and the simulation has 1 ps precision. If no timescale
directive is given in the file, a default unit and precision (usually 1
ns for both) are used. In SystemVerilog, a # symbol is used to
indicate the number of units of delay. It can be placed in assign
statements, as well as non-blocking (<=) and blocking (=)
assignments
Project 5.10.1 What is the simulation waveform with delay of
the module
5.11 Structural Modelling
The previous section discussed module mux4(input
behavioural modelling, describing a module in terms of the relationships
between inputs and outputs. This section examines structural modelling,
describing a module in terms of how it is composed of simpler modules Example
8
show how to assemble a 4:1 multiplexer from three 2:1 multiplexers. Each copy
of the 2:1 multiplexer is called an instance. Multiple instances of the same
module are distinguished by distinct names, in this case lowmux, highmux, and
finalmux. This is an example of regularity, in which the 2:1 multiplexer is reused
many times.
logic [3:0] d0, d1, d2, d3, input logic [1:0]
s, output logic [3:0] y); logic [3:0] low,
high; mux2 lowmux(d0, d1, s[0], low); mux2
highmux(d2, d3, s[0], high); mux2
finalmux(low, high, s[1], y); endmodule
Project 5.11.1 show the synthesized circuit
Example 9 shows how modules can access part of a bus. An 8-bit wide 2:1
multiplexer is built using two of the 4-bit 2:1 multiplexers already defined,
operating on the low and high nibbles of the byte.
Note:
In general, complex systems are designed hierarchically. The overall system is
described structurally by instantiating its major components. Each of these
components is described structurally from its building blocks, and so forth
recursively until the pieces are simple enough to describe behaviourally. It is
good style to avoid (or at least to minimize) mixing structural and behavioural
descriptions within a single module.
module mux2_8(input logic [7:0] d0, d1, input logic s, output
logic [7:0] y); mux2 lsbmux(d0[3:0], d1[3:0], s, y[3:0]);
mux2 msbmux(d0[7:4], d1[7:4], s, y[7:4]); endmodule
Project 5.11.2
Show synthesized circuit
5.12 Sequential Logic
HDL synthesizers recognize certain module flop(input
idioms and turn them into specific sequential circuits. Other coding styles may
simulate correctly but synthesize into circuits with blatant or subtle errors. This
section presents the proper idioms to describe registers and latches. Registers
The vast majority of modern commercial systems are built with registers using
positive edge-triggered D flip-flops. Example 10 shows the idiom for such flip-
flops. Note that In general, a SystemVerilog always statement is written in the
form always @(sensitivity list) statement;
logic clk, input logic [3:0] d, output logic
[3:0] q); always_ff @(posedge clk) q <= d;
endmodule Project 5.12.1 show the
synthesized circuit
The statement is executed only when the event specified in the sensitivity list
occurs. In this example, the statement is q <= d (pronounced “q gets d”). Hence,
the flip-flop copies d to q on the positive edge of the clock and otherwise
remembers the old state of q. Note that sensitivity lists are also referred to as
stimulus lists. <= is called a nonblocking assignment. Think of it as a regular = sign
for now; we’ll return to the more subtle points in Section 4.5.4. Note that <= is
used instead of assign inside an always statement. As will be seen in subsequent
sections, always statements can be used to imply flip-flops, latches, or
combinational logic, depending on the sensitivity list and statement. Because of
this flexibility, it is easy to produce the wrong hardware inadvertently.
SystemVerilog introduces always_ff, always_latch, and always_comb to reduce
the risk of common errors. always_ff behaves like always but is used exclusively
to imply flip-flops and allows tools to produce a warning if anything else is
implied.
Resettable Register
When simulation begins or power is first applied to a circuit, the output of a flop
or register is unknown. This is indicated with x in SystemVerilog and u in VHDL.
Generally, it is good practice to use resettable registers so that on powerup you
can put your system in a known state.
The reset may be either asynchronous or synchronous. Recall that
asynchronous reset occurs immediately, whereas synchronous reset clears the
output only on the next rising edge of the clock. Example 11
demonstrates the idioms for flip-flops with asynchronous and synchronous
resets
Note that distinguishing synchronous and asynchronous reset in a schematic can
be difficult. The schematic produced by Simplify Premier places asynchronous
reset at the bottom of a flip-flop and synchronous reset on the left side.
Project 5.12.2
Show synthesized circuits
module flopr(input logic clk, input logic reset, input
logic [3:0] d, output logic [3:0] q); // asynchronous
reset always_ff @(posedge clk, posedge reset) if
(reset) q <= 4'b0; else q <= d; endmodule module
flopr(input logic clk, input logic reset, input logic
[3:0] d, output logic [3:0] q); // synchronous reset
always_ff @(posedge clk) if (reset) q <= 4'b0; else q
<= d; endmodule
Multiple signals in an always statement sensitivity list are separated
with a comma or the word or. Notice that posedge reset is in the
sensitivity list on the asynchronously resettable flop, but not on the
synchronously resettable flop. Thus, the asynchronously resettable
flop immediately responds to a rising edge on reset, but the
synchronously resettable flop responds to reset only on the rising
edge of the clock.
Because the modules have the same name, flopr, you may include
only one or the other in your design.
Enable Register
Enabled registers respond to the clock only when the enable is
asserted.
Example 12 show an asynchronously resettable enabled register
that retains its old value if both reset and en are FALSE.
Recall that a D latch is
transparent when the clock is
HIGH, allowing data to flow
from input to output.
The latch becomes
opaque when the clock is LOW,
retaining its old state. Example
13 show the idiom for a D latch.
Note
Not all synthesis tools support always latch is equivalent to always latches
well. Unless you know @(clk, d) and is the preferred idiom for describing a
latch in SystemVerilog. It
that your tool does support evaluates any time clk or d changes. If latches
and you have a good clk is HIGH, d flows through to q, so this reason to use
them, avoid them code describes a positive level sensitive and use edge-
triggered flip-flops latch. Otherwise, q keeps its old value. instead.
SystemVerilog can generate a warning if
the always_ latch block doesn’t imply a
latch.
INVERTER USING always The = in the always statement is called a blocking
ALU
An Arithmetic/Logical Unit (ALU)
combines a variety of mathematical and
logical operations into a single unit. For
example, a typical ALU might perform
addition, subtraction, magnitude
comparison, AND, and OR operations. The
ALU forms the heart of most computer
systems.
ALU Operations
The ALU receives a control signal F that specifies which function to perform.
Control signals will generally be
shown in blue to distinguish them
from the data..
The SLT function is used for
magnitude comparison and will be
discussed later in this section.
Example 20 show an
implementation of the ALU. The ALU
contains an N-bit adder and N two-
input AND and OR gates. It also
contains inverters and a multiplexer
to invert input B when the F2 control
signal is asserted. A 4:1 multiplexer
chooses the desired function based on
the F1:0 control signals.
SLT is performed by computing S = A −
B. If S is negative (i.e., the sign bit is
set), A is less than B. The zero extend
unit produces an N-bit output by
concatenating its 1-bit input with 0’s in
the most significant bits. The sign bit
(the N-1th bit) of S is the input to the
zero extend unit.
Project 6.4.1
Configure a 32-bit ALU for the SLT
operation. Suppose A = 2510 and B =
3210. Show the control signals and
output, Y.
6.5 Shifters and Rotators
Shifters and rotators move bits and multiply or divide by powers of 2. As the
name implies, a shifter shifts a binary number left or right by a specified number
of positions. There are several kinds of commonly used shifters:
a. Logical shifter—shifts the number to the left (LSL) or right (LSR) and fills
empty spots with 0’s. Ex: 11001 LSR 2
= 00110; 11001 LSL 2 = 00100
b. Arithmetic shifter—is the same as a logical shifter, but on right shifts fills
the most significant bits with a copy of the old most significant bit (msb).
This is useful for multiplying and dividing signed numbers. Ex: 11001 ASR 2
= 11110; 11001 ASL 2 = 00100
c. Rotator—rotates number in circle such that empty spots are filled with bits
shifted off the other end. Ex: 11001 ROR 2 = 01110;
11001 ROL 2 = 00111
4-bit shifters: (a) shift left, (b) logical shift right, (c) arithmetic shift right
6.6 Multiplier & Division
Division:
Binary division can be performed using
the following algorithm for Nbit
unsigned numbers in the range
7.1 MEMORY & I/O SYSTEM
A computer’s ability to solve problems is influenced by its memory
system and the input/output (I/O) devices – such as
monitors, keyboards, and printers – that allow us to manipulate
and view the results of its computations. This chapter
investigates these practical memory and I/O systems.
Example 21
Suppose a program has 2000 data access instructions (loads or stores), and 1250 of these
requested data values are found in the cache. The other 750 data values are supplied
to the processor by main memory or disk memory. What are the miss and hit rates for
the cache?
Solution
The miss rate is 750/2000 = 0.375 = 37.5%. The hit rate is 1250/2000 = 0.625 = 1
− 0.375 = 62.5%.
The miss rate is 750/2000 = 0.375 =
37.5%. The hit rate is 1250/2000 = 0.625 = 1 − 0.375 = 62.5%. the processor first
looks for the data in the cache. If the cache misses, the processor then looks in
main memory. If the main memory misses, the processor accesses virtual
memory on the hard disk. Thus, AMAT is calculated as:
where tcache, tMM, and tVM are the access times of the cache, main
memory, and virtual memory, and MRcache and MRMM are the cache and
main memory miss rates, respectively.
Compared with the ideal large, fast, cheap memory, a hard drive is large and
cheap but terribly slow. It provides a much larger capacity than is possible with a
cost-effective main memory (DRAM). However, if a significant fraction of
memory accesses involve the hard drive, performance is dismal. You may have
encountered this on a PC when running too many programs at once.
As the name implies, the hard disk contains one or more rigid disks or platters,
each of which has a read/write head on the end of a long triangular arm. The
head moves to the correct location on the disk and reads or writes data
magnetically as the disk rotates beneath it.
7.2 Virtual Memory
A computer with only 128 MB of DRAM, for example, could
effectively provide 2 GB of memory using the hard drive. This
larger 2-GB memory is called virtual memory, and the smaller 128-
MB main memory is called physical memory.
Virtual memory is divided into virtual pages, typically 4 KB in size.
Physical memory is likewise divided into physical pages of the
same size.
Virtual memory systems provide memory protection by giving
each program its own virtual
address space. Each program can use as much memory as it wants in that
virtual address space, but only a portion of the virtual address space is in
physical memory at any given time.
7.3 i/o System
Input/Output (I/O) systems are used to connect a computer with
external devices called peripherals. In a personal computer, the
devices typically include keyboards, monitors, printers, and
wireless networks. In embedded systems, devices could include a
toaster’s heating element, a doll’s speech synthesizer, an engine’s
fuel injector, a satellite’s solar panel positioning motors, and so
forth. A processor accesses an I/O device using the address and
data busses in the same way
that it accesses memory.
7.4 Embedded I/O System
Embedded systems use a processor to control interactions with
the physical environment. They are typically built around
microcontroller units (MCUs) which combine a microprocessor
with a set of easy-to-use peripherals such as general-purpose
digital and analog I/O pins, serial ports, timers, etc.
Microcontrollers are generally inexpensive and are designed to
minimize system cost and size by integrating most of the
necessary components onto a single chip.
8-bit microcontrollers are the smallest and least expensive, while
32-bit microcontrollers provide more memory and higher
performance.
Universal Asynchronous
Receiver Transmitter (UART) A UART (pronounced “you-art”) is a
serial I/O peripheral that communicates between two systems
without sending a clock. Instead, the
systems must agree in advance
about what data rate to use and
must each locally generate its own
clock.
Although these system clocks may
have a small frequency error and an
unknown phase relationship, the UART manages reliable
asynchronous communication.
UARTs are used in protocols.
Analog I/O
The real world is an analog place. Many embedded systems need
analog inputs and outputs to interface with the world. They use
analog-to-digitalconverters (ADCs) to quantize analog signals into
digital values, and digital-toanalog-converters (DACs) to do the
reverse
Character LCD
A character LCD is a small liquid crystal display capable of showing one or a few
lines of text. They are commonly used in the front panels of appliances such as
cash registers, laser printers, and fax machines that need to display a limited
amount of information. They are easy to interface with a microcontroller over
parallel, RS-232, or SPI interfaces.
Example 22
Write a program to write “I love LCDs” to a character display.
Step 5: You
do need to know how to read a schematic.
The lines represent wires, the symbols
are the components.
Identify them on the vero board.
Step 6: Turn the board over, all component pins should poke through the shiny
copper side of the board. All soldering and track cutting is also done on this side. You
need a little soldering experience to begin with. If you are not used to soldering,
then it is advisable to use a plastic IC socket.
Step 7: Turn the board over and use two veropins for the power connectors. A
veropin is a short piece of metal, that makes contact with the copper side of the
veroboard
It is rigid and allows a wire to be connected on the component side of the board.
Veropins also make convenient test points as well. Push two veropins through the
copper side at the right hand side on track extremities. It is a good idea to separate
power supply rails by at least one vero track.
Step 8: The wire (also called a "jumper")
because it bridges are spans several
tracks is soldered on the copper side.
After soldering the end wires are cut
close to the board.
Components can be added in any order. It
is however good practise to solder
veropins, jumpers first, then passive components, resistors, capacitors, inductors,
followed by active components such as diodes and transistors next. Finally IC's are
added last, the reason for this order is that repeated soldering and excessive
overheating of the board can destroy the sensitive components. If however, you are
a competant at soldering, any order of assembly can take place.
Where to buy vero board Useful Tools
Veroboard is a very popular product that has Digital Multimedia
been available for years and because of its Soldering iron
popularity it’s widely available from many Vero board cutter
outlets. You can buy at Screw drivers
https://www.amazon.co.uk/dp/B0093ZEA Loose nose pliers
ZO?tag=wwwmovinghous-
21&linkCode=ogi&th=1&psc=1
Other resources
You can get additional help on vero board at
http://www.bestsoldering.com/veroboard -and-stripboard-resources-tools-andstuff/
And
http://www.zen22142.zen.co.uk/Prac/pra c.html
What Next
If a circuit is marketable, meet a company for mass production, but patent it first.
Suffix:
If a suffix is present then this indicates the gain group as below: A = low gain
B = medium gain
C = high gain
No suffix = ungrouped (any gain).
Major Manufacturers
Major manufacturers often produce their own code and numbering scheme for
commercial reasons. The following abbreviations represent some of the larger
semiconductor manufacturers: MJ: Motorolla power, metal case
MJE: Motorolla power, plastic case
MPS: Motorolla low power, plastic case
MRF: Motorolla HF, VHF and microwave transistor
RCA: RCA
RCS: RCS
TIP: Texas Instruments power transistor (platic case)
TIPL: TI planar power transistor
TIS: TI small signal transistor (plastic case)
ZT: Ferranti
ZTX: Ferranti
Common examples include: TIP32A, MJE3055, ZTX302.
Abubakar Muhammad
faqeer4sure@gmail.com