Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2019-окт-14 15:44

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2, 3 Все  След.
Автор Сообщение
 Заголовок сообщения: RAM вместо OTP
СообщениеДобавлено: 2017-фев-22 10:03 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 712
Откуда: г. Санкт-Петербург
По информации "Миландра" скоро должна появиться версия МК с внутренней RAM c ECC вместо OTP.
Вопрос.
Как будут формироваться биты ECC при записи в эту RAM (аппаратно или нужно будет вычислять их программно также как в версии с ОТP)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-мар-06 12:32 
Не в сети
Аватара пользователя

Зарегистрирован: 2015-июн-16 11:58
Сообщения: 10
Откуда: АО "ПКК Миландр"
vasili писал(а):
Как будут формироваться биты ECC при записи в эту RAM (аппаратно или нужно будет вычислять их программно также как в версии с ОТP)?

Целью данной разработки было дать пользователям контроллер для отладки с неограниченным ресурсом, временная диаграмма работы которого потактно совпадала бы с версией с OTP. Таким образом, запись в данное ОЗУ будет происходить в режиме отладки и никаких изменений алгоритма по сравнению с версией с OTP не предусмотрено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-мар-06 12:52 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1342
Откуда: Тула
Таким образом скорость доступа к памяти программ будет ниже, чем могла бы быть и нет никакой галочки "работать быстрее, чем ОТР"?

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-мар-06 13:41 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 712
Откуда: г. Санкт-Петербург
В СП приведен код функции подсчета ECC
Открыть
Код:
unsigned int getecc(unsigned long long inw)
{
unsigned char ecc = 0;
unsigned long long inputw;
unsigned long long H[8];
   int i,j;
   unsigned char res = 0;
   H[0] = (unsigned long long) 0x0738C808099264FF;
   H[1] = (unsigned long long) 0x38C808099264FF07;
   H[2] = (unsigned long long) 0xC808099264FF0738;
   H[3] = (unsigned long long) 0x08099264FF0738C8;
   H[4] = (unsigned long long) 0x099264FF0738C808;
   H[5] = (unsigned long long) 0x9264FF0738C80809;
   H[6] = (unsigned long long) 0x64FF0738C8080992;
   H[7] = (unsigned long long) 0xFF0738C808099264;
   for (i=0; i < 8; i++)
   {
   inputw = H[i] & inw;
   res = 0;
   for (j=0; j < 64; j++)
   {
   res = res ^ ((inputw>>j)&0x0000000000000001);
   }
   ecc = ecc | res << i;
   }
   return ecc;
}   
Закрыть

Время Выполнения этой функции из внутренней SRAM составляет 30062 такта!

В качестве альтернативы предлагаю следующий код функции подсчета ECC
Открыть
Код:
const unsigned int H[12] = {
0x08099264,
0xC8080992,
0x38C80809,
0x0738C808,
0xFF0738C8,
0x64FF0738,
0x9264FF07,
0x099264FF,
0x08099264,
0xC8080992,
0x38C80809,
0x0738C808
};

unsigned int getecc(unsigned int data,  unsigned int adr)
{
unsigned int* ptr_H;
int i1;   
unsigned int res;
unsigned int ecc;

   ecc = 0;
   ptr_H = (unsigned int*)(&H);
   i1 = 8;
   do
   {
      res = *ptr_H;
      res &= data;
      res ^= *(ptr_H + 4) & adr;
      ptr_H ++;
      res ^= res << 16;
      res ^= res << 8;
      res ^= res << 4;
      res ^= res << 2;
      res ^= res << 1;
      res >>= 31;
      i1--;
      res <<= i1;
      ecc |= res;
   }
   while(i1);
   return ecc;
}
Закрыть

Время выполнения 370 тактов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-мар-09 17:30 
Не в сети
Аватара пользователя

Зарегистрирован: 2015-июн-16 11:58
Сообщения: 10
Откуда: АО "ПКК Миландр"
prostoRoman писал(а):
Таким образом скорость доступа к памяти программ будет ниже, чем могла бы быть и нет никакой галочки "работать быстрее, чем ОТР"?

Таким образом скорость доступа будет 0 WS на линейном участке кода, а с включённым I$ и на циклах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-мар-09 17:43 
Не в сети
Аватара пользователя

Зарегистрирован: 2015-июн-16 11:58
Сообщения: 10
Откуда: АО "ПКК Миландр"
vasili писал(а):
В качестве альтернативы предлагаю следующий код функции подсчета ECC

Спасибо. Параллельный XOR вектора вместо последовательного выглядит эффективно, не помешало бы это прокомментировать ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-апр-04 13:21 
Не в сети

Зарегистрирован: 2016-май-26 14:25
Сообщения: 4
Возможно ли заказать отладочную плату с микросхемой без ОТР?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-апр-06 13:47 
Не в сети

Зарегистрирован: 2010-май-14 11:22
Сообщения: 77
Откуда: Санкт-Петербург
drAstronomus писал(а):
Возможно ли заказать отладочную плату с микросхемой без ОТР?

также интересует данный вопрос.
Для моих изделий в ОТР и спецстойкости нет необходимости, а вот в ядре Cortex-M4F - есть, и еще какая!!! :)

_________________
Не ошибается тот, кто ничего не делает!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-апр-12 17:16 
Не в сети

Зарегистрирован: 2016-апр-27 12:14
Сообщения: 28
Интересует вопрос. Таблица 16 (Распределение адресного пространства) Область OTP располагается с адреса 0x0100_0000 и имеет доступ по шинам I,D. Доступа по шине S нет, следовательно и DMA в этом регионе невозможен. Так вот вопрос: в версии с RAM будет так же? Вопрос возникает в связи с возможным сценарием использования версии с RAM: загрузка c внешней ПЗУ + использование внутренней 128К памяти как DATASECTION, вследствие чего есть желание иметь в этой области DMA.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-апр-12 18:00 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1342
Откуда: Тула
Судя по viewtopic.php?p=20529#p20529 изменён будет только тип памяти с флеш на созу (вероятно с сохранением EEPROM_Delay).

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-июн-02 17:09 
Не в сети

Зарегистрирован: 2011-сен-05 12:12
Сообщения: 183
Откуда: Саратов
Half писал(а):
drAstronomus писал(а):
Возможно ли заказать отладочную плату с микросхемой без ОТР?

также интересует данный вопрос.
Для моих изделий в ОТР и спецстойкости нет необходимости, а вот в ядре Cortex-M4F - есть, и еще какая!!! :)

посмотрите К1921ВК01Т http://niiet.ru/product/354-arm-cortex (обещали начать выпуск и с ВП, но про спецстойкость молчат).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-июн-15 12:54 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 712
Откуда: г. Санкт-Петербург
Функция записи данных в RAM-память программ
Открыть
Код:
void WriteProgramRam(unsigned int data, unsigned int adr)
{
unsigned int i1;
   
   i1 = getecc(data,adr) << 16;
   i1 |= (1<<0)|(1<<4)|(1<<5);
   {
   OTPControl* otp = OTP_CNTR;
      //otp->KEY = _KEY_;
      otp->ADR = adr;
      otp->WDATA = data;
      otp->CNTR = i1;
      i1 |= (31<<9);
      otp->CNTR = i1;
      i1 &= ~((1<<5)|(1<<4));
      otp->CNTR = i1;
   }
}

const unsigned int H[12] = {
0x08099264,
0xC8080992,
0x38C80809,
0x0738C808,
0xFF0738C8,
0x64FF0738,
0x9264FF07,
0x099264FF,
0x08099264,
0xC8080992,
0x38C80809,
0x0738C808
};

unsigned int getecc(unsigned int data,  unsigned int adr)
{
unsigned int* ptr_H;
int i1;   
unsigned int res;
unsigned int ecc;

   ecc = 0;
   ptr_H = (unsigned int*)(&H);
   i1 = 8;
   do
   {
      res = *ptr_H;
      res &= data;
      res ^= *(ptr_H + 4) & adr;
      ptr_H ++;
      res ^= res << 16;
      res ^= res << 8;
      res ^= res << 4;
      res ^= res << 2;
      res ^= res << 1;
      res >>= 31;
      i1--;
      res <<= i1;
      ecc |= res;
   }
   while(i1);
   return ecc;
}
Закрыть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-июн-19 10:38 
Не в сети

Зарегистрирован: 2016-ноя-23 05:50
Сообщения: 12
Откуда: Омск
Василий, мы используем Вашу функцию getecc при записи данных во внешнюю FLASH-память 1636РР51У (8-ми разрядная) и организуем на ней последовательную область ECC (данные пишем с адреса 0x10000000, а ECC c адреса 0x10009000 без включения EСС-контроля). После окончания записи контролируем CRC32 исходных данных и записанных (они совпадают). Затем включаем ECC-контроль и теперь CRC32 записанных данных уже не совпадает с исходными данными (несколько одиночных бит в нескольких байтах изменили свое состояние). Не подскажете, в чем может быть проблема?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-июн-19 14:54 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 712
Откуда: г. Санкт-Петербург
Выложите адреса и содержимое ячеек памяти в которых происходят искажения,
или посчитайте для этих ячеек ECC по алгоритму из СП и сравните с моим алгоритмом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RAM вместо OTP
СообщениеДобавлено: 2017-июн-20 05:07 
Не в сети

Зарегистрирован: 2016-ноя-23 05:50
Сообщения: 12
Откуда: Омск
vasili писал(а):
Выложите адреса и содержимое ячеек памяти в которых происходят искажения,
или посчитайте для этих ячеек ECC по алгоритму из СП и сравните с моим алгоритмом.

По двум алгоритмам расчета получаемое ECC одинаковое.
Привожу адреса и содержимое памяти:
Адрес Исходные данные ECC Искаженные данные
0x10000000 0x20000400 0x89 0x20000440
0x1000001C 0x00000000 0x1D 0x00020000
0x10000048 0x10000853 0x15 0x10100853
0x1000004C 0x10000853 0x2D 0x1000085B


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2, 3 Все  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB