aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolden Rohrer <hr@hrhr.dev>2020-03-21 17:23:19 -0400
committerHolden Rohrer <hr@hrhr.dev>2020-03-21 17:23:19 -0400
commitb0521514688011d1112f0375d131adadae8f05b4 (patch)
treea955c0f71a043436c0c91b0fb76dc48734e310e6
parent78937eedbe3e4a59db5069b9ce174061d454a602 (diff)
added bad roffy program & partial gathing proj
-rw-r--r--gathing-eng/badroff.c50
-rw-r--r--gathing-eng/phrase-circuit.src249
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