Skip to content

Home page



Cisco is NETWORKING based company. You MUST have at least the minimum knowledge, and taste of network with you. You can also get CCNA,and CCNP degrees from Cisco..
In the following post. I do my best to transfer to main important concepts

Part 1: Introduction to networking:

Modems : This is the very first device between your equipment that connect your computers to the internet cloud.[DSL or Digital Subscriber Line(12Mbps is the Maximum of this technology, Asynchronous and download is faster than upload, and speed is always fix), T1, T2,T3, cable, fiber optic,comcast modems]

Routers: behind the modem, there is device called router, and it responsible for routing data in the network

Firewalls: underneath the router, firewall exists to protect your device from hackers

Switches: is located under firewall as the spliter of internet signal : HUBs was old concept of Switches. JUST trow them in garbage. Hub has no intelligent and basically split internet between users and it causes problem, but Switches knows how to transfer data. Switches may have different ports from 4 to hundred, thousands. We have managed and un-managed switch. Manage version allows you to go into the switch and program to do certain things like quality of the service.. 10Mbps[old days]/100Mbps[nowadays]/ 1000Mbps [latest technology]

Wireless Access Points: will allow wireless devices, and computers to connect to your network. standards are 802.11 family [a[old and nobody use them nowadays, and is not compatible with other standard], b[11Mbps],g,n[allows much larger area to cover, faster, suitable for VOIP],ac]


Defines Logical and Physical: [Not necessary the same concepts]. For example physically you may have one device including modem+ router + firewall + Switch but logically they for devices. Even you may connect your computer to a switch share with other computer but you not logically connected to the same network

Speed :first of all b=bit and B=Byte and the you should know that speed  is measured in bps means bit per second 

VPN:  Virtual Private Network.: Somebody out of physical network becomes a member of your internal network

Cabling : jack-patch panel

Clients, Devices and Servers: Everything on the network is called network device, Server:is a network device that provide something for the rest of the network, Clients: is a network device that receives ar service from service

Part 2: Understanding broadband technologies





I learnt Python from Google Developer Python class, and I recommend you to start learning it as a fast scripting language.

Specific topics: [1] Metastabiliy or Quasistable


In metastable states, the circuit may be unable to settle into a stable ‘0’ or ‘1’ logic level within the time required for proper circuit operation. As a result, the circuit can act in unpredictable ways, and may lead to a system failure, sometimes referred to as a “glitch”

Metastable states are inherent features of asynchronous digital systems, and of systems with more than one independent clock domain. In self-timed asynchronous systems, arbiters are designed to allow the system to proceed only after the metastability has resolved, so the metastability is a normal condition, not an error condition. In synchronous systems with asynchronous inputs, synchronizes are designed to make the probability of a synchronization failure acceptably small. Metastable states are avoidable in fully synchronous systems when the input setup and hold time requirements on flip-flops are satisfied.synchronous systems with asynchronous inputs, synchronizers are designed to make the probability of a synchronization failure acceptably small. Metastable states are avoidable in fully synchronous systems when the input setup and hold time requirements on flip-flops are satisfied.

Metastabiliy happens under these situation:

  • When the input signal is an asynchronous signal.
  • When the clock skew/slew is too much (rise and fall time are more than the tolerable values).
  • When interfacing two domains operating at two different frequencies or at the same frequency but with different phase.
  • When the combinational delay is such that flip-flop data input changes in the critical window (setup+hold window)


An arbiter is a circuit designed to determine which of several signals arrive first. Arbiters are used in asynchronous circuits to order computational activities for shared resources to prevent concurrent incorrect operations. Arbiters are used on the inputs of fully synchronous systems, and also between clock domains, as synchronizers for input signals. Although they can minimize the occurrence of metastability to very low probabilities, all arbiters nevertheless have metastable states, which are unavoidable at the boundaries of regions of the input state space resulting in different outputs

For more information check out this paper

Synthesizer or a synchronization register chain and working in different clock domains:


Synchronous circuit design techniques make digital circuits that are resistant to the failure modes that can be caused by metastability. A clock domain is defined as a group of flip-flops with a common clock. Such architectures can form a circuit guaranteed free of metastability (below a certain maximum clock frequency, above which first metastability, then outright failure occur), assuming a low-skew common clock. However, even then, if the system has a dependence on any continuous inputs then these are likely to be vulnerable to metastable states.

When synchronous design techniques are used, protection against metastable events causing systems failures need only be provided when transferring data between different clock domains or from an unclocked region into the synchronous system. This protection can often take the form of a series of delay flip-flops which delay the data stream long enough for the metastability to have statistically been removed.

One remedy in this case is the use of a two-stage synchronization circuit.The second flip-flop receives the output signal of the first stage one clock period later and can go into a metastable state only if its input conditions are also violated. That is, the output of the first flip-flop is still metastable during its setup and hold time


For more details, study this Texas Instrument document, Altera document

Testing of Digital Circuits


This topic is also known as timing analysis.

There three type of testing approaches in digital designs:

1-We design, without considering  a part for test inside the design, and after it we apply a test pattern to cover a large portion of the faults

2- Design for testablility. such as BIST (Built-In-Self-Test) normally come up with design i FPGA boards

3- Fault tolerant design: In this type of design, we consider a good margin to tolerate errors

Fault sources:

1- In design process: It can happen in two parts; specifications and implementation

2-Device defects

3-Manufacturing process: It happens in material

Fault types:

1- Dynamic: is more related to timing

2- Static: is more related to wiring faults, two wire close to each other and etc.

Test Models: (very simple fault model: Stuck-at faults)

1 – Stuck-at-0 (s-a-0)

2 – Stuck-at-1 (s-a-1)

Combinational Circuits- Test pattern generation

We have Fault vectors (F), and test vectors (T)

Fault Simulation: Given a test vector, by simulating the circuit with the fault, identify all the faults covered by the test vector, It the output is different this test vector can detect that fault

Test Generation:  Given a fault, identify all the test vectors which can cover that fault.

Limitations:  1-We expect one fault to occur[max] 2- Fault other than Stuck-at-fault are expected to show up as stuck-at-faults at some other location 3- these approaches are valid only for combinational circuits

Typical Circuit Enhancement:

1- Insertion of test points:  We increase  number of outputs

2-Pin amplification: We multiplex the function of the pin

3-Test modes:

4- Scan chains:  We can test all pins from a pin

Will be continued ….

MATLAB for engineers, a quick review:

matlab You can ignore this post as, I have never asked, or heard from my gangs who got interview at Cisco hardware team, that any questions related to MATLAB were asked there. I personally had a tutoring sessions with  my students at McGIll, and I decided to review MATLAB here for you, as you are an engineer and having knowledge of MATLAB is a MUST for you.

Note:  What in many other programming languages can only be done with loops, Matlab can often do with vectors

Desktop calculations:

1-At the end of each command line putting ; will  not echo the input

2- Arithmetic: + – * / \(left and right divisions, note that MATLAB has two operation for division) ^ : Then 6/3 is 2 and 3\6 is 2, too.

3- Last line editing: by pressing Up/Down buttons; you can recall the last line

4- A few built-in functions: sin(x), cos(x), tan(x), sqrt(x), exp(x), log(x), log10(x), acos(x), asin(x), atan(x), atan2(x,y)

5- Naming constants and variables:   MATLAB is Case-sensitive. Therefore, Pi, Pi, PI; pi are different 7- Format: 5 digits display is default, but 15 digits display can be achieved by command: format long, for scientific nation command is format short e.

6- Cleaning the screen: clc

7- NaN : Not a Number : I got reject from a company by not knowing it. These values result from operations which have undefined numerical results

One-dimensional arrays

1-Define a row and column matrix: space and comma are equal [1 2 3] = [1,2,3]

2-Indexing for a matrix(x,y)

3- Size of a matrix: size(Matrix), Length of vector: length(Matrix)

4- Clearing variables: clear

5- Add/subtract to matrix A+B. A-B, array multiplication A.*B, array division A./B. Array power A.^n

6- Defining equally distance elements, A=[1:1:10];

7-Simple plots: plot(x,y,’color’), grid on/off, xlabel(‘’), ylabel(‘’), figure, hold on/off, hist(Y,X)


1- Defining a matrix: A=[1 2 3;4 5 6]

2- Juxtaposition and sub matrix C= [A B], C=[A;B], C=A(:,1), A(:,1), A(1:2,1:2’]

3- Elementary operations with matrices A+B, A-B, A.*B and A*B, A./B

4-ones(m,n), zeros(m,n)

Complex numbers

1-imaginary unit is i or j but j is preferred professionally, since, ‘i’ is as current unit in electrical engineering , note that there is no need to write * before i,j

2- real part: real(Z), imaginary part: imag(Z), magnitude abs(Z), angle by angle(Z)

3- Arrays of complex numbers

System of linear equations: AX=B

1- Determinant: det(A)

2- Crammer’s rule:  X=[det(D1);det(D2);det(D3)]/det(A), D1=A, D1(:,1)=B, D2=A, D2(:,2)=B, …..

3- Matrix inversion inv(A)

4-Solving systems of linear equations in MATLAB


1-Polynomial representation: by its coefficients

2- Getting roots: roots(coeff)

3- Multiplication is achieved by convolving conv(c1,c2)

4-Division is achieved by deconvolving deconv(c1,c2)

Programming in MATLAB

1- Programming a function: function y=Alan(x1, x2)

2- Repetitive control structure- FOR LOOPS:  e.g. for K=1:1:10 P(1,k) =sqrt(k); End

3- Conditional control structure:

If condition 


 Elseif condition   >>>>>> look at the here elseif are one work but in C++ it was else if






4- Repetitive control structure- WHILE LOOP

External files and programs:

1-Saving data: save filename.mat variable / save(filename, variables)

2- Loading data X=load(filename.)

Differential and integral

1- Calculating differential: diff(x)/interval : consider that length of diff(x) is less that length of x

2- Calculating Integral: sum(x)*interval Working with strings

String in MATLAB are string of characters

  1. Alway use single quote to define a string
  2. Adding two strings of x,y back to back is possible by strcat() , using + sign is a mistake
  3. Several ways to print a string out to workspace: Formatting strings in MATLAB:
  4. Type the name of the variable w/o a trailing semicolon
    1. disp() is almost the same as above, except it does not print out the variable name
    2. fprintf() is for formatting text and printing out to a file or other device, such as the workspace. It is a very powerful command for formatting strings, combining them, and printing them out
    3. sprintf() is for formatting text in order to create new string variable
  5. Note that :  using cell  array for many elements are better that making matrix of the names = [‘Jonas’,’Fred’,’John’]  meansnames = JonasFredJohn butnames = {‘Jonas’,’Fred’,’John’} means names = ‘Jonas’    ‘Fred’    ‘John’
Cells and structures;
  1. Cell arrays can mix and match data types
  2. Structures can be used to organize and group information

Working with files

  1. fopen() ->  fid = fopen(filename, permission) ; fid: number returned by fopen which you will use to refer to this file, permission: ‘r’,’w’, ‘a’
  2. fclose() 
  3. Other ways to write to files: ìcsvwrite(), ìdlmwrite()

>> myFileID = fopen(‘testfile.txt’,’w’)

myFileID  = 3

>> x = 100;

>> fprintf(myFileID,’X isequal to %d\n’,x);

>> fclose(myFileID);


post no  12
ps: I found this video channel for you. unfortunately, it has no voice. pps: More tutorials: Introduction to MATLAB by D.F. Griffiths

Embedded system review

Embedded system is a computer system designed for specific control functions, normally for real-time purposes and it’s part of a complete system with a hardware and mechanical parts. Physically, embedded systems range from portable devices such as digital watches and MP3 players, to large stationary installations like traffic lights, factory controllers. Complexity varies from low, with a single microcontroller chip, to very high with multiple units, peripherals and networks mounted inside a large chassis or enclosure, Prices vary from under dollar to hundred dollars.

The core of an embedded system can be a microcontroller,DSP, CPLD or FPGA . The difference between these cores and CPU is lack of having MMU(memory management unit) and their application in real-time functions.

The best tutorial that, I found on the web on embedded system programming so far is in the following link by Arvind Singh from Bangalore

The following chapters are covered:

  1. Chapter-1: Introduction to Embedded Systems
  2.  Chapter-2: Instruction Sets
  3.  Chapter-3: Keil C Programming Tutorial (Part-1)
  4.  Chapter-4: Keil C Programming Tutorial: Pointers
  5.  Chapter-5: Keil C Programming Tutorial: Functions
  6.  Chapter-6:  Keil C Programming Tutorial: Writing simple C program in Keil
  7.  Chapter-7: Keil C Programming Tutorial: C and Assembly together
  8.  Chapter-8: Keili C Programming Tutorial: Interfacing C programs to assembeler
  9.  Chapter-9: How to use Keil Microvision IDE
  10.  Chapter-10: Interrupts Programming 8051
  11. Chapter-11: Timers in 8051 &Timer Programming
  12.  Chapter-12: USART Programming
  13.  Chapter-13: I2C or TWI(Two Wire Interface)

You can download Keil C from from this site and instantly start programming! 😉

Check out these videos by Dr. Santanu Chaudhury, Department of Electrical Engineering,  if you need to learn more.

What is next?  Making yourself familiar with Raspberry Pi and Arduino
Raspberry Pi Website and this YouTube channel are the best places to learn Raspberry Pi




I  am uploading a series of videos on my YouTube channel , but it’s matter of  time. Please subscribe. and get the latest updates

Meanwhile, I introduce the following: