diff options
| author | Holden Rohrer <hr@hrhr.dev> | 2020-03-21 17:23:19 -0400 | 
|---|---|---|
| committer | Holden Rohrer <hr@hrhr.dev> | 2020-03-21 17:23:19 -0400 | 
| commit | b0521514688011d1112f0375d131adadae8f05b4 (patch) | |
| tree | a955c0f71a043436c0c91b0fb76dc48734e310e6 | |
| parent | 78937eedbe3e4a59db5069b9ce174061d454a602 (diff) | |
added bad roffy program & partial gathing proj
| -rw-r--r-- | gathing-eng/badroff.c | 50 | ||||
| -rw-r--r-- | gathing-eng/phrase-circuit.src | 249 | 
2 files changed, 299 insertions, 0 deletions
| diff --git a/gathing-eng/badroff.c b/gathing-eng/badroff.c new file mode 100644 index 0000000..d318d40 --- /dev/null +++ b/gathing-eng/badroff.c @@ -0,0 +1,50 @@ +#include <stdio.h> +#include <string.h> + +typedef char bool; +#define true 1 +#define false 0 +int main(int argc, char** argv){ +    FILE* in; +    if (argc >= 2) +        in = fopen(argv[1], "r"); +    else +        in = stdin; +    if (in == NULL){ +        perror(argv[1]); +        return 1; +    } +    int c; +    bool nl = true; +    bool cmd = false; +    char cmds[81]; +    int cmdlen = 0; +    while ( (c = fgetc(in)) != EOF){ +        if (c == '\n'){ +            if (cmd){ +                if (! strncmp(cmds,"CT",2)){ +                    for (int i=0; i<(83-strnlen(cmds,80))/2; i++) +                        printf(" "); +                    printf("%s\n",cmds+3); +                } else printf("%s\n",cmds); +                cmd = false; +                cmds[0] = '\0'; +                cmdlen = 0; +            } +            else printf("\n"); +            nl = true; +        } +        else{ +        if (c == '.' && nl) +            cmd = true; +        else if (cmd){ +            cmds[cmdlen] = c; +            cmds[cmdlen+1] = '\0'; +            cmdlen++; +        } +        else printf("%c",c); +        nl = false; +        } +    } +    return 0; +} diff --git a/gathing-eng/phrase-circuit.src b/gathing-eng/phrase-circuit.src new file mode 100644 index 0000000..dfa75cd --- /dev/null +++ b/gathing-eng/phrase-circuit.src @@ -0,0 +1,249 @@ + + + + + + + + +.CT Holden Rohrer + + +.CT Applications of Engineering: Pd 3 + + +.CT Phrase Project + + + + + + + + +================================================================================ +.CT Table of Contents + +1 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .Problem Statement +2 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .Truth Table +3 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .Unsimplified Boolean Expressions +4 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . Karnaugh-like depthy mapping +5 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Simplified Boolean Expressions +6 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . Logic Diagram +7 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  Difficulties +8 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .Appendix A: AutoCAD Schematic +9 .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  . Appendix B: Complete Breadboard + +================================================================================ +.CT Problem Statement + +The objective of this project is to, using 74LS series chips (00, 04, 08, 11, +21, 32) and an anode seven-segment display (FND507) deisplay a 16-letter phrase +with varying input switches. Jumper wires, a breadboard, and a "Breadboard +Assistant" will be used to connect these components.t +    The phrase I will display is "AUTOCADSCHEMATIC," each letter displayed +corresponding directly to the following cube vertices/switch positions (so +chosen that any two consecutive states only require one switch instead of four +like in 0111->1000): +    0000 -> 0001 -> 0011 -> 0010 -> 0110 -> 0111 -> 0101 -> 0100 -> 1100 -> 1101 +-> 1111 -> 1110 -> 1010 -> 1011 -> 1001 -> 1000. +    The breadboard will use the following wire colors convention: +- GND = BROWN +- PWR = WHITE +- W = BROWN +- !W = WHITE +- X = BLACK +- !X = YELLOW +- Y = GREEN +- !Y = RED +- Z = GRAY +- !Z = BLUE +- AND = ORANGE +- OR = PURPLE +- NOT = RED +    The Seven-Segment Display will use the following light naming convention: + _______ +|   a   | +|       |b +|f      | +|_______| +|    g  | +|e      |c +|       | +|_______| +    d +================================================================================ +.CT Truth Table + +W X Y Z | VAL | A B C D E F G (1=OFF, 0=ON) +========+=====+============== +0 0 0 0 |  A  | 0 0 0 1 0 0 0 +0 0 0 1 |  U  | 1 0 0 0 0 0 1 +0 0 1 1 |  T  | 1 1 1 0 0 0 0 +0 0 1 0 |  O  | 0 0 0 0 0 0 1 +0 1 1 0 |  C  | 0 1 1 0 0 0 1 +0 1 1 1 |  A  | 0 0 0 1 0 0 0 +0 1 0 1 |  D  | 1 0 0 0 0 1 0 +0 1 0 0 |  S  | 0 1 0 0 1 0 0 +1 1 0 0 |  C  | 0 1 1 0 0 0 0 +1 1 0 1 |  H  | 1 1 0 1 0 0 0 +1 1 1 1 |  E  | 0 1 1 0 0 0 0  +1 1 1 0 |  M  | 0 1 0 1 0 1 1 +1 0 1 0 |  A  | 0 0 0 1 0 0 0 +1 0 1 1 |  T  | 1 1 1 0 0 0 0 +1 0 0 1 |  I  | 1 1 1 1 0 0 1 +1 0 0 0 |  C  | 0 1 1 0 0 0 0 + +================================================================================ +.CT Unsimplified Boolean Expressions +    ___    __     _ _      _     _      __ +A = WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ +    __     _  _   _ __     __     _              _    _      __     ___ +B = WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ +    __     _  _     __           _      __     ___ +C = WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ +    ____   _        _       _    _ _    __ +D = WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + WXYZ +    _ __ +E = WXYZ +    _ _       _ +F = WXYZ + WXYZ +    ___    __ _   _  _      _    __ +G = WXYZ + WXYZ + WXYZ + WXYZ + WXYZ + +================================================================================ +.CT Karnaugh-like Depthy Mapping + +To take full advantage of human pattern-recognition capability, the following +"Karnaugh maps" were created (note they are not circled because the point of +this exercise is to develop relations between the basic primitives and the +objective truth values). +    Form: +     Y Z  Y!Z  !Y!Z !Y Z  + W X #    #    #    # + W!X #    #    #    # +!W!X #    #    #    # +!W X #    #    #    # +    For reference, the "primitives" (dot=0): + +W           !W            X           !X +   1 1 1 1      . . . .      1 1 1 1      . . . . +   1 1 1 1      . . . .      . . . .      1 1 1 1  +   . . . .      1 1 1 1      . . . .      1 1 1 1 +   . . . .      1 1 1 1      1 1 1 1      . . . . + +Y           !Y            Z           !Z +   1 1 . .      . . 1 1      1 . . 1      . 1 1 . +   1 1 . .      . . 1 1      1 . . 1      . 1 1 .  +   1 1 . .      . . 1 1      1 . . 1      . 1 1 . +   1 1 . .      . . 1 1      1 . . 1      . 1 1 . +  +    And the objectives: +A            B            C            D +   . . . 1      1 1 1 1      1 . 1 .      . 1 . 1 +   1 . . 1      1 . 1 1      1 . 1 1      . 1 . 1 +   1 . . 1      1 . . .      1 . . .      . . 1 . +   . . . 1      . 1 1 .      . 1 . .      1 . . . + +E            F            G +   . . . .      . 1 . .      . 1 . . +   . . . .      . . . .      . . . 1 +   . . . .      . . . .      . 1 . 1 +   . . 1 .      . . . 1      . 1 . . +5 2AND +10 3AND =  +6 4AND = 3 chip +14 OR = 4 chip + +================================================================================ +.CT Simplified Boolean Expressions +A = !YZ + !XZ +B = W!(!XY!Z) + X!Z + !XYZ [!XY reused] = WX + W!Y + !XYZ + X!Z +C = B!D + W!X!Y +D = W(!YZ+Y!Z) + !W(XYZ+!X!Y!Z) +E = !WX!Y!Z +F = GWX + !WX!YZ +G = !X!YZ + Y!Z!(W!X) + +Using variables to represent partial nodes: +Provided = [! ][WXYZ] +0 = !YZ +1 = !XZ +A = 0+1 +2 = !XY +3 = 2Z +4 = W +================================================================================ +I actually used Berkeley's ABC: github.com/berkeley-abc/abc. +.CT Genlib File +GATE inv    2.3 O=!a;       PIN * INV 1 999 0.9 0.3 0.9 0.3 +GATE nand   3.5 O=!(a*b);   PIN * INV 1 999 0.9 0.3 0.9 0.3 +GATE and2   3.5 O=a*b;      PIN * NONINV 1 999 0.9 0.3 0.9 0.3 +GATE and3   4.7 O=a*b*c;    PIN * NONINV 1 999 0.9 0.3 0.9 0.3 +GATE and4   7   O=a*b*c*d;  PIN * NONINV 1 999 0.9 0.3 0.9 0.3 +GATE or     3.5 O=a+b;      PIN * NONINV 1 999 0.9 0.3 0.9 0.3 +GATE buf    1   O=a;        PIN * NONINV 1 999 0.9 0.3 0.9 0.3 +GATE zero   0   O=CONST0; +GATE one    0   O=CONST1; + +.CT PLA file +.i 4 +.o 7 +.ilb w x y z +.ob a b c d e f g +0000 0001000 +0001 1000001 +0011 1110000 +0010 0000001 +0110 0110001 +0111 0001000 +0101 1000010 +0100 0100100 +1100 0110000 +1101 1101000 +1111 0110000 +1110 0101011 +1010 0001000 +1011 1110000 +1001 1111001 +1000 0110000 +.e + +.CT Network Structure from Berkeley's ABC +a = NAND(y,x) * z; +16 = !w * !y; +17 = x * !w; +18 = 17 + 16; +20 = !z * y; +21 = 20 + 18; +23 = z + !x; +b = NAND(23,21); +25 = !16; +26 = z + !y; +27 = 26 + 17; +28 = y * w; +29 = NAND(z,x); +30 = 29 + 28; +c = 25 * 30 * 27; +32 = z * !y; +33 = 32 + 20; +34 = 33 * w; +35 = !z + y; +36 = 18 * 35 * 23; +d  = 36 + 34; +38 = !z * x; +e  = 38 * 16; +40 = 28 * 38; +41 = 32 * 17; +f  = 41 + 40; +43 = !x * w; +44 = 43 + 26; +45 = 35 + x; +g  = NAND(45,44); + +Total cost: +- 12 2AND = 3 74LS08 +- 4 NAND  = 1 74LS00 +- 5 NOT   = 1 74LS04 +- 2 3AND  = 1 74LS11 +- 12 OR   = 3 74LS32 | 
