removed need for cpld mode setup for QFP100

This commit is contained in:
bernd-herzog 2023-05-05 11:15:49 +02:00
parent 9b263def37
commit 75718c79b9
3 changed files with 52 additions and 13 deletions

View file

@ -33,9 +33,7 @@
namespace portapack {
namespace cpld {
bool update_if_necessary(
const Config config
) {
bool update_possible() {
jtag::GPIOTarget target {
portapack::gpio_cpld_tck,
portapack::gpio_cpld_tms,
@ -65,13 +63,40 @@ bool update_if_necessary(
return false;
}
return true;
}
bool update_necessary(
const Config config
) {
jtag::GPIOTarget target {
portapack::gpio_cpld_tck,
portapack::gpio_cpld_tms,
portapack::gpio_cpld_tdi,
portapack::gpio_cpld_tdo
};
jtag::JTAG jtag { target };
CPLD cpld { jtag };
/* Verify CPLD contents against current bitstream. */
auto ok = cpld.verify(config.block_0, config.block_1);
return !ok;
}
bool update(
const Config config
) {
jtag::GPIOTarget target {
portapack::gpio_cpld_tck,
portapack::gpio_cpld_tms,
portapack::gpio_cpld_tdi,
portapack::gpio_cpld_tdo
};
jtag::JTAG jtag { target };
CPLD cpld { jtag };
/* CPLD verifies incorrectly. Erase and program with current bitstream. */
if( !ok ) {
ok = cpld.program(config.block_0, config.block_1);
}
auto ok = cpld.program(config.block_0, config.block_1);
/* If programming OK, reset CPLD to user mode. Otherwise leave it in
* passive (ISP) state.