splitter.html 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <html>
  2. <head>
  3. <title>Splitter</title>
  4. </head>
  5. <body bgcolor="FFFFFF">
  6. <h1><img align="center" src="../../../../en/icons/splitter.gif" width="32" height="32">
  7. <em>Splitter</em></h1>
  8. <p><table>
  9. <tr><td><strong>Library:</strong></td>
  10. <td><a href="index.html">Wiring</a></td></tr>
  11. <tr><td><strong>Introduced:</strong></td>
  12. <td>2.0 Beta 1 (in Base library, moved to Wiring in 2.7.0)</td></tr>
  13. <tr><td valign="top"><strong>Appearance:</strong></td>
  14. <td valign="top"><img src="../../../../en/img-libs/splitter.png" width="24" height="44"></td></tr>
  15. </table></p>
  16. <h2>Behavior</h2>
  17. <p>The splitter creates a correspondence between a multi-bit value and several
  18. separate subsets of those bits. Despite its name, it can either
  19. split a multi-bit value into component parts, or it can combine
  20. component parts into a multi-bit value - or indeed it can do both at once.
  21. A more complete description of splitters is found in the `<a
  22. href="../../guide/bundles/splitting.html">Splitters</a>' section of the
  23. <em>User's Guide</em>.</p>
  24. <p>Logisim treats splitters specially when propagating values within a
  25. circuit: Whereas all other components have a computed delay for purposes
  26. of simulating their behavior, values propagate through splitters (as
  27. well as wires) instantaneously.</p>
  28. <p><strong>Note:</strong> The term <em>splitter</em> is a non-standard
  29. term, which is unique to Logisim as far as I know. I am unaware of any
  30. standard term for such a concept; the only term I have heard used is
  31. <em>bus ripper</em>, but this term is unnecessarily violent for my
  32. tastes.</p>
  33. <h2>Pins</h2>
  34. <p>To distinguish the several connecting points for a splitter, we refer
  35. to the single connecting point one side as its <em>combined end</em>,
  36. and we refer to the multiple connecting points on the other side as its
  37. <em>split ends</em>.</p>
  38. <dl>
  39. <dt>Combined end (input/output bit width matches Bit Width In attribute)
  40. <dd>A value holding all of the bits traveling through the splitter.
  41. <dt>Split ends (input/output, bit width computed based on Bit <var>x</var> attributes)
  42. <dd>The number of split ends is specified in the Fan Out attribute, and
  43. each split end has an index that is at least 0 and less than the Fan Out
  44. attribute. For each split end, all bits for which Bit <var>x</var>
  45. refers to its index travels through that split end; the order of these
  46. bits is the same as their order within the combined end.
  47. </dl>
  48. <h2>Attributes</h2>
  49. <p>When the component is selected or being added,
  50. the digits '0' through '9' alter its <q>Fan Out</q> attribute,
  51. Alt-0 through Alt-9 alter both the <q>Fan Out</q> and <q>Bit Width In</q> attributes,
  52. and the arrow keys alter its <q>Facing</q> attribute.</p>
  53. <dl>
  54. <dt>Facing</dt>
  55. <dd><p>The location of the split ends relative to the combined end.</p></dd>
  56. <dt>Fan Out</dt>
  57. <dd><p>The number of split ends.</p></dd>
  58. <dt>Bit Width In</dt>
  59. <dd><p>The bit width of the combined end.</p></dd>
  60. <dt>Appearance</dt>
  61. <dd><p>Supports different ways of depicting the splitter in the circuit.
  62. The <q>Left-handed</q> option (the default) draws a spine going left from the
  63. combined end, with a labeled line coming from the spine for each split end.
  64. The <q>Right-handed</q> option is the same except the spine goes right (if you're
  65. facing according to the Facing attribute).
  66. The <q>Centered</q> option centers the spine so it goes in roughly equal directions
  67. left and right.
  68. And the <q>Legacy</q> option draws diagonal lines to each split end, without labels;
  69. this option is primarily for compatibility with versions
  70. older than 2.7.0, when this was the only option for splitter appearance.</p></dd>
  71. <dt>Bit <var>x</var></dt>
  72. <dd><p>The index of the split end to which bit <var>x</var> of the combined
  73. end corresponds. The split ends are indexed starting from 0 at the top
  74. (for a splitter facing east or west) or from 0 at the left/west (for a
  75. splitter facing north or south). A bit can be specified to correspond to
  76. none of the split ends. There is no way for a bit to correspond to
  77. multiple split ends.</p>
  78. <p>Sometimes you can avoid twiddling each individual Bit <var>x</var> attribute
  79. by bringing up the pop-up menu for a splitter (usually by right-clicking or
  80. control-clicking it). The pop-up menu includes options labeled Distribute Ascending
  81. and Distribute Descending. The Distribute Ascending option distributes the bits
  82. so that each split end receives the same number of bits, starting from end 0.
  83. (If the number of split ends doesn't divide exactly into the number of bits,
  84. then the bits are distributed as evenly as possible.)
  85. Distribute Descending does the same but starts from the highest-numbered end.</p></dd>
  86. </dl>
  87. <h2>Poke Tool Behavior</h2>
  88. <p>None.</p>
  89. <h2>Text Tool Behavior</h2>
  90. <p>None.</p>
  91. <p><a href="../index.html">Back to <em>Library Reference</em></a></p>
  92. </body>
  93. </html>