From 001e8e077d7921e7f4fce11e6e896410c79564b8 Mon Sep 17 00:00:00 2001 From: James Stine Date: Thu, 23 Jun 2022 11:46:44 -0500 Subject: [PATCH] Add sqrt qlsc table generator --- pipelined/srt/Makefile | 8 +- pipelined/srt/qslc_sqrt_r4a2 | Bin 0 -> 16152 bytes pipelined/srt/qslc_sqrt_r4a2.c | 198 ++++++ pipelined/srt/qslc_sqrt_r4a2.sv | 1026 +++++++++++++++++++++++++++++++ 4 files changed, 1230 insertions(+), 2 deletions(-) create mode 100755 pipelined/srt/qslc_sqrt_r4a2 create mode 100644 pipelined/srt/qslc_sqrt_r4a2.c create mode 100644 pipelined/srt/qslc_sqrt_r4a2.sv diff --git a/pipelined/srt/Makefile b/pipelined/srt/Makefile index 63146339c..49b21be7a 100644 --- a/pipelined/srt/Makefile +++ b/pipelined/srt/Makefile @@ -1,4 +1,4 @@ -all: exptestgen testgen qslc_r4a2 qslc_r4a2b +all: exptestgen testgen qslc_r4a2 qslc_r4a2b qslc_sqrt_r4a2 sqrttestgen: sqrttestgen.c gcc sqrttestgen.c -o sqrttestgen -lm @@ -19,5 +19,9 @@ qslc_r4a2b: qslc_r4a2b.c gcc qslc_r4a2b.c -o qslc_r4a2b -lm ./qslc_r4a2b > qslc_r4a2b.tv +qslc_sqrt_r4a2: qslc_sqrt_r4a2.c + gcc qslc_sqrt_r4a2.c -o qslc_sqrt_r4a2 -lm + ./qslc_sqrt_r4a2 > qslc_sqrt_r4a2.sv + clean: - rm -f testgen exptestgen qslc_r4a2 + rm -f testgen exptestgen qslc_r4a2 qslc_r4a2b qslc_sqrt_r4a2 diff --git a/pipelined/srt/qslc_sqrt_r4a2 b/pipelined/srt/qslc_sqrt_r4a2 new file mode 100755 index 0000000000000000000000000000000000000000..047de1ba3bf6e4421c0a8c69adbcce1eb2e9b293 GIT binary patch literal 16152 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 yUpwUIFn#|?Q(tZmKYwVw$Zc0lb +#include + +#define DIVISOR_SIZE 3 +#define CARRY_SIZE 7 +#define SUM_SIZE 7 +#define TOT_SIZE 7 + +void disp_binary(double, int, int); + +struct bits { + unsigned int divisor : DIVISOR_SIZE; + int tot : TOT_SIZE; +} pla; + +/* + + Function: disp_binary + Description: This function displays a Double-Precision number into + four 16 bit integers using the global union variable + dp_number + Argument List: double x The value to be converted + int bits_to_left Number of bits left of radix point + int bits_to_right Number of bits right of radix point + Return value: none + +*/ +void disp_binary(double x, int bits_to_left, int bits_to_right) { + int i; + double diff; + + if (fabs(x) < pow(2.0, ((double) -bits_to_right)) ) { + for (i = -bits_to_left + 1; i <= bits_to_right; i++) { + printf("0"); + } + if (i == bits_to_right+1) + ; + + return; + } + + if (x < 0.0) + x = pow(2.0, ((double) bits_to_left)) + x; + + for (i = -bits_to_left + 1; i <= bits_to_right; i++) { + diff = pow(2.0, ((double) -i) ); + if (x < diff) + printf("0"); + else { + printf("1"); + x -= diff; + } + if (i == 0) + ; + + } + +} + +int main() { + int m; + int n; + int o; + pla.divisor = 0; + pla.tot = 0; + printf("\tcase({D[5:3],Wmsbs})\n"); + for (o=0; o < pow(2.0, DIVISOR_SIZE); o++) { + for (m=0; m < pow(2.0, TOT_SIZE); m++) { + printf("\t\t10'b"); + disp_binary((double) pla.divisor, DIVISOR_SIZE, 0); + printf("_"); + disp_binary((double) pla.tot, TOT_SIZE, 0); + printf(": q = 4'b"); + + /* + 4 bits for Radix 4 (a=2) + 1000 = +2 + 0100 = +1 + 0000 = 0 + 0010 = -1 + 0001 = -2 + */ + switch (pla.divisor) { + case 0: + if ((pla.tot) >= 24) + printf("1000"); + else if ((pla.tot) >= 8) + printf("0100"); + else if ((pla.tot) >= -8) + printf("0000"); + else if ((pla.tot) >= -26) + printf("0010"); + else + printf("0001"); + break; + case 1: + if ((pla.tot) >= 28) + printf("1000"); + else if ((pla.tot) >= 8) + printf("0100"); + else if ((pla.tot) >= -10) + printf("0000"); + else if ((pla.tot) >= -28) + printf("0010"); + else + printf("0001"); + break; + case 2: + if ((pla.tot) >= 32) + printf("1000"); + else if ((pla.tot) >= 8) + printf("0100"); + else if ((pla.tot) >= -12) + printf("0000"); + else if ((pla.tot) >= -32) + printf("0010"); + else + printf("0001"); + break; + case 3: + if ((pla.tot) >= 32) + printf("1000"); + else if ((pla.tot) >= 8) + printf("0100"); + else if ((pla.tot) >= -12) + printf("0000"); + else if ((pla.tot) >= -34) + printf("0010"); + else + printf("0001"); + break; + case 4: + if ((pla.tot) >= 36) + printf("1000"); + else if ((pla.tot) >= 12) + printf("0100"); + else if ((pla.tot) >= -12) + printf("0000"); + else if ((pla.tot) >= -36) + printf("0010"); + else + printf("0001"); + break; + case 5: + if ((pla.tot) >= 40) + printf("1000"); + else if ((pla.tot) >= 12) + printf("0100"); + else if ((pla.tot) >= -16) + printf("0000"); + else if ((pla.tot) >= -40) + printf("0010"); + else + printf("0001"); + break; + case 6: + if ((pla.tot) >= 40) + printf("1000"); + else if ((pla.tot) >= 16) + printf("0100"); + else if ((pla.tot) >= -16) + printf("0000"); + else if ((pla.tot) >= -44) + printf("0010"); + else + printf("0001"); + break; + case 7: + if ((pla.tot) >= 44) + printf("1000"); + else if ((pla.tot) >= 16) + printf("0100"); + else if ((pla.tot) >= -16) + printf("0000"); + else if ((pla.tot) >= -46) + printf("0010"); + else + printf("0001"); + break; + default: printf ("XXX"); + + } + + printf(";\n"); + (pla.tot)++; + } + (pla.divisor)++; + } + printf("\tendcase\n"); + +} diff --git a/pipelined/srt/qslc_sqrt_r4a2.sv b/pipelined/srt/qslc_sqrt_r4a2.sv new file mode 100644 index 000000000..be4e3e392 --- /dev/null +++ b/pipelined/srt/qslc_sqrt_r4a2.sv @@ -0,0 +1,1026 @@ + case({D[5:3],Wmsbs}) + 10'b000_0000000: q = 4'b0000; + 10'b000_0000001: q = 4'b0000; + 10'b000_0000010: q = 4'b0000; + 10'b000_0000011: q = 4'b0000; + 10'b000_0000100: q = 4'b0000; + 10'b000_0000101: q = 4'b0000; + 10'b000_0000110: q = 4'b0000; + 10'b000_0000111: q = 4'b0000; + 10'b000_0001000: q = 4'b0100; + 10'b000_0001001: q = 4'b0100; + 10'b000_0001010: q = 4'b0100; + 10'b000_0001011: q = 4'b0100; + 10'b000_0001100: q = 4'b0100; + 10'b000_0001101: q = 4'b0100; + 10'b000_0001110: q = 4'b0100; + 10'b000_0001111: q = 4'b0100; + 10'b000_0010000: q = 4'b0100; + 10'b000_0010001: q = 4'b0100; + 10'b000_0010010: q = 4'b0100; + 10'b000_0010011: q = 4'b0100; + 10'b000_0010100: q = 4'b0100; + 10'b000_0010101: q = 4'b0100; + 10'b000_0010110: q = 4'b0100; + 10'b000_0010111: q = 4'b0100; + 10'b000_0011000: q = 4'b1000; + 10'b000_0011001: q = 4'b1000; + 10'b000_0011010: q = 4'b1000; + 10'b000_0011011: q = 4'b1000; + 10'b000_0011100: q = 4'b1000; + 10'b000_0011101: q = 4'b1000; + 10'b000_0011110: q = 4'b1000; + 10'b000_0011111: q = 4'b1000; + 10'b000_0100000: q = 4'b1000; + 10'b000_0100001: q = 4'b1000; + 10'b000_0100010: q = 4'b1000; + 10'b000_0100011: q = 4'b1000; + 10'b000_0100100: q = 4'b1000; + 10'b000_0100101: q = 4'b1000; + 10'b000_0100110: q = 4'b1000; + 10'b000_0100111: q = 4'b1000; + 10'b000_0101000: q = 4'b1000; + 10'b000_0101001: q = 4'b1000; + 10'b000_0101010: q = 4'b1000; + 10'b000_0101011: q = 4'b1000; + 10'b000_0101100: q = 4'b1000; + 10'b000_0101101: q = 4'b1000; + 10'b000_0101110: q = 4'b1000; + 10'b000_0101111: q = 4'b1000; + 10'b000_0110000: q = 4'b1000; + 10'b000_0110001: q = 4'b1000; + 10'b000_0110010: q = 4'b1000; + 10'b000_0110011: q = 4'b1000; + 10'b000_0110100: q = 4'b1000; + 10'b000_0110101: q = 4'b1000; + 10'b000_0110110: q = 4'b1000; + 10'b000_0110111: q = 4'b1000; + 10'b000_0111000: q = 4'b1000; + 10'b000_0111001: q = 4'b1000; + 10'b000_0111010: q = 4'b1000; + 10'b000_0111011: q = 4'b1000; + 10'b000_0111100: q = 4'b1000; + 10'b000_0111101: q = 4'b1000; + 10'b000_0111110: q = 4'b1000; + 10'b000_0111111: q = 4'b1000; + 10'b000_1000000: q = 4'b0001; + 10'b000_1000001: q = 4'b0001; + 10'b000_1000010: q = 4'b0001; + 10'b000_1000011: q = 4'b0001; + 10'b000_1000100: q = 4'b0001; + 10'b000_1000101: q = 4'b0001; + 10'b000_1000110: q = 4'b0001; + 10'b000_1000111: q = 4'b0001; + 10'b000_1001000: q = 4'b0001; + 10'b000_1001001: q = 4'b0001; + 10'b000_1001010: q = 4'b0001; + 10'b000_1001011: q = 4'b0001; + 10'b000_1001100: q = 4'b0001; + 10'b000_1001101: q = 4'b0001; + 10'b000_1001110: q = 4'b0001; + 10'b000_1001111: q = 4'b0001; + 10'b000_1010000: q = 4'b0001; + 10'b000_1010001: q = 4'b0001; + 10'b000_1010010: q = 4'b0001; + 10'b000_1010011: q = 4'b0001; + 10'b000_1010100: q = 4'b0001; + 10'b000_1010101: q = 4'b0001; + 10'b000_1010110: q = 4'b0001; + 10'b000_1010111: q = 4'b0001; + 10'b000_1011000: q = 4'b0001; + 10'b000_1011001: q = 4'b0001; + 10'b000_1011010: q = 4'b0001; + 10'b000_1011011: q = 4'b0001; + 10'b000_1011100: q = 4'b0001; + 10'b000_1011101: q = 4'b0001; + 10'b000_1011110: q = 4'b0001; + 10'b000_1011111: q = 4'b0001; + 10'b000_1100000: q = 4'b0001; + 10'b000_1100001: q = 4'b0001; + 10'b000_1100010: q = 4'b0001; + 10'b000_1100011: q = 4'b0001; + 10'b000_1100100: q = 4'b0001; + 10'b000_1100101: q = 4'b0001; + 10'b000_1100110: q = 4'b0010; + 10'b000_1100111: q = 4'b0010; + 10'b000_1101000: q = 4'b0010; + 10'b000_1101001: q = 4'b0010; + 10'b000_1101010: q = 4'b0010; + 10'b000_1101011: q = 4'b0010; + 10'b000_1101100: q = 4'b0010; + 10'b000_1101101: q = 4'b0010; + 10'b000_1101110: q = 4'b0010; + 10'b000_1101111: q = 4'b0010; + 10'b000_1110000: q = 4'b0010; + 10'b000_1110001: q = 4'b0010; + 10'b000_1110010: q = 4'b0010; + 10'b000_1110011: q = 4'b0010; + 10'b000_1110100: q = 4'b0010; + 10'b000_1110101: q = 4'b0010; + 10'b000_1110110: q = 4'b0010; + 10'b000_1110111: q = 4'b0010; + 10'b000_1111000: q = 4'b0000; + 10'b000_1111001: q = 4'b0000; + 10'b000_1111010: q = 4'b0000; + 10'b000_1111011: q = 4'b0000; + 10'b000_1111100: q = 4'b0000; + 10'b000_1111101: q = 4'b0000; + 10'b000_1111110: q = 4'b0000; + 10'b000_1111111: q = 4'b0000; + 10'b001_0000000: q = 4'b0000; + 10'b001_0000001: q = 4'b0000; + 10'b001_0000010: q = 4'b0000; + 10'b001_0000011: q = 4'b0000; + 10'b001_0000100: q = 4'b0000; + 10'b001_0000101: q = 4'b0000; + 10'b001_0000110: q = 4'b0000; + 10'b001_0000111: q = 4'b0000; + 10'b001_0001000: q = 4'b0100; + 10'b001_0001001: q = 4'b0100; + 10'b001_0001010: q = 4'b0100; + 10'b001_0001011: q = 4'b0100; + 10'b001_0001100: q = 4'b0100; + 10'b001_0001101: q = 4'b0100; + 10'b001_0001110: q = 4'b0100; + 10'b001_0001111: q = 4'b0100; + 10'b001_0010000: q = 4'b0100; + 10'b001_0010001: q = 4'b0100; + 10'b001_0010010: q = 4'b0100; + 10'b001_0010011: q = 4'b0100; + 10'b001_0010100: q = 4'b0100; + 10'b001_0010101: q = 4'b0100; + 10'b001_0010110: q = 4'b0100; + 10'b001_0010111: q = 4'b0100; + 10'b001_0011000: q = 4'b0100; + 10'b001_0011001: q = 4'b0100; + 10'b001_0011010: q = 4'b0100; + 10'b001_0011011: q = 4'b0100; + 10'b001_0011100: q = 4'b1000; + 10'b001_0011101: q = 4'b1000; + 10'b001_0011110: q = 4'b1000; + 10'b001_0011111: q = 4'b1000; + 10'b001_0100000: q = 4'b1000; + 10'b001_0100001: q = 4'b1000; + 10'b001_0100010: q = 4'b1000; + 10'b001_0100011: q = 4'b1000; + 10'b001_0100100: q = 4'b1000; + 10'b001_0100101: q = 4'b1000; + 10'b001_0100110: q = 4'b1000; + 10'b001_0100111: q = 4'b1000; + 10'b001_0101000: q = 4'b1000; + 10'b001_0101001: q = 4'b1000; + 10'b001_0101010: q = 4'b1000; + 10'b001_0101011: q = 4'b1000; + 10'b001_0101100: q = 4'b1000; + 10'b001_0101101: q = 4'b1000; + 10'b001_0101110: q = 4'b1000; + 10'b001_0101111: q = 4'b1000; + 10'b001_0110000: q = 4'b1000; + 10'b001_0110001: q = 4'b1000; + 10'b001_0110010: q = 4'b1000; + 10'b001_0110011: q = 4'b1000; + 10'b001_0110100: q = 4'b1000; + 10'b001_0110101: q = 4'b1000; + 10'b001_0110110: q = 4'b1000; + 10'b001_0110111: q = 4'b1000; + 10'b001_0111000: q = 4'b1000; + 10'b001_0111001: q = 4'b1000; + 10'b001_0111010: q = 4'b1000; + 10'b001_0111011: q = 4'b1000; + 10'b001_0111100: q = 4'b1000; + 10'b001_0111101: q = 4'b1000; + 10'b001_0111110: q = 4'b1000; + 10'b001_0111111: q = 4'b1000; + 10'b001_1000000: q = 4'b0001; + 10'b001_1000001: q = 4'b0001; + 10'b001_1000010: q = 4'b0001; + 10'b001_1000011: q = 4'b0001; + 10'b001_1000100: q = 4'b0001; + 10'b001_1000101: q = 4'b0001; + 10'b001_1000110: q = 4'b0001; + 10'b001_1000111: q = 4'b0001; + 10'b001_1001000: q = 4'b0001; + 10'b001_1001001: q = 4'b0001; + 10'b001_1001010: q = 4'b0001; + 10'b001_1001011: q = 4'b0001; + 10'b001_1001100: q = 4'b0001; + 10'b001_1001101: q = 4'b0001; + 10'b001_1001110: q = 4'b0001; + 10'b001_1001111: q = 4'b0001; + 10'b001_1010000: q = 4'b0001; + 10'b001_1010001: q = 4'b0001; + 10'b001_1010010: q = 4'b0001; + 10'b001_1010011: q = 4'b0001; + 10'b001_1010100: q = 4'b0001; + 10'b001_1010101: q = 4'b0001; + 10'b001_1010110: q = 4'b0001; + 10'b001_1010111: q = 4'b0001; + 10'b001_1011000: q = 4'b0001; + 10'b001_1011001: q = 4'b0001; + 10'b001_1011010: q = 4'b0001; + 10'b001_1011011: q = 4'b0001; + 10'b001_1011100: q = 4'b0001; + 10'b001_1011101: q = 4'b0001; + 10'b001_1011110: q = 4'b0001; + 10'b001_1011111: q = 4'b0001; + 10'b001_1100000: q = 4'b0001; + 10'b001_1100001: q = 4'b0001; + 10'b001_1100010: q = 4'b0001; + 10'b001_1100011: q = 4'b0001; + 10'b001_1100100: q = 4'b0010; + 10'b001_1100101: q = 4'b0010; + 10'b001_1100110: q = 4'b0010; + 10'b001_1100111: q = 4'b0010; + 10'b001_1101000: q = 4'b0010; + 10'b001_1101001: q = 4'b0010; + 10'b001_1101010: q = 4'b0010; + 10'b001_1101011: q = 4'b0010; + 10'b001_1101100: q = 4'b0010; + 10'b001_1101101: q = 4'b0010; + 10'b001_1101110: q = 4'b0010; + 10'b001_1101111: q = 4'b0010; + 10'b001_1110000: q = 4'b0010; + 10'b001_1110001: q = 4'b0010; + 10'b001_1110010: q = 4'b0010; + 10'b001_1110011: q = 4'b0010; + 10'b001_1110100: q = 4'b0010; + 10'b001_1110101: q = 4'b0010; + 10'b001_1110110: q = 4'b0000; + 10'b001_1110111: q = 4'b0000; + 10'b001_1111000: q = 4'b0000; + 10'b001_1111001: q = 4'b0000; + 10'b001_1111010: q = 4'b0000; + 10'b001_1111011: q = 4'b0000; + 10'b001_1111100: q = 4'b0000; + 10'b001_1111101: q = 4'b0000; + 10'b001_1111110: q = 4'b0000; + 10'b001_1111111: q = 4'b0000; + 10'b010_0000000: q = 4'b0000; + 10'b010_0000001: q = 4'b0000; + 10'b010_0000010: q = 4'b0000; + 10'b010_0000011: q = 4'b0000; + 10'b010_0000100: q = 4'b0000; + 10'b010_0000101: q = 4'b0000; + 10'b010_0000110: q = 4'b0000; + 10'b010_0000111: q = 4'b0000; + 10'b010_0001000: q = 4'b0100; + 10'b010_0001001: q = 4'b0100; + 10'b010_0001010: q = 4'b0100; + 10'b010_0001011: q = 4'b0100; + 10'b010_0001100: q = 4'b0100; + 10'b010_0001101: q = 4'b0100; + 10'b010_0001110: q = 4'b0100; + 10'b010_0001111: q = 4'b0100; + 10'b010_0010000: q = 4'b0100; + 10'b010_0010001: q = 4'b0100; + 10'b010_0010010: q = 4'b0100; + 10'b010_0010011: q = 4'b0100; + 10'b010_0010100: q = 4'b0100; + 10'b010_0010101: q = 4'b0100; + 10'b010_0010110: q = 4'b0100; + 10'b010_0010111: q = 4'b0100; + 10'b010_0011000: q = 4'b0100; + 10'b010_0011001: q = 4'b0100; + 10'b010_0011010: q = 4'b0100; + 10'b010_0011011: q = 4'b0100; + 10'b010_0011100: q = 4'b0100; + 10'b010_0011101: q = 4'b0100; + 10'b010_0011110: q = 4'b0100; + 10'b010_0011111: q = 4'b0100; + 10'b010_0100000: q = 4'b1000; + 10'b010_0100001: q = 4'b1000; + 10'b010_0100010: q = 4'b1000; + 10'b010_0100011: q = 4'b1000; + 10'b010_0100100: q = 4'b1000; + 10'b010_0100101: q = 4'b1000; + 10'b010_0100110: q = 4'b1000; + 10'b010_0100111: q = 4'b1000; + 10'b010_0101000: q = 4'b1000; + 10'b010_0101001: q = 4'b1000; + 10'b010_0101010: q = 4'b1000; + 10'b010_0101011: q = 4'b1000; + 10'b010_0101100: q = 4'b1000; + 10'b010_0101101: q = 4'b1000; + 10'b010_0101110: q = 4'b1000; + 10'b010_0101111: q = 4'b1000; + 10'b010_0110000: q = 4'b1000; + 10'b010_0110001: q = 4'b1000; + 10'b010_0110010: q = 4'b1000; + 10'b010_0110011: q = 4'b1000; + 10'b010_0110100: q = 4'b1000; + 10'b010_0110101: q = 4'b1000; + 10'b010_0110110: q = 4'b1000; + 10'b010_0110111: q = 4'b1000; + 10'b010_0111000: q = 4'b1000; + 10'b010_0111001: q = 4'b1000; + 10'b010_0111010: q = 4'b1000; + 10'b010_0111011: q = 4'b1000; + 10'b010_0111100: q = 4'b1000; + 10'b010_0111101: q = 4'b1000; + 10'b010_0111110: q = 4'b1000; + 10'b010_0111111: q = 4'b1000; + 10'b010_1000000: q = 4'b0001; + 10'b010_1000001: q = 4'b0001; + 10'b010_1000010: q = 4'b0001; + 10'b010_1000011: q = 4'b0001; + 10'b010_1000100: q = 4'b0001; + 10'b010_1000101: q = 4'b0001; + 10'b010_1000110: q = 4'b0001; + 10'b010_1000111: q = 4'b0001; + 10'b010_1001000: q = 4'b0001; + 10'b010_1001001: q = 4'b0001; + 10'b010_1001010: q = 4'b0001; + 10'b010_1001011: q = 4'b0001; + 10'b010_1001100: q = 4'b0001; + 10'b010_1001101: q = 4'b0001; + 10'b010_1001110: q = 4'b0001; + 10'b010_1001111: q = 4'b0001; + 10'b010_1010000: q = 4'b0001; + 10'b010_1010001: q = 4'b0001; + 10'b010_1010010: q = 4'b0001; + 10'b010_1010011: q = 4'b0001; + 10'b010_1010100: q = 4'b0001; + 10'b010_1010101: q = 4'b0001; + 10'b010_1010110: q = 4'b0001; + 10'b010_1010111: q = 4'b0001; + 10'b010_1011000: q = 4'b0001; + 10'b010_1011001: q = 4'b0001; + 10'b010_1011010: q = 4'b0001; + 10'b010_1011011: q = 4'b0001; + 10'b010_1011100: q = 4'b0001; + 10'b010_1011101: q = 4'b0001; + 10'b010_1011110: q = 4'b0001; + 10'b010_1011111: q = 4'b0001; + 10'b010_1100000: q = 4'b0010; + 10'b010_1100001: q = 4'b0010; + 10'b010_1100010: q = 4'b0010; + 10'b010_1100011: q = 4'b0010; + 10'b010_1100100: q = 4'b0010; + 10'b010_1100101: q = 4'b0010; + 10'b010_1100110: q = 4'b0010; + 10'b010_1100111: q = 4'b0010; + 10'b010_1101000: q = 4'b0010; + 10'b010_1101001: q = 4'b0010; + 10'b010_1101010: q = 4'b0010; + 10'b010_1101011: q = 4'b0010; + 10'b010_1101100: q = 4'b0010; + 10'b010_1101101: q = 4'b0010; + 10'b010_1101110: q = 4'b0010; + 10'b010_1101111: q = 4'b0010; + 10'b010_1110000: q = 4'b0010; + 10'b010_1110001: q = 4'b0010; + 10'b010_1110010: q = 4'b0010; + 10'b010_1110011: q = 4'b0010; + 10'b010_1110100: q = 4'b0000; + 10'b010_1110101: q = 4'b0000; + 10'b010_1110110: q = 4'b0000; + 10'b010_1110111: q = 4'b0000; + 10'b010_1111000: q = 4'b0000; + 10'b010_1111001: q = 4'b0000; + 10'b010_1111010: q = 4'b0000; + 10'b010_1111011: q = 4'b0000; + 10'b010_1111100: q = 4'b0000; + 10'b010_1111101: q = 4'b0000; + 10'b010_1111110: q = 4'b0000; + 10'b010_1111111: q = 4'b0000; + 10'b011_0000000: q = 4'b0000; + 10'b011_0000001: q = 4'b0000; + 10'b011_0000010: q = 4'b0000; + 10'b011_0000011: q = 4'b0000; + 10'b011_0000100: q = 4'b0000; + 10'b011_0000101: q = 4'b0000; + 10'b011_0000110: q = 4'b0000; + 10'b011_0000111: q = 4'b0000; + 10'b011_0001000: q = 4'b0100; + 10'b011_0001001: q = 4'b0100; + 10'b011_0001010: q = 4'b0100; + 10'b011_0001011: q = 4'b0100; + 10'b011_0001100: q = 4'b0100; + 10'b011_0001101: q = 4'b0100; + 10'b011_0001110: q = 4'b0100; + 10'b011_0001111: q = 4'b0100; + 10'b011_0010000: q = 4'b0100; + 10'b011_0010001: q = 4'b0100; + 10'b011_0010010: q = 4'b0100; + 10'b011_0010011: q = 4'b0100; + 10'b011_0010100: q = 4'b0100; + 10'b011_0010101: q = 4'b0100; + 10'b011_0010110: q = 4'b0100; + 10'b011_0010111: q = 4'b0100; + 10'b011_0011000: q = 4'b0100; + 10'b011_0011001: q = 4'b0100; + 10'b011_0011010: q = 4'b0100; + 10'b011_0011011: q = 4'b0100; + 10'b011_0011100: q = 4'b0100; + 10'b011_0011101: q = 4'b0100; + 10'b011_0011110: q = 4'b0100; + 10'b011_0011111: q = 4'b0100; + 10'b011_0100000: q = 4'b1000; + 10'b011_0100001: q = 4'b1000; + 10'b011_0100010: q = 4'b1000; + 10'b011_0100011: q = 4'b1000; + 10'b011_0100100: q = 4'b1000; + 10'b011_0100101: q = 4'b1000; + 10'b011_0100110: q = 4'b1000; + 10'b011_0100111: q = 4'b1000; + 10'b011_0101000: q = 4'b1000; + 10'b011_0101001: q = 4'b1000; + 10'b011_0101010: q = 4'b1000; + 10'b011_0101011: q = 4'b1000; + 10'b011_0101100: q = 4'b1000; + 10'b011_0101101: q = 4'b1000; + 10'b011_0101110: q = 4'b1000; + 10'b011_0101111: q = 4'b1000; + 10'b011_0110000: q = 4'b1000; + 10'b011_0110001: q = 4'b1000; + 10'b011_0110010: q = 4'b1000; + 10'b011_0110011: q = 4'b1000; + 10'b011_0110100: q = 4'b1000; + 10'b011_0110101: q = 4'b1000; + 10'b011_0110110: q = 4'b1000; + 10'b011_0110111: q = 4'b1000; + 10'b011_0111000: q = 4'b1000; + 10'b011_0111001: q = 4'b1000; + 10'b011_0111010: q = 4'b1000; + 10'b011_0111011: q = 4'b1000; + 10'b011_0111100: q = 4'b1000; + 10'b011_0111101: q = 4'b1000; + 10'b011_0111110: q = 4'b1000; + 10'b011_0111111: q = 4'b1000; + 10'b011_1000000: q = 4'b0001; + 10'b011_1000001: q = 4'b0001; + 10'b011_1000010: q = 4'b0001; + 10'b011_1000011: q = 4'b0001; + 10'b011_1000100: q = 4'b0001; + 10'b011_1000101: q = 4'b0001; + 10'b011_1000110: q = 4'b0001; + 10'b011_1000111: q = 4'b0001; + 10'b011_1001000: q = 4'b0001; + 10'b011_1001001: q = 4'b0001; + 10'b011_1001010: q = 4'b0001; + 10'b011_1001011: q = 4'b0001; + 10'b011_1001100: q = 4'b0001; + 10'b011_1001101: q = 4'b0001; + 10'b011_1001110: q = 4'b0001; + 10'b011_1001111: q = 4'b0001; + 10'b011_1010000: q = 4'b0001; + 10'b011_1010001: q = 4'b0001; + 10'b011_1010010: q = 4'b0001; + 10'b011_1010011: q = 4'b0001; + 10'b011_1010100: q = 4'b0001; + 10'b011_1010101: q = 4'b0001; + 10'b011_1010110: q = 4'b0001; + 10'b011_1010111: q = 4'b0001; + 10'b011_1011000: q = 4'b0001; + 10'b011_1011001: q = 4'b0001; + 10'b011_1011010: q = 4'b0001; + 10'b011_1011011: q = 4'b0001; + 10'b011_1011100: q = 4'b0001; + 10'b011_1011101: q = 4'b0001; + 10'b011_1011110: q = 4'b0010; + 10'b011_1011111: q = 4'b0010; + 10'b011_1100000: q = 4'b0010; + 10'b011_1100001: q = 4'b0010; + 10'b011_1100010: q = 4'b0010; + 10'b011_1100011: q = 4'b0010; + 10'b011_1100100: q = 4'b0010; + 10'b011_1100101: q = 4'b0010; + 10'b011_1100110: q = 4'b0010; + 10'b011_1100111: q = 4'b0010; + 10'b011_1101000: q = 4'b0010; + 10'b011_1101001: q = 4'b0010; + 10'b011_1101010: q = 4'b0010; + 10'b011_1101011: q = 4'b0010; + 10'b011_1101100: q = 4'b0010; + 10'b011_1101101: q = 4'b0010; + 10'b011_1101110: q = 4'b0010; + 10'b011_1101111: q = 4'b0010; + 10'b011_1110000: q = 4'b0010; + 10'b011_1110001: q = 4'b0010; + 10'b011_1110010: q = 4'b0010; + 10'b011_1110011: q = 4'b0010; + 10'b011_1110100: q = 4'b0000; + 10'b011_1110101: q = 4'b0000; + 10'b011_1110110: q = 4'b0000; + 10'b011_1110111: q = 4'b0000; + 10'b011_1111000: q = 4'b0000; + 10'b011_1111001: q = 4'b0000; + 10'b011_1111010: q = 4'b0000; + 10'b011_1111011: q = 4'b0000; + 10'b011_1111100: q = 4'b0000; + 10'b011_1111101: q = 4'b0000; + 10'b011_1111110: q = 4'b0000; + 10'b011_1111111: q = 4'b0000; + 10'b100_0000000: q = 4'b0000; + 10'b100_0000001: q = 4'b0000; + 10'b100_0000010: q = 4'b0000; + 10'b100_0000011: q = 4'b0000; + 10'b100_0000100: q = 4'b0000; + 10'b100_0000101: q = 4'b0000; + 10'b100_0000110: q = 4'b0000; + 10'b100_0000111: q = 4'b0000; + 10'b100_0001000: q = 4'b0000; + 10'b100_0001001: q = 4'b0000; + 10'b100_0001010: q = 4'b0000; + 10'b100_0001011: q = 4'b0000; + 10'b100_0001100: q = 4'b0100; + 10'b100_0001101: q = 4'b0100; + 10'b100_0001110: q = 4'b0100; + 10'b100_0001111: q = 4'b0100; + 10'b100_0010000: q = 4'b0100; + 10'b100_0010001: q = 4'b0100; + 10'b100_0010010: q = 4'b0100; + 10'b100_0010011: q = 4'b0100; + 10'b100_0010100: q = 4'b0100; + 10'b100_0010101: q = 4'b0100; + 10'b100_0010110: q = 4'b0100; + 10'b100_0010111: q = 4'b0100; + 10'b100_0011000: q = 4'b0100; + 10'b100_0011001: q = 4'b0100; + 10'b100_0011010: q = 4'b0100; + 10'b100_0011011: q = 4'b0100; + 10'b100_0011100: q = 4'b0100; + 10'b100_0011101: q = 4'b0100; + 10'b100_0011110: q = 4'b0100; + 10'b100_0011111: q = 4'b0100; + 10'b100_0100000: q = 4'b0100; + 10'b100_0100001: q = 4'b0100; + 10'b100_0100010: q = 4'b0100; + 10'b100_0100011: q = 4'b0100; + 10'b100_0100100: q = 4'b1000; + 10'b100_0100101: q = 4'b1000; + 10'b100_0100110: q = 4'b1000; + 10'b100_0100111: q = 4'b1000; + 10'b100_0101000: q = 4'b1000; + 10'b100_0101001: q = 4'b1000; + 10'b100_0101010: q = 4'b1000; + 10'b100_0101011: q = 4'b1000; + 10'b100_0101100: q = 4'b1000; + 10'b100_0101101: q = 4'b1000; + 10'b100_0101110: q = 4'b1000; + 10'b100_0101111: q = 4'b1000; + 10'b100_0110000: q = 4'b1000; + 10'b100_0110001: q = 4'b1000; + 10'b100_0110010: q = 4'b1000; + 10'b100_0110011: q = 4'b1000; + 10'b100_0110100: q = 4'b1000; + 10'b100_0110101: q = 4'b1000; + 10'b100_0110110: q = 4'b1000; + 10'b100_0110111: q = 4'b1000; + 10'b100_0111000: q = 4'b1000; + 10'b100_0111001: q = 4'b1000; + 10'b100_0111010: q = 4'b1000; + 10'b100_0111011: q = 4'b1000; + 10'b100_0111100: q = 4'b1000; + 10'b100_0111101: q = 4'b1000; + 10'b100_0111110: q = 4'b1000; + 10'b100_0111111: q = 4'b1000; + 10'b100_1000000: q = 4'b0001; + 10'b100_1000001: q = 4'b0001; + 10'b100_1000010: q = 4'b0001; + 10'b100_1000011: q = 4'b0001; + 10'b100_1000100: q = 4'b0001; + 10'b100_1000101: q = 4'b0001; + 10'b100_1000110: q = 4'b0001; + 10'b100_1000111: q = 4'b0001; + 10'b100_1001000: q = 4'b0001; + 10'b100_1001001: q = 4'b0001; + 10'b100_1001010: q = 4'b0001; + 10'b100_1001011: q = 4'b0001; + 10'b100_1001100: q = 4'b0001; + 10'b100_1001101: q = 4'b0001; + 10'b100_1001110: q = 4'b0001; + 10'b100_1001111: q = 4'b0001; + 10'b100_1010000: q = 4'b0001; + 10'b100_1010001: q = 4'b0001; + 10'b100_1010010: q = 4'b0001; + 10'b100_1010011: q = 4'b0001; + 10'b100_1010100: q = 4'b0001; + 10'b100_1010101: q = 4'b0001; + 10'b100_1010110: q = 4'b0001; + 10'b100_1010111: q = 4'b0001; + 10'b100_1011000: q = 4'b0001; + 10'b100_1011001: q = 4'b0001; + 10'b100_1011010: q = 4'b0001; + 10'b100_1011011: q = 4'b0001; + 10'b100_1011100: q = 4'b0010; + 10'b100_1011101: q = 4'b0010; + 10'b100_1011110: q = 4'b0010; + 10'b100_1011111: q = 4'b0010; + 10'b100_1100000: q = 4'b0010; + 10'b100_1100001: q = 4'b0010; + 10'b100_1100010: q = 4'b0010; + 10'b100_1100011: q = 4'b0010; + 10'b100_1100100: q = 4'b0010; + 10'b100_1100101: q = 4'b0010; + 10'b100_1100110: q = 4'b0010; + 10'b100_1100111: q = 4'b0010; + 10'b100_1101000: q = 4'b0010; + 10'b100_1101001: q = 4'b0010; + 10'b100_1101010: q = 4'b0010; + 10'b100_1101011: q = 4'b0010; + 10'b100_1101100: q = 4'b0010; + 10'b100_1101101: q = 4'b0010; + 10'b100_1101110: q = 4'b0010; + 10'b100_1101111: q = 4'b0010; + 10'b100_1110000: q = 4'b0010; + 10'b100_1110001: q = 4'b0010; + 10'b100_1110010: q = 4'b0010; + 10'b100_1110011: q = 4'b0010; + 10'b100_1110100: q = 4'b0000; + 10'b100_1110101: q = 4'b0000; + 10'b100_1110110: q = 4'b0000; + 10'b100_1110111: q = 4'b0000; + 10'b100_1111000: q = 4'b0000; + 10'b100_1111001: q = 4'b0000; + 10'b100_1111010: q = 4'b0000; + 10'b100_1111011: q = 4'b0000; + 10'b100_1111100: q = 4'b0000; + 10'b100_1111101: q = 4'b0000; + 10'b100_1111110: q = 4'b0000; + 10'b100_1111111: q = 4'b0000; + 10'b101_0000000: q = 4'b0000; + 10'b101_0000001: q = 4'b0000; + 10'b101_0000010: q = 4'b0000; + 10'b101_0000011: q = 4'b0000; + 10'b101_0000100: q = 4'b0000; + 10'b101_0000101: q = 4'b0000; + 10'b101_0000110: q = 4'b0000; + 10'b101_0000111: q = 4'b0000; + 10'b101_0001000: q = 4'b0000; + 10'b101_0001001: q = 4'b0000; + 10'b101_0001010: q = 4'b0000; + 10'b101_0001011: q = 4'b0000; + 10'b101_0001100: q = 4'b0100; + 10'b101_0001101: q = 4'b0100; + 10'b101_0001110: q = 4'b0100; + 10'b101_0001111: q = 4'b0100; + 10'b101_0010000: q = 4'b0100; + 10'b101_0010001: q = 4'b0100; + 10'b101_0010010: q = 4'b0100; + 10'b101_0010011: q = 4'b0100; + 10'b101_0010100: q = 4'b0100; + 10'b101_0010101: q = 4'b0100; + 10'b101_0010110: q = 4'b0100; + 10'b101_0010111: q = 4'b0100; + 10'b101_0011000: q = 4'b0100; + 10'b101_0011001: q = 4'b0100; + 10'b101_0011010: q = 4'b0100; + 10'b101_0011011: q = 4'b0100; + 10'b101_0011100: q = 4'b0100; + 10'b101_0011101: q = 4'b0100; + 10'b101_0011110: q = 4'b0100; + 10'b101_0011111: q = 4'b0100; + 10'b101_0100000: q = 4'b0100; + 10'b101_0100001: q = 4'b0100; + 10'b101_0100010: q = 4'b0100; + 10'b101_0100011: q = 4'b0100; + 10'b101_0100100: q = 4'b0100; + 10'b101_0100101: q = 4'b0100; + 10'b101_0100110: q = 4'b0100; + 10'b101_0100111: q = 4'b0100; + 10'b101_0101000: q = 4'b1000; + 10'b101_0101001: q = 4'b1000; + 10'b101_0101010: q = 4'b1000; + 10'b101_0101011: q = 4'b1000; + 10'b101_0101100: q = 4'b1000; + 10'b101_0101101: q = 4'b1000; + 10'b101_0101110: q = 4'b1000; + 10'b101_0101111: q = 4'b1000; + 10'b101_0110000: q = 4'b1000; + 10'b101_0110001: q = 4'b1000; + 10'b101_0110010: q = 4'b1000; + 10'b101_0110011: q = 4'b1000; + 10'b101_0110100: q = 4'b1000; + 10'b101_0110101: q = 4'b1000; + 10'b101_0110110: q = 4'b1000; + 10'b101_0110111: q = 4'b1000; + 10'b101_0111000: q = 4'b1000; + 10'b101_0111001: q = 4'b1000; + 10'b101_0111010: q = 4'b1000; + 10'b101_0111011: q = 4'b1000; + 10'b101_0111100: q = 4'b1000; + 10'b101_0111101: q = 4'b1000; + 10'b101_0111110: q = 4'b1000; + 10'b101_0111111: q = 4'b1000; + 10'b101_1000000: q = 4'b0001; + 10'b101_1000001: q = 4'b0001; + 10'b101_1000010: q = 4'b0001; + 10'b101_1000011: q = 4'b0001; + 10'b101_1000100: q = 4'b0001; + 10'b101_1000101: q = 4'b0001; + 10'b101_1000110: q = 4'b0001; + 10'b101_1000111: q = 4'b0001; + 10'b101_1001000: q = 4'b0001; + 10'b101_1001001: q = 4'b0001; + 10'b101_1001010: q = 4'b0001; + 10'b101_1001011: q = 4'b0001; + 10'b101_1001100: q = 4'b0001; + 10'b101_1001101: q = 4'b0001; + 10'b101_1001110: q = 4'b0001; + 10'b101_1001111: q = 4'b0001; + 10'b101_1010000: q = 4'b0001; + 10'b101_1010001: q = 4'b0001; + 10'b101_1010010: q = 4'b0001; + 10'b101_1010011: q = 4'b0001; + 10'b101_1010100: q = 4'b0001; + 10'b101_1010101: q = 4'b0001; + 10'b101_1010110: q = 4'b0001; + 10'b101_1010111: q = 4'b0001; + 10'b101_1011000: q = 4'b0010; + 10'b101_1011001: q = 4'b0010; + 10'b101_1011010: q = 4'b0010; + 10'b101_1011011: q = 4'b0010; + 10'b101_1011100: q = 4'b0010; + 10'b101_1011101: q = 4'b0010; + 10'b101_1011110: q = 4'b0010; + 10'b101_1011111: q = 4'b0010; + 10'b101_1100000: q = 4'b0010; + 10'b101_1100001: q = 4'b0010; + 10'b101_1100010: q = 4'b0010; + 10'b101_1100011: q = 4'b0010; + 10'b101_1100100: q = 4'b0010; + 10'b101_1100101: q = 4'b0010; + 10'b101_1100110: q = 4'b0010; + 10'b101_1100111: q = 4'b0010; + 10'b101_1101000: q = 4'b0010; + 10'b101_1101001: q = 4'b0010; + 10'b101_1101010: q = 4'b0010; + 10'b101_1101011: q = 4'b0010; + 10'b101_1101100: q = 4'b0010; + 10'b101_1101101: q = 4'b0010; + 10'b101_1101110: q = 4'b0010; + 10'b101_1101111: q = 4'b0010; + 10'b101_1110000: q = 4'b0000; + 10'b101_1110001: q = 4'b0000; + 10'b101_1110010: q = 4'b0000; + 10'b101_1110011: q = 4'b0000; + 10'b101_1110100: q = 4'b0000; + 10'b101_1110101: q = 4'b0000; + 10'b101_1110110: q = 4'b0000; + 10'b101_1110111: q = 4'b0000; + 10'b101_1111000: q = 4'b0000; + 10'b101_1111001: q = 4'b0000; + 10'b101_1111010: q = 4'b0000; + 10'b101_1111011: q = 4'b0000; + 10'b101_1111100: q = 4'b0000; + 10'b101_1111101: q = 4'b0000; + 10'b101_1111110: q = 4'b0000; + 10'b101_1111111: q = 4'b0000; + 10'b110_0000000: q = 4'b0000; + 10'b110_0000001: q = 4'b0000; + 10'b110_0000010: q = 4'b0000; + 10'b110_0000011: q = 4'b0000; + 10'b110_0000100: q = 4'b0000; + 10'b110_0000101: q = 4'b0000; + 10'b110_0000110: q = 4'b0000; + 10'b110_0000111: q = 4'b0000; + 10'b110_0001000: q = 4'b0000; + 10'b110_0001001: q = 4'b0000; + 10'b110_0001010: q = 4'b0000; + 10'b110_0001011: q = 4'b0000; + 10'b110_0001100: q = 4'b0000; + 10'b110_0001101: q = 4'b0000; + 10'b110_0001110: q = 4'b0000; + 10'b110_0001111: q = 4'b0000; + 10'b110_0010000: q = 4'b0100; + 10'b110_0010001: q = 4'b0100; + 10'b110_0010010: q = 4'b0100; + 10'b110_0010011: q = 4'b0100; + 10'b110_0010100: q = 4'b0100; + 10'b110_0010101: q = 4'b0100; + 10'b110_0010110: q = 4'b0100; + 10'b110_0010111: q = 4'b0100; + 10'b110_0011000: q = 4'b0100; + 10'b110_0011001: q = 4'b0100; + 10'b110_0011010: q = 4'b0100; + 10'b110_0011011: q = 4'b0100; + 10'b110_0011100: q = 4'b0100; + 10'b110_0011101: q = 4'b0100; + 10'b110_0011110: q = 4'b0100; + 10'b110_0011111: q = 4'b0100; + 10'b110_0100000: q = 4'b0100; + 10'b110_0100001: q = 4'b0100; + 10'b110_0100010: q = 4'b0100; + 10'b110_0100011: q = 4'b0100; + 10'b110_0100100: q = 4'b0100; + 10'b110_0100101: q = 4'b0100; + 10'b110_0100110: q = 4'b0100; + 10'b110_0100111: q = 4'b0100; + 10'b110_0101000: q = 4'b1000; + 10'b110_0101001: q = 4'b1000; + 10'b110_0101010: q = 4'b1000; + 10'b110_0101011: q = 4'b1000; + 10'b110_0101100: q = 4'b1000; + 10'b110_0101101: q = 4'b1000; + 10'b110_0101110: q = 4'b1000; + 10'b110_0101111: q = 4'b1000; + 10'b110_0110000: q = 4'b1000; + 10'b110_0110001: q = 4'b1000; + 10'b110_0110010: q = 4'b1000; + 10'b110_0110011: q = 4'b1000; + 10'b110_0110100: q = 4'b1000; + 10'b110_0110101: q = 4'b1000; + 10'b110_0110110: q = 4'b1000; + 10'b110_0110111: q = 4'b1000; + 10'b110_0111000: q = 4'b1000; + 10'b110_0111001: q = 4'b1000; + 10'b110_0111010: q = 4'b1000; + 10'b110_0111011: q = 4'b1000; + 10'b110_0111100: q = 4'b1000; + 10'b110_0111101: q = 4'b1000; + 10'b110_0111110: q = 4'b1000; + 10'b110_0111111: q = 4'b1000; + 10'b110_1000000: q = 4'b0001; + 10'b110_1000001: q = 4'b0001; + 10'b110_1000010: q = 4'b0001; + 10'b110_1000011: q = 4'b0001; + 10'b110_1000100: q = 4'b0001; + 10'b110_1000101: q = 4'b0001; + 10'b110_1000110: q = 4'b0001; + 10'b110_1000111: q = 4'b0001; + 10'b110_1001000: q = 4'b0001; + 10'b110_1001001: q = 4'b0001; + 10'b110_1001010: q = 4'b0001; + 10'b110_1001011: q = 4'b0001; + 10'b110_1001100: q = 4'b0001; + 10'b110_1001101: q = 4'b0001; + 10'b110_1001110: q = 4'b0001; + 10'b110_1001111: q = 4'b0001; + 10'b110_1010000: q = 4'b0001; + 10'b110_1010001: q = 4'b0001; + 10'b110_1010010: q = 4'b0001; + 10'b110_1010011: q = 4'b0001; + 10'b110_1010100: q = 4'b0010; + 10'b110_1010101: q = 4'b0010; + 10'b110_1010110: q = 4'b0010; + 10'b110_1010111: q = 4'b0010; + 10'b110_1011000: q = 4'b0010; + 10'b110_1011001: q = 4'b0010; + 10'b110_1011010: q = 4'b0010; + 10'b110_1011011: q = 4'b0010; + 10'b110_1011100: q = 4'b0010; + 10'b110_1011101: q = 4'b0010; + 10'b110_1011110: q = 4'b0010; + 10'b110_1011111: q = 4'b0010; + 10'b110_1100000: q = 4'b0010; + 10'b110_1100001: q = 4'b0010; + 10'b110_1100010: q = 4'b0010; + 10'b110_1100011: q = 4'b0010; + 10'b110_1100100: q = 4'b0010; + 10'b110_1100101: q = 4'b0010; + 10'b110_1100110: q = 4'b0010; + 10'b110_1100111: q = 4'b0010; + 10'b110_1101000: q = 4'b0010; + 10'b110_1101001: q = 4'b0010; + 10'b110_1101010: q = 4'b0010; + 10'b110_1101011: q = 4'b0010; + 10'b110_1101100: q = 4'b0010; + 10'b110_1101101: q = 4'b0010; + 10'b110_1101110: q = 4'b0010; + 10'b110_1101111: q = 4'b0010; + 10'b110_1110000: q = 4'b0000; + 10'b110_1110001: q = 4'b0000; + 10'b110_1110010: q = 4'b0000; + 10'b110_1110011: q = 4'b0000; + 10'b110_1110100: q = 4'b0000; + 10'b110_1110101: q = 4'b0000; + 10'b110_1110110: q = 4'b0000; + 10'b110_1110111: q = 4'b0000; + 10'b110_1111000: q = 4'b0000; + 10'b110_1111001: q = 4'b0000; + 10'b110_1111010: q = 4'b0000; + 10'b110_1111011: q = 4'b0000; + 10'b110_1111100: q = 4'b0000; + 10'b110_1111101: q = 4'b0000; + 10'b110_1111110: q = 4'b0000; + 10'b110_1111111: q = 4'b0000; + 10'b111_0000000: q = 4'b0000; + 10'b111_0000001: q = 4'b0000; + 10'b111_0000010: q = 4'b0000; + 10'b111_0000011: q = 4'b0000; + 10'b111_0000100: q = 4'b0000; + 10'b111_0000101: q = 4'b0000; + 10'b111_0000110: q = 4'b0000; + 10'b111_0000111: q = 4'b0000; + 10'b111_0001000: q = 4'b0000; + 10'b111_0001001: q = 4'b0000; + 10'b111_0001010: q = 4'b0000; + 10'b111_0001011: q = 4'b0000; + 10'b111_0001100: q = 4'b0000; + 10'b111_0001101: q = 4'b0000; + 10'b111_0001110: q = 4'b0000; + 10'b111_0001111: q = 4'b0000; + 10'b111_0010000: q = 4'b0100; + 10'b111_0010001: q = 4'b0100; + 10'b111_0010010: q = 4'b0100; + 10'b111_0010011: q = 4'b0100; + 10'b111_0010100: q = 4'b0100; + 10'b111_0010101: q = 4'b0100; + 10'b111_0010110: q = 4'b0100; + 10'b111_0010111: q = 4'b0100; + 10'b111_0011000: q = 4'b0100; + 10'b111_0011001: q = 4'b0100; + 10'b111_0011010: q = 4'b0100; + 10'b111_0011011: q = 4'b0100; + 10'b111_0011100: q = 4'b0100; + 10'b111_0011101: q = 4'b0100; + 10'b111_0011110: q = 4'b0100; + 10'b111_0011111: q = 4'b0100; + 10'b111_0100000: q = 4'b0100; + 10'b111_0100001: q = 4'b0100; + 10'b111_0100010: q = 4'b0100; + 10'b111_0100011: q = 4'b0100; + 10'b111_0100100: q = 4'b0100; + 10'b111_0100101: q = 4'b0100; + 10'b111_0100110: q = 4'b0100; + 10'b111_0100111: q = 4'b0100; + 10'b111_0101000: q = 4'b0100; + 10'b111_0101001: q = 4'b0100; + 10'b111_0101010: q = 4'b0100; + 10'b111_0101011: q = 4'b0100; + 10'b111_0101100: q = 4'b1000; + 10'b111_0101101: q = 4'b1000; + 10'b111_0101110: q = 4'b1000; + 10'b111_0101111: q = 4'b1000; + 10'b111_0110000: q = 4'b1000; + 10'b111_0110001: q = 4'b1000; + 10'b111_0110010: q = 4'b1000; + 10'b111_0110011: q = 4'b1000; + 10'b111_0110100: q = 4'b1000; + 10'b111_0110101: q = 4'b1000; + 10'b111_0110110: q = 4'b1000; + 10'b111_0110111: q = 4'b1000; + 10'b111_0111000: q = 4'b1000; + 10'b111_0111001: q = 4'b1000; + 10'b111_0111010: q = 4'b1000; + 10'b111_0111011: q = 4'b1000; + 10'b111_0111100: q = 4'b1000; + 10'b111_0111101: q = 4'b1000; + 10'b111_0111110: q = 4'b1000; + 10'b111_0111111: q = 4'b1000; + 10'b111_1000000: q = 4'b0001; + 10'b111_1000001: q = 4'b0001; + 10'b111_1000010: q = 4'b0001; + 10'b111_1000011: q = 4'b0001; + 10'b111_1000100: q = 4'b0001; + 10'b111_1000101: q = 4'b0001; + 10'b111_1000110: q = 4'b0001; + 10'b111_1000111: q = 4'b0001; + 10'b111_1001000: q = 4'b0001; + 10'b111_1001001: q = 4'b0001; + 10'b111_1001010: q = 4'b0001; + 10'b111_1001011: q = 4'b0001; + 10'b111_1001100: q = 4'b0001; + 10'b111_1001101: q = 4'b0001; + 10'b111_1001110: q = 4'b0001; + 10'b111_1001111: q = 4'b0001; + 10'b111_1010000: q = 4'b0001; + 10'b111_1010001: q = 4'b0001; + 10'b111_1010010: q = 4'b0010; + 10'b111_1010011: q = 4'b0010; + 10'b111_1010100: q = 4'b0010; + 10'b111_1010101: q = 4'b0010; + 10'b111_1010110: q = 4'b0010; + 10'b111_1010111: q = 4'b0010; + 10'b111_1011000: q = 4'b0010; + 10'b111_1011001: q = 4'b0010; + 10'b111_1011010: q = 4'b0010; + 10'b111_1011011: q = 4'b0010; + 10'b111_1011100: q = 4'b0010; + 10'b111_1011101: q = 4'b0010; + 10'b111_1011110: q = 4'b0010; + 10'b111_1011111: q = 4'b0010; + 10'b111_1100000: q = 4'b0010; + 10'b111_1100001: q = 4'b0010; + 10'b111_1100010: q = 4'b0010; + 10'b111_1100011: q = 4'b0010; + 10'b111_1100100: q = 4'b0010; + 10'b111_1100101: q = 4'b0010; + 10'b111_1100110: q = 4'b0010; + 10'b111_1100111: q = 4'b0010; + 10'b111_1101000: q = 4'b0010; + 10'b111_1101001: q = 4'b0010; + 10'b111_1101010: q = 4'b0010; + 10'b111_1101011: q = 4'b0010; + 10'b111_1101100: q = 4'b0010; + 10'b111_1101101: q = 4'b0010; + 10'b111_1101110: q = 4'b0010; + 10'b111_1101111: q = 4'b0010; + 10'b111_1110000: q = 4'b0000; + 10'b111_1110001: q = 4'b0000; + 10'b111_1110010: q = 4'b0000; + 10'b111_1110011: q = 4'b0000; + 10'b111_1110100: q = 4'b0000; + 10'b111_1110101: q = 4'b0000; + 10'b111_1110110: q = 4'b0000; + 10'b111_1110111: q = 4'b0000; + 10'b111_1111000: q = 4'b0000; + 10'b111_1111001: q = 4'b0000; + 10'b111_1111010: q = 4'b0000; + 10'b111_1111011: q = 4'b0000; + 10'b111_1111100: q = 4'b0000; + 10'b111_1111101: q = 4'b0000; + 10'b111_1111110: q = 4'b0000; + 10'b111_1111111: q = 4'b0000; + endcase