Selaa lähdekoodia

Updated the README

Baglio Tabifata 5 vuotta sitten
vanhempi
commit
c949233088
1 muutettua tiedostoa jossa 22 lisäystä ja 24 poistoa
  1. 22 24
      README.md

+ 22 - 24
README.md

@@ -13,26 +13,14 @@ It will produce a truth table that can be minimized and transformed into a list
 
 ## The Analyzer
 
-The analyzer lets the user select which type of registered PAL is inserted in the board's ZIF socket, whether the output pins are known (which saves some time), what is the board's serial interface, and where to save the output files.
+The analyzer lets the user select which type of PAL is inserted in the board's ZIF socket, whether the IO pins that are set as outputs are known (which saves some time), what is the board's serial interface, and where to save the output table.
 Once this is known, the application will:
 
 1. Connect to the board, reset it, and enable the *REMOTE MODE*, so it accepts command from the application.
-2. If which I/O pins are actually outputs is not known, the board will try to guess this and print the result. This procedure is not bulletproof (or it would take the same time as the proper analisys: in case it did not detect some outputs, these will be found during the analisys and will halt the procedure, allowing the user to specify them for the next run).
-3. The analisys will start. The status will be saved every 5 minutes, so it can be stopped and resumed at leisure. The procedure can take hours to complete.
+2. If which I/O pins are actually outputs is not known, the board will try to guess this and print the result. This procedure is not bulletproof (or it would take the same time as the proper analisys: in case it did not detect some outputs, these will be found during the analisys and will halt the procedure, allowing the user to specify them correctly for the next run).
+3. The analisys will start. The procedure can take hours to complete.
 4. A truth table formatted in a way that the **espresso** heuristic logic minimizer likes is saved to a file.
 
-### Caveats
-
-Once the truth table is obtained, its content should be minimized and equations calculated: **espresso** is a good tool for this.
-Often, some of the resulting equations for the registered outputs will not fit into a new PAL device.
-There are multiple reasons for this:
-
-1. To obtain the original equations, one should in theory produce a table where every input is fed to the black box and every output is recorded: with registered devices this is alas impossible: the input of a state depends on the previous state, and not every state can be reached.
-    - The result will be a set of equations functionally identical to the originals, for all the states that can be reached in reality, but one cannot always recover the original equations.
-2. To save products in the PAL circuitry, feedback outputs are used. This means some outputs take their value and feed it back to the network inside the PAL. As all the outputs are fed by the same inputs, the equations will be equivalent, but won't contain this simplification that can save important space on the device.
-    - I haven't found a way to do an automatic replacement of these terms, but they're usually apparent when looking at the equations that make use of them. **Logic Friday** is a good tool to put the equations in, and either factorize them, transform the in *sums of products* or *products of sums* until You can spot a member that contains the same operands as one of the feedback outputs. At that point it becomes a matter of doing a simple replacement.
-    - Refer to `docs/Minimize_Equations_with_feedbacks.md` in this repository for additional explanation and examples.
-
 ### Supported devices
 
 The following PAL models are supported:
@@ -40,32 +28,31 @@ The following PAL models are supported:
 #### Combinatorial
 
 - PAL10L8 *(untested)*
-- PAL12L6 *(untested)*
-- PAL16L8
+- PAL16L8 *(untested with new algorithm)*
 
 #### Registered
 
-- PAL16R4
-- PAL16R6
-- PAL16R8
+- PAL16R4 *(untested with new algorithm)*
+- PAL16R6 *(untested with new algorithm)*
+- PAL16R8 *(untested with new algorithm)*
 
 ### Command line
 
 The format for command line execution is the following:
 
 ```text
-java -jar /path/to/dupal_analyzer.jar <serial_port> <pal_type> <output_directory> [hex_output_mask]
+java -jar /path/to/dupal_analyzer.jar <serial_port> <pal_type> <output_file> [hex_output_mask]
 ```
 
 - **serial_port:** is just the serial port to use to connect to the DuPAL board. Connection is hardcoded at **57600bps 8n1** without flow control.
 - **pal_type:** is the type of PAL device that is going to be analyzed.
-- **output_directory:** Where DuPAL Analyzer will output the generated truth table and where it will periodically save the status of the analisys so it can be stopped and recovered later.
-- **hex_output_mask:** This mask (an byte written as an *hex number*) is used to tell the Analyzer which IOs are configured as outputs. If it's not present, the Analyzer will try to guess it by itself. It's usually advisable to let the guessing run for a few minutes, then restart the analisys by specifying the guessed mask. If the mask is wrong, during the analisys an error will be thrown as soon as what was thought as an input is found to be an output. At that point the analisys can be restarted with the new mask.
+- **output_file:** The file where the analyzer will save the generated truth table.
+- **hex_output_mask:** This mask (a byte represented as an *hex number*) is used to tell the Analyzer which IOs are configured as outputs. If it's not present, the Analyzer will try to guess it by itself. It's usually advisable to let the guessing run for a few minutes, then restart the analisys by specifying the guessed mask. If the mask is wrong, during the analisys an error will be thrown as soon as what was thought as an input is found to be an output. At that point the analisys can be restarted with the new mask.
 
 #### The output mask format
 
 The output mask is a byte represented as an hex value, where a bit is set when the corrisponding pin is considered an output.
-From MSB to LSB:
+From MSB to LSB for a 20 pins PAL:
 
 ```text
    7    6    5    4    3    2    1    0
@@ -74,6 +61,17 @@ From MSB to LSB:
 '----'----'----'----'----'----'----'----'
 ```
 
+From MSB to LSB for a 24 pins PAL:
+
+```text
+   7    6    5    4    3    2    1    0
+.----.----.----.----.----.----.----.----.
+| 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 |
+'----'----'----'----'----'----'----'----'
+```
+
+Setting the mask to `0x02`, for example, will notify the analyzer that pin 17 on a 20 pins PAL or pin 16 on a 24 pins PAL is configured as an OUTPUT.
+
 Pay attention to the weird position for pin 19, that position is caused by a desire to save a few lines on the firmware.
 
 #### Requirements