Skip to main content

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

Структура

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

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

ПЗУ с параллельным доступом включается непосредственно при установлении питания, содержит 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 (запись нуля, затем единицы). Для программирования данных значений в ПЗУ требуется предварительно записать в регистры PLL_config и INIT_conf нужные параметры, убедиться в корректности записи прочитав их (OVERRIDE_UVAL =1), далее установить бит PROG_NEW_UVAL и подать напряжение программирования VPP. Через определенное время необходимо снять напряжение VPP, сбросить бит PROG_NEW_UVAL, записать в бит WATCH_ROM_UVAL лог. «1», считать значения PLL_config, INIT_conf и убедиться в их корректности. В случае отсутствия необходимых запрограммированных значений, повторить операцию.

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

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

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

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

+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. Через определенное время снять напряжение VPP, сбросить бит PGM, установить бит REN и проверить записанное значение с помощью считывания ячейки BOTP_data.