Build an EBCDIC converter using NAND logic gates

9

1

In this question, a mapping is defined between EBCDIC and a superset of ISO-8859-1.

Your task is to build a network of two-input NAND gates that will take eight inputs A1, A2, A4, ..., A128 representing an EBCDIC character and return eight outputs B1, B2, B4, ..., B128 that represent the corresponding "ISO-8859-1" character according to that mapping.

To simplify things, you may use AND, OR, NOT, and XOR gates in your diagram, with the following corresponding scores:

  • NOT: 1
  • AND: 2
  • OR: 3
  • XOR: 4

Each of these scores corresponds to the number of NAND gates that it takes to construct the corresponding gate.

The logic circuit that uses the fewest NAND gates to correctly implement all the above requirements wins.

Joe Z.

Posted 2014-04-24T14:53:04.517

Reputation: 30 589

Answers

7

727 Gates



How I did it:

  1. turned the code page translation from wikipedia into an appropriately formatted truth table using Excel (15 minutes)
  2. minimized the truth table using Espresso (5 minutes, 30 minutes on 1st iteration getting back into the saddle)
  3. fed the minimized truth table into a schematic generator (1 minute)
  4. iterated on 2&3 until I got a reasonable answer (<1 hour)
  5. turned the schematic into an uploadable image (30 min, %$#@! Microsoft)

Here's the 100% NAND gate result:

enter image description here

If I was actually going to implement this, I'd drop the NAND-centric scoring. Building XOR gates out of NANDs is a big waste of transistors. Then I'd start worrying about UMC, fire up the FPGA design tools, maybe break out the HDL manuals, etc. Whew! I love software.

NB, for hobbyists interested in FPGAs, I'll recommend FPGA4fun.

Scott Leadley

Posted 2014-04-24T14:53:04.517

Reputation: 459

even when viewing image in new tab parts are unrecognizable :( – masterX244 – 2014-05-03T10:57:36.257

I decided to upload the largest image that fit on my screen. The original, at 23339x8538, kills browsers -- literally. Chrome "Aw, snap!"ed and Firefox just refused to load it. IE displays it, but hangs for a while preparing it. – Scott Leadley – 2014-05-03T17:56:35.920

zipping and then uploading that to your favourite cloud hoster should work case browser sdon't display images in zips – masterX244 – 2014-05-03T21:32:13.917

@masterX244 I could upload the gigantic bitmap, but (1) StackExchange wants us to upload to imgur.com to avoid link-rot and Imgur would have reduced the resolution anyway. (2) If Imgur didn't reduce the resolution, every visitor to this page using Chrome would see "Aw, snap!" as it tried to read the entire image before scaling. (3) WYSIWYG; this answer ain't worth revising again. – Scott Leadley – 2014-05-04T00:02:02.887

4

309 NANDs

A really low solution in the number of NANDs, but I can go even lower. One just have to stop somewhere, some time, and 309 seems good for that. (I actually reached 308 NANDs later, but then hit some kind of barrier.)

No pencil drawn image of the circuit this time. Perhaps later if I some day return to this problem and hit a lower edge, ledge, limit, in the increasingly dense thicket of wrong circuits.

The circuit is presented in obvious Verilog code, ready for running with test included.

Verilog code:

// EBCDIC to ISO-latin-1 converter circuit
// Made of just 309 NANDs
//
// By Kim Øyhus 2018 (c) into (CC BY-SA 3.0)
// This work is licensed under the Creative Commons Attribution     3.0
// Unported License. To view a copy of this license, visit
// https://creativecommons.org/licenses/by-sa/3.0/
//
// This is my entry to win this Programming Puzzle & Code Golf
// at Stack Exchange: 
// https://codegolf.stackexchange.com/questions/26252/build-an-ebcdic-converter-using-nand-logic-gates
//
// There are even simpler solutions to this puzzle,
// but I just had to stop somewhere, and 309 NAND gates is
// a very low number anyway.

module EBCDIC_to_ISO_latin_1 ( in_000, in_001, in_002, in_003, in_004, in_005, in_006, in_007, out000, out001, out002, out003, out004, out005, out006, out007 );
  input  in_000, in_001, in_002, in_003, in_004, in_005, in_006, in_007;
  output out000, out001, out002, out003, out004, out005, out006, out007;
  wire   wir000, wir001, wir002, wir003, wir004, wir005, wir006, wir007, wir008, wir009, wir010, wir011, wir012, wir013, wir014, wir015, wir016, wir017, wir018, wir019, wir020, wir021, wir022, wir023, wir024, wir025, wir026, wir027, wir028, wir029, wir030, wir031, wir032, wir033, wir034, wir035, wir036, wir037, wir038, wir039, wir040, wir041, wir042, wir043, wir044, wir045, wir046, wir047, wir048, wir049, wir050, wir051, wir052, wir053, wir054, wir055, wir056, wir057, wir058, wir059, wir060, wir061, wir062, wir063, wir064, wir065, wir066, wir067, wir068, wir069, wir070, wir071, wir072, wir073, wir074, wir075, wir076, wir077, wir078, wir079, wir080, wir081, wir082, wir083, wir084, wir085, wir086, wir087, wir088, wir089, wir090, wir091, wir092, wir093, wir094, wir095, wir096, wir097, wir098, wir099, wir100, wir101, wir102, wir103, wir104, wir105, wir106, wir107, wir108, wir109, wir110, wir111, wir112, wir113, wir114, wir115, wir116, wir117, wir118, wir119, wir120, wir121, wir122, wir123, wir124, wir125, wir126, wir127, wir128, wir129, wir130, wir131, wir132, wir133, wir134, wir135, wir136, wir137, wir138, wir139, wir140, wir141, wir142, wir143, wir144, wir145, wir146, wir147, wir148, wir149, wir150, wir151, wir152, wir153, wir154, wir155, wir156, wir157, wir158, wir159, wir160, wir161, wir162, wir163, wir164, wir165, wir166, wir167, wir168, wir169, wir170, wir171, wir172, wir173, wir174, wir175, wir176, wir177, wir178, wir179, wir180, wir181, wir182, wir183, wir184, wir185, wir186, wir187, wir188, wir189, wir190, wir191, wir192, wir193, wir194, wir195, wir196, wir197, wir198, wir199, wir200, wir201, wir202, wir203, wir204, wir205, wir206, wir207, wir208, wir209, wir210, wir211, wir212, wir213, wir214, wir215, wir216, wir217, wir218, wir219, wir220, wir221, wir222, wir223, wir224, wir225, wir226, wir227, wir228, wir229, wir230, wir231, wir232, wir233, wir234, wir235, wir236, wir237, wir238, wir239, wir240, wir241, wir242, wir243, wir244, wir245, wir246, wir247, wir248, wir249, wir250, wir251, wir252, wir253, wir254, wir255, wir256, wir257, wir258, wir259, wir260, wir261, wir262, wir263, wir264, wir265, wir266, wir267, wir268, wir269, wir270, wir271, wir272, wir273, wir274, wir275, wir276, wir277, wir278, wir279, wir280, wir281, wir282, wir283, wir284, wir285, wir286, wir287, wir288, wir289, wir290, wir291, wir292, wir293, wir294, wir295, wir296, wir297, wir298, wir299, wir300, wir301, wir302;

  nand gate000 ( wir000, in_003, in_000 );
  nand gate001 ( wir001, in_002, in_002 );
  nand gate002 ( wir002, in_000, in_000 );
  nand gate003 ( wir003, in_000, in_004 );
  nand gate004 ( wir004, wir003, in_001 );
  nand gate005 ( wir005, in_006, in_003 );
  nand gate006 ( wir006, wir003, wir005 );
  nand gate007 ( wir007, in_007, in_007 );
  nand gate008 ( wir008, wir003, wir004 );
  nand gate009 ( wir009, wir003, wir006 );
  nand gate010 ( wir010, in_005, wir009 );
  nand gate011 ( wir011, wir008, wir009 );
  nand gate012 ( wir012, wir009, wir011 );
  nand gate013 ( wir013, in_004, wir002 );
  nand gate014 ( wir014, wir013, wir009 );
  nand gate015 ( wir015, in_006, wir007 );
  nand gate016 ( wir016, wir001, wir015 );
  nand gate017 ( wir017, wir015, wir015 );
  nand gate018 ( wir018, in_003, wir015 );
  nand gate019 ( wir019, wir018, wir018 );
  nand gate020 ( wir020, wir000, wir007 );
  nand gate021 ( wir021, wir005, wir017 );
  nand gate022 ( wir022, wir018, wir011 );
  nand gate023 ( wir023, in_002, wir018 );
  nand gate024 ( wir024, in_001, in_003 );
  nand gate025 ( wir025, wir010, in_004 );
  nand gate026 ( wir026, wir017, wir024 );
  nand gate027 ( wir027, wir001, wir007 );
  nand gate028 ( wir028, in_004, wir024 );
  nand gate029 ( wir029, wir024, wir024 );
  nand gate030 ( wir030, in_004, wir023 );
  nand gate031 ( wir031, wir022, wir030 );
  nand gate032 ( wir032, wir026, wir030 );
  nand gate033 ( wir033, wir030, wir020 );
  nand gate034 ( wir034, wir001, wir026 );
  nand gate035 ( wir035, wir022, in_007 );
  nand gate036 ( wir036, wir020, wir034 );
  nand gate037 ( wir037, wir007, wir023 );
  nand gate038 ( wir038, wir034, wir023 );
  nand gate039 ( wir039, wir031, wir033 );
  nand gate040 ( wir040, wir028, wir019 );
  nand gate041 ( wir041, wir036, wir040 );
  nand gate042 ( wir042, in_001, wir025 );
  nand gate043 ( wir043, wir041, wir010 );
  nand gate044 ( wir044, wir038, wir000 );
  nand gate045 ( wir045, wir033, wir004 );
  nand gate046 ( wir046, wir039, wir045 );
  nand gate047 ( wir047, in_002, wir046 );
  nand gate048 ( wir048, wir011, wir037 );
  nand gate049 ( wir049, wir012, in_006 );
  nand gate050 ( wir050, wir048, wir007 );
  nand gate051 ( wir051, wir048, wir049 );
  nand gate052 ( wir052, in_006, in_004 );
  nand gate053 ( wir053, wir043, wir001 );
  nand gate054 ( wir054, wir042, wir053 );
  nand gate055 ( wir055, wir019, wir007 );
  nand gate056 ( wir056, wir016, wir039 );
  nand gate057 ( wir057, in_003, wir026 );
  nand gate058 ( wir058, wir029, in_007 );
  nand gate059 ( wir059, in_005, wir055 );
  nand gate060 ( wir060, wir035, wir054 );
  nand gate061 ( wir061, wir055, wir060 );
  nand gate062 ( wir062, wir032, in_003 );
  nand gate063 ( wir063, wir002, wir059 );
  nand gate064 ( wir064, wir062, wir025 );
  nand gate065 ( wir065, wir063, wir036 );
  nand gate066 ( wir066, wir060, wir065 );
  nand gate067 ( wir067, wir037, wir065 );
  nand gate068 ( wir068, wir029, in_006 );
  nand gate069 ( wir069, wir067, wir043 );
  nand gate070 ( wir070, wir061, wir069 );
  nand gate071 ( wir071, wir047, wir070 );
  nand gate072 ( wir072, wir071, wir071 );
  nand gate073 ( wir073, wir071, wir038 );
  nand gate074 ( wir074, wir010, wir073 );
  nand gate075 ( wir075, wir021, wir038 );
  nand gate076 ( wir076, wir028, wir066 );
  nand gate077 ( wir077, wir076, wir056 );
  nand gate078 ( wir078, wir077, wir077 );
  nand gate079 ( wir079, wir072, wir013 );
  nand gate080 ( wir080, wir079, wir026 );
  nand gate081 ( wir081, wir080, wir080 );
  nand gate082 ( wir082, wir078, wir025 );
  nand gate083 ( wir083, wir022, wir082 );
  nand gate084 ( wir084, in_001, wir083 );
  nand gate085 ( wir085, wir044, wir083 );
  nand gate086 ( wir086, wir085, wir081 );
  nand gate087 ( wir087, wir027, wir086 );
  nand gate088 ( wir088, wir087, wir007 );
  nand gate089 ( wir089, wir074, wir087 );
  nand gate090 ( wir090, wir051, wir075 );
  nand gate091 ( wir091, wir068, wir089 );
  nand gate092 ( wir092, wir091, wir091 );
  nand gate093 ( wir093, wir084, wir002 );
  nand gate094 ( wir094, wir051, wir091 );
  nand gate095 ( wir095, wir094, wir042 );
  nand gate096 ( wir096, wir021, wir094 );
  nand gate097 ( wir097, wir093, wir096 );
  nand gate098 ( wir098, wir096, wir044 );
  nand gate099 ( wir099, wir063, wir096 );
  nand gate100 ( wir100, wir088, wir026 );
  nand gate101 ( wir101, wir090, wir099 );
  nand gate102 ( wir102, wir101, wir101 );
  nand gate103 ( wir103, wir100, wir066 );
  nand gate104 ( wir104, wir057, wir102 );
  nand gate105 ( wir105, wir102, wir092 );
  nand gate106 ( wir106, wir102, wir059 );
  nand gate107 ( wir107, wir038, wir103 );
  nand gate108 ( wir108, wir072, wir102 );
  nand gate109 ( wir109, wir108, wir052 );
  nand gate110 ( wir110, wir052, wir021 );
  nand gate111 ( wir111, wir100, wir110 );
  nand gate112 ( wir112, wir110, wir106 );
  nand gate113 ( wir113, wir109, wir112 );
  nand gate114 ( wir114, wir104, wir038 );
  nand gate115 ( wir115, in_007, wir113 );
  nand gate116 ( wir116, wir060, wir115 );
  nand gate117 ( wir117, wir115, wir058 );
  nand gate118 ( wir118, wir117, wir038 );
  nand gate119 ( wir119, wir117, wir117 );
  nand gate120 ( wir120, wir116, in_006 );
  nand gate121 ( wir121, wir093, wir081 );
  nand gate122 ( wir122, wir119, wir120 );
  nand gate123 ( wir123, wir120, wir002 );
  nand gate124 ( wir124, wir119, in_007 );
  nand gate125 ( wir125, wir052, wir120 );
  nand gate126 ( wir126, wir120, wir020 );
  nand gate127 ( wir127, wir020, wir126 );
  nand gate128 ( wir128, wir126, wir124 );
  nand gate129 ( wir129, wir128, wir106 );
  nand gate130 ( wir130, wir100, wir104 );
  nand gate131 ( wir131, in_007, wir128 );
  nand gate132 ( wir132, wir061, wir128 );
  nand gate133 ( wir133, wir064, wir050 );
  nand gate134 ( wir134, wir068, wir093 );
  nand gate135 ( wir135, wir134, wir044 );
  nand gate136 ( wir136, wir127, wir121 );
  nand gate137 ( wir137, wir095, wir136 );
  nand gate138 ( wir138, wir105, wir137 );
  nand gate139 ( wir139, wir058, wir138 );
  nand gate140 ( wir140, wir138, wir118 );
  nand gate141 ( wir141, wir078, wir131 );
  nand gate142 ( wir142, wir140, wir140 );
  nand gate143 ( wir143, wir129, wir140 );
  nand gate144 ( wir144, wir129, wir109 );
  nand gate145 ( wir145, wir090, in_005 );
  nand gate146 ( wir146, wir145, wir145 );
  nand gate147 ( wir147, wir133, wir059 );
  nand gate148 ( wir148, wir093, wir147 );
  nand gate149 ( wir149, wir148, wir148 );
  nand gate150 ( wir150, wir131, wir131 );
  nand gate151 ( wir151, wir143, wir116 );
  nand gate152 ( wir152, wir021, wir132 );
  nand gate153 ( wir153, wir144, wir051 );
  nand gate154 ( wir154, wir122, wir149 );
  nand gate155 ( wir155, wir149, wir142 );
  nand gate156 ( wir156, in_001, wir149 );
  nand gate157 ( wir157, wir123, wir098 );
  nand gate158 ( wir158, wir058, wir133 );
  nand gate159 ( wir159, in_007, wir158 );
  nand gate160 ( wir160, wir133, wir157 );
  nand gate161 ( wir161, wir129, wir159 );
  nand gate162 ( wir162, wir059, wir100 );
  nand gate163 ( wir163, wir130, wir159 );
  nand gate164 ( wir164, wir152, wir146 );
  nand gate165 ( wir165, wir164, wir155 );
  nand gate166 ( wir166, wir121, wir164 );
  nand gate167 ( wir167, wir166, wir157 );
  nand gate168 ( wir168, wir167, wir058 );
  nand gate169 ( wir169, wir059, wir104 );
  nand gate170 ( wir170, wir139, wir169 );
  nand gate171 ( wir171, wir135, wir168 );
  nand gate172 ( wir172, wir171, wir156 );
  nand gate173 ( wir173, wir025, in_004 );
  nand gate174 ( wir174, wir172, wir143 );
  nand gate175 ( wir175, wir000, wir172 );
  nand gate176 ( wir176, wir154, wir172 );
  nand gate177 ( wir177, wir176, wir162 );
  nand gate178 ( wir178, wir111, in_005 );
  nand gate179 ( wir179, in_004, wir144 );
  nand gate180 ( wir180, wir162, wir178 );
  nand gate181 ( wir181, wir173, wir141 );
  nand gate182 ( wir182, wir180, wir131 );
  nand gate183 ( wir183, wir154, wir182 );
  nand gate184 ( wir184, wir090, wir183 );
  nand gate185 ( wir185, wir184, wir179 );
  nand gate186 ( wir186, wir107, wir058 );
  nand gate187 ( wir187, wir097, wir184 );
  nand gate188 ( wir188, wir016, wir177 );
  nand gate189 ( wir189, wir114, wir188 );
  nand gate190 ( wir190, wir189, wir143 );
  nand gate191 ( wir191, wir109, wir190 );
  nand gate192 ( wir192, wir185, wir190 );
  nand gate193 ( wir193, wir190, in_004 );
  nand gate194 ( wir194, wir193, wir135 );
  nand gate195 ( wir195, wir192, wir165 );
  nand gate196 ( wir196, wir194, wir161 );
  nand gate197 ( wir197, wir161, wir196 );
  nand gate198 ( wir198, wir196, wir185 );
  nand gate199 ( wir199, wir198, wir198 );
  nand gate200 ( wir200, wir155, wir181 );
  nand gate201 ( wir201, wir200, wir119 );
  nand gate202 ( wir202, in_006, wir090 );
  nand gate203 ( wir203, in_001, wir052 );
  nand gate204 ( wir204, wir185, wir202 );
  nand gate205 ( wir205, wir175, wir198 );
  nand gate206 ( wir206, wir205, wir150 );
  nand gate207 ( wir207, wir205, wir200 );
  nand gate208 ( wir208, wir207, wir168 );
  nand gate209 ( wir209, wir208, wir185 );
  nand gate210 ( wir210, wir144, wir199 );
  nand gate211 ( wir211, wir210, wir187 );
  nand gate212 ( wir212, wir210, wir135 );
  nand gate213 ( wir213, wir187, wir144 );
  nand gate214 ( wir214, wir151, wir210 );
  nand gate215 ( wir215, wir143, wir105 );
  nand gate216 ( wir216, wir021, wir215 );
  nand gate217 ( wir217, wir160, wir160 );
  nand gate218 ( wir218, wir186, wir061 );
  nand gate219 ( wir219, wir216, wir025 );
  nand gate220 ( wir220, wir219, wir122 );
  nand gate221 ( wir221, wir212, wir219 );
  nand gate222 ( wir222, wir209, wir105 );
  nand gate223 ( wir223, wir191, wir213 );
  nand gate224 ( wir224, wir168, wir221 );
  nand gate225 ( wir225, wir224, wir224 );
  nand gate226 ( wir226, wir144, wir209 );
  nand gate227 ( wir227, wir020, wir222 );
  nand gate228 ( wir228, wir129, wir226 );
  nand gate229 ( wir229, wir228, wir160 );
  nand gate230 ( wir230, wir229, wir229 );
  nand gate231 ( wir231, wir197, wir230 );
  nand gate232 ( wir232, wir230, wir214 );
  nand gate233 ( wir233, wir173, wir230 );
  nand gate234 ( wir234, wir056, wir174 );
  nand gate235 ( wir235, wir146, wir181 );
  nand gate236 ( wir236, wir235, wir225 );
  nand gate237 ( wir237, wir236, wir014 );
  nand gate238 ( wir238, wir236, wir174 );
  nand gate239 ( wir239, wir155, wir203 );
  nand gate240 ( wir240, wir209, wir236 );
  nand gate241 ( wir241, wir146, wir225 );
  nand gate242 ( wir242, wir191, wir241 );
  nand gate243 ( wir243, wir241, wir209 );
  nand gate244 ( wir244, wir206, wir111 );
  nand gate245 ( wir245, wir243, wir233 );
  nand gate246 ( wir246, wir223, wir234 );
  nand gate247 ( wir247, wir191, wir186 );
  nand gate248 ( wir248, wir056, wir238 );
  nand gate249 ( wir249, wir248, wir218 );
  nand gate250 ( wir250, wir243, wir249 );
  nand gate251 ( wir251, wir239, wir174 );
  nand gate252 ( wir252, wir251, wir231 );
  nand gate253 ( wir253, wir249, wir244 );
  nand gate254 ( wir254, wir240, wir150 );
  nand gate255 ( wir255, wir253, wir139 );
  nand gate256 ( wir256, wir242, wir253 );
  nand gate257 ( wir257, wir244, wir195 );
  nand gate258 ( wir258, wir204, wir201 );
  nand gate259 ( out007, wir254, wir255 );
  nand gate260 ( wir259, wir217, wir253 );
  nand gate261 ( wir260, wir258, wir259 );
  nand gate262 ( wir261, wir197, wir260 );
  nand gate263 ( wir262, wir220, wir261 );
  nand gate264 ( wir263, wir261, wir192 );
  nand gate265 ( wir264, wir262, wir263 );
  nand gate266 ( wir265, wir201, wir125 );
  nand gate267 ( wir266, wir265, wir250 );
  nand gate268 ( wir267, wir266, wir237 );
  nand gate269 ( wir268, wir266, wir199 );
  nand gate270 ( wir269, wir136, wir244 );
  nand gate271 ( wir270, wir264, wir195 );
  nand gate272 ( wir271, wir256, wir268 );
  nand gate273 ( wir272, wir247, wir269 );
  nand gate274 ( wir273, wir271, in_001 );
  nand gate275 ( wir274, wir256, wir271 );
  nand gate276 ( wir275, wir273, wir274 );
  nand gate277 ( wir276, wir275, wir275 );
  nand gate278 ( wir277, wir249, wir227 );
  nand gate279 ( wir278, wir222, in_006 );
  nand gate280 ( wir279, wir278, wir153 );
  nand gate281 ( wir280, wir272, wir163 );
  nand gate282 ( wir281, wir278, wir170 );
  nand gate283 ( wir282, wir245, wir281 );
  nand gate284 ( wir283, wir204, wir282 );
  nand gate285 ( out005, wir283, wir254 );
  nand gate286 ( wir284, wir232, wir201 );
  nand gate287 ( wir285, wir284, wir197 );
  nand gate288 ( wir286, wir257, wir285 );
  nand gate289 ( wir287, out007, wir279 );
  nand gate290 ( wir288, wir163, wir287 );
  nand gate291 ( wir289, wir245, wir288 );
  nand gate292 ( wir290, wir288, wir247 );
  nand gate293 ( wir291, wir252, wir211 );
  nand gate294 ( wir292, wir277, wir232 );
  nand gate295 ( wir293, wir192, wir292 );
  nand gate296 ( wir294, wir290, wir280 );
  nand gate297 ( wir295, wir264, wir292 );
  nand gate298 ( wir296, wir217, wir264 );
  nand gate299 ( wir297, wir221, wir295 );
  nand gate300 ( out003, wir294, wir295 );
  nand gate301 ( wir298, wir273, wir297 );
  nand gate302 ( out002, wir298, wir246 );
  nand gate303 ( out006, wir240, wir289 );
  nand gate304 ( wir299, wir293, wir250 );
  nand gate305 ( out000, wir270, wir267 );
  nand gate306 ( out001, wir276, wir291 );
  nand gate307 ( wir300, wir299, wir296 );
  nand gate308 ( out004, wir286, wir300 );
endmodule


module test; 
   reg  [7:0] AB; // C=A*B
   wire [7:0] C;

  EBCDIC_to_ISO_latin_1 U1 ( 
  .in_000 (AB[0]), 
  .in_001 (AB[1]), 
  .in_002 (AB[2]), 
  .in_003 (AB[3]), 
  .in_004 (AB[4]), 
  .in_005 (AB[5]), 
  .in_006 (AB[6]), 
  .in_007 (AB[7]), 
  .out000 (C[0]), 
  .out001 (C[1]), 
  .out002 (C[2]), 
  .out003 (C[3]), 
  .out004 (C[4]), 
  .out005 (C[5]),
  .out006 (C[6]),
  .out007 (C[7])
  ); 

  initial  AB=0;
  always  #1  AB = AB+1;
  initial  begin
    $display("\t\ttime,\tEBCDIC   \tISO-latin-1"); 
    $monitor("%d,\t%b %b\t%b %b\t%c",$time, AB[7:4], AB[3:0], C[7:4], C[3:0], C); 
  end 
  initial  #255  $finish; 
endmodule


// iverilog -o EBCDIC_309 EBCDIC_309.v
// vvp EBCDIC_309


/*
https://codegolf.stackexchange.com/questions/24925/ebcdic-code-golf-happy-birthday-system-360

 EBCDIC037_to_Latin1 = [
    0x00,0x01,0x02,0x03,0x9c,0x09,0x86,0x7f,0x97,0x8d,0x8e,0x0b,0x0c,0x0d,0x0e,0x0f,
    0x10,0x11,0x12,0x13,0x9d,0x85,0x08,0x87,0x18,0x19,0x92,0x8f,0x1c,0x1d,0x1e,0x1f,
    0x80,0x81,0x82,0x83,0x84,0x0a,0x17,0x1b,0x88,0x89,0x8a,0x8b,0x8c,0x05,0x06,0x07,
    0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9a,0x9b,0x14,0x15,0x9e,0x1a,
    0x20,0xa0,0xe2,0xe4,0xe0,0xe1,0xe3,0xe5,0xe7,0xf1,0xa2,0x2e,0x3c,0x28,0x2b,0x7c,
    0x26,0xe9,0xea,0xeb,0xe8,0xed,0xee,0xef,0xec,0xdf,0x21,0x24,0x2a,0x29,0x3b,0xac,
    0x2d,0x2f,0xc2,0xc4,0xc0,0xc1,0xc3,0xc5,0xc7,0xd1,0xa6,0x2c,0x25,0x5f,0x3e,0x3f,
    0xf8,0xc9,0xca,0xcb,0xc8,0xcd,0xce,0xcf,0xcc,0x60,0x3a,0x23,0x40,0x27,0x3d,0x22,
    0xd8,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xab,0xbb,0xf0,0xfd,0xfe,0xb1,
    0xb0,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0xaa,0xba,0xe6,0xb8,0xc6,0xa4,
    0xb5,0x7e,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0xa1,0xbf,0xd0,0xdd,0xde,0xae,
    0x5e,0xa3,0xa5,0xb7,0xa9,0xa7,0xb6,0xbc,0xbd,0xbe,0x5b,0x5d,0xaf,0xa8,0xb4,0xd7,
    0x7b,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xad,0xf4,0xf6,0xf2,0xf3,0xf5,
    0x7d,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0xb9,0xfb,0xfc,0xf9,0xfa,0xff,
    0x5c,0xf7,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0xb2,0xd4,0xd6,0xd2,0xd3,0xd5,
    0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xb3,0xdb,0xdc,0xd9,0xda,0x9f];
 */

KimOyhus

Posted 2014-04-24T14:53:04.517

Reputation: 351