Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2020-фев-20 10:19

Часовой пояс: UTC+03:00




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

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 724
Откуда: г. Санкт-Петербург
По информации "Миландра" скоро должна появиться версия МК с внутренней 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
Сообщения: 1423
Откуда: Тула
Таким образом скорость доступа к памяти программ будет ниже, чем могла бы быть и нет никакой галочки "работать быстрее, чем ОТР"?

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


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

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 724
Откуда: г. Санкт-Петербург
В СП приведен код функции подсчета 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
Сообщения: 82
Организация: Частное лицо
Откуда: Санкт-Петербург
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
Сообщения: 1423
Откуда: Тула
Судя по 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
Сообщения: 724
Откуда: г. Санкт-Петербург
Функция записи данных в 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
Сообщения: 724
Откуда: г. Санкт-Петербург
Выложите адреса и содержимое ячеек памяти в которых происходят искажения,
или посчитайте для этих ячеек 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+03:00


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

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


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

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB