|
Процедура Ченя на ПЛИС |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 43)
|
Dec 14 2011, 15:56
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Dec 14 2011, 18:24)  поиском по форуму, чую что найдете что-то интересное  Поискал я на форуме, много интересного почитал про БЧХ коды. Но про переход от ключевого уравнения к процедуре Ченя мне не очень понятен в реализации. На бумаге считаю, все получается. А вот если реализововать, переход от элементов поля к коэффициента alfa в степени мне не нравится, так как необходимо использовать 2 таблицы памяти (прямые и обратные коэффициенты).
|
|
|
|
|
Dec 14 2011, 16:02
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Dec 14 2011, 18:59)  так сложно читать сорцы на языке близком к Си ?  Да, нет. Не сложно. Меня интересует именно схемотехническая реализация.
|
|
|
|
|
Dec 14 2011, 17:58
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Dec 14 2011, 20:31)  ну уж если для вас HDL код на Verilog не является схемотехнической реализацией, я даже не знаю что вам ответить... Спасибо за помощь.Я Verilog к сожалению не знаю, попробую разобраться, хотя в чужом коде сложновато. В принципе, мне только идея нужна. Есть полином локаторов, вопрос с какой формой представления работать.
|
|
|
|
|
Dec 15 2011, 10:13
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Dec 15 2011, 07:58)  работать в обычном поле, смысла спускаться в полиномиальное поле нет. есть сорцы одного известного кодера RS на VHDL, но это в личку. К примеру, если полином локаторов ошибок следующий 1) alfa(x)=838*x^8+1576*x^7+1157*x^6+273*x^5+1357*x^4+1328*x^3+1892*x^2+1141*x+917 соответсвенно 838, 1576 - элементы поля Галуа GF(2^11) это же уравнение можно преобразовать к следующему 2)alfa(x)=alfa^1201*x^8+alfa^1552*x^7+alfa^685*x^6+alfa^1890*x^5+alfa^440*x^4+al fa^347*x^3+alfa^1455*x^2+alfa^991*x+917 Если использовать уравнение 2 то мы можем складывыть степени при подстановке элементов использовать обычные операции сложения коэффициентов/ Если уравнение 1, то придется перемножать в поле Галуа и подставляя к примеру в восьмую степень элементы поля необходимо перемножать один и тот же элемент 8 раз. Как-то этот способ мне не очень нравится. Des, я правильно вас понял, что надо решать уравнение по 1-му способу
|
|
|
|
|
Dec 15 2011, 11:36
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(Gold777 @ Dec 15 2011, 20:13)  Если уравнение 1, то придется перемножать в поле Галуа и подставляя к примеру в восьмую степень элементы поля необходимо перемножать один и тот же элемент 8 раз. Я же Вам посоветовал литературу. Смотрим на рисунок. Не 8 раз, а в каждом такте предыдущее содержание регистра умножается на alfa^8 , т.е. на константу. Понятное дело, что 7 умножителей нужно для каждого члена полинома, кроме члена с нулевой степенью. Но результат в каждом такте. Может это очевидно, но на всякий поясню. Возьмем Ваш старший член полинома 838*x^8. Подставляем в него альфа. 838*alfa*alfa*....*alfa=838*(alfa^8)=X1. На следующем такте нужно подставить вместо x alfa^2. Получаем 838*alfa^2*alfa^2*....*alfa^2=838*(alfa^16)=(838*(alfa^8))*alfa^8=X1*alfa^8=X2. Ну и так со всеми остальными степенями. Параллельно для всех членов полинома. Ага?
|
|
|
|
|
Dec 15 2011, 14:20
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(barabek @ Dec 15 2011, 14:36)  Я же Вам посоветовал литературу. Смотрим на рисунок. Не 8 раз, а в каждом такте предыдущее содержание регистра умножается на alfa^8 , т.е. на константу. Понятное дело, что 7 умножителей нужно для каждого члена полинома, кроме члена с нулевой степенью. Но результат в каждом такте. Может это очевидно, но на всякий поясню. Возьмем Ваш старший член полинома 838*x^8. Подставляем в него альфа. 838*alfa*alfa*....*alfa=838*(alfa^8)=X1. На следующем такте нужно подставить вместо x alfa^2. Получаем 838*alfa^2*alfa^2*....*alfa^2=838*(alfa^16)=(838*(alfa^8))*alfa^8=X1*alfa^8=X2. Ну и так со всеми остальными степенями. Параллельно для всех членов полинома. Ага? Получается на первом такте подставляю alfa во все степени уравнения и считаю результат, на втором такте alfa^2, но на основе первого уравнения и т.д. Итого получается за количество тактов равное размерности поля я найду все корни уравнения. К примеру для поля GF(2^11) за 2048 тактов. Только одно непонятно, как это в одну формулу объединить или для каждого такта надо будет уравнение записывать? И еще вопрос можно ли здесь без использования памяти, содержащей значения коэффициентов alfa^n обойтись забив их в ручную в уравнение?
Сообщение отредактировал Gold777 - Dec 15 2011, 14:23
|
|
|
|
|
Dec 15 2011, 22:32
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(Gold777 @ Dec 16 2011, 00:20)  Получается на первом такте подставляю alfa во все степени уравнения и считаю результат, на втором такте alfa^2, но на основе первого уравнения и т.д. Итого получается за количество тактов равное размерности поля я найду все корни уравнения. К примеру для поля GF(2^11) за 2048 тактов. Да, если длина пакета у Вас 2048 (максимальная для 11 степени), то так и есть. Длина пакета в общем случае может быть и меньше. Количество тактов равно длине пакета. Просто для укороченного пакета инициализация посложней. Цитата Только одно непонятно, как это в одну формулу объединить или для каждого такта надо будет уравнение записывать? Не понял. Куда записывать? Формула одна, а значение переменной разное. Процедура Ченя это просто нахождение корней уравнения перебором. Т.е. Вы подставляете поочереди элементы поля и определяете корни. Можно сказать численным методом, а не аналитически. Цитата И еще вопрос можно ли здесь без использования памяти, содержащей значения коэффициентов alfa^n обойтись забив их в ручную в уравнение? Конечно, зачем Вам память. На каждом блоке, соответствующему члену уравнения, своя константа= alfa^n. Забиваете вручную или ввиде параметра, а лучше чтобы этот параметр сам синтезатор посчитал в функции на этапе компиляции - дело Ваше. каждый блок алгоритмически описывается: Код ЦИКЛ(по клоку) ЕСЛИ(инициализация) Out=In ИНАЧЕ Out=Out*alfa^n КОНЕЦ ЦИКЛА
|
|
|
|
|
Dec 16 2011, 09:14
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(barabek @ Dec 16 2011, 01:32)  Конечно, зачем Вам память. На каждом блоке, соответствующему члену уравнения, своя константа= alfa^n. Забиваете вручную или ввиде параметра, а лучше чтобы этот параметр сам синтезатор посчитал в функции на этапе компиляции - дело Ваше. каждый блок алгоритмически описывается: Код ЦИКЛ(по клоку) ЕСЛИ(инициализация) Out=In ИНАЧЕ Out=Out*alfa^n КОНЕЦ ЦИКЛА Спасибо, помогли разобраться.
|
|
|
|
|
Dec 20 2011, 08:32
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(barabek @ Dec 16 2011, 01:32)  Да, если длина пакета у Вас 2048 (максимальная для 11 степени), то так и есть. Длина пакета в общем случае может быть и меньше. Количество тактов равно длине пакета. Просто для укороченного пакета инициализация посложней. Подскажите, а как поступать с укороченным кодом
|
|
|
|
|
Dec 21 2011, 23:22
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(Gold777 @ Dec 20 2011, 18:32)  Подскажите, а как поступать с укороченным кодом При укороченном пакете подразумевается, что все старшие члены нулевые и в них не может быть ошибки (если это не так, а это может быть только при количестве ошибок больше допустимого для выбранного количества проверочных символов, то это только на руку - повышается вероятность обнаружения неисправимой ошибки). Следовательно эти старшие члены можно быстро обсчитать и начать процедуру Ченя с нужной позиции. Если для полной длины начальным состоянием регистров были коэффициенты полинома lambda[n], то с укороченным lambda[n]*alfa {(LENGTHFULL-PACKLENGTH)*n}%( LENGTHFULL-1) где LENGTHFULL - 2 width (при 11-битном символе =2048) PACKLENGTH- реальная длина пакета. К примеру у Вас длина пакета 2037, на 10 меньше максимальной длины для 11-битного символа. Тогда для старшего члена многочлена lambda в степени 8 необходимо инициализировать регистр lambda[8]*alfa 10*8=lambda[8]*alfa 80 , для члена со степенью 7 lambda[7]*alfa 70 и т.д.
|
|
|
|
|
Dec 22 2011, 04:34
|

Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 7-12-05
Из: 77
Пользователь №: 11 952

|
Цитата(des00 @ Dec 22 2011, 07:53)  Чую следующий вопрос будет про мягкое декодирование кодов БЧХ. Вот так общими усилиями и разработаем 3 велосипеда, и будет нам высокоплачиваемое счастье! На то и форум =)
--------------------
Не, ну наболело, капитан - он выступает как директор пляжа, посол! (с) Ширли-Мырли
|
|
|
|
|
Dec 23 2011, 09:41
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(barabek @ Dec 22 2011, 02:22)  При укороченном пакете подразумевается, что все старшие члены нулевые и в них не может быть ошибки (если это не так, а это может быть только при количестве ошибок больше допустимого для выбранного количества проверочных символов, то это только на руку - повышается вероятность обнаружения неисправимой ошибки). Следовательно эти старшие члены можно быстро обсчитать и начать процедуру Ченя с нужной позиции. Если для полной длины начальным состоянием регистров были коэффициенты полинома lambda[n], то с укороченным lambda[n]*alfa{(LENGTHFULL-PACKLENGTH)*n}%( LENGTHFULL-1)
где LENGTHFULL - 2 width (при 11-битном символе =2048) PACKLENGTH- реальная длина пакета.
К примеру у Вас длина пакета 2037, на 10 меньше максимальной длины для 11-битного символа. Тогда для старшего члена многочлена lambda в степени 8 необходимо инициализировать регистр lambda[8]*alfa10*8=lambda[8]*alfa80 , для члена со степенью 7 lambda[7]*alfa70 и т.д. Большое спасибо за подробный и понятный ответ.
|
|
|
|
|
Dec 26 2011, 07:50
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(barabek @ Dec 15 2011, 14:36)  Я же Вам посоветовал литературу. Смотрим на рисунок. Не 8 раз, а в каждом такте предыдущее содержание регистра умножается на alfa^8 , т.е. на константу. Понятное дело, что 7 умножителей нужно для каждого члена полинома, кроме члена с нулевой степенью. Но результат в каждом такте. Может это очевидно, но на всякий поясню. Возьмем Ваш старший член полинома 838*x^8. Подставляем в него альфа. 838*alfa*alfa*....*alfa=838*(alfa^8)=X1. На следующем такте нужно подставить вместо x alfa^2. Получаем 838*alfa^2*alfa^2*....*alfa^2=838*(alfa^16)=(838*(alfa^8))*alfa^8=X1*alfa^8=X2. Ну и так со всеми остальными степенями. Параллельно для всех членов полинома. Ага? Вроде все получилось. Нахожу корни уравнения. По теории обратные корни уравнения должны показывать позиции ошибок. А у меня получается, что найденные корни соответствуют позициям ошибок и обратные корни вообще мне не нужны. Вносил ошибки в сигнал и сравнивал с сигналом без ошибок, вот такую закономерность и увидел. Что может быть не так?
Сообщение отредактировал Gold777 - Dec 26 2011, 07:51
|
|
|
|
|
Dec 27 2011, 10:49
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Dec 26 2011, 11:41)  все так, в процедуре ченя поиск идет в обратном порядке, поэтому и не нужно обращение и все получается на лету. неплохо это объяснено в книге Кларка "Кодирование с исправлением ошибок" Что значит поиск идет в обратном порядке? Я последовательно подставляю alfa, alfa^2,alfa^3 и так далее в ключевое уравнение. В теории, если к примеру подставим alfa и ключевое уравнение обратится в ноль, то позицией ошибки будет обратный элемент поля. А у меня получается, что корни уравнения это и есть обратные корни. Если возможно, объяните где я ошибаюсь?
|
|
|
|
|
Dec 27 2011, 12:41
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Gold777 @ Dec 27 2011, 05:49)  Что значит поиск идет в обратном порядке? Я последовательно подставляю alfa, alfa^2,alfa^3 и так далее в ключевое уравнение. В теории, если к примеру подставим alfa и ключевое уравнение обратится в ноль, то позицией ошибки будет обратный элемент поля. А у меня получается, что корни уравнения это и есть обратные корни. Если возможно, объяните где я ошибаюсь? на скриншоте же написано %)? по тексту "Возможные положения ошибок проверяются последовательно с индекса n-1. Суммируя величины на выходе регистра в момент i, проверяем, выполнено ли равенство L(alpha^-i) == 0". Этот алгоритм основан на модульности арифметики в полях галуа и определении свойства поля о существовании обратного элемента по умножению. В вашем случае элементом обратным к элементу alpha^1 будет alpha^(n-1). Поэтому и не требуется отдельного обращения. Код alpha*inv(alpha) = 1 alpha^1*alpha^(n-1) = alpha^(1 + n - 1)%n = alpha^(n%n) = alpha^0 = 1
--------------------
|
|
|
|
|
Dec 28 2011, 06:04
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Dec 27 2011, 15:41)  на скриншоте же написано %)? по тексту "Возможные положения ошибок проверяются последовательно с индекса n-1. Суммируя величины на выходе регистра в момент i, проверяем, выполнено ли равенство L(alpha^-i) == 0". Этот алгоритм основан на модульности арифметики в полях галуа и определении свойства поля о существовании обратного элемента по умножению. В вашем случае элементом обратным к элементу alpha^1 будет alpha^(n-1). Поэтому и не требуется отдельного обращения. Код alpha*inv(alpha) = 1 alpha^1*alpha^(n-1) = alpha^(1 + n - 1)%n = alpha^(n%n) = alpha^0 = 1 Понял. Спасибо.
|
|
|
|
|
Jan 10 2012, 15:26
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
[/quote] По ходу дела возникло несколько вопросов по данной теме: 1) Код исправляет 8 ошибок. К примеру, для какого-то кодового слова получился полином локаторов ошибок 4-й степени. Т.е. по теории в кодовом слове возникло 4 ошибки. Посчитав для этого КС корни по процедуре Ченя у меня количество корней получается меньше степени полинома локаторов ошибок (к примеру 2 корня) и декодер рапортует об обнаружении неисправимой ошибки. Подскажите возможна ли такая ситуация или я где-то ошибаюсь?
2) Код исправляет 8 ошибок, значит обнаружить может 16. Про ошибки которые исправляются все понятно, определяются по степени полинома локаторов и им же ограничиваются т.е. для 8 ошибок 8-я степень. Я если к примеру у меня 13 ошибок, то, что произошла неисправимая ошибка я пойму в процедуре Ченя, увидив, что кол-во корней меньше степени полинома локаторов. Вопрос, как я обнаружу, что произошло именно 13 ошибок, а не 9 к примеру?
|
|
|
|
|
Jan 10 2012, 23:12
|
Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 16-08-07
Из: Владивосток
Пользователь №: 29 831

|
Цитата(Gold777 @ Jan 11 2012, 01:26)  По ходу дела возникло несколько вопросов по данной теме: 1) Код исправляет 8 ошибок. К примеру, для какого-то кодового слова получился полином локаторов ошибок 4-й степени. Т.е. по теории в кодовом слове возникло 4 ошибки. Посчитав для этого КС корни по процедуре Ченя у меня количество корней получается меньше степени полинома локаторов ошибок (к примеру 2 корня) и декодер рапортует об обнаружении неисправимой ошибки. Подскажите возможна ли такая ситуация или я где-то ошибаюсь?
2) Код исправляет 8 ошибок, значит обнаружить может 16. Про ошибки которые исправляются все понятно, определяются по степени полинома локаторов и им же ограничиваются т.е. для 8 ошибок 8-я степень. Я если к примеру у меня 13 ошибок, то, что произошла неисправимая ошибка я пойму в процедуре Ченя, увидив, что кол-во корней меньше степени полинома локаторов. Вопрос, как я обнаружу, что произошло именно 13 ошибок, а не 9 к примеру? 2)никак. Да и какая Вам разница если ошибки все равно не исправить? 1)Да вроде правильно рассуждаете. А вообще просто промоделируйте свой декодер и сомнения в его работоспособности отпадут. Еще добавлю. Я когда свой делал, то тестбенч писать влом было. Поэтому сделал интерфейс своего модуля схожим с таким от альтеровского модуля. Сгенерил мегавизардом альтеровский модуль с такими же как у меня параметрами и его тестбенч использовал для проверки своего декодера. Хотя он и не очень то и хорош. Я ожидал от такой конторы более детального теста. Проверка исправляющих и обнаруживающих свойств нормальная, а вот проверка (не знаю как правильно выразиться) соответствия интерфейса на взаимодействие с внешними устройствами никакущая. Я поэтому некоторые ошибки свои не сразу словил.
|
|
|
|
|
Mar 15 2012, 15:08
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Появился ряд вопросов. Реализовал процедуру Ченя, представленную на рисунке. Для 64 каналов соответственно поставил параллельно 64 таких блоков. Можно ли при данных условиях сэкономить по ресурсам? Вижу несколько вариантов: 1)Как в таком случае поступать при параллельной процедуре Ченя и что будет по ресурсам? В статьях сказано, что с использованием параллельной архитектуру можно найти решение за n/p тактов вмето n. Я правильно пониманию, что можно использовать один параллельный блок Ченя, для всех каналов? 2) Имеет ли смысл реализация так называемой strength-reduced parallel Chien search architecture для экономии ресурсов и в чем особенность этого метода.
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 16 2012, 04:03
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 31-12-07
Из: Фрязино М.О.
Пользователь №: 33 753

|
В файле есть способ отимизации процедуры ченя.
|
|
|
|
|
Mar 16 2012, 07:27
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Mar 16 2012, 11:01)  По ресурсам плис, можно сэкономить только одним способом, задрав тактовую частоту и обрабатывать несколько каналов на одном блоке.
Параллельная архитектура используется для уменьшения времени поиска, ее имеет смысл применять когда требуется большая производительность, чем дает последовательный чень (например при работе со словами больше чем 1 бит или перебор решений при мягком декодировании кодов БЧХ). Т.е. один параллельный блок Ченя можно использовать для обработки последовательно нескольких каналов ? Не очень понятно, что значит большая производительность?
Сообщение отредактировал Gold777 - Mar 16 2012, 07:29
|
|
|
|
|
Mar 16 2012, 07:45
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Gold777 @ Mar 16 2012, 01:27)  Т.е. один параллельный блок Ченя можно использовать для обработки последовательно нескольких каналов ? если успеете почему бы и нет, загрузили новые полиномы и вперед. Цитата Не очень понятно, что значит большая производительность? например есть поток 400 мегабит/с и максимальная частота обработки в 100МГц. Надо либо сделать частоту обработки 400МГц, либо обрабатывать по 4 бита за 1 такт либо поставить 4 декодера. Или вот еще, используете алгоритм Чейза, t битов взяли под мягкое решение, нужно перебрать 2^t вариантов за один пакет. А скорость поступления пакетов никто не собирается уменьшать в 2^t раз %))
--------------------
|
|
|
|
|
Mar 16 2012, 18:07
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Mar 16 2012, 11:45)  Или вот еще, используете алгоритм Чейза, t битов взяли под мягкое решение, нужно перебрать 2^t вариантов за один пакет. А скорость поступления пакетов никто не собирается уменьшать в 2^t раз %)) По частоте успеваете?
|
|
|
|
|
Mar 20 2012, 14:32
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Возник вопрос по реализации умножителей в поле Галуа на константу. Смысл состоит в преобразовании исходной матрицы упрощенному виду с целью упрощения умножителей.Используется для реализации параллельной процедуры Ченя. Если кто-нибудь разобрался объясните как это делается. Что-то я не совсем понял как это делается. В статья 4 этапа Different from the algorithm in , our iterative matching algorithm based on consists of following four basic steps: 1) determine the number of bit-wise matches (nonzero bits) be- tweenall of the rows inthe binary matrix ; 2) choose the best match; 3) eliminate the redundancy fromthe bestmatch; return the remain- ders to the two rows that contribute the best match; append an additional row at the bottom of the binary matrix to hold the re- dundancy; 4) repeat steps 1–3 for all the rows in the binary matrix including the appended rows until no improvement is achieved, i.e., the best match is not greater than 1 bit. Пример на рисунках. Непонятно каким образом они преобразуют матрицу. Так же прикладываю статью с примером и описанием.
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 20 2012, 16:24
|
Частый гость
 
Группа: Участник
Сообщений: 118
Регистрация: 28-10-11
Из: Москва
Пользователь №: 68 022

|
Цитата(des00 @ Mar 20 2012, 19:22)  Что там разбираться то, они делают то что во всех современных синтезаторах называют resource sharing, при этом эта опция очень неплохо работает.
ЗЫ. для ПЛИС вам это не нужно Почему для ПЛИС это не нужно?
Сообщение отредактировал Gold777 - Mar 20 2012, 16:34
|
|
|
|
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|