Sunday, January 15, 2012

Finite State Machines (FSM) design in Verilog


Designing a synchronous finite state machine (FSM) is a common task for a digital logic engineer. A finite state machine can be divided in to two types: Moore and Mealy state machines. Fig. 1 has the general structure for Moore and Fig. 2 has general structure for Mealy. The current state of the machine is stored in the state memory, a set of n flip-flops clocked by a single clock signal (hence “synchronous” state machine). The state vector (also current state, or just state) is the value currently stored by the state memory. The next state of the machine is a function of the state vector in Moore; function of state vector and the inputs in Mealy.

Fig. 1: Moore State Machine

Fig. 2: Mealy State Machine
Verilog CodingThe logic in a state machine is described using a case statement or the equivalent (e.g., if-else). All possible combinations of current state and inputs are enumerated, and the appropriate values are specified for next state and the outputs. A state machine may be coded as in Code 1 using two separate case statements, or, as in code 2, using only one. A single case statement may be preferred for Mealy machines where the outputs depend on the state transition rather than just the current state.
Consider the case of a circuit to detect a pair of 1's or 0's in the single bit input. That is, input will be a series of one's and zero's. If two one's or two zero's comes one after another, output should go high. Otherwise output should be low.
Here is a Moore type state transition diagram for the circuit. When reset, state goes to 00; If input is 1, state will be 01 and if input is 0, state goes to 10. State will be 11 if input repeats. After state 11, goes to 10 state or 01 depending on the inp, since overlapping pair should not be considered. That is, if 111 comes, it should consider only one pair. 

Following code the Verilog implementation of the state machine. Note that we updated outp and state in separate always blocks, it will be easy to design. inp is serial input, outp is serial output, clk is clock and rst is asynchronous reset. I have used nonblocking statements for assignments because we use previous state to decide the next state, so state should be registered.
module fsm( clk, rst, inp, outp);

   input clk, rst, inp;
   output outp;

   reg [1:0] state;
   reg outp;

   always @( posedge clk, posedge rst )
   begin
   if( rst )
       state <= 2'b00;
   else
   begin
       case( state )
       2'b00:
       begin
            if( inp ) state <= 2'b01;
            else state <= 2'b10;
       end

       2'b01:
       begin
            if( inp ) state <= 2'b11;
            else state <= 2'b10;
       end

       2'b10:
       begin
            if( inp ) state <= 2'b01;
            else state <= 2'b11;
       end

       2'b11:
       begin
            if( inp ) state <= 2'b01;
            else state <= 2'b10;
       end
       endcase
   end
end


always @(posedge clk, posedge rst)
begin
    if( rst )
       outp <= 0;
    else if( state == 2'b11 )
       outp <= 1;
    else outp <= 0;

end

endmodule
Here is a testbench that can be used to test all these examples. This testbench generates both directed and random test values. We can specify the sequence in the first part.
module fsm_test;

reg  clk, rst, inp;
wire outp;
reg[15:0] sequence;
integer i;

fsm dut( clk, rst, inp, outp);

initial
begin

   clk = 0;
        rst = 1;
        sequence = 16'b0101_0111_0111_0010;
   #5 rst = 0;

   for( i = 0; i <= 15; i = i + 1)
   begin
      inp = sequence[i];
      #2 clk = 1;
      #2 clk = 0;
      $display("State = ", dut.state, " Input = ", inp, ", Output = ", outp);

   end
        test2;
end
task test2;
   for( i = 0; i <= 15; i = i + 1)
   begin
      inp = $random % 2;
      #2 clk = 1;
      #2 clk = 0;
      $display("State = ", dut.state, " Input = ", inp, ", Output = ", outp);

   end
endtask


endmodule
Now, let us re-design the above circuit using Mealy style state machine. Output depends on both state and input. State transition diagram is as follows:
When reset, state becomes idle, that is 00. Next, if 1 comes, state becomes 01 and if 0 comes state becomes 10 with output 0. We have showed input 1, output 0 as 1/0. If input bit repeats, output becomes 1 and state goes to 00.
I implemented this state machine as in the code bellow. Only one always block is used because both outp and state are dependent on state and inp.
module mealy( clk, rst, inp, outp);

   input clk, rst, inp;
   output outp;

   reg [1:0] state;
   reg outp;

   always @( posedge clk, posedge rst ) begin
   if( rst ) begin
       state <= 2'b00;
       outp <= 0;
   end
   else  begin
       case( state )
       2'b00: begin
            if( inp ) begin
               state <= 2'b01;
               outp  <= 0;
            end
            else begin
                state <= 2'b10;
                outp <= 0;
            end
       end

       2'b01: begin
            if( inp ) begin
                state <= 2'b00;
                outp  <= 1;
            end
            else  begin
               state <= 2'b10;
               outp <= 0;
            end

       end

       2'b10: begin
            if( inp ) begin
                state <= 2'b01;
                outp  <= 0;
            end
            else begin
               state <= 2'b00;
               outp <= 1;
            end

       end

       default: begin
            state <= 2'b00;
            outp <= 0;
       end
     endcase
   end
end

endmodule
Now, let us discuss difference between Moore and Mealy state machines depending on these codes.
  • Moore state machine is easier to design than Mealy. First design the states depending on the previous state and input. Then design output only depending on state. Whereas in Mealy, you have to consider both state and input while designing the output.
  • Mealy state machine uses less states than the Moore. Since inputs influence the output in the immediate clock, memory needed to remember the input is less. So, it uses less flip flops and hence circuit is simpler.
  • In Mealy, output changes immediately when the input changes. We can observe this point when you simulate the codes above. In Moore example, output becomes high in the clock next to the clock in which state goes 11. So, Mealy is faster than Moore. Mealy gives immediate response to input and Moore gives response in the next clock.
Sequence detector:
Let us design a circuit to detect a sequence of 1011 in serial input. This is an overlapping sequence. So, if 1011011 comes, sequence is repeated twice. Consider these two circuits. First one is Moore and second one is Mealy. In Moore design below, output goes high only if state is 100. Note that we have used 1 less state than Mealy and hence one flip flop less will be enough to design state machine.

This time I will try to implement only Mealy machine. Try to understand the state diagram and compare them first.
When reset, state goes to 00, where there is no previous inputs. State remains same until we get a '1' in the input since there is no possibility of start of sequence. If a 1 comes in the input, it may be start of sequence, so go to state 01. From 01, if again 1 comes, that means sequence is broken. But there is a possibility of start of another new sequence. So, 01 is start of sequence and stay in the same state. If zero comes, go to state 10.
Another 0 when state is 10 breaks the sequence and state goes to 00, no sequence. If 1 comes, continue to next state 11.
If again 1 comes, sequence completes. Make the output high and go to state 01, because there may be a overlapping sequence as I mentioned earlier. If zero comes, sequence breaks and state goes to 10 since it may be second bit of another sequence.
module m1011( clk, rst, inp, outp);

   input clk, rst, inp;
   output outp;

   reg [1:0] state;
   reg outp;

   always @( posedge clk, rst )
   begin
   if( rst )
       state <= 2'b00;
   else
   begin
       case( {state,inp} )
          3'b000: begin
             state <= 2'b00;
             outp  <= 0;
          end
          3'b001: begin
             state <= 2'b01;
             outp  <= 0;
          end
          3'b010: begin
             state <= 2'b10;
             outp  <= 0;
          end
          3'b011: begin
             state <= 2'b01;
             outp  <= 0;
          end
          3'b100: begin
             state <= 2'b00;
             outp  <= 0;
          end
          3'b101: begin
             state <= 2'b11;
             outp  <= 0;
          end
          3'b110: begin
             state <= 2'b10;
             outp  <= 0;
          end
          3'b111: begin
             state <= 2'b01;
             outp  <= 1;
          end

       endcase
   end
end

endmodule

This time I combined state and inp using concatenation operator {} to make code smaller. state and inp is used together to select the case. Using this a I avoided if-begin-end-else-begin-end in every case.


Thursday, January 12, 2012

SystemVerilog Resouces

1.       http://www.testbench.in -- SystemVerilog for Functional Verification – free online tutorial with many examples.

2.       http://www.project-veripage.com -- Project VeriPage

3.       http://www.systemverilog.in/

4.       http://www.doulos.com/knowhow/sysverilog The Guide to SystemVerilog

5.       http://electrosofts.com/systemverilog/ SystemVerilog Tutorial

6.       http://www.systemverilog.org/

7.       http://www.asic-world.com/systemverilog/tutorial.html -- ASIC-World – Extensive free online tutorial with many examples

8.       http://svug.org/ -- SystemVerilog Users Group

9.       http://www.asic.co.in/Index_files/tutorials/system_verilog.pdf -- Design with SystemVerilog

10.   http://www.asic.co.in/Index_files/tutorials/SystemVerilog_veriflcation.ppt -- Verification with SystemVerilog

11.   http://www.eda.ncsu.edu/wiki/Tutorial:Questa_SystemVerilog_Tutorial – Tutorial : Questa SystemVerilog Tutorial

12.   http://www.intelligentdv.com/blog/20/doxygen-filter-for-systemverilog-released/ -- Doxygen Filter for SystemVerilog

Wednesday, November 30, 2011

How to create tag/branch with git-svn


The SVN server structure is like this:
http://foo.net/code/design/
                          |-- trunk/
                          |        |-- proj1
                          |        |-- proj2
                          |-- tags/
                          |       |-- forProj1
                          |       |-- forProj2
                          |-- branches/
                          |           |-- forProj1
To create the tag:
  1. Clone SVN:
    $ git svn clone http://foo.net/code/design --trunk=trunk/proj1 --tags=tags/forProj1 --branches=branches/forProj1 localProjName
  2. Then the tag can be created with simple command
    $ git svn tag -n -m "test tag" test_v1
Do the branch in the same way.
The original question and answer can check http://stackoverflow.com/questions/8306592/git-svn-how-to-create-a-tag-branch-for-a-sub-project-of-svn

Thursday, November 10, 2011

How to download Chrome Extension and install it from local

My computer is set to can't run Google Chrome. I don't know how they did that. But if your run "chrome.exe" it  will be automatically killed before it started.

The solution is rename it to any name except "chrome.exe", for example, "ie.exe". Then I can use it.

But that is not perfect. I can't install any extension from Chrome WebStore. I got the error message as below:

Package is invalid. Details: 'Could not create directory for unzipping: C:\XXXXXX".

Check the latest Chrome Dev, it has the "Developer Mode" which can load the local unpacked extension. Then I got the idea to download the extension and load it from local directory.

1. Find the ID of extension

When you press the extension in the Chrome WebStore, you can get the link as below in the URL bar.
https://chrome.google.com/webstore/detail/cfhdojbkjhnklbpkdaibdccddilifddb
The one after webstore/detail/ is the ID (cfhdojbkjhnklbpkdaibdccddilifddb) of it.

2. Open other browser (Not Chrome)

Paste this in the URL bar
https://clients2.google.com/service/update2/crx?response=redirect&x=id%3DRealID%26uc

replace the with the real ID you found in last step.

3. Hit "Enter" then you would ask to save the extension.

4. Unzip it to a directory

5. Press "Load unpacked extension" in the chrome://settings/extensions. It will ask you to locate the directory of extension created in Step 4.

Then, enjoy the extension.

Next time, try to make it automatically.

Any ideas of workaround for using Google Chrome in my situation is welcomed.

Tuesday, November 8, 2011

Compile UVM DPI for QuestaSim

Download UVM 1.1 and want to have a try. But when I tried to compile the DPI for QuestaSim:

uvm/examples$ make -f Makefile.questa dpi_lib

I got error message as below:
uvm/src/dpi/uvm_regex.cc:26:22: fatal error: vpi_user.h: No such file or directory
compilation terminated.
make: *** [dpi_lib] Error 1

After check the makefile and here, I found the reason is I don't have MTI_HOME setup in my environment.

Set the MTI_HOME to the install direcotry of QuestaSim. Then make again, everything is fine. 

From now on, start my UVM learning progress. 

Any good resources for UVM, such as tutorial, forum, articles, blogs, etc, are welcomed.

Wednesday, October 26, 2011

Free Online Courses from Top Universities

Economics
  • American Economic History – iTunes – J. Bradford Delong, UC Berkeley
  • Austrian Economics: An Introduction – Web Site - Murray N. Rothbard - New York Polytechnic University
  • Capitalism: Success, Crisis and Reform - iTunes Video - iTunes Audio - YouTube - Web Site – Douglas W. Rae, Yale
  • Economic Crisis and Globalization – Video – Richard D. Wolff, The New School
  • Economic Geography of the Industrial World – iTunes – Richard Walker, UC Berkeley.
  • Financial Markets – YouTube – iTunes Audio – iTunes Video- Download Course – Robert Shiller, Yale
  • Financial Theory - iTunes Video - iTunes Audio - Web Site – John Geanakoplos, Yale
  • Game Theory – YouTube – iTunes – Download Course – Ben Polak, Yale
  • Game Theory in the Social Sciences - iTunes Video – Yves Zenou, UC Berkeley
  • Intermediate Macroeconomic Theory - YouTube – Professor J. Bradford Delong, UC Berkeley
  • International Political Economy - iTunes - James Morrison, Middlebury College
  • International Trade - YouTube - iTunes Video – Steven Wood, UC Berkeley
  • Introduction to Economics – iTunes – J. Bradford Delong, UC Berkeley
  • Marxian Class Analysis Theory and Practice Online Course –Video – Richard D. Wolff, The New School
  • Introduction to Environmental Economics and Policy- YouTube – Professor Gordon Rausser, UC Berkeley
  • Marxian Class Analysis Theory and Practice - Video - Richard D. Wolff, The New School
  • Marxian Economics – An Intensive Introduction – Video – Richard D. Wolff, The New School
  • Marxian Economics: Advanced & Applied Intensive Course –Video - Richard D. Wolff, The New School
  • Reading Marx’s Capital – Google Video – David Harvey, City University of New York
  • The Austrian School of Economics: An Introduction – Web Site- Friedrich A. Hayek & colleagues – Recorded at University of Colorado
Bookmark our collection of free online Economics courses. And find free econ textbooks in our Free Textbook collection.
History
  • African-American History: Modern Freedom Struggle –YouTube – iTunes – Clay Carson, Stanford
  • American Economic History – iTunes – J. Bradford Delong, UC Berkeley
  • Ancient Greek History - YouTube - iTunes Audio - iTunes Video- Download Course – Donald Kagan, Yale
  • Ben Franklin and the World of the Enlightenment – iTunes – Bruce Thompson, Stanford/UC Santa Cruz
  • China: Traditions and Transformations – Multiple Formats – Peter K. Bol & William Kirby, Harvard
  • Colonial and Revolutionary America – iTunesU – Jack Rakove, Stanford
  • Early Modern England: Politics, Religion, and Society under the Tudors and Stuarts - iTunes Video - iTunes Audio - YouTube- Web Site – Keith E. Wrightson, Yale
  • Epidemics in Western Society Since 1600 - iTunes Video –  iTunes Audio - YouTube - Web Site – Frank Snowden, Yale
  • Europe and the World: Wars, Empires, Nations 1648-1914 –iTunes Audio - David Wetzel, UC Berkeley
  • European Civilization, 1648-1945 - YouTube – iTunes Audio –iTunes Video - Download Course – John Merriman, Yale
  • European Civilization from Renaissance to Present – iTunes – Carla Hesse, UC Berkeley
  • European Civilization from the Renaissance to the Present -YouTube - iTunes Video – Thomas Lacquer, UC Berkeley
  • European Cultural History, 1500-1815 - MP3s – George Mosse, University of Wisconsin- Madison
  • European Cultural History, 1660-1870 - MP3s – George Mosse, University of Wisconsin- Madison
  • European Cultural History, 1880-1920 - MP3s – George Mosse, University of Wisconsin- Madison
  • France Since 1871 – YouTube – iTunes – Download Course – John Merriman, Yale
  • Hannibal – iTunes – Patrick Hunt, Stanford.
  • Historical Jesus – iTunes – Thomas Sheehan, Stanford University
  • History of Anthropological Thought – iTunes – Rosemary Joyce, UC Berkeley
  • History of Information – YouTube – Professors Geoffrey D. Nunberg, Paul Duguid, UC Berkeley
  • History of Iran to the Safavid Period – iTunes – Richard Bulliet, Columbia University
  • History of the International System – iTunes – James Sheehan, Stanford University
  • History of the Modern Middle East – iTunes – Richard Bulliet, Columbia University
  • History of New York City: A Social History - iTunes – YouTube –Web Site – Daniel Walkowitz, NYU
  • History of the United States Since 1945 – iTunes – Daniel Sargent, UC Berkeley
  • History of the World to 1500 CE – YouTube – Richard Bulliet, Columbia University
  • Intellectual History of the United States since 1865 - iTunes – Richard Candida Smith, UC Berkeley
  • Introduction to Greek History - YouTube – iTunes – Download Course – Donald Kagan, Yale
  • Medicine and Public Health in American History – Web Audio - Chris Hamlin, Notre Dame
  • Modern Civilization: 1750 to Present - YouTube – Lynn Hunt, UCLA
  • Modern Jewish History – MP3s – George Mosse, University of Wisconsin – Madison
  • Science, Magic and Religion - iTunes - YouTube – Courtenay Raiai, UCLA
  • The American Founders and Their World – iTunes – Jack Rakove, Gordon Wood, etc. Stanford
  • The American Revolution – iTunes Video - iTunes Audio –YouTube - Web Site – Joanne B. Freeman, Yale
  • The Civil War and Reconstruction Era, 1845-1877 - YouTube –iTunes Audio – iTunes Video - Download Course – David Blight, Yale
  • The Peculiar Modernity of Britain, 1848-2000 – iTunes – James Vernon, UC Berkeley
  • The Rise and Fall of the Second Reich – iTunes – Margaret Anderson, UC Berkeley
  • The United States and the World Since 1945 - iTunes Audio – Daniel Sargent, UC Berkeley
  • The Western Tradition (Video) – Videos – Course Outline – Eugen Weber, UCLA
  • War and Peace: International Relations since 1914 – iTunes – David Wetzel, UC Berkeley
  • World War and Society in the 20th Century: World War II –Multiple Formats – Charles S. Maier, Harvard
Bookmark our collection of free online History courses.
Law
  • Aims and Limits of the Criminal Law - iTunes Audio – Tamara Lave, UC Berkeley
  • Climate Change: Law and Policy – YouTube – iTunes Audio –iTunes Video – Cymie Payne, Daniel Farber, UC Berkeley
  • Environmental Justice and Human Rights in the Aftermath of Katrina – Web Audio – Cynthia Toms Smedley, Notre Dame
  • Environmental Law and Policy - YouTube – Bob Infelise, UC Berkeley
  • Environmental Politics and Law - iTunes Video - iTunes Audio- YouTube - Web Site – John P. Wargo, Yale
  • International Environmental Law – YouTube – iTunes Video –iTunes Audio – Cymie Payne
  • Introduction to Copyright Law – iTunes – Web Site – Keith Winstein, MIT
  • Renewable Energy & Alternative Fuels (Law & Policy) –YouTube – UC Berkeley
Political Science, International Relations and Law
  • African American Studies: Intro to African American Political Thought – YouTube – Mark Sawyer, UCLA
  • Climate Change: Law and Policy – iTunes – Cymie Payne
  • Environmental Politics and Law - iTunes Video - iTunes Audio- YouTube - Web Site – John P. Wargo, Yale
  • Faith and Globalization – YouTube – Tony Blair, Miroslav Volf, Yale
  • Geography of US Presidential Elections – YouTube – iTunes – Martin Lewis, Stanford
  • International Politics – Feed – Johns Hopkins
  • International Political Economy – iTunes - James Morrison, Middlebury College
  • International Politics – Audio - James Morrison, Middlebury College
  • Introduction to German Politics – iTunes – Andreas Busch, Oxford University
  • Introduction to Political Philosophy – YouTube – iTunes –Download Course, Steven B. Smith, Yale
  • Justice: A Journey in Moral Reasoning (Video) – Video – Michael Sandel, Harvard
  • Perspectives on China (Video) – Video – Roderick MacFarquhar, Harvard
  • Politics and Strategy – YouTube – Kathleen Bawn, UCLA
  • Republicanism – Feed - Johns Hopkins
  • The Moral Foundations of Politics - iTunes Video - iTunes Audio- YouTube - Web Site – Professor Ian Shapiro, Yale
Bookmark our collection of free online Political Science courses.
Sociology
  • Foundations of Modern Social Theory – iTunes Video - iTunes Audio - YouTube - Web Site – Iván Szelényi, Yale
  • Global Sociology - YouTube – Professor Michael Burawoy, UC Berkeley
  • Introduction to Sociology – Web Site – Harvey Molotch, NYU
  • The Sociology of Race Relations – iTunes – Gianpaolo Baiocchi, UMASS Amherst
Sciences
Computer Science & Artificial Intelligence
  • Artificial Intelligence – Introduction to Robotics – YouTube –iTunes – Multiple formats – Oussama Khatib, Stanford
  • Artificial Intelligence – Natural Language Processing – Multiple formats – Christopher Manning, Stanford
  • Artificial Intelligence – Machine Learning – YouTube – iTunes –Multiple formats – Andrew Ng, Stanford
  • Artificial Intelligence – YouTube – P.Dasgupta, IIT
  • Bits – Multiple Formats – Harry Lewis, Harvard
  • Building Dynamic Web Sites – iTunes - Video & Audio – David Malan, Harvard Extension
  • Building Mobile Web Sites – iTunes – Web Site - David Malan, Harvard Extension
  • Computational Camera and Photography – Download Course – Ramesh Raskar, MIT
  • Computer Graphics – YouTube – Sukhendu Das, IIT
  • Computer Language Engineering - YouTube – iTunes Video – Web Site – Martin Rinard, MIT
  • Computer Networks – YouTube – S.Ghosh, IIT
  • Computer System Engineering – Web Site – Profs. Robert Morris and Samuel Madden, MIT
  • Data Structures - iTunes Video – Paul Hilfinger, UC Berkeley
  • Developing Apps for iOS (iPhone & iPad) – iTunesU – Paul Hegarty, Stanford
  • Discrete Mathematical Structures YouTube – Kamala Krithivasan, IIT
  • Intensive Introduction to Computer Science Using C, PHP, and JavaScript – Multiple Formats – David Malan, Harvard
  • Introduction to Algorithms – iTunes – YouTube - Web Site –  Prof. Charles Leiserson & Erik Demaine, MIT
  • Introduction to Computer Programming for Scientists and Engineers - iTunes Audio – iTunes Video – Roberto Horowitz, UC Berkeley
  • Introduction to Computer Science and Programming -YouTube – iTunes – MIT Web Site – Eric Grimson, John Guttag, MIT
  • Introduction to Computer Science: Programming Methodology – YouTube – iTunes – Multiple formats – Mehran Sahami, Stanford
  • Introduction to Computer Science: Programming Abstractions - YouTube – iTunes - Multiple formats – Julie Zelenski, Stanford
  • Introduction to Computer Science: Programming Paradigms -YouTube – iTunes - Multiple formats – Jerry Cain, Stanford
  • Introduction to Computer Graphics – YouTube – Prem Kalra, IIT
  • Introduction to Embedded Systems - YouTube – Professors Sanjit Seshia, Edward A. Lee, UC Berkeley
  • Introduction to Problem Solving & Programming – YouTube – Deepak Gupta, IIT
  • iPhone Application Development (Spring 2009)- iTunes – Stanford
  • iPhone Application Development (Winter 2010) – iTunes – Stanford
  • Logic & Proofs – Web Site – Carnegie Mellon
  • Machine Structures – iTunes Video – David Culler, UC Berkeley
  • Multimedia Systems - iTunes – Surendar Chandra, Notre Dame
  • Operating Systems and System Programming – iTunes – Multiple professors, UC Berkeley
  • Operating Systems Principles – iTunes – Surendar Chandra, Notre Dame
  • Principles of Digital Communications I - YouTube – iTunes – Profs Gallagher and Zheng, MIT
  • Principles of Digital Communications II - YouTube – MIT
  • Programming Languages and Compilers - YouTube – Professor Paul Hilfinger, UC Berkeley
  • Quantum Computing for the Determined - YouTube – Michael Nielsen, The University of Queensland
  • Search Engines: Technology, Society and Business – YouTube – Marti Hearst, UC Berkeley
  • The Beauty and Joy of Computing – iTunes - Brian Harvey, UC Berkeley
  • The Beauty of Joy of Computing – YouTube – Professor Daniel Garcia, UC Berkeley
  • The Future of the Internet – iTunes – Ramesh Johari, Stanford
  • The Structure and Interpretation of Computer Programs –YouTube - iTunes – Brian Harvey, UC Berkeley
  • Understanding Computers and the Internet – iTunes – Feed – David Malan, Harvard University
Bookmark our collection of free online Computer Science courses. Also find comp sci textbooks in our Free Textbook collection.
Engineering (Mechanical, Civil and Electrical)
  • Advanced Analog Integrated Circuits – YouTube – Professor Simone Gambini, UC Berkeley
  • Atomistic Computer Modeling of Materials – YouTube – iTunes Video – Web Site – Gerbrand Ceder & Nicola Marzari, MIT
  • Convex Optimization I – Multiple Formats – Stephen Boyd, Stanford
  • Convex Optimization 2 – Multiple Formats – Stephen Boyd, Stanford
  • Direct Solar/Thermal to Electrical Energy Conversion Technologies – iTunes – Download Course – Gang Chen, MIT
  • Dynamics of Machines – YouTube – Amitabha Ghosh, IIT
  • Electrical – Digital Signal Processing YouTube – S.C Dutta Roy, IIT
  • Electro Magnetic Fields – YouTube – Harishankar Ramachandran, III
  • Engineering Statistics – Web Site – Carnegie Mellon
  • Environmental Air Pollution – YouTube -Mukesh Sharma, IIT
  • Fluid Mechanics – YouTube – T.I.Eldho, IIT
  • Introduction to Chemical Engineering – YouTube – iTunes – Channing Robertson, Stanford
  • Introduction to Digital Integrated Circuits - iTunes – Elad Alon, UC Berkeley
  • Introduction to Digital Integrated Circuits – YouTube – Professor Jan M. Rabaey, UC Berkeley
  • Introduction to Engineering – iTunes – Tod Laursen, Duke
  • Introduction to Linear Dynamical Systems - Multiple formats – Stephen Boyd, Stanford
  • Introduction to Microelectronic Circuits – iTunes – Chang-Hasnain, UC Berkeley
  • Introduction to Engineering – iTunes Video – Multiple presenters, Duke University
  • Linear Integrated Circuits – YouTube – Professor Clark Tu-Cuong Nguyen, UC Berkeley
  • Mechanical Engineering: Introduction to MEMS Design -iTunes Audio – iTunes Video – UC Berkeley
  • Nano-to-Macro Transport Processes – iTunes Audio – Web Site – Gang Chen, MIT
  • The Fourier Transform and its Applications – YouTube – iTunes– Multiple formats – Brad Osgood, Stanford
Bookmark our collection of free online Engineering courses.
Mathematics
  • Abstract Algebra - Multiple Formats – Benedict Gross – Harvard
  • Calculus – iTunes Audio – F. Michael Christ, UC Berkeley
  • Calculus Revisited: Single Variable Calculus (1970) – YouTube -iTunes Video – Web Site – Herb Gross, MIT
  • Computational Science and Engineering I - iTunes – YouTube –Web Site – Gilbert Strang, MIT
  • Core Science Mathematics – YouTube – SK Ray, IIT
  • Differential Equations – YouTube – iTunes – MIT – Arthur Mattuck
  • Engineering Statistics - Web Site – Carnegie Mellon
  • Geometric Folding Algorithms:Linkages, Origami, Polyhedra -Web Site – Erik Demaine, MIT
  • Introduction to Probability and Statistics – YouTube – iTunes Video – Deborah Nolan, MIT
  • Introductory Probability and Statistics for Business - iTunes – Fletcher Ibser, UC Berkeley
  • Introduction to Statistics - iTunes – Fletcher Ibser, UC Berkeley
  • Linear Algebra – YouTube – iTunes – Gilbert Strang, MIT
  • Logic & Proofs - Web Site – Carnegie Mellon
  • Multivariable Calculus - YouTube - iTunes – Dennis Auroux, MIT
  • Probability for Math Science – iTunes – YouTube – Herbert Enderton, UCLA
  • Sets, Counting, and Probability - Multiple Formats – Paul Bamberg, Harvard
  • Single Variable Calculus - YouTube – iTunesU – David Jerison, MIT
  • Statistics – Web Site – Carnegie Mellon
  • The Calculus Lifesaver – Download Videos – Adrian Banner, Princeton
Bookmark our collection of free online Math courses. Also find free math textbooks in our Free Textbook collection.
Physics
  • Exploring Black Holes: General Relativity & Astrophysics- YouTube - iTunes Video - Web Site – Edmund Bertschinger, MIT
  • Descriptive Introduction to Physics – iTunes Video - iTunes Audio- Richard Muller, UC Berkeley
  • Fundamentals of Physics – iTunes - YouTube - Download Course – Ramamurti Shankar, Yale
  • Fundamentals of Physics II - iTunes Video - iTunes Audio –YouTube - Web Site – Ramamurti Shankar, Yale
  • Introduction to Astrophysics – iTunes - YouTube – Josh Bloom, UC Berkeley
  • Introduction to Cosmology and Particle Physics – YouTube – Sean Carroll, Caltech
  • Introduction to Solar System Astronomy – iTunes – Feed – Richard Pogge, Ohio State
  • Introductory Physics – iTunes – Michael Deweese, UC Berkeley
  • Modern Theoretical Physics: Classic Mechanics (Video) – iTunes– YouTube – Leonard Susskind, Stanford
  • Modern Theoretical Physics: Quantum Mechanics (Video) –iTunes – YouTube – Leonard Susskind, Stanford
  • Modern Theoretical Physics: Special Relativity (Video) – iTunes– YouTube – Leonard Susskind, Stanford
  • Modern Theoretical Physics: Einstein (Video) – iTunes –YouTube – Leonard Susskind, Stanford
  • Modern Theoretical Physics: Cosmology (Video) - iTunes –YouTube – Leonard Susskind, Stanford
  • Modern Theoretical Physics: Statistical Mechanics (Video) –iTunes – YouTube – Leonard Susskind, Stanford
  • Quantum Entanglement Part 1: (Video) – iTunes – YouTube - Leonard Susskind, Stanford University
  • Quantum Entanglement Part 3: (Video) – iTunes – YouTube – Leonard Susskind, Stanford University
  • Quantum Mechanics – iTunes – JJ Binney, Oxford University
  • Quantum Mechanics – iTunes – Feed – John Terning, UC Davis
  • Quantum Physics Made Relatively Simple – Videos - Hans Bethe, Cornell University
  • Physics I: Classical Mechanics – iTunes – Video Download –YouTube – Walter Lewin, MIT
  • Physics II: Electricity and Magnetism – iTunes – Video Download– YouTube – Walter Lewin, MIT
  • Physics III: Vibrations and Waves – iTunes – Video Download –YouTube – Walter Lewin, MIT
  • Physics for Future Presidents – YouTube – Richard Muller, UC Berkeley
  • Stars, Galaxies, and the Universe – iTunes – Feed – Richard Pogge, Ohio State
  • String Theory, Black Holes, and the Laws of Nature (Video) –Videos – Andrew Strominger, Harvard
  • The Character of Physical Law – Video – Richard Feynman, Cornell
Bookmark our collection of free online Physics courses. Also find free physics textbooks in our Free Textbook collection.
Business
  • Entrepreneurship and Business Planning – iTunes – Feed – Mark Juliano, Carnegie Mellon
  • Introductory Probability and Statistics for Business - iTunes – Fletcher Ibser, UC Berkeley
  • Marketing 321 – iTunes – Elaine Daussy, Texas A&M

The original post comes from Open Culture