    
    Demonstrations for using logisym


            [ * These are intended as a tutorial on using LOGISYM * ]
            [ and not as a tutorial on the subject of digital logic ]


    1. First run:     Basic operation of the simulator, and a look at the 
                      basic logic functions AND, OR, NOT, and  BUFFER, as
                      well as the unit delay model.
        
    2. Exclusive Or:  More about Logisym's controls and a demonstration of 
                      an Exclusive Or gate built from  AND, OR, and NOT 
                      logic gates.
                      
    3. 4 to 1 MUX:    The use of function keys as input data to a circuit,
                      details on single step, and a demonstration of a 
                      4 to 1 multiplexer.

    4. Arithmetic:    A simultaneous look at the half and full adders.
        
    5. 'Z' clocks:    Clock controls and a demonstration of the use and 
                      versatility of the internal signals as inputs to 
                      circuits.

    6. Flip flops:    Time base & Single step to observe detail and flow 
                      of logic, featuring logisym's ability to accurately 
                      simulate sequential logic circuits. Hazard states in 
                      flipflops.
    


    1. First run

        If you have not done so, create a \LOGISYM directory on your 
    hard disk and copy all of the logisym files to this directory. 
    
        At the DOS prompt type the command line:

                 C:\LOGISYM > logisym andornot<CR>

        The first screen is the SHAREWARE and COPYRIGHT notice, read  
    the notice and press <CR> to acknowledge and accept the terms     
    specified. The next screen is the file select/load screen. 
    
        Since you specified the file ANDORNOT.CKT on the command line, 
    Logisym will not display a listing of the circuit files and will 
    not prompt you to enter the files to be simulated. Next time try 
    running Logisym without a circuit file on the command line. 
    
        Logisym will begin to load and parse the file, reporting the 
    number of logic probes, logic gates, and errors found. When   
    finished, you are prompted to 'Press any key when ready', do so. 
    
        You are now in the trace screen. Depending on the speed and   
    architecture of your computer the trace may be flying by at an    
    overwhelming rate, or crawling along at a snail's pace. Adjust    
    the delay time by turning the DELAY knob in the lower right area 
    of the screen, this is done by either pressing <y> to turn   
    counter clockwise, or pressing <Y> to turn clockwise, or by 
    clicking the left mouse button on '-' or '+'. Adjust the delay to
    minimum and then to maximum extremes, now adjust the delay so the
    trace takes between 5 and 15 seconds to cross the screen. This 
    delay is passive and has no effect on the operation of the circuit. 
        
        By this time a few trace screens may have passed, press <T> to 
    turn AUTO TRIGGER off, a red square in braces: [] indicates ON, 
    empty braces: [ ] indicates OFF. When off the trace will stop at 
    the end of the current screen and automatically go into PAUSE mode. 
    
        Now take a close look at the timing chart generated by logisym. 
    The yellow traces are internal clock signals, Z*, used as inputs to 
    the circuit, the green traces are the outputs from logic gates defined
    in the circuit. The 1s and 0s on the right are the instantanious
    binary value of each trace. 
    
        In this simulation the top trace is ZD, a bit from the eight bit 
    up/down counter. Next is ZR, a bit from the four bit random data
    generator. Look at the gate outputs. The output from OA, an AND gate, 
    is high only when both ZD and ZR are high. The output from OB, an OR 
    gate, is high when either ZD or ZR are high. The output from OC, an 
    inverter (sometimes called a NOT gate), is high only when its input, 
    OB, is low. IA, a buffer, follows its input, OC, exactly. 
    
        Notice several buffers are cascaded. Turn the TIMEBASE knob fully 
    clockwise by pressing (uppercase)<B> or clicking the left mouse button 
    on the '+' just below the knob, and press the <SPACEBAR> to proceed to 
    the next trace screen. Now watch for an event that causes IA to change 
    states, observe the delay in the signal as it is propagated through the 
    other buffers. This is the 'unit delay', it has no defined time in the 
    simulation but is representitive of a real delay that exists in all 
    logic devices. The unit delay is the same (has the same value) for all 
    logic functions in Logisym except for the RS, D, and JK flipflops. In 
    the generic TTL inverter (part # 7404) this delay would be about 10 
    nanoseconds. 

        In this lesson you have learned how to use the BUTTONS and KNOBS 
    that control many of logisym's functions. We have also reviewed the 
    fundamental operations in which all logic functions are rooted. In the 
    future adjust DELAY according to your needs, the speed of your computer
    and the TIMEBASE you are using.
    
    
    2. Exclusive Or

        At the DOS prompt type the command line:

                 C:\LOGISYM > logisym<CR>

        Press <CR> to transend the sharware and copyright notice. Observe 
    the listing of files in the window at the bottom of the screen. At the 
    prompt type XOR and press <CR> as below:

                 FILES  XOR<CR>

        Logisym should load XOR.CKT without error. Proceed to the trace 
    screen by pressing any key. 
    
        First turn the TIMEBASE fully counter clockwise by pressing <b> or 
    clicking on the '-'. Now adjust the COUNTER so that there are sixteen 
    complete cycles of ZB per trace screen. Adjust the RANDOM DATA, ZT, to 
    either extreme, and observe the relative rates. Now adjust RANDOM DATA 
    so there are about 10 to 20 transitions of ZT per screen.

        The gates labeled Xa - Xe are an exclusive or gate made up of AND,
    OR, and NOT functions. The output of the XOR is at the OR gate labeled 
    XE. The exclusive or function is similar to the OR except that the 
    condition where both inputs are true (high) has been eliminated. Thus 
    the XOR gate is high (true) only when its inputs are different from 
    one another: XE = 1 when ZB = 0 and ZT = 1, or ZB = 1 and ZT = 0.

        The gate LE is an internal XOR function, and is shown for comparsion.
    Note the output of LE is the same as XE with the exception of time. The 
    gate LE is a single XOR function of one unit delay, whereas the XE has 
    two to three units of delay, depending on the previous inputs to the 
    gate.

        In this lesson we have observed the control of TIMEBASE, COUNTER 
    frequency, and the rate of change of the RANDOM DATA. We have seen the 
    effect of cumulitave unit delays in comparison to a single delay having 
    the same logical function. As well as reviewed the operation of the 
    exclusive or function.
    


    3. 4 to 1 mux

        Start Logisym and load the file MUX.CKT. 

        At the trace screen, turn AUTO TRIGGER off, turn SINGLE STEP on, 
    and turn the STEP MULTIPLIER, TIMEBASE, and RANDOM DATA fully clockwise.
    Press the <SPACEBAR> until the trace screen is at the end. Now press
    <SPACEBAR> again to start the next screen. The trace should cover 1/4 of
    the trace screen.

        Examine the first two inputs, labeled SELECT. These are controlled
    by the function keys on your keyboard. They both should be low (0). Now
    press <F1> to change ZI from low to high. The trace does not immedately 
    show the change but the LOGICAL VALUE at the right of the screen does. 
    ZI should now be high and ZJ low, Check the logical value to the right. 
    Press <m> to place a MARKER. Press <SPACEBAR> to begin another set of 
    traces. When the trace stops, press <F1> and <F2> to toggle both of the 
    SELECT inputs. Place a MARKER and press the <SPACEBAR> again. When the 
    trace stops, press <F1>, place another MARKER then press <SPACEBAR>. 

        Examine the SELECT inputs from left to right, the binary values 
    reflect a decimal count of 0, 1, 2, 3. Now look at the output MZ, while 
    the SELECT inputs are 0, the output follows INPUT 0. While the SELECT 
    inputs are equal to 1 the output follows INPUT 1, and so on.  

        We have seen how to control data by way of the keyboard, and used 
    the SINGLE STEP feature to allow us break points so we may have control 
    over the operation of the circuit. We have also observed the operation 
    of a 4 to 1 data selector (multiplexer).



    4. Arithmetic

        Start Logisym and load the files: HALFADDR.CKT and FULLADDR.CKT

                 C:\LOGISYM > logisym halfaddr fulladdr<CR>

        - or -

                 FILES  HALFADDR FULLADDR<CR>
        
        You now have two independant circuits loaded and running at the 
    same time.
        
        Adjust the DELAY, TIMEBASE, and COUNTER so that you may analyze 
    the operation of the half and full adders. Notice ZA, ZB, and ZC do 
    not change relative to one another, they are all bits from the up/down 
    counter controlled by the COUNTER knob. 

        Practice using the features you have learned in the previous 
    lessons. Analyze both circuits and verify their operations as binary
    adders.
    

    
    5. 'Z' clocks

        Start Logisym with the files: ZCOUNT.CKT, ZRAND.CKT, and ZRING.CKT

                C:\LOGISYM > logisym ZCOUNT ZRAND ZRING<CR>
        
        - or -
    
                FILES  ZCOUNT ZRAND ZRING<CR>
        
        First notice there are no green traces (gates), these are all 
    internal clocks signals used to control logic circuits. An eight bit 
    up/down counter, a four bit random data generator, and a four bit ring 
    counter.

        Using the knobs, adjust the rates of each and observe the results.
    Notice the up/down counter, ZA - ZH, is counting up. Press <ALT><C>,
    or click the left mouse button on the up arrow to the left of COUNTER.
    The counter is now counting down. Repeat this proceedure for the ring 
    counter, <ALT><R> or left mouse button on the arrow to the left of RING
    COUNTER. 

        Adjust the TIMEBASE, COUNTER, RING COUNTER, and RANDOM DATA knobs 
    fully clockwise. Examine the random data generator. Now press <ALT><D>,
    or click the left mouse button on the square to the left of RANDOM DATA.
    The square changes to an up arrow. Examine the random data again... 
    there may now be 'spikes' in the data. That is, values may go from 0 to 
    1 back to 0, or 1 to 0 back to 1. The middle state never holds its value
    for any period of time and can cause problems in some logic circuits.
    This control is called the RANDOM DATA LOW PASS FILTER. When on, SQUARE,
    the random data generator will not allow a change from 0 to 1 to 0, or
    from 1 to 0 to 1, the bit must hold its value for at lease one unit 
    delay. When off, ARROW, the random data generator may produce these 
    random spikes
    
        Quit logisym and restart it loading the file: ZKEY.CKT

        Eight straight lines of data... press any of the function keys,
    <F1> through <F8>, and observe the results. Try pressing <SPACEBAR>
    to put Logisym in PAUSE mode and press function keys to achieve the
    values you desire. Check these values to the right, LOGICAL VALUE,
    and press <SPACEBAR> again to release PAUSE mode. 


    
    6. Flipflops
                                                            
        Start Logisym with and load the file: RSFF.CKT

        The RS flip flop is usually the first sequential circuit most of 
    us encounter. It is made of two cross coupled NAND gates, meaning one
    input to each is the output of the other. Unlike combinational circuits,
    a sequential circuit's response to an input is dependent on the previous
    inputs and the current state of the circuit. Often sequential circuits
    have one or more hazard states associated with them. That is a condition
    that may cause unexpected or unwanted results, outputs that are changing
    from 1 to 0 to 1 to 0 ...  this is called a 'race' condition. Adjust the 
    TIMEBASE and COUNTER fully clockwise, then adjust the RANDON DATA to 
    closely match the rate of the counter. Watch for both inputs to change 
    from 0 to 1 at the same time, and observe the circuit's response. Repeat 
    this proceedure while in SINGLE STEP mode, when it beings to 'race' press 
    <K> to disable to clock signals. STEP the simulation a few times, the RS 
    flipflop doesn't resolve its race condition. When disabled, all of the
    clock signals stop running and hold their current value until re-enabled, 
    the function keys are always operational. Press <K> again to re-enable 
    the clocks, and observe when and how the race condition is resolved.

        Repeat the above lesson using the D flipflop (DFF.CKT) and the JK    
    flipflop (JKFF.CKT). Determine the hazard conditions for each circuit 
    and how they are resolved. Try setting the TIMEBASE to maximum and STEP
    MULTILPIER to minimum and observe the transitions of each gate in the 
    circuit while it is setting, resetting, and in a race condition.




