Construire un convertisseur EBCDIC à l'aide de portes logiques NAND

9

Dans cette question , un mappage est défini entre EBCDIC et un sur-ensemble de ISO-8859-1.

Votre tâche consiste à créer un réseau de portes NAND à deux entrées qui prendra huit entrées A1, A2, A4, ..., A128représentant un caractère EBCDIC et retournera huit sorties B1, B2, B4, ..., B128qui représentent le caractère "ISO-8859-1" correspondant selon ce mappage.

Pour simplifier les choses, vous pouvez utiliser les portes AND, OR, NOT et XOR dans votre diagramme, avec les scores correspondants suivants:

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

Chacun de ces scores correspond au nombre de portes NAND qu'il faut pour construire la porte correspondante.

Le circuit logique qui utilise le moins de portes NAND pour implémenter correctement toutes les exigences ci-dessus l'emporte.

Joe Z.
la source

Réponses:

7

727 portes



Comment je l'ai fait:

  1. transformé la traduction de la page de codes de wikipedia en une table de vérité correctement formatée à l'aide d'Excel (15 minutes)
  2. minimisé la table de vérité en utilisant Espresso (5 minutes, 30 minutes sur la 1ère itération pour revenir en selle)
  3. alimenté la table de vérité minimisée dans un générateur schématique (1 minute)
  4. itéré sur 2 & 3 jusqu'à ce que j'obtienne une réponse raisonnable (<1 heure)
  5. transformé le schéma en une image téléchargeable (30 min,% $ # @! Microsoft)

Voici le résultat de la porte 100% NAND:

entrez la description de l'image ici

Si j'allais réellement implémenter cela, je supprimerais le score NAND-centric. La construction de portes XOR à partir de NAND est un gros gaspillage de transistors. Ensuite, je commençais à m'inquiéter pour UMC, à lancer les outils de conception FPGA, peut-être à sortir les manuels HDL, etc. Ouf! J'adore les logiciels.

NB, pour les amateurs intéressés par les FPGA, je recommanderai FPGA4fun .

Scott Leadley
la source
même lorsque l'affichage de l'image dans de nouveaux onglets n'est pas
reconnaissable
J'ai décidé de télécharger la plus grande image adaptée à mon écran. L'original, à 23339x8538, tue les navigateurs - littéralement. Chrome "Aw, snap!" Ed et Firefox vient de refuser de le charger. IE l'affiche, mais se bloque pendant un certain temps en le préparant.
Scott Leadley
le zippage puis le téléchargement sur votre hébergeur cloud préféré devrait fonctionner. Le navigateur de cas n'affichera pas les images en zips
masterX244
@ masterX244 Je pourrais télécharger le gigantesque bitmap, mais (1) StackExchange veut que nous téléchargions sur imgur.com pour éviter la pourriture de liens et Imgur aurait de toute façon réduit la résolution. (2) Si Imgur ne réduisait pas la résolution, chaque visiteur de cette page utilisant Chrome verrait "Aw, snap!" car il a essayé de lire l'image entière avant la mise à l'échelle. (3) WYSIWYG; cette réponse ne vaut pas la peine d'être révisée à nouveau.
Scott Leadley
5

309 NAND

Une solution vraiment faible dans le nombre de NAND, mais je peux aller encore plus bas. Il suffit de s'arrêter quelque part, un certain temps, et 309 semble bon pour cela. (J'ai en fait atteint 308 NAND plus tard, mais j'ai ensuite heurté une sorte de barrière.)

Aucune image du circuit dessinée au crayon cette fois. Peut-être plus tard si je reviens un jour à ce problème et que je frappe un bord inférieur, une corniche, une limite, dans le bosquet de plus en plus dense de mauvais circuits.

Le circuit est présenté en code Verilog évident, prêt à fonctionner avec test inclus.

Code Verilog:

// 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: 
// /codegolf/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


/*
/codegolf/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
la source