diff options
author | 2016-02-13 15:23:40 -0500 | |
---|---|---|
committer | 2016-02-13 15:23:40 -0500 | |
commit | ee9f7d9655df79b0e31ce04f5cdb2037686b25ef (patch) | |
tree | 9e94dde31c41b23def15433e60aea2f2ab3f9e68 /src/tools/jedutil.cpp | |
parent | a18fb2ccb1345752d2097a8c1998b8d582c92624 (diff) |
Added support for the AMPAL18P8
Diffstat (limited to 'src/tools/jedutil.cpp')
-rw-r--r-- | src/tools/jedutil.cpp | 126 |
1 files changed, 109 insertions, 17 deletions
diff --git a/src/tools/jedutil.cpp b/src/tools/jedutil.cpp index 284b77ae217..a6cfc279e2a 100644 --- a/src/tools/jedutil.cpp +++ b/src/tools/jedutil.cpp @@ -57,11 +57,13 @@ 18CV8 = QP20 QF2696 + AMPAL18P8 = QP20 QF2600 + EPL10P8 = QP20 EPL12P6 = QP20 EPL14P4 = QP20 EPL16P2 = QP20 - EPL16P8 = QP20 + EPL16P8 = QP20 QF2072 EPL16RP8 = QP20 EPL16RP6 = QP20 EPL16RP4 = QP20 @@ -272,6 +274,7 @@ static void print_pal16r8_product_terms(const pal_data* pal, const jed_data* jed static void print_palce16v8_product_terms(const pal_data* pal, const jed_data* jed); static void print_gal16v8_product_terms(const pal_data* pal, const jed_data* jed); static void print_peel18cv8_product_terms(const pal_data* pal, const jed_data* jed); +static void print_ampal18p8_product_terms(const pal_data* pal, const jed_data* jed); static void print_gal18v10_product_terms(const pal_data* pal, const jed_data* jed); static void print_pal20l8_product_terms(const pal_data* pal, const jed_data* jed); static void print_pal20l10_product_terms(const pal_data* pal, const jed_data* jed); @@ -332,6 +335,7 @@ static void config_pal16r8_pins(const pal_data* pal, const jed_data* jed); static void config_palce16v8_pins(const pal_data* pal, const jed_data* jed); static void config_gal16v8_pins(const pal_data* pal, const jed_data* jed); static void config_peel18cv8_pins(const pal_data* pal, const jed_data* jed); +static void config_ampal18p8_pins(const pal_data* pal, const jed_data* jed); static void config_gal18v10_pins(const pal_data* pal, const jed_data* jed); static void config_pal20l8_pins(const pal_data* pal, const jed_data* jed); static void config_pal20l10_pins(const pal_data* pal, const jed_data* jed); @@ -530,6 +534,16 @@ static pin_fuse_rows peel18cv8pinfuserows[] = { {18, 2340, 288, 540}, {19, 2304, 0, 252}}; +static pin_fuse_rows ampal18p8pinfuserows[] = { + {12, 2268, 2304, 2556}, + {13, 1944, 1980, 2232}, + {14, 1620, 1656, 1908}, + {15, 1296, 1332, 1584}, + {16, 972, 1008, 1260}, + {17, 648, 684, 936}, + {18, 324, 360, 612}, + {19, 0, 36, 288}}; + static pin_fuse_rows gal18v10pinfuserows[] = { {9, 3096, 3132, 3384}, {11, 2772, 2808, 3060}, @@ -1172,6 +1186,26 @@ static pin_fuse_columns peel18cv8pinfusecolumns[] = { {18, 11, 10}, {19, 7, 6}}; +static pin_fuse_columns ampal18p8pinfusecolumns[] = { + {1, 3, 2}, + {2, 1, 0}, + {3, 5, 4}, + {4, 9, 8}, + {5, 13, 12}, + {6, 17, 16}, + {7, 21, 20}, + {8, 25, 24}, + {9, 29, 28}, + {11, 31, 30}, + {12, 35, 34}, + {13, 27, 26}, + {14, 23, 22}, + {15, 19, 18}, + {16, 15, 14}, + {17, 11, 10}, + {18, 7, 6}, + {19, 33, 32}}; + static pin_fuse_columns gal18v10pinfusecolumns[] = { {1, 1, 0}, {2, 5, 4}, @@ -1985,6 +2019,13 @@ static pal_data paldata[] = { config_peel18cv8_pins, nullptr, get_peel18cv8_pin_fuse_state}, + {"AMPAL18P8", 2600, + ampal18p8pinfuserows, ARRAY_LENGTH(ampal18p8pinfuserows), + ampal18p8pinfusecolumns, ARRAY_LENGTH(ampal18p8pinfusecolumns), + print_ampal18p8_product_terms, + config_ampal18p8_pins, + nullptr, + nullptr}, {"GAL18V10", 3540, gal18v10pinfuserows, ARRAY_LENGTH(gal18v10pinfuserows), gal18v10pinfusecolumns, ARRAY_LENGTH(gal18v10pinfusecolumns), @@ -2079,57 +2120,57 @@ static pal_data paldata[] = { epl10p8pinfusecolumns, ARRAY_LENGTH(epl10p8pinfusecolumns), print_epl10p8_product_terms, config_epl10p8_pins, - NULL, - NULL}, + nullptr, + nullptr}, {"EPL12P6", 786, epl12p6pinfuserows, ARRAY_LENGTH(epl12p6pinfuserows), epl12p6pinfusecolumns, ARRAY_LENGTH(epl12p6pinfusecolumns), print_epl12p6_product_terms, config_epl12p6_pins, - NULL, - NULL}, + nullptr, + nullptr}, {"EPL14P4", 908, epl14p4pinfuserows, ARRAY_LENGTH(epl14p4pinfuserows), epl14p4pinfusecolumns, ARRAY_LENGTH(epl14p4pinfusecolumns), print_epl14p4_product_terms, config_epl14p4_pins, - NULL, - NULL}, + nullptr, + nullptr}, {"EPL16P2", 1030, epl16p2pinfuserows, ARRAY_LENGTH(epl16p2pinfuserows), epl16p2pinfusecolumns, ARRAY_LENGTH(epl16p2pinfusecolumns), print_epl16p2_product_terms, config_epl16p2_pins, - NULL, - NULL}, + nullptr, + nullptr}, {"EPL16P8", 2072, epl16p8pinfuserows, ARRAY_LENGTH(epl16p8pinfuserows), epl16p8pinfusecolumns, ARRAY_LENGTH(epl16p8pinfusecolumns), print_epl16p8_product_terms, config_epl16p8_pins, - NULL, - NULL}, + nullptr, + nullptr}, {"EPL16RP8", 2072, epl16rp8pinfuserows, ARRAY_LENGTH(epl16rp8pinfuserows), epl16rp8pinfusecolumns, ARRAY_LENGTH(epl16rp8pinfusecolumns), print_epl16rp8_product_terms, config_epl16rp8_pins, - NULL, - NULL}, + nullptr, + nullptr}, {"EPL16RP6", 2072, epl16rp6pinfuserows, ARRAY_LENGTH(epl16rp6pinfuserows), epl16rp6pinfusecolumns, ARRAY_LENGTH(epl16rp6pinfusecolumns), print_epl16rp6_product_terms, config_epl16rp6_pins, - NULL, - NULL}, + nullptr, + nullptr}, {"EPL16RP4", 2072, epl16rp4pinfuserows, ARRAY_LENGTH(epl16rp4pinfuserows), epl16rp4pinfusecolumns, ARRAY_LENGTH(epl16rp4pinfusecolumns), print_epl16rp4_product_terms, config_epl16rp4_pins, - NULL, - NULL}, + nullptr, + nullptr}, #endif {"PAL10P8", 328, pal10p8pinfuserows, ARRAY_LENGTH(pal10p8pinfuserows), @@ -3409,6 +3450,17 @@ static void print_peel18cv8_product_terms(const pal_data* pal, const jed_data* j /*------------------------------------------------- + print_ampal18p8_product_terms - prints the product + terms for an AMPAL18P8 +-------------------------------------------------*/ + +static void print_ampal18p8_product_terms(const pal_data* pal, const jed_data* jed) +{ + print_product_terms(pal, jed); +} + + +/*------------------------------------------------- print_gal18v10_product_terms - prints the product terms for a GAL18V10 -------------------------------------------------*/ @@ -5239,6 +5291,46 @@ static void config_peel18cv8_pins(const pal_data* pal, const jed_data* jed) /*------------------------------------------------- + config_ampal18p8_pins - configures the pins + for an AMPAL18P8 +-------------------------------------------------*/ + +static void config_ampal18p8_pins(const pal_data* pal, const jed_data* jed) +{ + static UINT16 input_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19}; + pin_output_config output_pins[8]; + UINT16 index, output_pin_count; + + set_input_pins(input_pins, ARRAY_LENGTH(input_pins)); + + output_pin_count = 0; + + for (index = 0; index < pal->pinfuserowscount; ++index) + { + if (does_output_enable_fuse_row_allow_output(pal, jed, pal->pinfuserows[index].fuserowoutputenable)) + { + output_pins[output_pin_count].pin = pal->pinfuserows[index].pin; + output_pins[output_pin_count].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT; + + if (jed_get_fuse(jed, 2591 + (8 - index))) + { + output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH; + } + else + { + output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW; + } + + ++output_pin_count; + } + } + + set_output_pins(output_pins, output_pin_count); +} + + + +/*------------------------------------------------- config_gal18v10_pins - configures the pins for a GAL18V10 -------------------------------------------------*/ |