Перейти к основному содержимому

Постоянное запоминающее устройство

Структура

Микросхема содержит два сегмента ПЗУ для хранения пользовательских настроек, необходимых для автоматической инициализации регистров после подачи напряжения питания или сигнала сброса.

ПЗУ с параллельным доступом

ПЗУ с параллельным доступом активируется непосредственно при включении питания и содержит 2 ячейки, которые неразрывно связаны с управляющими регистрами PLL_config и INIT_conf. На рисунке ниже представлена структура ячейки ПЗУ.

Структура ячейки ПЗУ с параллельным доступом
Структура ячейки ПЗУ с параллельным доступом

Доступ к настройкам PLL_config и INIT_conf осуществляется через управляющий регистр UOTP_ctrl, который содержит три бита: WATCH_ROM_UVAL, PROG_NEW_UVAL и OVERRIDE_UVAL. По умолчанию значения регистров PLL_config и INIT_conf равны нулю.

Для временного переопределения этих значений (до снятия питания) необходимо записать требуемые данные в соответствующие регистры (PLL_config и INIT_conf), а затем установить бит OVERRIDE_UVAL в логическую «1». При этом заданные значения сохраняются даже при выполнении программного сброса с помощью бита MANUAL_NRST_PLL (путем записи нуля, а затем единицы).

Для программирования этих значений в энергонезависимую память ПЗУ необходимо выполнить следующую последовательность действий:

  1. Записать в регистры PLL_config и INIT_conf нужные параметры.
  2. Убедиться в корректности записи путем обратного чтения (при OVERRIDE_UVAL = 1).
  3. Установить бит PROG_NEW_UVAL и подать напряжение программирования 9.8 В+-0.3 В на вывод VPP .
  4. По истечении заданного времени снять напряжение VPP и сбросить бит PROG_NEW_UVAL.
  5. Установить бит WATCH_ROM_UVAL в логическую «1».
  6. Считать значения из PLL_config и INIT_conf, чтобы подтвердить успешность записи.

Если считанные значения не совпадают с заданными, операцию программирования следует повторить.

ПЗУ с последовательным доступом

ПЗУ с последовательным доступом
ПЗУ с последовательным доступом

Второй сегмент ПЗУ предназначен для инициализации регистров конфигурации и ячеек памяти микровычислителей при включении питания. ПЗУ содержит 512 16-битных слов. Если выставлен бит OTP_init_on, после снятия сигнала сброс (при наличии тактирования), контроллер инициализации последовательно считывает данные ячеек ПЗУ и записывает в соответствующие регистры. Порядок записи жестко определен и неизменен.(см таблицу 12).

Таблица 12. Соответствие адресов ячеек памяти ПЗУ и конфигурационных регистров

+2 x 02 x 12 x 22 x 32 x 42 x 52 x 62 x 7
2 x 00 cpu11 cpu12 cpu13 cpu14 cpu15 cpu16 cpu17 cpu1
2 x 88 cpu19 cpu110 cpu111 cpu112 cpu113 cpu114 cpu115 cpu1
2 x 1616 cpu117 cpu118 cpu119 cpu120 cpu121 cpu122 cpu123 cpu1
2 x 2424 cpu125 cpu126 cpu127 cpu128 cpu129 cpu130 cpu131 cpu1
...........................
2 x 232C1KampSC1KampCC1KbiasSC1KbiasCC1fbiasC1ExPhShftC1ExoStngsC1EXInc
2 x 240C1Amp_thC1InputStngsC1Lock_thC1ZeroC1MaskC1KonturStngsC1ResGntr1C1Vcnt_bound
2 x 248233 cpu1234 cpu1235 cpu1236 cpu1233 cpu2234 cpu2235 cpu2236 cpu2
2 x 2560 cpu21 cpu22 cpu23 cpu24 cpu25 cpu26 cpu27 cpu2
...........................
2 x 484232 cpu2C2KampSC2KampCC2KbiasSC2KbiasCC2fbiasC2ExPhShftC2ExoStngs
2 x 492C2EXIncC2Amp_thC2InputStngsC2Lock_thC2ZeroC2MaskC2KonturStngsC2ResGntr1
2 x 500C2Vcnt_boundIC_addrADC_configMask_StatFlags_delayMR_lockCMP_lthAFE_config
2 x 508Mode_config

Запись и чтение ПЗУ производится с помощью управляющих регистров BOTP_addr, BOTP_data, BOTP_out, BOTP_ctrl.

Для корректной работы ПЗУ (записи и чтения, в т.ч. при инициализации после включения питания) требуется настройка тактирования. Исходя из значения частоты FINT требуется записать в регистр BOTP_clkdel такое значение для деления частоты FINT (в соответствии с таблицей из описания регистров), чтобы тактовая частота на блок ПЗУ не превышала 10 МГц (значение будет уточнено после проведения испытаний на плюсе и минусе).

Для записи данных в ячейку ПЗУ по указанному адресу требуется записать целевой адрес в регистр BOTP_addr, а записываемое значение — в регистр BOTP_data. Установить бит NCEN в лог. «0», бит SLEEP в лог. «0», бит PGM в лог. «1». Затем установить напряжение VPP с 4.0В на 9.5В на время 200 мс, переключить напряжение VPP на 4.0В, сбросить бит PGM, установить бит REN и проверить записанное значение с помощью считывания ячейки BOTP_data.

Внимание! Если Вы прожгли бит INIT_on, при подаче питания микросхема не отвечает, то вероятной причиной является отсутствие надлежащей настройки делителя частоты. Для того чтобы микросхема ответила в этом состоянии нужно найти её IC_addr, путем последовательной записи в регистр BUS_addr всех 255 возможных значений от 1 до 255. После нахождения адреса, нужно запрограммировать делитель BOTP_clkdel на значение не менее ## ( определеяется по результаа испытаний)

Внимание! Чтение ячеек последовательной ПЗУ после инициализации по событию подачи питания или сброса будет давать нулевые значения. Для того чтобы прочитать необходимо выставить бит OVERRIDE_UVAL, снять бит INIT_on, далее снять MANUAL_NRST_PLL, далее установить MANUAL_NRST_PLL, и тогда ячейки ПЗУ будут читаться.