Модифицированный вариант pcb3b (http://se-ed.net/mpu51/eprom/eprom.html#SCHPCB),
изменена схема формирования Vpp и добавлены резисторы, рекомендованные
разработчиками софта. Импульсный преобразователь с микросхемой 34063 заменен на
LM 7812 (как в оригинале Willem 3,1). Добавлены джамперы переключения между
версиями pcb3b и pcb35. Функционально полный аналог pcb3b/35. Изменена
печатная плата в части стабилизаторов Vpp и Vcc. Перемычка для i28001 и две
линии D04, D05 напаяны проводом с обратной стороны платы, два диода и резистор
(D8, D9, R21) так же паять с обратной стороны. Диод D3 служит для предотвращения
попадания потенциала 3-5 v от LPT в цепь питания программируемой МС при
выключенном питании, в этом варианте можно заменить перемычкой.
В монтаже и наладке сложнее, чем v3.1s, более высокая плотность компоновки и
много перемычек (как и у прототипа, 76 перемычек и 3 провода), но работать с
ним удобнее. Расчистка дефектов печатной платы и монтаж заняли около 10 часов.
После сборки программатор заработал сразу.
Программатор состоит из двух частей, функционально полностью самостоятельных:
последовательной секции и главной параллельной EPROM части.
Последовательная секция поддерживает микросхемы I2C (Intelligent Circuit) серии:
24CXXX, 25Cxxx, 93Cxxx и PIC-контроллеры. Эти МС программируются либо через
встроенные панельки, либо через адаптер, подключаемый разъемом к шине
ICSP(Integrated Circuit Serial Peripheral).
Эта секция - простая последовательная цепь, которая идет от DO0 (pin 2 LPT) к
U1a(74HC04), через Q6, Q5, U1b к BUSY (pin 11 LPT). При отсутствии МС в
сокетах U7, U10, U12, U13 сигнал от DO0 без изменений проходит на вход BUSI,
что используется для контроля подключения программатора к порту.
Программирование МС 24Cxx и PIC осуществляется по линии Data. Установка режима,
адреса, данных при чтении и записи производится по одному проводу. МС 25Cxx и
93Cxx имеют раздельные ввод и вывод сигналов. Установка режима чтение\запись и
адреса, активизация, передача данных при записи осуществляется по линии Data2,
а вывод данных по линии DOut, при этом информация на входе BUSI полностью
определяется состоянием линии DOut, так как резистор R3 много больше R4.
Тактовая частота подается от DO1 через буфер U2.2 по линии D1, CS (Chip Select)
и WP (Write Protect для старых МС 24Cxx) поступает от SELIN LPT через буфер
U4.5 по линии S4. По схеме хорошо видно, что эта часть программатора полностью
автономна и может быть исключена или напротив, собрана в виде отдельной
конструкции.
Параллельная секция состоит из трех основных частей:
- Две микросхемы 4503 (2+4 буфера с тремя состояниями и раздельными цепями
управления) используются как буфер данных LPT и для управления режимами
программатора. Две секции по 4 буфера U2.1-U2.4 и U4.1-U4.4 подключают шину
данных LPT (DO0-DO7) к шине данных записываемой МС. В зависимости от режима
работы-чтение\запись переключаются сигналом E1 (pin1 U2 U4) от AUTOFEED (pin 14
LPT) через буфер U4.6. Логический ноль - "0" включает буферы шины данных,
логическая еденица - "1" - отключает. Два буфера U2.5 и U2.6 управляют
загрузкой регистра адреса и выгрузкой регистра данных U3 (4014). Включаются
нулем от инвертора U1E, когда AUTO="1". Буферы U4.5 и U4.6 включены постоянно и
используются просто как повторители сигналов SELIN и AUTO. SELIN управляет
сигналом WE (write enable), сигнал идет от LPT pin 17 к U4 pin 12, от U4 pin 11
на DIP-switches (S4).
- Регистр адреса - 24х разрядный регистр сдвига на 3 x микросхемах 4015 (U6,
U11, U14) выставляется перед каждой операцией чтения\записи последовательным
сдвигом значений адреса, поступающих от DO1 через U2.5 на вход D. Значения
адреса начиная со старшего разряда поочередно выставляются на DO1 и по
положительному фронту тактовой частоты (DO0-U1.6-CLK) сдвигаются в сторону
старшего разряда регистра, таким образом за 24 такта регистр полностью
заполняется. Когда на входе CLK сохраняется постоянное значение "1" или "0"
регистр не изменяет состояния выходов А0-А24. В программаторе версии pcb3,5
входы D U11a и U14a подключены не к выходу предидущего разряда, а к DO4, DO5
LPT и регистр адреса заполняется так же последовательным сдвигом, но все три
микросхемы одновременно, т.е. втрое быстрее (это не означает, что и запись
Flash в три раза быстрее).
- Параллельно-последовательный регистр U3 (4014) используются для чтения данных
с EPROM. Параллельный вход (pin P1-P8 4014) связан с 8-и разрядной шиной данных
EPROM (D0.. D7). При "1" на P/S (pin 9) по положительному фронту CLK (от DO2
через инвертор U1D) byte данных записывается в регистр. Затем P/S
устанавливается в "0" и по каждому положительному фронту CLK данные сдвигаются
в сторону старшего разряда. Таким образом на выходе Q8 поочередно появляются
все значения D7-D0 через инвертор U1F поступающие на вход ACK, где они
считываются и записываются в буфер программы. Если на входе CLK неизменяемый
уровень "1" или "0", регистр не реагирует на другие сигналы, что позволяет
избежать некорректной работы схемы.
DIP switch 12 используется для поддержки различных типов микросхем. Vcc, Vpp и
WE и некоторые адреса могут быть подключены к различным выводам Zif 32.
Джамперы J1 и J2 также обеспечивают возможность программирования без
дополнительных адаптеров МС с нестандартной разводкой выводов. J5 переключает
схему регистра адреса для совместимости с pcb3b/pcb3,5, чтобы иметь возможность
работы с ПО версий 0,97j и 0,98C-0,98D2
Алгоритмы чтения, записи, стирания, чтения ID любой реальной микросхемы
достаточно сложны, в чем можно убедиться заглянув в документацию от
производителя. Для понимания принципа работы программатора не требуется
описывать их во всей полноте, достаточно упрощений. Тем более, что все операции
состоят из ряда элементарных действий - установка шины адреса, установка шины
данных, WE, CE, OE, выполняемых в определенной последовательности.
Котухов М.Г.
г.Усть-Каменогорск, Восточно-Казахстанская обл.
kotyx@mail.ru