LogicToUX01

block LogicToUX01 "Conversion to UX01"
    import D = Modelica.Electrical.Digital;
    import T = Modelica.Electrical.Digital.Tables;

    D.Interfaces.DigitalInput x[n] annotation (Placement(transformation(extent = {
        {-60, -10}, 
        {-40, 10}})));
    D.Interfaces.DigitalOutput y[n] annotation (Placement(transformation(extent = {
        {40, -10}, 
        {60, 10}})));
    parameter Integer n(final min = 1, start = 1) "signal width";
algorithm
    for i in 1:n loop
        y[i] := T.UX01Table[x[i]];
    end for;

    annotation (
        Documentation(
            info = "<html>\n<p>\nConversion of a nine valued digital input into a UX01 digital output without\nany delay according to IEEE 1164 To_UX01 function.\n</p>\n<p><strong>Conversion Table:</strong></p>\n<pre>\n input                  output\n 'U' (coded by 1)       'U'  (coded by 1)\n 'X' (coded by 2)       'X'  (coded by 2)\n '0' (coded by 3)       '0'  (coded by 3)\n '1' (coded by 4)       '1'  (coded by 4)\n 'Z' (coded by 5)       'X'  (coded by 2)\n 'W' (coded by 6)       'X'  (coded by 2)\n 'L' (coded by 7)       '0'  (coded by 3)\n 'H' (coded by 8)       '1'  (coded by 4)\n '-' (coded by 9)       'X'  (coded by 2)\n</pre>\n<p>\nIf the signal width is greater than 1 this conversion is done for each signal.\n</p>\n</html>",
            revisions = "<html>\n<ul>\n<li><em>September 15, 2004</em>\n       by Christoph Clauss name converted from cvt_to_ux01 into LogicToUX01<br>\n       </li>\n<li><em>November 5, 2003</em>\n       by Christoph Clauss<br>\n       initially modelled.</li>\n</ul>\n</html>"),
        Icon(
            coordinateSystem(
                preserveAspectRatio = true,
                extent = {
                    {-100, -100}, 
                    {100, 100}}),
            graphics = {
                Text(
                    extent = {
                        {152, -100}, 
                        {-148, -40}},
                    lineColor = {0, 0, 255},
                    textString = "%name"), 
                Polygon(
                    points = {
                        {-40, -40}, 
                        {-40, 40}, 
                        {40, 40}, 
                        {-40, -40}},
                    lineColor = {127, 0, 127},
                    fillColor = {127, 0, 127},
                    fillPattern = FillPattern.Solid), 
                Polygon(
                    points = {
                        {-40, -40}, 
                        {40, -40}, 
                        {40, 40}, 
                        {-40, -40}},
                    lineColor = {127, 0, 127},
                    lineThickness = 0.5,
                    fillColor = {255, 255, 255},
                    fillPattern = FillPattern.Solid), 
                Text(
                    extent = {
                        {0, -20}, 
                        {40, -40}},
                    textString = "UX01"), 
                Rectangle(
                    extent = {
                        {-40, 40}, 
                        {40, -40}},
                    lineThickness = 0.5)}));
end LogicToUX01;