From 685f69a7cfae4a2677a73b5c07d33c1e569256d2 Mon Sep 17 00:00:00 2001 From: Kacper Date: Sun, 7 Jun 2020 15:08:34 +0100 Subject: [PATCH] Almost ready CPU Changed the MUX blocks into Verilog just cuz they look neater and are probably more optimised in the end. Added the LIFO stack. Working on decoder logic. --- CPUProject.bdf | 2219 ++++++++++++++++++----------------- CPUProject.qsf | 12 +- DECODE.v | 34 +- Initial MUX 8x16 design.PNG | Bin 0 -> 28985 bytes LIFOstack.bsf | 85 ++ LIFOstack.v | 14 +- LIFOstack.v.bak | 46 + mux_3x16.bsf | 64 + mux_3x16.v | 18 + mux_8x16.bdf | 784 ------------- mux_8x16.bsf | 70 +- mux_8x16.v | 28 + mux_8x16.v.bak | 21 + 13 files changed, 1461 insertions(+), 1934 deletions(-) create mode 100644 Initial MUX 8x16 design.PNG create mode 100644 LIFOstack.bsf create mode 100644 LIFOstack.v.bak create mode 100644 mux_3x16.bsf create mode 100644 mux_3x16.v delete mode 100644 mux_8x16.bdf create mode 100644 mux_8x16.v create mode 100644 mux_8x16.v.bak diff --git a/CPUProject.bdf b/CPUProject.bdf index 3210abb..6372c4e 100644 --- a/CPUProject.bdf +++ b/CPUProject.bdf @@ -21,7 +21,7 @@ refer to the applicable agreement for further details. (header "graphic" (version "1.4")) (pin (input) - (rect 192 752 360 768) + (rect 168 720 336 736) (text "INPUT" (rect 125 0 153 10)(font "Arial" (font_size 6))) (text "CLK" (rect 5 0 26 12)(font "Arial" )) (pt 168 8) @@ -35,9 +35,25 @@ refer to the applicable agreement for further details. ) (text "VCC" (rect 128 7 148 17)(font "Arial" (font_size 6))) ) +(pin + (input) + (rect 168 736 336 752) + (text "INPUT" (rect 125 0 153 10)(font "Arial" (font_size 6))) + (text "stack_rst" (rect 5 0 52 12)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 84 12)(pt 109 12)) + (line (pt 84 4)(pt 109 4)) + (line (pt 113 8)(pt 168 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 109 4)(pt 113 8)) + (line (pt 109 12)(pt 113 8)) + ) + (text "VCC" (rect 128 7 148 17)(font "Arial" (font_size 6))) +) (pin (output) - (rect 1096 512 1272 528) + (rect 1232 656 1408 672) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "ALU_carry" (rect 90 0 139 17)(font "Intel Clear" )) (pt 0 8) @@ -53,7 +69,7 @@ refer to the applicable agreement for further details. ) (pin (output) - (rect 1096 544 1272 560) + (rect 1232 688 1408 704) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "Rs1[15..0]" (rect 90 0 137 17)(font "Intel Clear" )) (pt 0 8) @@ -69,7 +85,7 @@ refer to the applicable agreement for further details. ) (pin (output) - (rect 1096 560 1272 576) + (rect 1232 704 1408 720) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "Rs2[15..0]" (rect 90 0 137 17)(font "Intel Clear" )) (pt 0 8) @@ -85,7 +101,7 @@ refer to the applicable agreement for further details. ) (pin (output) - (rect 1096 528 1272 544) + (rect 1232 672 1408 688) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "Rd[15..0]" (rect 90 0 136 12)(font "Arial" )) (pt 0 8) @@ -101,7 +117,7 @@ refer to the applicable agreement for further details. ) (pin (output) - (rect 1096 576 1272 592) + (rect 1232 720 1408 736) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "instr[15..0]" (rect 90 0 139 17)(font "Intel Clear" )) (pt 0 8) @@ -117,7 +133,7 @@ refer to the applicable agreement for further details. ) (pin (output) - (rect 1096 592 1272 608) + (rect 1232 736 1408 752) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "FETCH" (rect 90 0 121 17)(font "Intel Clear" )) (pt 0 8) @@ -133,7 +149,7 @@ refer to the applicable agreement for further details. ) (pin (output) - (rect 1096 608 1272 624) + (rect 1232 752 1408 768) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "EXEC1" (rect 90 0 121 17)(font "Intel Clear" )) (pt 0 8) @@ -149,7 +165,7 @@ refer to the applicable agreement for further details. ) (pin (output) - (rect 1096 624 1272 640) + (rect 1232 768 1408 784) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "EXEC2" (rect 90 0 121 17)(font "Intel Clear" )) (pt 0 8) @@ -165,7 +181,7 @@ refer to the applicable agreement for further details. ) (pin (output) - (rect 1096 496 1272 512) + (rect 1232 640 1408 656) (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) (text "reg_in[15..0]" (rect 90 0 151 12)(font "Arial" )) (pt 0 8) @@ -180,331 +196,7 @@ refer to the applicable agreement for further details. ) ) (symbol - (rect 632 112 816 336) - (text "mux_8x16" (rect 5 0 67 19)(font "Intel Clear" (font_size 8))) - (text "MUX1" (rect 8 203 37 220)(font "Intel Clear" )) - (port - (pt 0 32) - (input) - (text "s0" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s0" (rect 21 27 35 46)(font "Intel Clear" (font_size 8))) - (line (pt 0 32)(pt 16 32)) - ) - (port - (pt 0 48) - (input) - (text "s1" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s1" (rect 21 43 35 62)(font "Intel Clear" (font_size 8))) - (line (pt 0 48)(pt 16 48)) - ) - (port - (pt 0 64) - (input) - (text "s2" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s2" (rect 21 59 35 78)(font "Intel Clear" (font_size 8))) - (line (pt 0 64)(pt 16 64)) - ) - (port - (pt 0 80) - (input) - (text "in0[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in0[15..0]" (rect 21 75 78 94)(font "Intel Clear" (font_size 8))) - (line (pt 0 80)(pt 16 80)(line_width 3)) - ) - (port - (pt 0 96) - (input) - (text "in1[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in1[15..0]" (rect 21 91 78 110)(font "Intel Clear" (font_size 8))) - (line (pt 0 96)(pt 16 96)(line_width 3)) - ) - (port - (pt 0 112) - (input) - (text "in2[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in2[15..0]" (rect 21 107 78 126)(font "Intel Clear" (font_size 8))) - (line (pt 0 112)(pt 16 112)(line_width 3)) - ) - (port - (pt 0 128) - (input) - (text "in3[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in3[15..0]" (rect 21 123 78 142)(font "Intel Clear" (font_size 8))) - (line (pt 0 128)(pt 16 128)(line_width 3)) - ) - (port - (pt 0 144) - (input) - (text "in4[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in4[15..0]" (rect 21 139 78 158)(font "Intel Clear" (font_size 8))) - (line (pt 0 144)(pt 16 144)(line_width 3)) - ) - (port - (pt 0 160) - (input) - (text "in5[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in5[15..0]" (rect 21 155 78 174)(font "Intel Clear" (font_size 8))) - (line (pt 0 160)(pt 16 160)(line_width 3)) - ) - (port - (pt 0 176) - (input) - (text "in6[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in6[15..0]" (rect 21 171 78 190)(font "Intel Clear" (font_size 8))) - (line (pt 0 176)(pt 16 176)(line_width 3)) - ) - (port - (pt 0 192) - (input) - (text "in7[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in7[15..0]" (rect 21 187 78 206)(font "Intel Clear" (font_size 8))) - (line (pt 0 192)(pt 16 192)(line_width 3)) - ) - (port - (pt 184 32) - (output) - (text "result[15..0]" (rect 0 0 71 19)(font "Intel Clear" (font_size 8))) - (text "result[15..0]" (rect 92 27 163 46)(font "Intel Clear" (font_size 8))) - (line (pt 184 32)(pt 168 32)(line_width 3)) - ) - (drawing - (rectangle (rect 16 16 168 208)) - ) -) -(symbol - (rect 632 336 816 560) - (text "mux_8x16" (rect 5 0 67 19)(font "Intel Clear" (font_size 8))) - (text "MUX2" (rect 8 203 37 220)(font "Intel Clear" )) - (port - (pt 0 32) - (input) - (text "s0" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s0" (rect 21 27 35 46)(font "Intel Clear" (font_size 8))) - (line (pt 0 32)(pt 16 32)) - ) - (port - (pt 0 48) - (input) - (text "s1" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s1" (rect 21 43 35 62)(font "Intel Clear" (font_size 8))) - (line (pt 0 48)(pt 16 48)) - ) - (port - (pt 0 64) - (input) - (text "s2" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s2" (rect 21 59 35 78)(font "Intel Clear" (font_size 8))) - (line (pt 0 64)(pt 16 64)) - ) - (port - (pt 0 80) - (input) - (text "in0[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in0[15..0]" (rect 21 75 78 94)(font "Intel Clear" (font_size 8))) - (line (pt 0 80)(pt 16 80)(line_width 3)) - ) - (port - (pt 0 96) - (input) - (text "in1[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in1[15..0]" (rect 21 91 78 110)(font "Intel Clear" (font_size 8))) - (line (pt 0 96)(pt 16 96)(line_width 3)) - ) - (port - (pt 0 112) - (input) - (text "in2[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in2[15..0]" (rect 21 107 78 126)(font "Intel Clear" (font_size 8))) - (line (pt 0 112)(pt 16 112)(line_width 3)) - ) - (port - (pt 0 128) - (input) - (text "in3[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in3[15..0]" (rect 21 123 78 142)(font "Intel Clear" (font_size 8))) - (line (pt 0 128)(pt 16 128)(line_width 3)) - ) - (port - (pt 0 144) - (input) - (text "in4[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in4[15..0]" (rect 21 139 78 158)(font "Intel Clear" (font_size 8))) - (line (pt 0 144)(pt 16 144)(line_width 3)) - ) - (port - (pt 0 160) - (input) - (text "in5[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in5[15..0]" (rect 21 155 78 174)(font "Intel Clear" (font_size 8))) - (line (pt 0 160)(pt 16 160)(line_width 3)) - ) - (port - (pt 0 176) - (input) - (text "in6[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in6[15..0]" (rect 21 171 78 190)(font "Intel Clear" (font_size 8))) - (line (pt 0 176)(pt 16 176)(line_width 3)) - ) - (port - (pt 0 192) - (input) - (text "in7[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in7[15..0]" (rect 21 187 78 206)(font "Intel Clear" (font_size 8))) - (line (pt 0 192)(pt 16 192)(line_width 3)) - ) - (port - (pt 184 32) - (output) - (text "result[15..0]" (rect 0 0 71 19)(font "Intel Clear" (font_size 8))) - (text "result[15..0]" (rect 92 27 163 46)(font "Intel Clear" (font_size 8))) - (line (pt 184 32)(pt 168 32)(line_width 3)) - ) - (drawing - (rectangle (rect 16 16 168 208)) - ) -) -(symbol - (rect 632 560 816 784) - (text "mux_8x16" (rect 5 0 67 19)(font "Intel Clear" (font_size 8))) - (text "MUX3" (rect 8 203 37 220)(font "Intel Clear" )) - (port - (pt 0 32) - (input) - (text "s0" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s0" (rect 21 27 35 46)(font "Intel Clear" (font_size 8))) - (line (pt 0 32)(pt 16 32)) - ) - (port - (pt 0 48) - (input) - (text "s1" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s1" (rect 21 43 35 62)(font "Intel Clear" (font_size 8))) - (line (pt 0 48)(pt 16 48)) - ) - (port - (pt 0 64) - (input) - (text "s2" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s2" (rect 21 59 35 78)(font "Intel Clear" (font_size 8))) - (line (pt 0 64)(pt 16 64)) - ) - (port - (pt 0 80) - (input) - (text "in0[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in0[15..0]" (rect 21 75 78 94)(font "Intel Clear" (font_size 8))) - (line (pt 0 80)(pt 16 80)(line_width 3)) - ) - (port - (pt 0 96) - (input) - (text "in1[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in1[15..0]" (rect 21 91 78 110)(font "Intel Clear" (font_size 8))) - (line (pt 0 96)(pt 16 96)(line_width 3)) - ) - (port - (pt 0 112) - (input) - (text "in2[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in2[15..0]" (rect 21 107 78 126)(font "Intel Clear" (font_size 8))) - (line (pt 0 112)(pt 16 112)(line_width 3)) - ) - (port - (pt 0 128) - (input) - (text "in3[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in3[15..0]" (rect 21 123 78 142)(font "Intel Clear" (font_size 8))) - (line (pt 0 128)(pt 16 128)(line_width 3)) - ) - (port - (pt 0 144) - (input) - (text "in4[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in4[15..0]" (rect 21 139 78 158)(font "Intel Clear" (font_size 8))) - (line (pt 0 144)(pt 16 144)(line_width 3)) - ) - (port - (pt 0 160) - (input) - (text "in5[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in5[15..0]" (rect 21 155 78 174)(font "Intel Clear" (font_size 8))) - (line (pt 0 160)(pt 16 160)(line_width 3)) - ) - (port - (pt 0 176) - (input) - (text "in6[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in6[15..0]" (rect 21 171 78 190)(font "Intel Clear" (font_size 8))) - (line (pt 0 176)(pt 16 176)(line_width 3)) - ) - (port - (pt 0 192) - (input) - (text "in7[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in7[15..0]" (rect 21 187 78 206)(font "Intel Clear" (font_size 8))) - (line (pt 0 192)(pt 16 192)(line_width 3)) - ) - (port - (pt 184 32) - (output) - (text "result[15..0]" (rect 0 0 71 19)(font "Intel Clear" (font_size 8))) - (text "result[15..0]" (rect 92 27 163 46)(font "Intel Clear" (font_size 8))) - (line (pt 184 32)(pt 168 32)(line_width 3)) - ) - (drawing - (rectangle (rect 16 16 168 208)) - ) -) -(symbol - (rect 1168 272 1280 360) - (text "BUSMUX" (rect 28 0 91 16)(font "Arial" (font_size 10))) - (text "MUX4" (rect 3 77 32 94)(font "Intel Clear" )) - (port - (pt 0 64) - (input) - (text "datab[WIDTH-1..0]" (rect 6 51 108 65)(font "Arial" (font_size 8))) - (text "datab[]" (rect 6 51 44 65)(font "Arial" (font_size 8))) - (line (pt 0 64)(pt 44 64)(line_width 3)) - ) - (port - (pt 56 88) - (input) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (line (pt 56 88)(pt 56 72)) - ) - (port - (pt 0 32) - (input) - (text "dataa[WIDTH-1..0]" (rect 6 19 108 33)(font "Arial" (font_size 8))) - (text "dataa[]" (rect 6 19 44 33)(font "Arial" (font_size 8))) - (line (pt 0 32)(pt 44 32)(line_width 3)) - ) - (port - (pt 112 48) - (output) - (text "result[WIDTH-1..0]" (rect 75 35 177 49)(font "Arial" (font_size 8))) - (text "result[]" (rect 75 35 113 49)(font "Arial" (font_size 8))) - (line (pt 68 48)(pt 112 48)(line_width 3)) - ) - (parameter - "WIDTH" - "16" - "Width of I/O, any integer > 0" - " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" "11" "12" "13" "14" "15" "16" "20" "24" "28" "32" "40" "48" "56" "64" - ) - (drawing - (text "0" (rect 52 31 56 41)(font "Arial" (font_size 6))) - (text "1" (rect 52 55 56 65)(font "Arial" (font_size 6))) - (line (pt 68 64)(pt 68 32)) - (line (pt 44 80)(pt 44 16)) - (line (pt 44 16)(pt 68 32)) - (line (pt 44 80)(pt 68 64)) - ) - (annotation_block (parameter)(rect 1280 272 1304 288)) -) -(symbol - (rect 224 160 432 512) + (rect 200 160 408 512) (text "reg_file" (rect 5 0 49 19)(font "Intel Clear" (font_size 8))) (text "REG" (rect 8 331 28 348)(font "Intel Clear" )) (port @@ -1079,7 +771,7 @@ refer to the applicable agreement for further details. ) ) (symbol - (rect 968 -184 1176 152) + (rect 968 -216 1176 120) (text "DECODE" (rect 5 0 52 12)(font "Arial" )) (text "DECODE" (rect 8 320 55 332)(font "Arial" )) (port @@ -1311,195 +1003,380 @@ refer to the applicable agreement for further details. (rectangle (rect 16 16 168 144)) ) ) -(connector - (pt 504 416) - (pt 632 416) - (bus) +(symbol + (rect 936 480 1120 624) + (text "LIFOstack" (rect 5 0 56 12)(font "Arial" )) + (text "STACK" (rect 8 128 43 140)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "Din[15..0]" (rect 0 0 48 12)(font "Arial" )) + (text "Din[15..0]" (rect 21 27 69 39)(font "Arial" )) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clk" (rect 0 0 14 12)(font "Arial" )) + (text "clk" (rect 21 43 35 55)(font "Arial" )) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "en" (rect 0 0 11 12)(font "Arial" )) + (text "en" (rect 21 59 32 71)(font "Arial" )) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "rst" (rect 0 0 12 12)(font "Arial" )) + (text "rst" (rect 21 75 33 87)(font "Arial" )) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "rw" (rect 0 0 10 12)(font "Arial" )) + (text "rw" (rect 21 91 31 103)(font "Arial" )) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 184 32) + (output) + (text "Dout[15..0]" (rect 0 0 55 12)(font "Arial" )) + (text "Dout[15..0]" (rect 117 27 172 39)(font "Arial" )) + (line (pt 184 32)(pt 168 32)(line_width 3)) + ) + (port + (pt 184 48) + (output) + (text "empty" (rect 0 0 31 12)(font "Arial" )) + (text "empty" (rect 137 43 168 55)(font "Arial" )) + (line (pt 184 48)(pt 168 48)) + ) + (port + (pt 184 64) + (output) + (text "full" (rect 0 0 15 12)(font "Arial" )) + (text "full" (rect 151 59 166 71)(font "Arial" )) + (line (pt 184 64)(pt 168 64)) + ) + (drawing + (rectangle (rect 16 16 168 128)) + ) ) -(connector - (pt 520 432) - (pt 632 432) - (bus) +(symbol + (rect 776 -32 824 32) + (text "OR2" (rect 0 45 10 63)(font "Arial" (font_size 6))(vertical)) + (text "OR_MUX5" (rect 38 43 50 93)(font "Arial" )(vertical)) + (port + (pt 32 64) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 49)) + ) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 49)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 -1 27 16)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 16)(pt 24 0)) + ) + (drawing + (line (pt 36 50)(pt 36 39)) + (line (pt 13 50)(pt 13 39)) + (arc (pt 29 57)(pt 19 57)(rect 8 45 41 78)) + (arc (pt 24 15)(pt 13 39)(rect 13 7 76 70)) + (arc (pt 35 39)(pt 24 15)(rect -27 7 36 70)) + ) + (rotate90) ) -(connector - (pt 536 448) - (pt 632 448) - (bus) +(symbol + (rect 632 144 816 352) + (text "mux_8x16" (rect 5 0 55 12)(font "Arial" )) + (text "MUX1" (rect 8 192 36 204)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "s[2..0]" (rect 0 0 31 12)(font "Arial" )) + (text "s[2..0]" (rect 21 27 52 39)(font "Arial" )) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in0[15..0]" (rect 21 43 67 55)(font "Arial" )) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "in1[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in1[15..0]" (rect 21 59 67 71)(font "Arial" )) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "in2[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in2[15..0]" (rect 21 75 67 87)(font "Arial" )) + (line (pt 0 80)(pt 16 80)(line_width 3)) + ) + (port + (pt 0 96) + (input) + (text "in3[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in3[15..0]" (rect 21 91 67 103)(font "Arial" )) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "in4[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in4[15..0]" (rect 21 107 67 119)(font "Arial" )) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "in5[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in5[15..0]" (rect 21 123 67 135)(font "Arial" )) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 144) + (input) + (text "in6[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in6[15..0]" (rect 21 139 67 151)(font "Arial" )) + (line (pt 0 144)(pt 16 144)(line_width 3)) + ) + (port + (pt 0 160) + (input) + (text "in7[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in7[15..0]" (rect 21 155 67 167)(font "Arial" )) + (line (pt 0 160)(pt 16 160)(line_width 3)) + ) + (port + (pt 184 32) + (output) + (text "result[15..0]" (rect 0 0 59 12)(font "Arial" )) + (text "result[15..0]" (rect 114 27 173 39)(font "Arial" )) + (line (pt 184 32)(pt 168 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 168 192)) + ) ) -(connector - (pt 552 464) - (pt 632 464) - (bus) +(symbol + (rect 632 352 816 560) + (text "mux_8x16" (rect 5 0 55 12)(font "Arial" )) + (text "MUX2" (rect 8 192 37 209)(font "Intel Clear" )) + (port + (pt 0 32) + (input) + (text "s[2..0]" (rect 0 0 31 12)(font "Arial" )) + (text "s[2..0]" (rect 21 27 52 39)(font "Arial" )) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in0[15..0]" (rect 21 43 67 55)(font "Arial" )) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "in1[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in1[15..0]" (rect 21 59 67 71)(font "Arial" )) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "in2[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in2[15..0]" (rect 21 75 67 87)(font "Arial" )) + (line (pt 0 80)(pt 16 80)(line_width 3)) + ) + (port + (pt 0 96) + (input) + (text "in3[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in3[15..0]" (rect 21 91 67 103)(font "Arial" )) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "in4[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in4[15..0]" (rect 21 107 67 119)(font "Arial" )) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "in5[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in5[15..0]" (rect 21 123 67 135)(font "Arial" )) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 144) + (input) + (text "in6[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in6[15..0]" (rect 21 139 67 151)(font "Arial" )) + (line (pt 0 144)(pt 16 144)(line_width 3)) + ) + (port + (pt 0 160) + (input) + (text "in7[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in7[15..0]" (rect 21 155 67 167)(font "Arial" )) + (line (pt 0 160)(pt 16 160)(line_width 3)) + ) + (port + (pt 184 32) + (output) + (text "result[15..0]" (rect 0 0 59 12)(font "Arial" )) + (text "result[15..0]" (rect 114 27 173 39)(font "Arial" )) + (line (pt 184 32)(pt 168 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 168 192)) + ) ) -(connector - (pt 568 480) - (pt 632 480) - (bus) +(symbol + (rect 632 560 816 768) + (text "mux_8x16" (rect 5 0 55 12)(font "Arial" )) + (text "MUX3" (rect 8 192 37 209)(font "Intel Clear" )) + (port + (pt 0 32) + (input) + (text "s[2..0]" (rect 0 0 31 12)(font "Arial" )) + (text "s[2..0]" (rect 21 27 52 39)(font "Arial" )) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in0[15..0]" (rect 21 43 67 55)(font "Arial" )) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "in1[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in1[15..0]" (rect 21 59 67 71)(font "Arial" )) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "in2[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in2[15..0]" (rect 21 75 67 87)(font "Arial" )) + (line (pt 0 80)(pt 16 80)(line_width 3)) + ) + (port + (pt 0 96) + (input) + (text "in3[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in3[15..0]" (rect 21 91 67 103)(font "Arial" )) + (line (pt 0 96)(pt 16 96)(line_width 3)) + ) + (port + (pt 0 112) + (input) + (text "in4[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in4[15..0]" (rect 21 107 67 119)(font "Arial" )) + (line (pt 0 112)(pt 16 112)(line_width 3)) + ) + (port + (pt 0 128) + (input) + (text "in5[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in5[15..0]" (rect 21 123 67 135)(font "Arial" )) + (line (pt 0 128)(pt 16 128)(line_width 3)) + ) + (port + (pt 0 144) + (input) + (text "in6[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in6[15..0]" (rect 21 139 67 151)(font "Arial" )) + (line (pt 0 144)(pt 16 144)(line_width 3)) + ) + (port + (pt 0 160) + (input) + (text "in7[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in7[15..0]" (rect 21 155 67 167)(font "Arial" )) + (line (pt 0 160)(pt 16 160)(line_width 3)) + ) + (port + (pt 184 32) + (output) + (text "result[15..0]" (rect 0 0 59 12)(font "Arial" )) + (text "result[15..0]" (rect 114 27 173 39)(font "Arial" )) + (line (pt 184 32)(pt 168 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 168 192)) + ) ) -(connector - (pt 584 496) - (pt 632 496) - (bus) -) -(connector - (pt 600 512) - (pt 632 512) - (bus) -) -(connector - (pt 616 528) - (pt 632 528) - (bus) -) -(connector - (pt 504 640) - (pt 632 640) - (bus) -) -(connector - (pt 520 656) - (pt 632 656) - (bus) -) -(connector - (pt 536 672) - (pt 632 672) - (bus) -) -(connector - (pt 552 688) - (pt 632 688) - (bus) -) -(connector - (pt 568 704) - (pt 632 704) - (bus) -) -(connector - (pt 584 720) - (pt 632 720) - (bus) -) -(connector - (pt 600 736) - (pt 632 736) - (bus) -) -(connector - (pt 616 752) - (pt 632 752) - (bus) -) -(connector - (pt 504 416) - (pt 504 640) - (bus) -) -(connector - (pt 520 432) - (pt 520 656) - (bus) -) -(connector - (pt 536 448) - (pt 536 672) - (bus) -) -(connector - (pt 552 464) - (pt 552 688) - (bus) -) -(connector - (pt 568 480) - (pt 568 704) - (bus) -) -(connector - (pt 584 496) - (pt 584 720) - (bus) -) -(connector - (pt 600 512) - (pt 600 736) - (bus) -) -(connector - (pt 616 528) - (pt 616 752) - (bus) -) -(connector - (text "s2[1]" (rect 474 368 497 385)(font "Intel Clear" )) - (pt 632 384) - (pt 464 384) -) -(connector - (text "s2[0]" (rect 474 352 497 369)(font "Intel Clear" )) - (pt 632 368) - (pt 464 368) -) -(connector - (text "s2[2]" (rect 474 384 497 401)(font "Intel Clear" )) - (pt 632 400) - (pt 464 400) -) -(connector - (pt 592 176) - (pt 592 160) - (bus) -) -(connector - (pt 592 144) - (pt 592 160) - (bus) -) -(connector - (pt 592 128) - (pt 592 144) - (bus) -) -(connector - (pt 464 384) - (pt 464 400) - (bus) -) -(connector - (text "s3[2]" (rect 474 608 497 625)(font "Intel Clear" )) - (pt 632 624) - (pt 448 624) -) -(connector - (text "s3[0]" (rect 474 576 497 593)(font "Intel Clear" )) - (pt 448 592) - (pt 632 592) -) -(connector - (text "s3[1]" (rect 474 592 497 609)(font "Intel Clear" )) - (pt 448 608) - (pt 632 608) -) -(connector - (pt 448 608) - (pt 448 624) - (bus) -) -(connector - (pt 1280 320) - (pt 1288 320) - (bus) -) -(connector - (pt 160 792) - (pt 1288 792) - (bus) -) -(connector - (text "s4" (rect 1203 368 1220 378)(font "Intel Clear" )(vertical)) - (pt 1224 360) - (pt 1224 392) +(symbol + (rect 1216 272 1400 384) + (text "mux_3x16" (rect 5 0 55 12)(font "Arial" )) + (text "MUX4" (rect 8 96 36 108)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "s[1..0]" (rect 0 0 31 12)(font "Arial" )) + (text "s[1..0]" (rect 21 27 52 39)(font "Arial" )) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in0[15..0]" (rect 21 43 67 55)(font "Arial" )) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "in1[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in1[15..0]" (rect 21 59 67 71)(font "Arial" )) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "in2[15..0]" (rect 0 0 46 12)(font "Arial" )) + (text "in2[15..0]" (rect 21 75 67 87)(font "Arial" )) + (line (pt 0 80)(pt 16 80)(line_width 3)) + ) + (port + (pt 184 32) + (output) + (text "result[15..0]" (rect 0 0 59 12)(font "Arial" )) + (text "result[15..0]" (rect 114 27 173 39)(font "Arial" )) + (line (pt 184 32)(pt 168 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 168 96)) + ) ) (connector (pt 728 -88) @@ -1541,291 +1418,16 @@ refer to the applicable agreement for further details. (pt 744 -56) (bus) ) -(connector - (pt 448 592) - (pt 448 608) - (bus) -) -(connector - (pt 464 368) - (pt 464 384) - (bus) -) -(connector - (pt 592 128) - (pt 480 128) - (bus) -) -(connector - (pt 208 144) - (pt 504 144) - (bus) -) (connector (pt 256 -80) (pt 208 -80) (bus) ) -(connector - (pt 208 144) - (pt 208 -80) - (bus) -) -(connector - (pt 504 192) - (pt 504 416) - (bus) -) -(connector - (pt 520 208) - (pt 520 432) - (bus) -) -(connector - (pt 536 224) - (pt 536 448) - (bus) -) -(connector - (pt 552 240) - (pt 552 464) - (bus) -) -(connector - (pt 568 256) - (pt 568 480) - (bus) -) -(connector - (pt 584 272) - (pt 584 496) - (bus) -) -(connector - (pt 600 288) - (pt 600 512) - (bus) -) -(connector - (pt 616 304) - (pt 616 528) - (bus) -) -(connector - (text "R0_en" (rect 186 192 216 209)(font "Intel Clear" )) - (pt 224 208) - (pt 176 208) -) -(connector - (text "CLK" (rect 186 176 206 193)(font "Intel Clear" )) - (pt 224 192) - (pt 176 192) -) -(connector - (text "R0_count" (rect 186 224 230 241)(font "Intel Clear" )) - (pt 224 240) - (pt 176 240) -) -(connector - (text "R1_en" (rect 186 256 216 273)(font "Intel Clear" )) - (pt 224 272) - (pt 176 272) -) -(connector - (text "R2_en" (rect 186 288 216 305)(font "Intel Clear" )) - (pt 224 304) - (pt 176 304) -) -(connector - (text "R3_en" (rect 186 320 216 337)(font "Intel Clear" )) - (pt 224 336) - (pt 176 336) -) -(connector - (text "R4_en" (rect 186 352 216 369)(font "Intel Clear" )) - (pt 224 368) - (pt 176 368) -) -(connector - (text "R5_en" (rect 186 384 216 401)(font "Intel Clear" )) - (pt 224 400) - (pt 176 400) -) -(connector - (text "R6_en" (rect 186 416 216 433)(font "Intel Clear" )) - (pt 224 432) - (pt 176 432) -) -(connector - (text "R7_en" (rect 186 448 216 465)(font "Intel Clear" )) - (pt 224 464) - (pt 176 464) -) -(connector - (pt 160 224) - (pt 224 224) - (bus) -) -(connector - (pt 160 256) - (pt 224 256) - (bus) -) -(connector - (pt 160 288) - (pt 224 288) - (bus) -) -(connector - (pt 160 320) - (pt 224 320) - (bus) -) -(connector - (pt 160 352) - (pt 224 352) - (bus) -) -(connector - (pt 160 384) - (pt 224 384) - (bus) -) -(connector - (pt 160 416) - (pt 224 416) - (bus) -) -(connector - (pt 160 448) - (pt 224 448) - (bus) -) -(connector - (pt 504 192) - (pt 632 192) - (bus) -) -(connector - (pt 432 208) - (pt 520 208) - (bus) -) -(connector - (pt 520 208) - (pt 632 208) - (bus) -) -(connector - (pt 432 224) - (pt 536 224) - (bus) -) -(connector - (pt 536 224) - (pt 632 224) - (bus) -) -(connector - (pt 432 240) - (pt 552 240) - (bus) -) -(connector - (pt 552 240) - (pt 632 240) - (bus) -) -(connector - (pt 432 256) - (pt 568 256) - (bus) -) -(connector - (pt 568 256) - (pt 632 256) - (bus) -) -(connector - (pt 432 272) - (pt 584 272) - (bus) -) -(connector - (pt 584 272) - (pt 632 272) - (bus) -) -(connector - (pt 160 256) - (pt 160 288) - (bus) -) -(connector - (pt 432 288) - (pt 600 288) - (bus) -) -(connector - (pt 600 288) - (pt 632 288) - (bus) -) -(connector - (pt 616 304) - (pt 632 304) - (bus) -) -(connector - (pt 160 288) - (pt 160 320) - (bus) -) -(connector - (pt 160 320) - (pt 160 352) - (bus) -) -(connector - (pt 160 352) - (pt 160 384) - (bus) -) -(connector - (pt 160 384) - (pt 160 416) - (bus) -) -(connector - (pt 160 416) - (pt 160 448) - (bus) -) -(connector - (pt 160 448) - (pt 160 792) - (bus) -) -(connector - (pt 160 224) - (pt 160 256) - (bus) -) -(connector - (text "CLK" (rect 370 744 390 761)(font "Intel Clear" )) - (pt 360 760) - (pt 400 760) -) (connector (text "RAMi_en" (rect 216 -32 259 -15)(font "Intel Clear" )) (pt 256 -16) (pt 216 -16) ) -(connector - (pt 1168 304) - (pt 1160 304) - (bus) -) (connector (pt 1152 192) (pt 1160 192) @@ -1857,82 +1459,16 @@ refer to the applicable agreement for further details. (pt 936 208) (pt 880 208) ) -(connector - (pt 872 -72) - (pt 872 224) - (bus) -) -(connector - (pt 1160 192) - (pt 1160 304) - (bus) -) (connector (pt 856 -72) (pt 872 -72) (bus) ) -(connector - (text "instr[15..0]" (rect 864 -88 913 -71)(font "Intel Clear" )) - (pt 872 -72) - (pt 912 -72) - (bus) -) (connector (pt 472 -112) (pt 488 -112) (bus) ) -(connector - (pt 432 304) - (pt 616 304) - (bus) -) -(connector - (text "s2[2..0]" (rect 446 103 463 137)(font "Intel Clear" )(vertical)) - (pt 464 104) - (pt 464 368) - (bus) -) -(connector - (text "s1[2..0]" (rect 461 104 478 138)(font "Intel Clear" )(vertical)) - (pt 480 128) - (pt 480 104) - (bus) -) -(connector - (text "s3[2..0]" (rect 429 102 446 136)(font "Intel Clear" )(vertical)) - (pt 448 104) - (pt 448 592) - (bus) -) -(connector - (text "s1[0]" (rect 602 128 625 145)(font "Intel Clear" )) - (pt 632 144) - (pt 592 144) -) -(connector - (text "s1[1]" (rect 602 144 625 161)(font "Intel Clear" )) - (pt 632 160) - (pt 592 160) -) -(connector - (text "s1[2]" (rect 602 160 625 177)(font "Intel Clear" )) - (pt 632 176) - (pt 592 176) -) -(connector - (text "PC[15..0]" (rect 442 176 485 193)(font "Intel Clear" )) - (pt 432 192) - (pt 504 192) - (bus) -) -(connector - (text "PC[10..0]" (rect 488 145 505 188)(font "Intel Clear" )(vertical)) - (pt 504 144) - (pt 504 192) - (bus) -) (connector (text "FETCH" (rect 418 32 449 49)(font "Intel Clear" )) (pt 408 48) @@ -1958,153 +1494,12 @@ refer to the applicable agreement for further details. (pt 408 64) (pt 448 64) ) -(connector - (text "R0_count" (rect 1186 -168 1230 -151)(font "Intel Clear" )) - (pt 1176 -152) - (pt 1224 -152) -) -(connector - (text "R0_en" (rect 1186 -152 1216 -135)(font "Intel Clear" )) - (pt 1176 -136) - (pt 1224 -136) -) -(connector - (text "R1_en" (rect 1186 -136 1216 -119)(font "Intel Clear" )) - (pt 1176 -120) - (pt 1224 -120) -) -(connector - (text "R2_en" (rect 1186 -120 1216 -103)(font "Intel Clear" )) - (pt 1176 -104) - (pt 1224 -104) -) -(connector - (text "R3_en" (rect 1186 -104 1216 -87)(font "Intel Clear" )) - (pt 1176 -88) - (pt 1224 -88) -) -(connector - (text "R4_en" (rect 1186 -88 1216 -71)(font "Intel Clear" )) - (pt 1176 -72) - (pt 1224 -72) -) -(connector - (text "R5_en" (rect 1186 -72 1216 -55)(font "Intel Clear" )) - (pt 1176 -56) - (pt 1224 -56) -) -(connector - (text "R6_en" (rect 1186 -56 1216 -39)(font "Intel Clear" )) - (pt 1176 -40) - (pt 1224 -40) -) -(connector - (text "R7_en" (rect 1186 -40 1216 -23)(font "Intel Clear" )) - (pt 1176 -24) - (pt 1224 -24) -) -(connector - (text "s1[2..0]" (rect 1186 -24 1220 -7)(font "Intel Clear" )) - (pt 1176 -8) - (pt 1224 -8) - (bus) -) -(connector - (text "s2[2..0]" (rect 1186 -8 1220 9)(font "Intel Clear" )) - (pt 1176 8) - (pt 1224 8) - (bus) -) -(connector - (text "s3[2..0]" (rect 1186 8 1220 25)(font "Intel Clear" )) - (pt 1176 24) - (pt 1224 24) - (bus) -) -(connector - (text "s4" (rect 1186 24 1196 41)(font "Intel Clear" )) - (pt 1176 40) - (pt 1224 40) -) -(connector - (text "RAMd_en" (rect 1186 56 1233 73)(font "Intel Clear" )) - (pt 1176 72) - (pt 1224 72) -) -(connector - (text "RAMi_en" (rect 1186 72 1229 89)(font "Intel Clear" )) - (pt 1176 88) - (pt 1224 88) -) -(connector - (text "RAMd_wren" (rect 1186 40 1245 57)(font "Intel Clear" )) - (pt 1176 56) - (pt 1240 56) -) -(connector - (text "EXEC1" (rect 938 -152 969 -135)(font "Intel Clear" )) - (pt 968 -136) - (pt 928 -136) -) -(connector - (text "COND" (rect 938 -120 967 -103)(font "Intel Clear" )) - (pt 928 -104) - (pt 968 -104) -) -(connector - (text "ALU_en" (rect 1186 88 1223 105)(font "Intel Clear" )) - (pt 1176 104) - (pt 1224 104) -) -(connector - (text "EXEC2" (rect 938 -136 969 -119)(font "Intel Clear" )) - (pt 968 -120) - (pt 928 -120) -) -(connector - (pt 968 -152) - (pt 912 -152) - (bus) -) -(connector - (text "instr[15..10]" (rect 888 -65 905 -10)(font "Intel Clear" )(vertical)) - (pt 912 -72) - (pt 912 0) - (bus) -) -(connector - (text "instr[15..0]" (rect 888 -148 905 -99)(font "Intel Clear" )(vertical)) - (pt 912 -152) - (pt 912 -72) - (bus) -) -(connector - (text "EXEC1" (rect 783 -28 800 3)(font "Intel Clear" )(vertical)) - (pt 800 -32) - (pt 800 8) -) -(connector - (text "E2" (rect 1186 104 1197 121)(font "Intel Clear" )) - (pt 1176 120) - (pt 1224 120) -) -(connector - (text "Rs1[15..0]" (rect 818 128 865 145)(font "Intel Clear" )) - (pt 816 144) - (pt 856 144) - (bus) -) (connector (text "Rd[15..0]" (rect 818 576 860 593)(font "Intel Clear" )) (pt 816 592) (pt 856 592) (bus) ) -(connector - (pt 1120 336) - (pt 1168 336) - (bus) -) (connector (text "COND" (rect 1122 336 1151 353)(font "Intel Clear" )) (pt 1120 352) @@ -2115,22 +1510,11 @@ refer to the applicable agreement for further details. (pt 936 352) (bus) ) -(connector - (pt 856 144) - (pt 856 192) - (bus) -) (connector (pt 856 192) (pt 856 352) (bus) ) -(connector - (text "Rs2[15..0]" (rect 816 352 863 369)(font "Intel Clear" )) - (pt 816 368) - (pt 936 368) - (bus) -) (connector (pt 856 592) (pt 856 384) @@ -2173,105 +1557,776 @@ refer to the applicable agreement for further details. (pt 1152 368) ) (connector - (text "CARRY" (rect 1050 504 1085 521)(font "Intel Clear" )) - (pt 1096 520) - (pt 1040 520) + (text "R0_count" (rect 1186 -200 1230 -183)(font "Intel Clear" )) + (pt 1176 -184) + (pt 1224 -184) ) (connector - (text "Rd[15..0]" (rect 1050 520 1092 537)(font "Intel Clear" )) - (pt 1096 536) - (pt 1040 536) + (text "R0_en" (rect 1186 -184 1216 -167)(font "Intel Clear" )) + (pt 1176 -168) + (pt 1224 -168) +) +(connector + (text "R1_en" (rect 1186 -168 1216 -151)(font "Intel Clear" )) + (pt 1176 -152) + (pt 1224 -152) +) +(connector + (text "R2_en" (rect 1186 -152 1216 -135)(font "Intel Clear" )) + (pt 1176 -136) + (pt 1224 -136) +) +(connector + (text "R3_en" (rect 1186 -136 1216 -119)(font "Intel Clear" )) + (pt 1176 -120) + (pt 1224 -120) +) +(connector + (text "R4_en" (rect 1186 -120 1216 -103)(font "Intel Clear" )) + (pt 1176 -104) + (pt 1224 -104) +) +(connector + (text "R5_en" (rect 1186 -104 1216 -87)(font "Intel Clear" )) + (pt 1176 -88) + (pt 1224 -88) +) +(connector + (text "R6_en" (rect 1186 -88 1216 -71)(font "Intel Clear" )) + (pt 1176 -72) + (pt 1224 -72) +) +(connector + (text "R7_en" (rect 1186 -72 1216 -55)(font "Intel Clear" )) + (pt 1176 -56) + (pt 1224 -56) +) +(connector + (text "s1[2..0]" (rect 1186 -56 1220 -39)(font "Intel Clear" )) + (pt 1176 -40) + (pt 1224 -40) (bus) ) (connector - (text "Rs1[15..0]" (rect 1050 536 1097 553)(font "Intel Clear" )) - (pt 1096 552) - (pt 1040 552) + (text "s2[2..0]" (rect 1186 -40 1220 -23)(font "Intel Clear" )) + (pt 1176 -24) + (pt 1224 -24) (bus) ) (connector - (text "Rs2[15..0]" (rect 1050 552 1097 569)(font "Intel Clear" )) - (pt 1096 568) - (pt 1040 568) + (text "s3[2..0]" (rect 1186 -24 1220 -7)(font "Intel Clear" )) + (pt 1176 -8) + (pt 1224 -8) (bus) ) (connector - (text "instr[15..0]" (rect 1048 568 1097 585)(font "Intel Clear" )) - (pt 1096 584) - (pt 1040 584) + (text "s4" (rect 1186 -8 1196 9)(font "Intel Clear" )) + (pt 1176 8) + (pt 1224 8) +) +(connector + (text "RAMd_en" (rect 1186 24 1233 41)(font "Intel Clear" )) + (pt 1176 40) + (pt 1224 40) +) +(connector + (text "RAMi_en" (rect 1186 40 1229 57)(font "Intel Clear" )) + (pt 1176 56) + (pt 1224 56) +) +(connector + (text "RAMd_wren" (rect 1186 8 1245 25)(font "Intel Clear" )) + (pt 1176 24) + (pt 1240 24) +) +(connector + (text "EXEC1" (rect 938 -184 969 -167)(font "Intel Clear" )) + (pt 968 -168) + (pt 928 -168) +) +(connector + (text "COND" (rect 938 -152 967 -135)(font "Intel Clear" )) + (pt 928 -136) + (pt 968 -136) +) +(connector + (text "ALU_en" (rect 1186 56 1223 73)(font "Intel Clear" )) + (pt 1176 72) + (pt 1224 72) +) +(connector + (text "EXEC2" (rect 938 -168 969 -151)(font "Intel Clear" )) + (pt 968 -152) + (pt 928 -152) +) +(connector + (pt 912 -184) + (pt 968 -184) (bus) ) (connector - (text "FETCH" (rect 1050 584 1081 601)(font "Intel Clear" )) - (pt 1096 600) - (pt 1040 600) + (text "E2" (rect 1186 72 1197 89)(font "Intel Clear" )) + (pt 1176 88) + (pt 1224 88) ) (connector - (text "EXEC1" (rect 1050 600 1081 617)(font "Intel Clear" )) - (pt 1096 616) - (pt 1040 616) -) -(connector - (text "EXEC2" (rect 1050 616 1081 633)(font "Intel Clear" )) - (pt 1096 632) - (pt 1040 632) -) -(connector - (pt 1288 480) - (pt 1088 480) + (text "instr[15..0]" (rect 896 -130 913 -81)(font "Intel Clear" )(vertical)) + (pt 912 -184) + (pt 912 -72) (bus) ) (connector - (pt 1096 504) - (pt 1088 504) + (text "instr[15..0]" (rect 864 -88 913 -71)(font "Intel Clear" )) + (pt 872 -72) + (pt 912 -72) (bus) ) (connector - (pt 1088 504) - (pt 1088 480) + (pt 872 -72) + (pt 872 -32) (bus) ) (connector - (pt 1288 320) - (pt 1288 480) + (pt 872 -32) + (pt 872 224) (bus) ) (connector - (pt 1288 480) - (pt 1288 792) + (text "instr[15..10]" (rect 882 -48 937 -31)(font "Intel Clear" )) + (pt 872 -32) + (pt 936 -32) + (bus) +) +(connector + (text "EXEC2" (rect 792 27 809 58)(font "Intel Clear" )(vertical)) + (pt 808 32) + (pt 808 64) +) +(connector + (text "EXEC1" (rect 776 27 793 58)(font "Intel Clear" )(vertical)) + (pt 792 32) + (pt 792 64) +) +(connector + (text "Rs1[15..0]" (rect 818 160 865 177)(font "Intel Clear" )) + (pt 856 176) + (pt 816 176) + (bus) +) +(connector + (pt 208 -80) + (pt 208 144) + (bus) +) +(connector + (text "R0_en" (rect 162 192 192 209)(font "Intel Clear" )) + (pt 200 208) + (pt 152 208) +) +(connector + (text "CLK" (rect 162 176 182 193)(font "Intel Clear" )) + (pt 200 192) + (pt 152 192) +) +(connector + (text "R0_count" (rect 162 224 206 241)(font "Intel Clear" )) + (pt 200 240) + (pt 152 240) +) +(connector + (text "R1_en" (rect 162 256 192 273)(font "Intel Clear" )) + (pt 200 272) + (pt 152 272) +) +(connector + (text "R2_en" (rect 162 288 192 305)(font "Intel Clear" )) + (pt 200 304) + (pt 152 304) +) +(connector + (text "R3_en" (rect 162 320 192 337)(font "Intel Clear" )) + (pt 200 336) + (pt 152 336) +) +(connector + (text "R4_en" (rect 162 352 192 369)(font "Intel Clear" )) + (pt 200 368) + (pt 152 368) +) +(connector + (text "R5_en" (rect 162 384 192 401)(font "Intel Clear" )) + (pt 200 400) + (pt 152 400) +) +(connector + (text "R6_en" (rect 162 416 192 433)(font "Intel Clear" )) + (pt 200 432) + (pt 152 432) +) +(connector + (text "R7_en" (rect 162 448 192 465)(font "Intel Clear" )) + (pt 200 464) + (pt 152 464) +) +(connector + (pt 136 224) + (pt 200 224) + (bus) +) +(connector + (pt 136 256) + (pt 200 256) + (bus) +) +(connector + (pt 136 288) + (pt 200 288) + (bus) +) +(connector + (pt 136 320) + (pt 200 320) + (bus) +) +(connector + (pt 136 352) + (pt 200 352) + (bus) +) +(connector + (pt 136 384) + (pt 200 384) + (bus) +) +(connector + (pt 136 416) + (pt 200 416) + (bus) +) +(connector + (pt 136 448) + (pt 200 448) + (bus) +) +(connector + (pt 136 352) + (pt 136 384) + (bus) +) +(connector + (pt 136 384) + (pt 136 416) + (bus) +) +(connector + (pt 136 416) + (pt 136 448) + (bus) +) +(connector + (pt 136 448) + (pt 136 792) + (bus) +) +(connector + (pt 136 224) + (pt 136 256) + (bus) +) +(connector + (pt 136 256) + (pt 136 288) + (bus) +) +(connector + (pt 136 288) + (pt 136 320) + (bus) +) +(connector + (pt 136 320) + (pt 136 352) + (bus) +) +(connector + (text "CLK" (rect 346 712 366 729)(font "Intel Clear" )) + (pt 336 728) + (pt 392 728) +) +(connector + (text "stack_rst" (rect 346 728 388 745)(font "Intel Clear" )) + (pt 336 744) + (pt 392 744) +) +(connector + (pt 208 144) + (pt 464 144) + (bus) +) +(connector + (pt 408 208) + (pt 480 208) + (bus) +) +(connector + (pt 480 208) + (pt 632 208) + (bus) +) +(connector + (pt 408 224) + (pt 496 224) + (bus) +) +(connector + (pt 496 224) + (pt 632 224) + (bus) +) +(connector + (pt 408 240) + (pt 512 240) + (bus) +) +(connector + (pt 512 240) + (pt 632 240) + (bus) +) +(connector + (pt 408 256) + (pt 528 256) + (bus) +) +(connector + (pt 528 256) + (pt 632 256) + (bus) +) +(connector + (pt 408 272) + (pt 544 272) + (bus) +) +(connector + (pt 544 272) + (pt 632 272) + (bus) +) +(connector + (pt 408 288) + (pt 560 288) + (bus) +) +(connector + (pt 560 288) + (pt 632 288) + (bus) +) +(connector + (pt 408 304) + (pt 576 304) + (bus) +) +(connector + (pt 576 304) + (pt 632 304) + (bus) +) +(connector + (text "PC[10..0]" (rect 448 145 465 188)(font "Intel Clear" )(vertical)) + (pt 464 144) + (pt 464 192) + (bus) +) +(connector + (text "PC[15..0]" (rect 410 176 453 193)(font "Intel Clear" )) + (pt 408 192) + (pt 464 192) + (bus) +) +(connector + (pt 464 192) + (pt 632 192) + (bus) +) +(connector + (text "s1[2..0]" (rect 602 160 636 177)(font "Intel Clear" )) + (pt 632 176) + (pt 592 176) + (bus) +) +(connector + (pt 464 400) + (pt 632 400) + (bus) +) +(connector + (pt 480 416) + (pt 632 416) + (bus) +) +(connector + (pt 496 432) + (pt 632 432) + (bus) +) +(connector + (pt 512 448) + (pt 632 448) + (bus) +) +(connector + (pt 528 464) + (pt 632 464) + (bus) +) +(connector + (pt 544 480) + (pt 632 480) + (bus) +) +(connector + (pt 560 496) + (pt 632 496) + (bus) +) +(connector + (pt 576 512) + (pt 632 512) + (bus) +) +(connector + (pt 464 608) + (pt 632 608) + (bus) +) +(connector + (pt 480 624) + (pt 632 624) + (bus) +) +(connector + (pt 496 640) + (pt 632 640) + (bus) +) +(connector + (pt 512 656) + (pt 632 656) + (bus) +) +(connector + (pt 528 672) + (pt 632 672) + (bus) +) +(connector + (pt 544 688) + (pt 632 688) + (bus) +) +(connector + (pt 560 704) + (pt 632 704) + (bus) +) +(connector + (pt 576 720) + (pt 632 720) + (bus) +) +(connector + (pt 464 192) + (pt 464 400) + (bus) +) +(connector + (pt 464 400) + (pt 464 608) + (bus) +) +(connector + (pt 480 208) + (pt 480 416) + (bus) +) +(connector + (pt 480 416) + (pt 480 624) + (bus) +) +(connector + (pt 496 224) + (pt 496 432) + (bus) +) +(connector + (pt 496 432) + (pt 496 640) + (bus) +) +(connector + (pt 512 240) + (pt 512 448) + (bus) +) +(connector + (pt 512 448) + (pt 512 656) + (bus) +) +(connector + (pt 528 256) + (pt 528 464) + (bus) +) +(connector + (pt 528 464) + (pt 528 672) + (bus) +) +(connector + (pt 544 272) + (pt 544 480) + (bus) +) +(connector + (pt 544 480) + (pt 544 688) + (bus) +) +(connector + (pt 560 288) + (pt 560 496) + (bus) +) +(connector + (pt 560 496) + (pt 560 704) + (bus) +) +(connector + (pt 576 304) + (pt 576 512) + (bus) +) +(connector + (pt 576 512) + (pt 576 720) + (bus) +) +(connector + (text "Rs2[15..0]" (rect 824 352 871 369)(font "Intel Clear" )) + (pt 936 368) + (pt 824 368) + (bus) +) +(connector + (pt 816 384) + (pt 824 384) + (bus) +) +(connector + (pt 824 384) + (pt 824 368) + (bus) +) +(connector + (text "s2[2..0]" (rect 602 368 636 385)(font "Intel Clear" )) + (pt 632 384) + (pt 592 384) + (bus) +) +(connector + (text "s3[2..0]" (rect 602 576 636 593)(font "Intel Clear" )) + (pt 632 592) + (pt 592 592) + (bus) +) +(connector + (text "Rs1[15..0]" (rect 882 128 929 145)(font "Intel Clear" )) + (pt 856 144) + (pt 928 144) + (bus) +) +(connector + (pt 856 144) + (pt 856 176) + (bus) +) +(connector + (pt 856 176) + (pt 856 192) + (bus) +) +(connector + (pt 1160 192) + (pt 1160 320) + (bus) +) +(connector + (pt 1160 320) + (pt 1216 320) + (bus) +) +(connector + (pt 1120 336) + (pt 1216 336) + (bus) +) +(connector + (text "s4[1..0]" (rect 1186 288 1220 305)(font "Intel Clear" )) + (pt 1216 304) + (pt 1176 304) + (bus) +) +(connector + (pt 1400 304) + (pt 1416 304) + (bus) +) +(connector + (pt 1416 624) + (pt 1224 624) + (bus) +) +(connector + (pt 1232 648) + (pt 1224 648) + (bus) +) +(connector + (pt 1224 648) + (pt 1224 624) + (bus) +) +(connector + (pt 136 792) + (pt 1416 792) + (bus) +) +(connector + (pt 1416 304) + (pt 1416 624) + (bus) +) +(connector + (pt 1416 624) + (pt 1416 792) + (bus) +) +(connector + (text "CARRY" (rect 1186 648 1221 665)(font "Intel Clear" )) + (pt 1176 664) + (pt 1232 664) +) +(connector + (text "Rs1[15..0]" (rect 1186 680 1233 697)(font "Intel Clear" )) + (pt 1176 696) + (pt 1232 696) + (bus) +) +(connector + (text "Rs2[15..0]" (rect 1186 696 1233 713)(font "Intel Clear" )) + (pt 1176 712) + (pt 1232 712) + (bus) +) +(connector + (text "Rd[15..0]" (rect 1186 664 1228 681)(font "Intel Clear" )) + (pt 1176 680) + (pt 1232 680) + (bus) +) +(connector + (text "instr[15..0]" (rect 1184 712 1233 729)(font "Intel Clear" )) + (pt 1176 728) + (pt 1232 728) + (bus) +) +(connector + (text "FETCH" (rect 1186 728 1217 745)(font "Intel Clear" )) + (pt 1176 744) + (pt 1232 744) +) +(connector + (text "EXEC1" (rect 1186 744 1217 761)(font "Intel Clear" )) + (pt 1176 760) + (pt 1232 760) +) +(connector + (text "EXEC2" (rect 1186 760 1217 777)(font "Intel Clear" )) + (pt 1176 776) + (pt 1232 776) +) +(connector + (text "CLK" (rect 890 512 910 529)(font "Intel Clear" )) + (pt 936 528) + (pt 880 528) +) +(connector + (text "Rs1[15..0]" (rect 890 496 937 513)(font "Intel Clear" )) + (pt 936 512) + (pt 880 512) + (bus) +) +(connector + (text "stack_rst" (rect 890 544 932 561)(font "Intel Clear" )) + (pt 936 560) + (pt 880 560) +) +(connector + (text "stack_en" (rect 890 528 932 545)(font "Intel Clear" )) + (pt 936 544) + (pt 880 544) +) +(connector + (text "stack_rw" (rect 890 560 932 577)(font "Intel Clear" )) + (pt 936 576) + (pt 880 576) +) +(connector + (pt 1120 512) + (pt 1184 512) + (bus) +) +(connector + (pt 1184 352) + (pt 1184 512) + (bus) +) +(connector + (pt 1216 352) + (pt 1184 352) (bus) ) -(junction (pt 504 416)) -(junction (pt 504 192)) -(junction (pt 520 432)) -(junction (pt 536 448)) -(junction (pt 552 464)) -(junction (pt 568 480)) -(junction (pt 584 496)) -(junction (pt 600 512)) -(junction (pt 616 528)) -(junction (pt 592 160)) -(junction (pt 464 368)) -(junction (pt 464 384)) -(junction (pt 592 144)) -(junction (pt 448 592)) -(junction (pt 448 608)) (junction (pt 488 -72)) -(junction (pt 520 208)) -(junction (pt 536 224)) -(junction (pt 552 240)) -(junction (pt 568 256)) -(junction (pt 584 272)) -(junction (pt 600 288)) -(junction (pt 616 304)) -(junction (pt 160 256)) -(junction (pt 160 288)) -(junction (pt 160 320)) -(junction (pt 160 352)) -(junction (pt 160 384)) -(junction (pt 160 416)) -(junction (pt 160 448)) (junction (pt 856 192)) (junction (pt 872 -72)) -(junction (pt 912 -72)) -(junction (pt 1288 480)) +(junction (pt 872 -32)) +(junction (pt 856 176)) +(junction (pt 136 320)) +(junction (pt 136 352)) +(junction (pt 136 384)) +(junction (pt 136 416)) +(junction (pt 136 448)) +(junction (pt 136 256)) +(junction (pt 136 288)) +(junction (pt 480 208)) +(junction (pt 496 224)) +(junction (pt 512 240)) +(junction (pt 528 256)) +(junction (pt 464 192)) +(junction (pt 544 272)) +(junction (pt 560 288)) +(junction (pt 576 304)) +(junction (pt 464 400)) +(junction (pt 480 416)) +(junction (pt 496 432)) +(junction (pt 512 448)) +(junction (pt 528 464)) +(junction (pt 544 480)) +(junction (pt 560 496)) +(junction (pt 576 512)) +(junction (pt 1416 624)) diff --git a/CPUProject.qsf b/CPUProject.qsf index 12816d7..867f441 100644 --- a/CPUProject.qsf +++ b/CPUProject.qsf @@ -38,23 +38,19 @@ set_global_assignment -name FAMILY "Cyclone IV E" set_global_assignment -name DEVICE AUTO -set_global_assignment -name TOP_LEVEL_ENTITY CPUProject +set_global_assignment -name TOP_LEVEL_ENTITY mux_8x16 set_global_assignment -name ORIGINAL_QUARTUS_VERSION 18.1.0 set_global_assignment -name PROJECT_CREATION_TIME_DATE "12:38:11 MAY 20, 2020" set_global_assignment -name LAST_QUARTUS_VERSION "18.1.0 Standard Edition" set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files set_global_assignment -name TIMING_ANALYZER_MULTICORNER_ANALYSIS ON set_global_assignment -name NUM_PARALLEL_PROCESSORS ALL -set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top -set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top -set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top set_global_assignment -name VERILOG_FILE alu.v set_global_assignment -name MIF_FILE LUTSquares.mif set_global_assignment -name BDF_FILE mul8.bdf set_global_assignment -name BDF_FILE abs.bdf set_global_assignment -name BDF_FILE CPUProject.bdf set_global_assignment -name BDF_FILE reg_file.bdf -set_global_assignment -name BDF_FILE mux_8x16.bdf set_global_assignment -name QIP_FILE ram_data.qip set_global_assignment -name QIP_FILE ram_instr.qip set_global_assignment -name VERILOG_FILE DECODE.v @@ -64,6 +60,10 @@ set_global_assignment -name BDF_FILE mul16.bdf set_global_assignment -name QIP_FILE LUT.qip set_global_assignment -name VERILOG_FILE min.v set_global_assignment -name VERILOG_FILE SM.v -set_global_assignment -name VECTOR_WAVEFORM_FILE Waveform.vwf set_global_assignment -name BDF_FILE ALU_top.bdf +set_global_assignment -name VERILOG_FILE mux_8x16.v +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name VERILOG_FILE mux_3x16.v set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/DECODE.v b/DECODE.v index c958414..9676be8 100644 --- a/DECODE.v +++ b/DECODE.v @@ -21,7 +21,10 @@ module DECODE output RAMd_en, output RAMi_en, output ALU_en, - output E2 + output E2, + output stack_en, + output stack_rst, + output stack_rw ); wire msb = instr[15]; //MSB of the instruction word @@ -41,21 +44,23 @@ module DECODE wire MUL = ~op[5] & op[4] & op[3] & op[2] & ~op[1] & ~op[0]; wire MLA = ~op[5] & op[4] & op[3] & op[2] & ~op[1] & op[0]; wire MLS = ~op[5] & op[4] & op[3] & op[2] & op[1] & ~op[0]; + wire PSH = op[5] & ~op[4] & op[3] & ~op[2] & ~op[1] & ~op[0]; + wire POP = op[5] & ~op[4] & op[3] & ~op[2] & ~op[1] & op[0]; wire NOP = op[5] & op[4] & op[3] & op[2] & op[1] & ~op[0]; wire STP = op[5] & op[4] & op[3] & op[2] & op[1] & op[0]; assign R0_count = EXEC1 & (~(UJMP | JMP | STP)); - assign R0_en = EXEC1 & (~(STORE | NOP | STP) & ~Rd[2] & ~Rd[1] & ~Rd[0] | UJMP | JMP & COND_result) | EXEC2 & (LOAD | MUL | MLA | MLS) & ~Rls[2] & ~Rls[1] & ~Rls[0]; - assign R1_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP) & ~Rd[2] & ~Rd[1] & Rd[0] | EXEC2 & (LOAD | MUL | MLA | MLS) & ~Rls[2] & ~Rls[1] & Rls[0]; - assign R2_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP) & ~Rd[2] & Rd[1] & ~Rd[0] | EXEC2 & (LOAD | MUL | MLA | MLS) & ~Rls[2] & Rls[1] & ~Rls[0]; - assign R3_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP) & ~Rd[2] & Rd[1] & Rd[0] | EXEC2 & (LOAD | MUL | MLA | MLS) & ~Rls[2] & Rls[1] & Rls[0]; - assign R4_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP) & Rd[2] & ~Rd[1] & ~Rd[0] | EXEC2 & (LOAD | MUL | MLA | MLS) & Rls[2] & ~Rls[1] & ~Rls[0]; - assign R5_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP) & Rd[2] & ~Rd[1] & Rd[0] | EXEC2 & (LOAD | MUL | MLA | MLS) & Rls[2] & ~Rls[1] & Rls[0]; - assign R6_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP) & Rd[2] & Rd[1] & ~Rd[0] | EXEC2 & (LOAD | MUL | MLA | MLS) & Rls[2] & Rls[1] & ~Rls[0]; - assign R7_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP) & Rd[2] & Rd[1] & Rd[0] | EXEC2 & (LOAD | MUL | MLA | MLS) & Rls[2] & Rls[1] & Rls[0]; - assign s1[2] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP) & Rs1[2]) | (STORE & Rls[2])); - assign s1[1] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP) & Rs1[1]) | (STORE & Rls[1])); - assign s1[0] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP) & Rs1[0]) | (STORE & Rls[0])); + assign R0_en = EXEC1 & (~(STORE | NOP | STP) & ~Rd[2] & ~Rd[1] & ~Rd[0] | UJMP | JMP & COND_result) | EXEC2 & LOAD & ~Rls[2] & ~Rls[1] & ~Rls[0] | EXEC2 & (MUL | MLA | MLS | POP) & ~Rd[2] & ~Rd[1] & ~Rd[0]; + assign R1_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP | POP) & ~Rd[2] & ~Rd[1] & Rd[0] | EXEC2 & LOAD & ~Rls[2] & ~Rls[1] & Rls[0] | EXEC2 & (MUL | MLA | MLS | POP) & ~Rd[2] & ~Rd[1] & Rd[0]; + assign R2_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP | POP) & ~Rd[2] & Rd[1] & ~Rd[0] | EXEC2 & LOAD & ~Rls[2] & Rls[1] & ~Rls[0] | EXEC2 & (MUL | MLA | MLS | POP) & ~Rd[2] & Rd[1] & ~Rd[0]; + assign R3_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP | POP) & ~Rd[2] & Rd[1] & Rd[0] | EXEC2 & LOAD & ~Rls[2] & Rls[1] & Rls[0] | EXEC2 & (MUL | MLA | MLS | POP) & ~Rd[2] & Rd[1] & Rd[0]; + assign R4_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP | POP) & Rd[2] & ~Rd[1] & ~Rd[0] | EXEC2 & LOAD & Rls[2] & ~Rls[1] & ~Rls[0] | EXEC2 & (MUL | MLA | MLS | POP) & Rd[2] & ~Rd[1] & ~Rd[0]; + assign R5_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP | POP) & Rd[2] & ~Rd[1] & Rd[0] | EXEC2 & LOAD & Rls[2] & ~Rls[1] & Rls[0] | EXEC2 & (MUL | MLA | MLS | POP) & Rd[2] & ~Rd[1] & Rd[0]; + assign R6_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP | POP) & Rd[2] & Rd[1] & ~Rd[0] | EXEC2 & LOAD & Rls[2] & Rls[1] & ~Rls[0] | EXEC2 & (MUL | MLA | MLS | POP) & Rd[2] & Rd[1] & ~Rd[0]; + assign R7_en = EXEC1 & ~(UJMP | JMP | STORE | LOAD | MUL | MLA | MLS | NOP | STP | POP) & Rd[2] & Rd[1] & Rd[0] | EXEC2 & LOAD & Rls[2] & Rls[1] & Rls[0] | EXEC2 & (MUL | MLA | MLS | POP) & Rd[2] & Rd[1] & Rd[0]; + assign s1[2] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP) & Rs1[2]) | (STORE & Rls[2]) | (PSH & Rs1[2])); + assign s1[1] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP) & Rs1[1]) | (STORE & Rls[1]) | (PSH & Rs1[1])); + assign s1[0] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP) & Rs1[0]) | (STORE & Rls[0]) | (PSH & Rs1[0])); assign s2[2] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP)) & Rs2[2]); assign s2[1] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP)) & Rs2[1]); assign s2[0] = EXEC1 & ((~(UJMP | JMP | STORE | LOAD | NOP | STP)) & Rs2[0]); @@ -67,7 +72,10 @@ module DECODE assign RAMd_en = EXEC1 & (STORE | LOAD); assign RAMi_en = EXEC1 & ~STP | EXEC2 & (LOAD | MUL | MLA | MLS); assign ALU_en = LOAD | STORE; - assign E2 = EXEC1 & (LOAD | MUL | MLA | MLS); + assign E2 = EXEC1 & (LOAD | MUL | MLA | MLS | POP); + assign stack_en = (EXEC1 & PSH) | POP; + assign stack_rst = STP; + assign stack_rw = POP; endmodule \ No newline at end of file diff --git a/Initial MUX 8x16 design.PNG b/Initial MUX 8x16 design.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2cc23b2e4eaa02fb1ae51ed0bd53fbfd852ced93 GIT binary patch literal 28985 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 M 0" - " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" "11" "12" "13" "14" "15" "16" "20" "24" "28" "32" "40" "48" "56" "64" - ) - (drawing - (text "0" (rect 52 31 56 41)(font "Arial" (font_size 6))) - (text "1" (rect 52 55 56 65)(font "Arial" (font_size 6))) - (line (pt 68 64)(pt 68 32)) - (line (pt 44 80)(pt 44 16)) - (line (pt 44 16)(pt 68 32)) - (line (pt 44 80)(pt 68 64)) - ) - (annotation_block (parameter)(rect 424 272 448 288)) -) -(symbol - (rect 312 392 424 480) - (text "BUSMUX" (rect 28 0 91 16)(font "Arial" (font_size 10))) - (text "inst6" (rect 3 77 25 94)(font "Intel Clear" )) - (port - (pt 0 64) - (input) - (text "datab[WIDTH-1..0]" (rect 6 51 108 65)(font "Arial" (font_size 8))) - (text "datab[]" (rect 6 51 44 65)(font "Arial" (font_size 8))) - (line (pt 0 64)(pt 44 64)(line_width 3)) - ) - (port - (pt 56 88) - (input) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (line (pt 56 88)(pt 56 72)) - ) - (port - (pt 0 32) - (input) - (text "dataa[WIDTH-1..0]" (rect 6 19 108 33)(font "Arial" (font_size 8))) - (text "dataa[]" (rect 6 19 44 33)(font "Arial" (font_size 8))) - (line (pt 0 32)(pt 44 32)(line_width 3)) - ) - (port - (pt 112 48) - (output) - (text "result[WIDTH-1..0]" (rect 75 35 177 49)(font "Arial" (font_size 8))) - (text "result[]" (rect 75 35 113 49)(font "Arial" (font_size 8))) - (line (pt 68 48)(pt 112 48)(line_width 3)) - ) - (parameter - "WIDTH" - "16" - "Width of I/O, any integer > 0" - " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" "11" "12" "13" "14" "15" "16" "20" "24" "28" "32" "40" "48" "56" "64" - ) - (drawing - (text "0" (rect 52 31 56 41)(font "Arial" (font_size 6))) - (text "1" (rect 52 55 56 65)(font "Arial" (font_size 6))) - (line (pt 68 64)(pt 68 32)) - (line (pt 44 80)(pt 44 16)) - (line (pt 44 16)(pt 68 32)) - (line (pt 44 80)(pt 68 64)) - ) - (annotation_block (parameter)(rect 424 392 448 408)) -) -(symbol - (rect 312 512 424 600) - (text "BUSMUX" (rect 28 0 91 16)(font "Arial" (font_size 10))) - (text "inst7" (rect 3 77 25 94)(font "Intel Clear" )) - (port - (pt 0 64) - (input) - (text "datab[WIDTH-1..0]" (rect 6 51 108 65)(font "Arial" (font_size 8))) - (text "datab[]" (rect 6 51 44 65)(font "Arial" (font_size 8))) - (line (pt 0 64)(pt 44 64)(line_width 3)) - ) - (port - (pt 56 88) - (input) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (line (pt 56 88)(pt 56 72)) - ) - (port - (pt 0 32) - (input) - (text "dataa[WIDTH-1..0]" (rect 6 19 108 33)(font "Arial" (font_size 8))) - (text "dataa[]" (rect 6 19 44 33)(font "Arial" (font_size 8))) - (line (pt 0 32)(pt 44 32)(line_width 3)) - ) - (port - (pt 112 48) - (output) - (text "result[WIDTH-1..0]" (rect 75 35 177 49)(font "Arial" (font_size 8))) - (text "result[]" (rect 75 35 113 49)(font "Arial" (font_size 8))) - (line (pt 68 48)(pt 112 48)(line_width 3)) - ) - (parameter - "WIDTH" - "16" - "Width of I/O, any integer > 0" - " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" "11" "12" "13" "14" "15" "16" "20" "24" "28" "32" "40" "48" "56" "64" - ) - (drawing - (text "0" (rect 52 31 56 41)(font "Arial" (font_size 6))) - (text "1" (rect 52 55 56 65)(font "Arial" (font_size 6))) - (line (pt 68 64)(pt 68 32)) - (line (pt 44 80)(pt 44 16)) - (line (pt 44 16)(pt 68 32)) - (line (pt 44 80)(pt 68 64)) - ) - (annotation_block (parameter)(rect 424 512 448 528)) -) -(symbol - (rect 528 152 640 240) - (text "BUSMUX" (rect 28 0 91 16)(font "Arial" (font_size 10))) - (text "inst8" (rect 3 77 25 94)(font "Intel Clear" )) - (port - (pt 0 64) - (input) - (text "datab[WIDTH-1..0]" (rect 6 51 108 65)(font "Arial" (font_size 8))) - (text "datab[]" (rect 6 51 44 65)(font "Arial" (font_size 8))) - (line (pt 0 64)(pt 44 64)(line_width 3)) - ) - (port - (pt 56 88) - (input) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (line (pt 56 88)(pt 56 72)) - ) - (port - (pt 0 32) - (input) - (text "dataa[WIDTH-1..0]" (rect 6 19 108 33)(font "Arial" (font_size 8))) - (text "dataa[]" (rect 6 19 44 33)(font "Arial" (font_size 8))) - (line (pt 0 32)(pt 44 32)(line_width 3)) - ) - (port - (pt 112 48) - (output) - (text "result[WIDTH-1..0]" (rect 75 35 177 49)(font "Arial" (font_size 8))) - (text "result[]" (rect 75 35 113 49)(font "Arial" (font_size 8))) - (line (pt 68 48)(pt 112 48)(line_width 3)) - ) - (parameter - "WIDTH" - "16" - "Width of I/O, any integer > 0" - " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" "11" "12" "13" "14" "15" "16" "20" "24" "28" "32" "40" "48" "56" "64" - ) - (drawing - (text "0" (rect 52 31 56 41)(font "Arial" (font_size 6))) - (text "1" (rect 52 55 56 65)(font "Arial" (font_size 6))) - (line (pt 68 64)(pt 68 32)) - (line (pt 44 80)(pt 44 16)) - (line (pt 44 16)(pt 68 32)) - (line (pt 44 80)(pt 68 64)) - ) - (annotation_block (parameter)(rect 640 152 664 168)) -) -(symbol - (rect 528 272 640 360) - (text "BUSMUX" (rect 28 0 91 16)(font "Arial" (font_size 10))) - (text "inst9" (rect 3 77 25 94)(font "Intel Clear" )) - (port - (pt 0 64) - (input) - (text "datab[WIDTH-1..0]" (rect 6 51 108 65)(font "Arial" (font_size 8))) - (text "datab[]" (rect 6 51 44 65)(font "Arial" (font_size 8))) - (line (pt 0 64)(pt 44 64)(line_width 3)) - ) - (port - (pt 56 88) - (input) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (line (pt 56 88)(pt 56 72)) - ) - (port - (pt 0 32) - (input) - (text "dataa[WIDTH-1..0]" (rect 6 19 108 33)(font "Arial" (font_size 8))) - (text "dataa[]" (rect 6 19 44 33)(font "Arial" (font_size 8))) - (line (pt 0 32)(pt 44 32)(line_width 3)) - ) - (port - (pt 112 48) - (output) - (text "result[WIDTH-1..0]" (rect 75 35 177 49)(font "Arial" (font_size 8))) - (text "result[]" (rect 75 35 113 49)(font "Arial" (font_size 8))) - (line (pt 68 48)(pt 112 48)(line_width 3)) - ) - (parameter - "WIDTH" - "16" - "Width of I/O, any integer > 0" - " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" "11" "12" "13" "14" "15" "16" "20" "24" "28" "32" "40" "48" "56" "64" - ) - (drawing - (text "0" (rect 52 31 56 41)(font "Arial" (font_size 6))) - (text "1" (rect 52 55 56 65)(font "Arial" (font_size 6))) - (line (pt 68 64)(pt 68 32)) - (line (pt 44 80)(pt 44 16)) - (line (pt 44 16)(pt 68 32)) - (line (pt 44 80)(pt 68 64)) - ) - (annotation_block (parameter)(rect 640 272 664 288)) -) -(symbol - (rect 720 152 832 240) - (text "BUSMUX" (rect 28 0 91 16)(font "Arial" (font_size 10))) - (text "inst10" (rect 3 77 31 94)(font "Intel Clear" )) - (port - (pt 0 64) - (input) - (text "datab[WIDTH-1..0]" (rect 6 51 108 65)(font "Arial" (font_size 8))) - (text "datab[]" (rect 6 51 44 65)(font "Arial" (font_size 8))) - (line (pt 0 64)(pt 44 64)(line_width 3)) - ) - (port - (pt 56 88) - (input) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (line (pt 56 88)(pt 56 72)) - ) - (port - (pt 0 32) - (input) - (text "dataa[WIDTH-1..0]" (rect 6 19 108 33)(font "Arial" (font_size 8))) - (text "dataa[]" (rect 6 19 44 33)(font "Arial" (font_size 8))) - (line (pt 0 32)(pt 44 32)(line_width 3)) - ) - (port - (pt 112 48) - (output) - (text "result[WIDTH-1..0]" (rect 75 35 177 49)(font "Arial" (font_size 8))) - (text "result[]" (rect 75 35 113 49)(font "Arial" (font_size 8))) - (line (pt 68 48)(pt 112 48)(line_width 3)) - ) - (parameter - "WIDTH" - "16" - "Width of I/O, any integer > 0" - " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" "11" "12" "13" "14" "15" "16" "20" "24" "28" "32" "40" "48" "56" "64" - ) - (drawing - (text "0" (rect 52 31 56 41)(font "Arial" (font_size 6))) - (text "1" (rect 52 55 56 65)(font "Arial" (font_size 6))) - (line (pt 68 64)(pt 68 32)) - (line (pt 44 80)(pt 44 16)) - (line (pt 44 16)(pt 68 32)) - (line (pt 44 80)(pt 68 64)) - ) - (annotation_block (parameter)(rect 832 152 856 168)) -) -(symbol - (rect 312 152 424 240) - (text "BUSMUX" (rect 28 0 91 16)(font "Arial" (font_size 10))) - (text "inst" (rect 3 77 23 91)(font "Arial" (font_size 8))) - (port - (pt 0 64) - (input) - (text "datab[WIDTH-1..0]" (rect 6 51 108 65)(font "Arial" (font_size 8))) - (text "datab[]" (rect 6 51 44 65)(font "Arial" (font_size 8))) - (line (pt 0 64)(pt 44 64)(line_width 3)) - ) - (port - (pt 56 88) - (input) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (text "sel" (rect 59 70 75 84)(font "Arial" (font_size 8))) - (line (pt 56 88)(pt 56 72)) - ) - (port - (pt 0 32) - (input) - (text "dataa[WIDTH-1..0]" (rect 6 19 108 33)(font "Arial" (font_size 8))) - (text "dataa[]" (rect 6 19 44 33)(font "Arial" (font_size 8))) - (line (pt 0 32)(pt 44 32)(line_width 3)) - ) - (port - (pt 112 48) - (output) - (text "result[WIDTH-1..0]" (rect 75 35 177 49)(font "Arial" (font_size 8))) - (text "result[]" (rect 75 35 113 49)(font "Arial" (font_size 8))) - (line (pt 68 48)(pt 112 48)(line_width 3)) - ) - (parameter - "WIDTH" - "16" - "Width of I/O, any integer > 0" - " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" "11" "12" "13" "14" "15" "16" "20" "24" "28" "32" "40" "48" "56" "64" - (type "PARAMETER_SIGNED_DEC") ) - (drawing - (text "0" (rect 52 31 56 41)(font "Arial" (font_size 6))) - (text "1" (rect 52 55 56 65)(font "Arial" (font_size 6))) - (line (pt 68 64)(pt 68 32)) - (line (pt 44 80)(pt 44 16)) - (line (pt 44 16)(pt 68 32)) - (line (pt 44 80)(pt 68 64)) - ) - (annotation_block (parameter)(rect 424 152 456 176)) -) -(connector - (pt 424 200) - (pt 440 200) - (bus) -) -(connector - (pt 456 320) - (pt 424 320) - (bus) -) -(connector - (pt 424 440) - (pt 472 440) - (bus) -) -(connector - (pt 424 560) - (pt 488 560) - (bus) -) -(connector - (pt 656 184) - (pt 720 184) - (bus) -) -(connector - (pt 440 200) - (pt 440 184) - (bus) -) -(connector - (pt 456 320) - (pt 456 216) - (bus) -) -(connector - (pt 656 200) - (pt 640 200) - (bus) -) -(connector - (pt 656 184) - (pt 656 200) - (bus) -) -(connector - (pt 456 216) - (pt 528 216) - (bus) -) -(connector - (pt 440 184) - (pt 528 184) - (bus) -) -(connector - (pt 472 440) - (pt 472 304) - (bus) -) -(connector - (pt 488 560) - (pt 488 336) - (bus) -) -(connector - (pt 488 336) - (pt 528 336) - (bus) -) -(connector - (pt 472 304) - (pt 528 304) - (bus) -) -(connector - (pt 720 216) - (pt 672 216) - (bus) -) -(connector - (pt 640 320) - (pt 672 320) - (bus) -) -(connector - (pt 672 216) - (pt 672 320) - (bus) -) -(connector - (pt 368 240) - (pt 368 256) -) -(connector - (pt 368 256) - (pt 296 256) -) -(connector - (pt 368 360) - (pt 368 376) -) -(connector - (pt 368 376) - (pt 296 376) -) -(connector - (pt 296 608) - (pt 368 608) -) -(connector - (pt 368 608) - (pt 368 600) -) -(connector - (pt 368 496) - (pt 296 496) -) -(connector - (pt 296 496) - (pt 296 608) -) -(connector - (pt 368 496) - (pt 368 480) -) -(connector - (pt 296 376) - (pt 296 496) -) -(connector - (pt 584 240) - (pt 584 256) -) -(connector - (pt 512 256) - (pt 584 256) -) -(connector - (pt 512 376) - (pt 584 376) -) -(connector - (pt 584 360) - (pt 584 376) -) -(connector - (pt 272 184) - (pt 312 184) - (bus) -) -(connector - (pt 312 216) - (pt 272 216) - (bus) -) -(connector - (pt 312 304) - (pt 272 304) - (bus) -) -(connector - (pt 312 336) - (pt 272 336) - (bus) -) -(connector - (pt 312 424) - (pt 272 424) - (bus) -) -(connector - (pt 312 456) - (pt 272 456) - (bus) -) -(connector - (pt 312 544) - (pt 272 544) - (bus) -) -(connector - (pt 312 576) - (pt 272 576) - (bus) -) -(connector - (pt 272 72) - (pt 296 72) -) -(connector - (pt 296 72) - (pt 296 256) -) -(connector - (pt 296 256) - (pt 296 376) -) -(connector - (pt 272 88) - (pt 512 88) -) -(connector - (pt 512 88) - (pt 512 256) -) -(connector - (pt 512 256) - (pt 512 376) -) -(connector - (pt 776 240) - (pt 776 256) -) -(connector - (pt 272 104) - (pt 704 104) -) -(connector - (pt 776 256) - (pt 704 256) -) -(connector - (pt 704 104) - (pt 704 256) -) -(connector - (pt 832 200) - (pt 872 200) - (bus) -) -(junction (pt 296 496)) -(junction (pt 296 376)) -(junction (pt 296 256)) -(junction (pt 512 256)) diff --git a/mux_8x16.bsf b/mux_8x16.bsf index b94421f..252ad5e 100644 --- a/mux_8x16.bsf +++ b/mux_8x16.bsf @@ -18,96 +18,82 @@ the sole purpose of programming logic devices manufactured by Intel and sold by Intel or its authorized distributors. Please refer to the applicable agreement for further details. */ -(header "symbol" (version "1.2")) +(header "symbol" (version "1.1")) (symbol - (rect 16 16 200 240) - (text "mux_8x16" (rect 5 0 67 19)(font "Intel Clear" (font_size 8))) - (text "inst" (rect 8 203 24 220)(font "Intel Clear" )) + (rect 16 16 200 224) + (text "mux_8x16" (rect 5 0 46 12)(font "Arial" )) + (text "inst" (rect 8 192 20 204)(font "Arial" )) (port (pt 0 32) (input) - (text "s0" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s0" (rect 21 27 35 46)(font "Intel Clear" (font_size 8))) - (line (pt 0 32)(pt 16 32)) + (text "s[2..0]" (rect 0 0 24 12)(font "Arial" )) + (text "s[2..0]" (rect 21 27 45 39)(font "Arial" )) + (line (pt 0 32)(pt 16 32)(line_width 3)) ) (port (pt 0 48) (input) - (text "s1" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s1" (rect 21 43 35 62)(font "Intel Clear" (font_size 8))) - (line (pt 0 48)(pt 16 48)) + (text "in0[15..0]" (rect 0 0 34 12)(font "Arial" )) + (text "in0[15..0]" (rect 21 43 55 55)(font "Arial" )) + (line (pt 0 48)(pt 16 48)(line_width 3)) ) (port (pt 0 64) (input) - (text "s2" (rect 0 0 14 19)(font "Intel Clear" (font_size 8))) - (text "s2" (rect 21 59 35 78)(font "Intel Clear" (font_size 8))) - (line (pt 0 64)(pt 16 64)) + (text "in1[15..0]" (rect 0 0 33 12)(font "Arial" )) + (text "in1[15..0]" (rect 21 59 54 71)(font "Arial" )) + (line (pt 0 64)(pt 16 64)(line_width 3)) ) (port (pt 0 80) (input) - (text "in0[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in0[15..0]" (rect 21 75 78 94)(font "Intel Clear" (font_size 8))) + (text "in2[15..0]" (rect 0 0 34 12)(font "Arial" )) + (text "in2[15..0]" (rect 21 75 55 87)(font "Arial" )) (line (pt 0 80)(pt 16 80)(line_width 3)) ) (port (pt 0 96) (input) - (text "in1[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in1[15..0]" (rect 21 91 78 110)(font "Intel Clear" (font_size 8))) + (text "in3[15..0]" (rect 0 0 34 12)(font "Arial" )) + (text "in3[15..0]" (rect 21 91 55 103)(font "Arial" )) (line (pt 0 96)(pt 16 96)(line_width 3)) ) (port (pt 0 112) (input) - (text "in2[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in2[15..0]" (rect 21 107 78 126)(font "Intel Clear" (font_size 8))) + (text "in4[15..0]" (rect 0 0 35 12)(font "Arial" )) + (text "in4[15..0]" (rect 21 107 56 119)(font "Arial" )) (line (pt 0 112)(pt 16 112)(line_width 3)) ) (port (pt 0 128) (input) - (text "in3[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in3[15..0]" (rect 21 123 78 142)(font "Intel Clear" (font_size 8))) + (text "in5[15..0]" (rect 0 0 34 12)(font "Arial" )) + (text "in5[15..0]" (rect 21 123 55 135)(font "Arial" )) (line (pt 0 128)(pt 16 128)(line_width 3)) ) (port (pt 0 144) (input) - (text "in4[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in4[15..0]" (rect 21 139 78 158)(font "Intel Clear" (font_size 8))) + (text "in6[15..0]" (rect 0 0 34 12)(font "Arial" )) + (text "in6[15..0]" (rect 21 139 55 151)(font "Arial" )) (line (pt 0 144)(pt 16 144)(line_width 3)) ) (port (pt 0 160) (input) - (text "in5[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in5[15..0]" (rect 21 155 78 174)(font "Intel Clear" (font_size 8))) + (text "in7[15..0]" (rect 0 0 34 12)(font "Arial" )) + (text "in7[15..0]" (rect 21 155 55 167)(font "Arial" )) (line (pt 0 160)(pt 16 160)(line_width 3)) ) - (port - (pt 0 176) - (input) - (text "in6[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in6[15..0]" (rect 21 171 78 190)(font "Intel Clear" (font_size 8))) - (line (pt 0 176)(pt 16 176)(line_width 3)) - ) - (port - (pt 0 192) - (input) - (text "in7[15..0]" (rect 0 0 57 19)(font "Intel Clear" (font_size 8))) - (text "in7[15..0]" (rect 21 187 78 206)(font "Intel Clear" (font_size 8))) - (line (pt 0 192)(pt 16 192)(line_width 3)) - ) (port (pt 184 32) (output) - (text "result[15..0]" (rect 0 0 71 19)(font "Intel Clear" (font_size 8))) - (text "result[15..0]" (rect 92 27 163 46)(font "Intel Clear" (font_size 8))) + (text "result[15..0]" (rect 0 0 44 12)(font "Arial" )) + (text "result[15..0]" (rect 119 27 163 39)(font "Arial" )) (line (pt 184 32)(pt 168 32)(line_width 3)) ) (drawing - (rectangle (rect 16 16 168 208)) + (rectangle (rect 16 16 168 192)(line_width 1)) ) ) diff --git a/mux_8x16.v b/mux_8x16.v new file mode 100644 index 0000000..56a6cc4 --- /dev/null +++ b/mux_8x16.v @@ -0,0 +1,28 @@ +module mux_8x16 (s, in0, in1, in2, in3, in4, in5, in6, in7, result); + +input [2:0]s; +input [15:0]in0; +input [15:0]in1; +input [15:0]in2; +input [15:0]in3; +input [15:0]in4; +input [15:0]in5; +input [15:0]in6; +input [15:0]in7; + +output reg [15:0]result; + +always @(*) begin + case(s) + 3'b000: result = in0; + 3'b001: result = in1; + 3'b010: result = in2; + 3'b011: result = in3; + 3'b100: result = in4; + 3'b101: result = in5; + 3'b110: result = in6; + 3'b111: result = in7; + endcase +end + +endmodule diff --git a/mux_8x16.v.bak b/mux_8x16.v.bak new file mode 100644 index 0000000..1478bcd --- /dev/null +++ b/mux_8x16.v.bak @@ -0,0 +1,21 @@ +module mux_8x16 (s, in0, in1, in2, in3, in4, in5, in6, in7, result); + +input [2:0]s; +input [15:0]in0, [15:0]in1, [15:0]in2, [15:0]in3, [15:0]in4, [15:0]in5, [15:0]in6, [15:0]in7; + +output [15:0]result; + +always @(*) begin + case(s) + 3'b000: result = in0; + 3'b001: result = in1; + 3'b010: result = in2; + 3'b011: result = in3; + 3'b100: result = in4; + 3'b101: result = in5; + 3'b110: result = in6; + 3'b111: result = in7; + endcase +end + +endmodule