<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://vscripts.ru/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://vscripts.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Turbo</id>
		<title>Модулярная арифметика - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://vscripts.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Turbo"/>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Turbo"/>
		<updated>2026-04-12T11:18:20Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.23.17</generator>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2025-11-05T07:59:44Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (Р-2012).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (Д-2012).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
# [http://vscripts.ru/dima/Gorodecky_adder_web.php Генератор Verilog для многовходового сумматора по произвольному модулю] - реализация на базе метода сложения в позиционных кодах (Г-2015).&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе большой таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-sum.php Генератор Verilog для умножения по модулю (метод 5)] - на базе частичных сумм&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (Р-2012). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (Д-2012). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2015/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)], [http://vscripts.ru/2013/simple-modular-fir-filter-generator_v2.php  Вторая версия]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
# [https://vscripts.ru/dima/systolic_matrix_mult.php Генератор Verilog для умножения матриц (систолический массив)]&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2015/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
* [[Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Система остаточных классов - введение|Учебник по СОК]] - подробное описание системы остаточных классов&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2015.11 - [[Простой прототип модулярного процессора с коррекцией сбоев]]&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2025-11-05T07:59:19Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (Р-2012).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (Д-2012).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
# [http://vscripts.ru/dima/Gorodecky_adder_web.php Генератор Verilog для многовходового сумматора по произвольному модулю] - реализация на базе метода сложения в позиционных кодах (Г-2015).&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе большой таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-sum.php Генератор Verilog для умножения по модулю (метод 5)] - на базе частичных сумм&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (Р-2012). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (Д-2012). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2015/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)], [http://vscripts.ru/2013/simple-modular-fir-filter-generator_v2.php  v2]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
# [https://vscripts.ru/dima/systolic_matrix_mult.php Генератор Verilog для умножения матриц (систолический массив)]&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2015/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
* [[Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Система остаточных классов - введение|Учебник по СОК]] - подробное описание системы остаточных классов&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2015.11 - [[Простой прототип модулярного процессора с коррекцией сбоев]]&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2022-02-04T21:03:33Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (Р-2012).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (Д-2012).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
# [http://vscripts.ru/dima/Gorodecky_adder_web.php Генератор Verilog для многовходового сумматора по произвольному модулю] - реализация на базе метода сложения в позиционных кодах (Г-2015).&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе большой таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-sum.php Генератор Verilog для умножения по модулю (метод 5)] - на базе частичных сумм&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (Р-2012). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (Д-2012). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2015/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
# [https://vscripts.ru/dima/systolic_matrix_mult.php Генератор Verilog для умножения матриц (систолический массив)]&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2015/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
* [[Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Система остаточных классов - введение|Учебник по СОК]] - подробное описание системы остаточных классов&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2015.11 - [[Простой прототип модулярного процессора с коррекцией сбоев]]&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2016-01-18T09:15:09Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
# [http://vscripts.ru/dima/Gorodecky_adder_web.php Генератор Verilog для многовходового сумматора по произвольному модулю] - реализация на базе метода сложения в позиционных кодах (Городецкий).&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе большой таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-sum.php Генератор Verilog для умножения по модулю (метод 5)] - на базе частичных сумм&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2015/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2015/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
* [[Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Система остаточных классов - введение|Учебник по СОК]] - подробное описание системы остаточных классов&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2015.11 - [[Простой прототип модулярного процессора с коррекцией сбоев]]&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%81%D1%83%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%B8_%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8</id>
		<title>Аппаратные реализации модулярных сумматоров и умножителей на базе минимизированной таблицы истинности</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%81%D1%83%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%B8_%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8"/>
				<updated>2015-12-21T11:50:42Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данной статье приведен метод реализации модулярных сумматоров и умножителей на базе таблиц истинности, минимизированных с помощью [[Алгоритм Espresso|Espresso]].&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
Модулярные сумматоры и умножители в силу своей малой размерности могут быть реализованы как произвольная логическая функция и описана в виде таблицы истинности. Если размерность модуля &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; равна &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; бит, то таблица истинности будет иметь &amp;lt;math&amp;gt;2k&amp;lt;/math&amp;gt; входных столбцов и &amp;lt;math&amp;gt;2^{2k}&amp;lt;/math&amp;gt; строк. Для выходов будет соответственно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; столбцов. Так как в модулярных устройствах размерность модуля небольшая, то и размерность таблицы истинности обычно приемлемых размеров. Получив таблицу истинности её можно минимизировать и записать для каждого выхода выражение как ДНФ. &lt;br /&gt;
&lt;br /&gt;
== Пример Verilog файла ==&lt;br /&gt;
&lt;br /&gt;
* Пример для умножителя по модулю 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module mul_modulo_5 (A, B, X);&lt;br /&gt;
    input [2:0] A;&lt;br /&gt;
    input [2:0] B;&lt;br /&gt;
    output[2:0] X;&lt;br /&gt;
&lt;br /&gt;
    assign X[0] = (A[0]&amp;amp;B[0]&amp;amp;~B[1]) | (~A[0]&amp;amp;A[1]&amp;amp;B[0]&amp;amp;B[1]) | (A[0]&amp;amp;~A[1]&amp;amp;B[0]) | (A[0]&amp;amp;A[1]&amp;amp;~B[0]&amp;amp;B[1]) | (A[2]&amp;amp;B[2]) | (A[2]&amp;amp;~B[0]&amp;amp;B[1]) | (~A[0]&amp;amp;A[1]&amp;amp;B[2]);&lt;br /&gt;
    assign X[1] = (A[0]&amp;amp;~A[1]&amp;amp;B[1]) | (A[1]&amp;amp;B[0]&amp;amp;~B[1]) | (A[1]&amp;amp;B[2]) | (A[2]&amp;amp;B[1]);&lt;br /&gt;
    assign X[2] = (A[0]&amp;amp;~A[1]&amp;amp;B[2]) | (~A[0]&amp;amp;A[1]&amp;amp;~B[0]&amp;amp;B[1]) | (A[0]&amp;amp;A[1]&amp;amp;B[0]&amp;amp;B[1]) | (A[2]&amp;amp;B[0]&amp;amp;~B[1]);&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки на файлы ==&lt;br /&gt;
&lt;br /&gt;
Модулярные сумматоры и умножители были синтезированы для всех модулей от 2 до 255 включительно. Скачать Verilog файлы можно ниже:&lt;br /&gt;
* [http://vscripts.ru/res/2015/sum_mod3-255_espr.7z Модулярные сумматоры (.7z ~3MB)]&lt;br /&gt;
* [http://vscripts.ru/res/2015/mul_mod3-255_espr.7z Модулярные умножители (.7z ~40MB)]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%81%D1%83%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%B8_%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8</id>
		<title>Аппаратные реализации модулярных сумматоров и умножителей на базе минимизированной таблицы истинности</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%81%D1%83%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%B8_%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8"/>
				<updated>2015-12-21T11:49:36Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данной статье приведен метод реализации модулярных сумматоров и умножителей на базе таблиц истинности, минимизированных с помощью [[Алгоритм Espresso|Espresso]].&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
Модулярные сумматоры и умножители в силу своей малой размерности могут быть реализованы как произвольная логическая функция и описана в виде таблицы истинности. Если размерность модуля &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; равна &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; бит, то таблица истинности будет иметь &amp;lt;math&amp;gt;2k&amp;lt;/math&amp;gt; входных столбцов и &amp;lt;math&amp;gt;2^{2k}&amp;lt;/math&amp;gt; строк. Для выходов будет соответственно &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; столбцов. Так как в модулярных устройствах размерность модуля небольшая, то и размерность таблицы истинности обычно приемлемых размеров. Получив таблицу истинности её можно минимизировать и записать для каждого выхода выражение как ДНФ. &lt;br /&gt;
&lt;br /&gt;
== Пример Verilog файла ==&lt;br /&gt;
&lt;br /&gt;
* Пример для умножителя по модулю 5.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module mul_modulo_5 (A, B, X);&lt;br /&gt;
    input [2:0] A;&lt;br /&gt;
    input [2:0] B;&lt;br /&gt;
    output[2:0] X;&lt;br /&gt;
&lt;br /&gt;
    assign X[0] = (A[0]&amp;amp;B[0]&amp;amp;~B[1]) | (~A[0]&amp;amp;A[1]&amp;amp;B[0]&amp;amp;B[1]) | (A[0]&amp;amp;~A[1]&amp;amp;B[0]) | (A[0]&amp;amp;A[1]&amp;amp;~B[0]&amp;amp;B[1]) | (A[2]&amp;amp;B[2]) | (A[2]&amp;amp;~B[0]&amp;amp;B[1]) | (~A[0]&amp;amp;A[1]&amp;amp;B[2]);&lt;br /&gt;
    assign X[1] = (A[0]&amp;amp;~A[1]&amp;amp;B[1]) | (A[1]&amp;amp;B[0]&amp;amp;~B[1]) | (A[1]&amp;amp;B[2]) | (A[2]&amp;amp;B[1]);&lt;br /&gt;
    assign X[2] = (A[0]&amp;amp;~A[1]&amp;amp;B[2]) | (~A[0]&amp;amp;A[1]&amp;amp;~B[0]&amp;amp;B[1]) | (A[0]&amp;amp;A[1]&amp;amp;B[0]&amp;amp;B[1]) | (A[2]&amp;amp;B[0]&amp;amp;~B[1]);&lt;br /&gt;
endmodule&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ссылки на файлы ==&lt;br /&gt;
&lt;br /&gt;
Модулярные сумматоры и умножители были синтезированы для всех модулей от 2 до 255 включительно. Скачать Verilog файлы можно ниже:&lt;br /&gt;
* [Модулярные сумматоры (.7z ~3MB)|http://vscripts.ru/res/2015/sum_mod3-255_espr.7z]&lt;br /&gt;
* [Модулярные умножители (.7z ~40MB)|http://vscripts.ru/res/2015/mul_mod3-255_espr.7z]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%81%D1%83%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%B8_%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8</id>
		<title>Аппаратные реализации модулярных сумматоров и умножителей на базе минимизированной таблицы истинности</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%90%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B5_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D1%85_%D1%81%D1%83%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%B8_%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9_%D0%BD%D0%B0_%D0%B1%D0%B0%D0%B7%D0%B5_%D0%BC%D0%B8%D0%BD%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8"/>
				<updated>2015-12-21T10:18:35Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: Новая страница: «В данной статье приведен метод реализации модулярных сумматоров и умножителей на базе т…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данной статье приведен метод реализации модулярных сумматоров и умножителей на базе таблиц истинности, минимизированных с помощью [[Алгоритм Espresso|Espresso]].&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
&lt;br /&gt;
Модулярные сумматоры и умножители в силу своей малой размерности могут быть реализованы как произвольная логическая функция и описана в виде таблицы истинности. &lt;br /&gt;
&lt;br /&gt;
== Пример Verilog файла ==&lt;br /&gt;
&lt;br /&gt;
== Ссылки на файлы ==&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2</id>
		<title>Система остаточных классов</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2"/>
				<updated>2015-12-21T09:07:32Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Система остаточных классов (СОК)''' (от англ. [http://en.wikipedia.org/wiki/Residue_number_system Residue number system], другое название '''Модулярная арифметика''') - [http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F#.D0.9D.D0.B5.D0.BF.D0.BE.D0.B7.D0.B8.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D1.8B.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B_.D1.81.D1.87.D0.B8.D1.81.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F непозиционная система счисления]. Представление числа в системе остаточных классов основано на понятии [http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8E вычета] и [http://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%82%D0%B0%D0%B9%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0_%D0%BE%D0%B1_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B0%D1%85 китайской теореме об остатках]. СОК определяется набором [http://ru.wikipedia.org/wiki/%D0%92%D0%B7%D0%B0%D0%B8%D0%BC%D0%BD%D0%BE_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%B0 взаимно простых] ''модулей'' &amp;lt;math&amp;gt;(m_1, m_2, \dots, m_n)&amp;lt;/math&amp;gt; с произведением &amp;lt;math&amp;gt;M=m_1\cdot m_2\cdot \dots\cdot m_n&amp;lt;/math&amp;gt; так, что каждому целому числу &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; из отрезка &amp;lt;math&amp;gt;[0,M-1]&amp;lt;/math&amp;gt; ставится в соответствие набор вычетов &amp;lt;math&amp;gt;(x_1, x_2, \dots, x_n)&amp;lt;/math&amp;gt;, где&lt;br /&gt;
: &amp;lt;math&amp;gt;x_1 \equiv x \pmod{m_1};&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;x_2 \equiv x \pmod{m_2};&amp;lt;/math&amp;gt;&lt;br /&gt;
: …&lt;br /&gt;
: &amp;lt;math&amp;gt;x_n \equiv x \pmod{m_n}.&amp;lt;/math&amp;gt;&lt;br /&gt;
При этом китайская теорема об остатках гарантирует однозначность представления для чисел из отрезка &amp;lt;math&amp;gt;[0,M-1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Преимущества системы остаточных классов ==&lt;br /&gt;
* В СОК арифметические операции (сложение, вычитание, умножение, деление) выполняются покомпонентно, если про результат известно, что он является целочисленным и также лежит в &amp;lt;math&amp;gt;[0,M-1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
Формула для сложения:&lt;br /&gt;
&amp;lt;math&amp;gt;(x_1, x_2, \dots, x_n) + (y_1, y_2, \dots, y_n) = (z_1, z_2, \dots, z_n)&amp;lt;/math&amp;gt;, где&lt;br /&gt;
: &amp;lt;math&amp;gt;z_1 \equiv (x_1 + y_1) \pmod{m_1};&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;z_2 \equiv (x_2 + y_2) \pmod{m_2};&amp;lt;/math&amp;gt;&lt;br /&gt;
: ...&lt;br /&gt;
: &amp;lt;math&amp;gt;z_n \equiv (x_n + y_n) \pmod{m_n};&amp;lt;/math&amp;gt;&lt;br /&gt;
Аналогично выполняются вычитание, умножение и деление. &lt;br /&gt;
'''Замечание''': на деление накладываются дополнительные ограничения: деление должно быть целочисленным, то есть делитель должен нацело делить делимое. Делитель должен быть взаимопростым со всеми модулями базиса.  &lt;br /&gt;
&lt;br /&gt;
== Недостатки системы остаточных классов ==&lt;br /&gt;
* Возможность представления только ограниченного количества чисел.&lt;br /&gt;
* Отсутствие эффективных алгоритмов для сравнения чисел, представленных в СОК. Сравнение обычно осуществляется через перевод аргументов из СОК в смешанную систему счисления по основаниям &amp;lt;math&amp;gt;(m_1, m_1\cdot m_2, \dots, m_1\cdot m_2\cdot\dots\cdot m_{n-1})&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Медленные и требующие работы с большими числами реализации алгоритмов перевода из позиционной системы счисления в СОК и обратно.&lt;br /&gt;
* Сложные алгоритмы деления (для случая, когда результат не является целым)&lt;br /&gt;
* Трудность в обнаружении переполнения&lt;br /&gt;
&lt;br /&gt;
== Применение системы остаточных классов ==&lt;br /&gt;
СОК широко используется в микроэлектронике в специализированных устройствах [ЦОС], где требуется: &lt;br /&gt;
* контроль за ошибками, за счет введения дополнительных избыточных модулей&lt;br /&gt;
* высокая скорость работы, которую обеспечивает параллельная реализация базовых арифметических операций&lt;br /&gt;
&lt;br /&gt;
== Специальные системы модулей ==&lt;br /&gt;
В модулярной арифметике существуют специальные наборы модулей, которые позволяют частично нивелировать недостатки и для которых существуют эффективные алгоритмы сравнения чисел и для прямого и обратного перевода модулярных чисел в позиционную систему счисления. Одной из самых популярных систем модулей является набор из трех взаимнопростых чисел вида '''{2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1}'''&lt;br /&gt;
&lt;br /&gt;
== Численный пример ==&lt;br /&gt;
&lt;br /&gt;
== Пример ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим СОК с базисом &amp;lt;math&amp;gt;(2;3;5)&amp;lt;/math&amp;gt;. В этом базисе можно взаимооднозначно представить числа из промежутка от &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt; до &amp;lt;math&amp;gt;29&amp;lt;/math&amp;gt;, так как &amp;lt;math&amp;gt;M = 2\times 3\times 5 = 30&amp;lt;/math&amp;gt;. Таблица соответствия чисел из позиционной системы счисления и системы остаточных классов:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;0=(0;0;0)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;1=(1;1;1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;2=(0;2;2)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;3=(1;0;3)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;4=(0;1;4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;5=(1;2;0)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;6=(0;0;1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;7=(1;1;2)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;8=(0;2;3)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;9=(1;0;4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;10=(0;1;0)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;11=(1;2;1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;12=(0;0;2)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;13=(1;1;3)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;14=(0;2;4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;15=(1;0;0)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;16=(0;1;1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;17=(1;2;2)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;18=(0;0;3)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;19=(1;1;4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;20=(0;2;0)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;21=(1;0;1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;22=(0;1;2)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;23=(1;2;3)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;24=(0;0;4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;25=(1;1;0)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;26=(0;2;1)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;27=(1;0;2)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;28=(0;1;3)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;29=(1;2;4)&amp;lt;/math&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Пример сложения ===&lt;br /&gt;
Сложим два числа 9 и 14 в базисе &amp;lt;math&amp;gt;(2;3;5)&amp;lt;/math&amp;gt;. Их представление в заданном базисе &amp;lt;math&amp;gt;9=(1;0;4)&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;14=(0;2;4)&amp;lt;/math&amp;gt; (см. табличку выше). Воспользуемся формулой для сложения:&lt;br /&gt;
&amp;lt;math&amp;gt;(z_1, z_2, z_3) = (1, 0, 4) + (0, 2, 4)&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;z_1 \equiv (x_1 + y_1) \pmod{m_1} \equiv (1 + 0) \pmod{2} = 1;&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;z_2 \equiv (x_2 + y_2) \pmod{m_2} \equiv (0 + 2) \pmod{3} = 2;&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;z_3 \equiv (x_3 + y_3) \pmod{m_3} \equiv (4 + 4) \pmod{5} = 3;&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(z_1, z_2, z_3) = (1, 2, 3)&amp;lt;/math&amp;gt; - по таблице убеждаемся, что результат равен 23.&lt;br /&gt;
&lt;br /&gt;
=== Пример умножения ===&lt;br /&gt;
Умножим два числа 4 и 5 в базисе &amp;lt;math&amp;gt;(2;3;5)&amp;lt;/math&amp;gt;. Их представление в заданном базисе &amp;lt;math&amp;gt;4=(0;1;4)&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;5=(1;2;0)&amp;lt;/math&amp;gt; (см. табличку выше). Воспользуемся формулой для умножения:&lt;br /&gt;
&amp;lt;math&amp;gt;(z_1, z_2, z_3) = (0, 1, 4) * (1, 2, 0)&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;z_1 \equiv (x_1 * y_1) \pmod{m_1} \equiv (0 * 1) \pmod{2} = 0;&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;z_2 \equiv (x_2 * y_2) \pmod{m_2} \equiv (1 * 2) \pmod{3} = 2;&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;z_3 \equiv (x_3 * y_3) \pmod{m_3} \equiv (4 * 0) \pmod{5} = 0;&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(z_1, z_2, z_3) = (0, 2, 0)&amp;lt;/math&amp;gt; - по таблице убеждаемся, что результат равен 20.&lt;br /&gt;
&lt;br /&gt;
Замечание: если бы мы умножали или складывали числа, которые дали в результате умножения число больше или равное &amp;lt;math&amp;gt;M = 30&amp;lt;/math&amp;gt;, то полученный результат &amp;lt;math&amp;gt;RES \equiv REAL \pmod{M}&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;REAL&amp;lt;/math&amp;gt; - результат операции в позиционной системе счисления.&lt;br /&gt;
&lt;br /&gt;
=== Пример деления, при условии, что оно делится нацело ===&lt;br /&gt;
Деление может быть выполнено аналогично умножению, но только если делитель делит делимое нацело, без остатка.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Для модулей &amp;lt;math&amp;gt;(29;31;32)&amp;lt;/math&amp;gt; разделим число 1872 на 9.&amp;lt;br /&amp;gt;&lt;br /&gt;
Делим &amp;lt;math&amp;gt;1872=(16;12;16)&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;9=(9;9;9)&amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся формулой&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;z_i \equiv (x_i * y_i^{-1}) \pmod{m_i};&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Здесь надо сказать, что &amp;lt;math&amp;gt;y_i^{-1}*y_i=1 \pmod{m_i}&amp;lt;/math&amp;gt;, что не то же самое, что просто разделить x на y.&amp;lt;br /&amp;gt;&lt;br /&gt;
По формуле &amp;lt;math&amp;gt;y_i^{m_i-1}=1 \pmod{m_i}&amp;lt;/math&amp;gt; получаем&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;9^{29-2} \pmod{29} = 13&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;9^{31-2} \pmod{31} = 7&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;9^{32-2} \pmod{32} = 17&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;z_1 \equiv (16*13) \pmod{29} = 5&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;z_2 \equiv (12*7) \pmod{31} = 22&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;z_3 \equiv (16*17) \pmod{32} = 16&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Это и есть правильный результат - число 208. Однако такой результат можно получить только если известно, что деление производится без остатка.&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* Книга &amp;quot;Residue Number Systems: Theory and Implementation&amp;quot;, Amos Omondi, Benjamin Premkumar - наиболее исчерпывающая информация о применении СОК с подробными примерами (на английском языке).&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-12-09T09:01:55Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2015/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2015/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
* [[Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Система остаточных классов - введение|Учебник по СОК]] - подробное описание системы остаточных классов&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2015.11 - [[Простой прототип модулярного процессора с коррекцией сбоев]]&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0_%D1%81_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B5%D0%B9_%D1%81%D0%B1%D0%BE%D0%B5%D0%B2</id>
		<title>Простой прототип модулярного процессора с коррекцией сбоев</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0_%D1%81_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B5%D0%B9_%D1%81%D0%B1%D0%BE%D0%B5%D0%B2"/>
				<updated>2015-12-09T08:59:35Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данном материале приводится пример модулярного процессорного ядра (МПЯ), которое можно использовать для решения задач цифровой обработки сигналов. За счет избыточных модулей, есть возможность либо увеличить динамический диапазон рассчетов, либо обнаруживать ошибку в рассчетах, либо исправлять одиночную ошибку в рассчетах.&lt;br /&gt;
&lt;br /&gt;
== Основные параметры МПЯ ==&lt;br /&gt;
* Вычисления с фиксированной запятой&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Базис для МПЯ ==&lt;br /&gt;
&lt;br /&gt;
'''Базис полный (78 бит):''' &lt;br /&gt;
&lt;br /&gt;
3 5 7 11 13 17 23 29 31 37 41 43 47 53 59 61 64 (Динамический диапазон: 197538326500053845866560 или 78 бит)&lt;br /&gt;
&lt;br /&gt;
'''Рабочие модули (66 бит):'''&lt;br /&gt;
&lt;br /&gt;
3 5 7 11 13 17 23 29 31 37 41 43 47 53 59 (Динамический диапазон: 50598956583005595765 или 66 бит)&lt;br /&gt;
&lt;br /&gt;
'''Проверочные модули:''' &lt;br /&gt;
&lt;br /&gt;
61 64&lt;br /&gt;
&lt;br /&gt;
Указанный базис включает 8-битные модули (значения для модуля 64, тоже укладываются в 8 бит). Особенность модулярной арифметики не позволяет без существенных затрат определять факт переполнения, поэтому за переполнением диапазона должен следить программист.&lt;br /&gt;
&lt;br /&gt;
== Состав памяти ==&lt;br /&gt;
# Регистр позиционный 78-битный для ввода / вывода RPOS&lt;br /&gt;
# Регистры модулярные AMOD, BMOD, CMOD и DMOD для операций&lt;br /&gt;
# Регистры U0, U1, U2, U3 - 12-битные для условных переходов.&lt;br /&gt;
# Регистр флагов F1 - F16 (F1 - флаг наличия ошибки)&lt;br /&gt;
# Программное ПЗУ - здесь хранится программа предварительно записанная в память устройства. Она не будет меняться до момента перепрошивки. Указатель текущей команды стоит в нулевой позиции перед запуском программы.&lt;br /&gt;
# Модулярное ОЗУ - размер 4096 строк по модулям (см. &amp;quot;Базис полный&amp;quot;)&lt;br /&gt;
# Модулярное ОЗУ - размер 64 строки для хранения позиционных данных&lt;br /&gt;
&lt;br /&gt;
== Таблица микрокоманд ==&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5 cellspacing=0&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Код команды (5 бит)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Параметр 1 (кол-во бит)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Параметр 2 (кол-во бит)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Параметр 3 (кол-во бит)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Описание команды&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Обмен данными:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;---&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Взять число с внешнего устройства и положить в RPOS&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Отправить число из модулярного регистра (AMOD, ... DMOD) в модулярное ОЗУ по указанному адресу (адрес указан в U)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Отправить число из ОЗУ по указанному адресу (адрес указан в U) в модулярный регистр (AMOD, ... DMOD)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Адрес в позиционном ОЗУ (8 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Отправить число из позиционного регистра (RPOS) в позиционное ОЗУ по указанному адресу&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Адрес в позиционном ОЗУ (8 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Отправить число из позиционное ОЗУ по указанному адресу в позиционный регистр (RPOS)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Скопировать данные из одного регистра в другой (первые 4 бита модулярные, вторые 4 бита U)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Преобразования между системами счисления:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;8&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Преобразовать число в RPOS в модулярный вид и переложить в один из&lt;br /&gt;
  регистров (AMOD, ....)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Преобразовать число из модулярного регистра (AMOD, ... DMOD) в позиционный вид и положить в RPOS (в случае наличия ошибки, регистр F1 будет содержать 1)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
   &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Арифметические операции:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Сложить числа из заданных модулярных регистров и положить результат в первый регистр (без контроля переполнения, за переполнением следит программист)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;12&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Умножить числа из заданных модулярных регистров и положить результат в первый регистр (без контроля переполнения, за переполнением следит программист)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;13&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Обнулить заданный модулярный регистр (AMOD-DMOD)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;14&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;---&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Обнулить RPOS&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;15&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код канала (5 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Значение для модуля (8 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=2 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Положить в модулярный регистр (AMOD-DMOD) модулярный канал номер N заданное значение K (меньше N)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Проверка на ошибки:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;16&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Позиция в стеке команд (14 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Проверить есть ли ошибка в указаном регистре (за счет двух проверочных модулей) в случае отсутствия ошибки перейти по указанному адресу&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;17&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Исправить однократную ошибку в указанном регистре (дольше чем проверка)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Условные переходы:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;18&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Адрес в позиционном ОЗУ (8 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Установить значение регистра U0, U1, U2 или U3 значение взятое из ячейки позиционного ОЗУ&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;19&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Значение (14 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Установить значение регистра U0, U1, U2 или U3 значение переданное в команде&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Установить значение регистра U0, U1, U2 или U3 значение 0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;21&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Вычесть из значения регистра U0, U1, U2 или U3 единицу&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;22&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Прибавть к регистру U0, U1, U2 или U3 единицу&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;23&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Позиция в стеке команд (14 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Переход к команде в позиции X (в стеке команд) если в регистре U0, U1, U2 или U3 значение равно 0.&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример решаемой задачи ==&lt;br /&gt;
Написать программу, которая выполняет скалярное произведение произвольного числа 32-х битных элементов менее чем 1024 в формате - сначала подается число элементов вектора (N), затем последовательно сначала элемент вектора 1, потом элемент вектора 2 и.т.д. Всего 2*N значений. Финальный результат проверяется на ошибки, в случае наличия ошибки в рассчетах выполняется пересчет.&lt;br /&gt;
&lt;br /&gt;
== Текстовое описание программы ==&lt;br /&gt;
Описание приводится с использованием команд, которые поддерживает процессорное ядро.&lt;br /&gt;
&lt;br /&gt;
* 0: Обнулить CMOD&lt;br /&gt;
* 1: Обнулить U1&lt;br /&gt;
* 2: Взять число с внешнего устройства - положить в RPOS&lt;br /&gt;
* 3: Отправить число из позиционного регистра (RPOS) в позиционное ОЗУ по адресу 0&lt;br /&gt;
* 4: Установить регистр U0 в значение взятое из ячейки позиционного ОЗУ по адресу 0&lt;br /&gt;
* 5: Перейти к команде 18 программы если в U0 находится 0&lt;br /&gt;
* 6: Взять число с внешнего устройства и положить в RPOS&lt;br /&gt;
* 7: Преобразовать число в RPOS в модулярный вид и переложить в AMOD&lt;br /&gt;
* 8: Взять число с внешнего устройства и положить в RPOS&lt;br /&gt;
* 9: Преобразовать число в RPOS в модулярный вид и переложить в BMOD&lt;br /&gt;
* 10: Умножить числа из AMOD и BMOD и положить результат в AMOD&lt;br /&gt;
* 11: Сложить числа из CMOD и AMOD - результат в CMOD&lt;br /&gt;
* 12: Положить число из AMOD в ОЗУ с адресом из U1&lt;br /&gt;
* 13: Прибавить к U1 единицу&lt;br /&gt;
* 14: Положить число из BMOD в ОЗУ с адресом из U1&lt;br /&gt;
* 15: Прибавить к U1 единицу&lt;br /&gt;
* 16: Вычесть из U0 единицу&lt;br /&gt;
* 17: Перейти к позиции 5 в стеке команд&lt;br /&gt;
* 18: Проверить есть ли ошибка в регистре CMOD. В случае отсутствия ошибки перейти к команде 32.&lt;br /&gt;
* 19: Установить регистр U0 значение взятое из регистра U1&lt;br /&gt;
* 20: Обнулить U1&lt;br /&gt;
* 21: Обнулить CMOD&lt;br /&gt;
* 22: Перейти к команде 31 программы если в U0 находится 0&lt;br /&gt;
* 23: Отправить число из ОЗУ по адресу указанному в U1 в модулярный регистр AMOD&lt;br /&gt;
* 24: Прибавить к U1 единицу&lt;br /&gt;
* 25: Отправить число из ОЗУ по адресу указанному в U1 в модулярный регистр BMOD&lt;br /&gt;
* 26: Прибавить к U1 единицу&lt;br /&gt;
* 27: Умножить числа из AMOD и BMOD и положить результат в AMOD&lt;br /&gt;
* 28: Сложить числа из CMOD и AMOD - результат в CMOD&lt;br /&gt;
* 29: Вычесть из U0 единицу&lt;br /&gt;
* 30: Перейти к позиции 22 в стеке команд&lt;br /&gt;
* 31: Перейти к команде 18 в стеке команд&lt;br /&gt;
* 32: Завершить работу программы&lt;br /&gt;
&lt;br /&gt;
== Программа в машинных кодах ==&lt;br /&gt;
&lt;br /&gt;
* 0: 01101 10&lt;br /&gt;
* 1: 10100 01&lt;br /&gt;
* 2: 00000&lt;br /&gt;
* 3: 00011 00000000&lt;br /&gt;
* 4: 10010 00 00000000&lt;br /&gt;
* 5: 10111 00 00000000010010&lt;br /&gt;
* 6: 00000&lt;br /&gt;
* 7: 01000 00&lt;br /&gt;
* 8: 00000&lt;br /&gt;
* 9: 01000 01&lt;br /&gt;
* 10: 01100 00 01&lt;br /&gt;
* 11: 01011 10 00&lt;br /&gt;
* 12: 00001 00 01&lt;br /&gt;
* 13: 10110 01&lt;br /&gt;
* 14: 00001 01 01&lt;br /&gt;
* 15: 10110 01&lt;br /&gt;
* 16: 10101 00&lt;br /&gt;
* 17: 10111 10 00000000000101&lt;br /&gt;
* 18: 10000 10 00000000100000&lt;br /&gt;
* 19: 00101 0100 0101&lt;br /&gt;
* 20: 10100 01&lt;br /&gt;
* 21: 01101 10&lt;br /&gt;
* 22: 10111 00 00000000011111&lt;br /&gt;
* 23: 00010 01 00&lt;br /&gt;
* 24: 10110 01&lt;br /&gt;
* 25: 00010 01 01&lt;br /&gt;
* 26: 10110 01&lt;br /&gt;
* 27: 01100 00 01&lt;br /&gt;
* 28: 01011 10 00&lt;br /&gt;
* 29: 10101 00&lt;br /&gt;
* 30: 10111 10 00000000010110&lt;br /&gt;
* 31: 10111 10 00000000010010&lt;br /&gt;
* 32: EOP&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0_%D1%81_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B5%D0%B9_%D1%81%D0%B1%D0%BE%D0%B5%D0%B2</id>
		<title>Простой прототип модулярного процессора с коррекцией сбоев</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0_%D1%81_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B5%D0%B9_%D1%81%D0%B1%D0%BE%D0%B5%D0%B2"/>
				<updated>2015-12-09T08:45:28Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данном материале приводится пример модулярного процессорного ядра (МПЯ), которое можно использовать для решения задач цифровой обработки сигналов. За счет избыточных модулей, есть возможность либо увеличить динамический диапазон рассчетов, либо обнаруживать ошибку в рассчетах, либо исправлять одиночную ошибку в рассчетах.&lt;br /&gt;
&lt;br /&gt;
== Основные параметры МПЯ ==&lt;br /&gt;
* Вычисления с фиксированной запятой&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Базис для МПЯ ==&lt;br /&gt;
&lt;br /&gt;
'''Базис полный (78 бит):''' &lt;br /&gt;
&lt;br /&gt;
3 5 7 11 13 17 23 29 31 37 41 43 47 53 59 61 64 (Динамический диапазон: 197538326500053845866560 или 78 бит)&lt;br /&gt;
&lt;br /&gt;
'''Рабочие модули (66 бит):'''&lt;br /&gt;
&lt;br /&gt;
3 5 7 11 13 17 23 29 31 37 41 43 47 53 59 (Динамический диапазон: 50598956583005595765 или 66 бит)&lt;br /&gt;
&lt;br /&gt;
'''Проверочные модули:''' &lt;br /&gt;
&lt;br /&gt;
61 64&lt;br /&gt;
&lt;br /&gt;
Указанный базис включает 8-битные модули (значения для модуля 64, тоже укладываются в 8 бит). Особенность модулярной арифметики не позволяет без существенных затрат определять факт переполнения, поэтому за переполнением диапазона должен следить программист.&lt;br /&gt;
&lt;br /&gt;
== Состав памяти ==&lt;br /&gt;
# Регистр позиционный 78-битный для ввода / вывода RPOS&lt;br /&gt;
# Регистры модулярные AMOD, BMOD, CMOD и DMOD для операций&lt;br /&gt;
# Регистры U0, U1, U2, U3 - 12-битные для условных переходов.&lt;br /&gt;
# Регистр флагов F1 - F16 (F1 - флаг наличия ошибки)&lt;br /&gt;
# Программное ПЗУ - здесь хранится программа предварительно записанная в память устройства. Она не будет меняться до момента перепрошивки. Указатель текущей команды стоит в нулевой позиции перед запуском программы.&lt;br /&gt;
# Модулярное ОЗУ - размер 4096 строк по модулям (см. &amp;quot;Базис полный&amp;quot;)&lt;br /&gt;
# Модулярное ОЗУ - размер 64 строки для хранения позиционных данных&lt;br /&gt;
&lt;br /&gt;
== Таблица микрокоманд ==&lt;br /&gt;
&amp;lt;table border=1 cellpadding=5 cellspacing=0&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Код команды (5 бит)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Параметр 1 (кол-во бит)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Параметр 2 (кол-во бит)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Параметр 3 (кол-во бит)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;&amp;lt;b&amp;gt;Описание команды&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Обмен данными:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;---&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Взять число с внешнего устройства и положить в RPOS&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Отправить число из модулярного регистра (AMOD, ... DMOD) в модулярное ОЗУ по указанному адресу (адрес указан в U)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Отправить число из ОЗУ по указанному адресу (адрес указан в U) в модулярный регистр (AMOD, ... DMOD)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Адрес в позиционном ОЗУ (8 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Отправить число из позиционного регистра (RPOS) в позиционное ОЗУ по указанному адресу&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;4&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Адрес в позиционном ОЗУ (8 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Отправить число из позиционное ОЗУ по указанному адресу в позиционный регистр (RPOS)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Скопировать данные из одного регистра в другой (первые 4 бита модулярные, вторые 4 бита U)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Преобразования между системами счисления:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;8&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Преобразовать число в RPOS в модулярный вид и переложить в один из&lt;br /&gt;
  регистров (AMOD, ....)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;9&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Преобразовать число из модулярного регистра (AMOD, ... DMOD) в позиционный вид и положить в RPOS (в случае наличия ошибки, регистр F1 будет содержать 1)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
   &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Арифметические операции:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;11&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Сложить числа из заданных модулярных регистров и положить результат в первый регистр (без контроля переполнения, за переполнением следит программист)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;12&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Умножить числа из заданных модулярных регистров и положить результат в первый регистр (без контроля переполнения, за переполнением следит программист)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;13&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Обнулить заданный модулярный регистр (AMOD-DMOD)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;14&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;---&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Обнулить RPOS&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;15&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код канала (5 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Значение для модуля (8 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=2 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Положить в модулярный регистр (AMOD-DMOD) модулярный канал номер N заданное значение K (меньше N)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Проверка на ошибки:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;16&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Позиция в стеке команд (14 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Проверить есть ли ошибка в указаном регистре (за счет двух проверочных модулей) в случае отсутствия ошибки перейти по указанному адресу&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;17&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Исправить однократную ошибку в указанном регистре (дольше чем проверка)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=7&amp;gt;&amp;lt;b&amp;gt;Условные переходы:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;18&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Адрес в позиционном ОЗУ (8 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Установить значение регистра U0, U1, U2 или U3 значение взятое из ячейки позиционного ОЗУ&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;19&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Значение (14 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Установить значение регистра U0, U1, U2 или U3 значение переданное в команде&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;20&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Установить значение регистра U0, U1, U2 или U3 значение 0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;21&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Вычесть из значения регистра U0, U1, U2 или U3 единицу&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;22&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=4 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Прибавть к регистру U0, U1, U2 или U3 единицу&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td &amp;gt;23&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Код регистра U (2 бита)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Позиция в стеке команд (14 бит)&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td colspan=3 &amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;Переход к команде в позиции X (в стеке команд) если в регистре U0, U1, U2 или U3 значение равно 0.&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-12-07T09:41:15Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2015/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2015/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
* [[Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Система остаточных классов - введение|Учебник по СОК]] - подробное описание системы остаточных классов&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0_%D1%81_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B5%D0%B9_%D1%81%D0%B1%D0%BE%D0%B5%D0%B2</id>
		<title>Простой прототип модулярного процессора с коррекцией сбоев</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D1%82%D0%B8%D0%BF_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0_%D1%81_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B5%D0%B9_%D1%81%D0%B1%D0%BE%D0%B5%D0%B2"/>
				<updated>2015-12-07T09:20:45Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: Новая страница: «В данном материале приводится пример модулярного процессорного ядра (МПЯ), которое можн…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В данном материале приводится пример модулярного процессорного ядра (МПЯ), которое можно использовать для решения задач цифровой обработки сигналов. За счет избыточных модулей, есть возможность либо увеличить динамический диапазон рассчетов, либо обнаруживать ошибку в рассчетах, либо исправлять одиночную ошибку в рассчетах.&lt;br /&gt;
&lt;br /&gt;
== Основные параметры МПЯ ==&lt;br /&gt;
* Вычисления с фиксированной запятой&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Базис для МПЯ ==&lt;br /&gt;
&lt;br /&gt;
'''Базис полный (78 бит):''' &lt;br /&gt;
&lt;br /&gt;
3 5 7 11 13 17 23 29 31 37 41 43 47 53 59 61 64 (Динамический диапазон: 197538326500053845866560 или 78 бит)&lt;br /&gt;
&lt;br /&gt;
'''Рабочие модули (66 бит):'''&lt;br /&gt;
&lt;br /&gt;
3 5 7 11 13 17 23 29 31 37 41 43 47 53 59 (Динамический диапазон: 50598956583005595765 или 66 бит)&lt;br /&gt;
&lt;br /&gt;
'''Проверочные модули:''' &lt;br /&gt;
&lt;br /&gt;
61 64&lt;br /&gt;
&lt;br /&gt;
Указанный базис включает 8-битные модули (значения для модуля 64, тоже укладываются в 8 бит). Особенность модулярной арифметики не позволяет без существенных затрат определять факт переполнения, поэтому за переполнением диапазона должен следить программист.&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/LinearPolinomPHP</id>
		<title>LinearPolinomPHP</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/LinearPolinomPHP"/>
				<updated>2015-12-04T12:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: Перенаправление на Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)]]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-11-26T22:13:34Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
* [[Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Система остаточных классов - введение|Учебник по СОК]] - подробное описание системы остаточных классов&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D1%83%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8_%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D0%BC_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%BC_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC%D0%BE%D0%BC_(PHP)</id>
		<title>Программа для проверки представимости булевой функции линейным арифметическим полиномом (PHP)</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D1%83%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8_%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D0%BC_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%BC_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC%D0%BE%D0%BC_(PHP)"/>
				<updated>2015-11-26T22:07:46Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: Новая страница: «== Описание ==  Программа проверяет можно ли заданную булеву функцию представить линейным…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Описание ==&lt;br /&gt;
&lt;br /&gt;
Программа проверяет можно ли заданную булеву функцию представить линейным арифметическим полиномом. Используются материалы из статьи &amp;quot;В. П. Шмерко, Теоремы Малюгина: новое понимание в логическом управлении, проектировании сбис и структурах данных для новых технологий, Автомат. и телемех., 2004, выпуск 6, 61–83&amp;quot; [http://www.mathnet.ru/php/archive.phtml?wshow=paper&amp;amp;jrnid=at&amp;amp;paperid=1589&amp;amp;option_lang=rus '''Статья''']&lt;br /&gt;
&lt;br /&gt;
== Входные данные ==&lt;br /&gt;
&lt;br /&gt;
На вход программы подается таблица истинности в виде:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
4 3&lt;br /&gt;
0 0 0 0 0 0 0&lt;br /&gt;
0 0 0 1 0 0 1&lt;br /&gt;
0 0 1 0 0 1 0&lt;br /&gt;
0 0 1 1 0 1 1&lt;br /&gt;
0 1 0 0 0 0 1&lt;br /&gt;
0 1 0 1 0 1 0&lt;br /&gt;
0 1 1 0 0 1 1&lt;br /&gt;
0 1 1 1 1 0 0&lt;br /&gt;
1 0 0 0 0 1 0&lt;br /&gt;
1 0 0 1 0 1 1&lt;br /&gt;
1 0 1 0 1 0 0&lt;br /&gt;
1 0 1 1 1 0 1&lt;br /&gt;
1 1 0 0 0 1 1&lt;br /&gt;
1 1 0 1 1 0 0&lt;br /&gt;
1 1 1 0 1 0 1&lt;br /&gt;
1 1 1 1 1 1 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь первые два числа количество входных N и выходных K переменных соответственно. Далее следуют 2&amp;lt;sup&amp;gt;N&amp;lt;/sup&amp;gt; строк, в каждой N + K чисел &amp;quot;0&amp;quot; или &amp;quot;1&amp;quot;. Первые N чисел - логические значения входов, следующие K чисел логические значения выходов.&lt;br /&gt;
&lt;br /&gt;
== Исходник на PHP ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot; line&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
	set_time_limit(3600);&lt;br /&gt;
	&lt;br /&gt;
	function kronecker_product($a1, $a2) {&lt;br /&gt;
		$x1 = count($a1);&lt;br /&gt;
		$y1 = count($a1[0]);&lt;br /&gt;
		$x2 = count($a2);&lt;br /&gt;
		$y2 = count($a2[0]);&lt;br /&gt;
		&lt;br /&gt;
		$ret = array();&lt;br /&gt;
		for ($i1 = 0; $i1 &amp;lt; $x1; $i1++) {&lt;br /&gt;
			for ($i2 = 0; $i2 &amp;lt; $x2; $i2++) {&lt;br /&gt;
				for ($j1 = 0; $j1 &amp;lt; $y1; $j1++) {&lt;br /&gt;
					for ($j2 = 0; $j2 &amp;lt; $y2; $j2++) {&lt;br /&gt;
						$ret[$i1*$x2+$i2][$j1*$y2+$j2] = $a1[$i1][$j1]*$a2[$i2][$j2];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return $ret;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function get_conversion_matrix($num) {&lt;br /&gt;
		$arr[0][0] = 1;&lt;br /&gt;
		$arr[0][1] = 0;&lt;br /&gt;
		$arr[1][0] = -1;&lt;br /&gt;
		$arr[1][1] = 1;&lt;br /&gt;
		if ($num == 1) {&lt;br /&gt;
			return $arr;&lt;br /&gt;
		}&lt;br /&gt;
		$narr = $arr;&lt;br /&gt;
		for ($i = 1; $i &amp;lt; $num; $i++) {&lt;br /&gt;
			$narr = kronecker_product($narr, $arr);&lt;br /&gt;
		}&lt;br /&gt;
		return $narr;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function gen_polinom_koeffs($kron, $f) {&lt;br /&gt;
		$len1 = count($f);&lt;br /&gt;
		$len2 = count($kron);&lt;br /&gt;
		if ($len1 != $len2) {&lt;br /&gt;
			echo &amp;quot;Something strange ($len1 != $len2)&amp;quot;;&lt;br /&gt;
			exit;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		$res = array();&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $len1; $i++) {&lt;br /&gt;
			$res[$i] = 0;&lt;br /&gt;
			for ($j = 0; $j &amp;lt; $len1; $j++) {&lt;br /&gt;
				$res[$i] += $kron[$i][$j]*$f[$j];&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return $res;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function print_2d_matrix($arr) {&lt;br /&gt;
		$x = count($arr);&lt;br /&gt;
		$y = count($arr[0]);&lt;br /&gt;
		&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $x; $i++) {&lt;br /&gt;
			for ($j = 0; $j &amp;lt; $y; $j++) {&lt;br /&gt;
				echo $arr[$i][$j].&amp;quot; &amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			echo &amp;quot;\n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function print_polinom($res) {&lt;br /&gt;
		$alpha = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l');&lt;br /&gt;
		$len = count($res);&lt;br /&gt;
		echo &amp;quot;Polinom: &amp;quot;;&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $len; $i++) {&lt;br /&gt;
			if ($res[$i] != 0) {&lt;br /&gt;
				if ($res[$i] &amp;gt; 0)&lt;br /&gt;
					echo &amp;quot;+&amp;quot;;&lt;br /&gt;
				echo $res[$i];&lt;br /&gt;
				&lt;br /&gt;
				$pos = 0;&lt;br /&gt;
				$cur = $i;&lt;br /&gt;
				while ($cur) {&lt;br /&gt;
					if ($cur &amp;amp; 1)&lt;br /&gt;
						echo $alpha[$pos];&lt;br /&gt;
					$pos++;&lt;br /&gt;
					$cur = $cur &amp;gt;&amp;gt; 1;&lt;br /&gt;
				}&lt;br /&gt;
				echo &amp;quot;&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function count_ones($val) {&lt;br /&gt;
		$c = 0;&lt;br /&gt;
		while ($val) {&lt;br /&gt;
			if ($val &amp;amp; 1)&lt;br /&gt;
				$c++;&lt;br /&gt;
			$val = $val &amp;gt;&amp;gt; 1;&lt;br /&gt;
		}&lt;br /&gt;
		return $c;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function check_polinom_linearity($res) {&lt;br /&gt;
		$len = count($res);&lt;br /&gt;
		for ($i = 1; $i &amp;lt; $len; $i++) {&lt;br /&gt;
			if (count_ones($i) &amp;gt; 1) {&lt;br /&gt;
				if ($res[$i] != 0)&lt;br /&gt;
					return false;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function get_bit($j, $num) {&lt;br /&gt;
		return ($j &amp;gt;&amp;gt; $num) &amp;amp; 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function if_pow_2($j) {&lt;br /&gt;
		if ($j == 0)&lt;br /&gt;
			return true;&lt;br /&gt;
		for ($i = 0; $i &amp;lt; 32; $i++) {&lt;br /&gt;
			if ($j == (1 &amp;lt;&amp;lt; $i))&lt;br /&gt;
				return true;&lt;br /&gt;
		}&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function swap(&amp;amp;$arr, $i, $j) {&lt;br /&gt;
		$temp = $arr[$i];&lt;br /&gt;
		$arr[$i] = $arr[$j];&lt;br /&gt;
		$arr[$j] = $temp;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function gen_permute($arr, $i, $n) {&lt;br /&gt;
		global $permutations;&lt;br /&gt;
		if ($i == $n) {&lt;br /&gt;
			$permutations[] = $arr;&lt;br /&gt;
		} else {&lt;br /&gt;
			for ($j = $i; $j &amp;lt; $n; $j++) {&lt;br /&gt;
				swap($arr, $i, $j);&lt;br /&gt;
				gen_permute($arr, $i+1, $n);&lt;br /&gt;
				swap($arr, $i, $j);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function check_linearization_possibility_for_permutation_based_on_kroneker($f, $inum) {&lt;br /&gt;
		$kron = get_conversion_matrix($inum);&lt;br /&gt;
		$koefs = gen_polinom_koeffs($kron, $f);&lt;br /&gt;
		$result = check_polinom_linearity($koefs);&lt;br /&gt;
		if ($result == true || 1) {&lt;br /&gt;
			print_polinom($koefs);&lt;br /&gt;
		}&lt;br /&gt;
		return $result;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function check_linearization_possibility_for_permutation($f, $in, $out, $inum, $onum, $number) {&lt;br /&gt;
		&lt;br /&gt;
		for ($j = 0; $j &amp;lt; (1 &amp;lt;&amp;lt; $inum); $j++) {&lt;br /&gt;
			if (if_pow_2($j))&lt;br /&gt;
				continue;&lt;br /&gt;
			&lt;br /&gt;
			// Считаем значение функции в точке j&lt;br /&gt;
			$sum = 0;&lt;br /&gt;
			for ($i = 0; $i &amp;lt; $inum; $i++) {&lt;br /&gt;
				$jni = get_bit($j, $inum-1-$i);&lt;br /&gt;
				$f2i = $f[1 &amp;lt;&amp;lt; $i];&lt;br /&gt;
				$sum += $jni*$f2i;&lt;br /&gt;
			}&lt;br /&gt;
			$calc = 0;&lt;br /&gt;
			for ($i = 0; $i &amp;lt; $inum; $i++) {&lt;br /&gt;
				$jni = get_bit($j, $i);&lt;br /&gt;
				$calc += $jni;&lt;br /&gt;
			}&lt;br /&gt;
			$sum = $sum + $f[0]*(1 - $calc);&lt;br /&gt;
			if ($sum != $f[$j]) {&lt;br /&gt;
				echo &amp;quot;$sum != &amp;quot;.$f[$j].&amp;quot; for J = $j\n&amp;quot;;&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function check_linearization_possibility($in, $out) {&lt;br /&gt;
		global $permutations;&lt;br /&gt;
		$inum = count($in[0]);&lt;br /&gt;
		$onum = count($out[0]);&lt;br /&gt;
		$number = count($in);&lt;br /&gt;
		&lt;br /&gt;
		if ($onum &amp;gt; 10) {&lt;br /&gt;
			echo &amp;quot;It's not possible to check all permuatations for $onum number of outputs!\n&amp;quot;;&lt;br /&gt;
			exit;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		$permutations = array();&lt;br /&gt;
		for ($j = 0; $j &amp;lt; $onum; $j++) {&lt;br /&gt;
			$arr[$j] = $j;&lt;br /&gt;
		}&lt;br /&gt;
		gen_permute($arr,0,count($arr));&lt;br /&gt;
		&lt;br /&gt;
		foreach ($permutations as $perm) {&lt;br /&gt;
			echo &amp;quot;Check permuation of outputs:&amp;quot;;&lt;br /&gt;
			for ($j = 0; $j &amp;lt; $onum; $j++) {&lt;br /&gt;
				echo &amp;quot; &amp;quot;.$perm[$j];&lt;br /&gt;
			}&lt;br /&gt;
			echo &amp;quot;\n&amp;quot;;&lt;br /&gt;
			&lt;br /&gt;
			// Получаем вектор f для выхода&lt;br /&gt;
			for ($i = 0; $i &amp;lt; $number; $i++) {&lt;br /&gt;
				$f[$i] = 0;&lt;br /&gt;
				for ($j = 0; $j &amp;lt; $onum; $j++) {&lt;br /&gt;
					$f[$i] += ($out[$i][$j] &amp;lt;&amp;lt; $perm[$j]);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			if (check_linearization_possibility_for_permutation_based_on_kroneker($f, $inum)) {&lt;br /&gt;
				return true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function read_tt($file, &amp;amp;$in, &amp;amp;$out) {&lt;br /&gt;
		$lines = explode(&amp;quot;\n&amp;quot;, $file);&lt;br /&gt;
		$arr = explode(&amp;quot; &amp;quot;, $lines[0]);&lt;br /&gt;
		$inum = $arr[0];&lt;br /&gt;
		$onum = $arr[1];&lt;br /&gt;
		&lt;br /&gt;
		$ci = 0;&lt;br /&gt;
		for ($i = 1; $i &amp;lt; count($lines); $i++) {&lt;br /&gt;
			$l = trim($lines[$i]);&lt;br /&gt;
			if ($l == '')&lt;br /&gt;
				continue;&lt;br /&gt;
			$l = preg_replace(&amp;quot;/[^0-9]/i&amp;quot;, &amp;quot; &amp;quot;, $l);&lt;br /&gt;
			$l = preg_replace(&amp;quot;/[[:blank:]]+/i&amp;quot;, &amp;quot; &amp;quot;, $l);&lt;br /&gt;
			$l = trim($l);&lt;br /&gt;
			$arr = explode(&amp;quot; &amp;quot;, $l);&lt;br /&gt;
			if (count($arr) != ($inum + $onum)) {&lt;br /&gt;
				echo &amp;quot;Some problem at line $i: &amp;quot;.$lines[$i].&amp;quot; (&amp;quot;.count($arr).&amp;quot; != &amp;quot;.$inum.&amp;quot; + &amp;quot;.$onum.&amp;quot;)\n&amp;quot;;&lt;br /&gt;
				print_r($arr);&lt;br /&gt;
				exit;&lt;br /&gt;
			}&lt;br /&gt;
			for ($j = 0; $j &amp;lt; $inum; $j++) {&lt;br /&gt;
				$in[$ci][$j] = $arr[$j];&lt;br /&gt;
			}&lt;br /&gt;
			for ($j = 0; $j &amp;lt; $onum; $j++) {&lt;br /&gt;
				$out[$ci][$j] = $arr[($j+$inum)];&lt;br /&gt;
			}&lt;br /&gt;
			$ci++;&lt;br /&gt;
		}&lt;br /&gt;
		if (count($in) != 1 &amp;lt;&amp;lt; $inum) {&lt;br /&gt;
			echo &amp;quot;Check number of lines in truth table (&amp;quot;.count($in).&amp;quot; != &amp;quot;.(1 &amp;lt;&amp;lt; $inum).&amp;quot;)\n&amp;quot;;&lt;br /&gt;
			exit;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function gen_random_truth_table($inum, $onum, &amp;amp;$in, &amp;amp;$out) {&lt;br /&gt;
		$number = (1 &amp;lt;&amp;lt; $inum);&lt;br /&gt;
		&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $number; $i++) {&lt;br /&gt;
			for ($j = 0; $j &amp;lt; $inum; $j++) {&lt;br /&gt;
				$in[$i][$j] = get_bit($i, $j);&lt;br /&gt;
			}&lt;br /&gt;
			for ($j = 0; $j &amp;lt; $onum; $j++) {&lt;br /&gt;
				$out[$i][$j] = mt_rand(0, 1);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// print_r($in);&lt;br /&gt;
		// print_r($out);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function print_table_to_file($file, $in, $out) {&lt;br /&gt;
		$inum = count($in[0]);&lt;br /&gt;
		$onum = count($out[0]);&lt;br /&gt;
		$number = count($in);&lt;br /&gt;
		$o = fopen($file, &amp;quot;w&amp;quot;);&lt;br /&gt;
		fprintf($o, &amp;quot;%d %d\n&amp;quot;, $inum, $onum);&lt;br /&gt;
		for ($i = 0; $i &amp;lt; $number; $i++) {&lt;br /&gt;
			fprintf($o, &amp;quot;%d&amp;quot;, $in[$i][0]);&lt;br /&gt;
			for ($j = 1; $j &amp;lt; $inum; $j++) {&lt;br /&gt;
				fprintf($o, &amp;quot; %d&amp;quot;, $in[$i][$j]);&lt;br /&gt;
			}&lt;br /&gt;
			for ($j = 0; $j &amp;lt; $onum; $j++) {&lt;br /&gt;
				fprintf($o, &amp;quot; %d&amp;quot;, $out[$i][$j]);&lt;br /&gt;
			}&lt;br /&gt;
			fprintf($o, &amp;quot;\n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		fclose($o);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function simple_test() {&lt;br /&gt;
		$kron = get_conversion_matrix(3);&lt;br /&gt;
		$f = array(0, 2, 6, 4, 7, 5, 1, 2);&lt;br /&gt;
		$ret = gen_polinom_koeffs($kron, $f);&lt;br /&gt;
		print_2d_matrix($kron);&lt;br /&gt;
		print_r($ret);&lt;br /&gt;
		print_polinom($ret);&lt;br /&gt;
		check_polinom_linearity($ret);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function check_truth_table_linearity($in_file) {&lt;br /&gt;
		$file = file_get_contents($in_file);&lt;br /&gt;
		read_tt($file, $in, $out);&lt;br /&gt;
		if (check_linearization_possibility($in, $out)) {&lt;br /&gt;
			echo &amp;quot;Possible !!!!\n&amp;quot;;&lt;br /&gt;
		} else {&lt;br /&gt;
			echo &amp;quot;Not possible\n&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function try_to_find_linear_truth_table($out_file, $inum, $onum) {&lt;br /&gt;
		for ($i = 0; $i &amp;lt; 100000; $i++) {&lt;br /&gt;
			unset($in);&lt;br /&gt;
			unset($out);&lt;br /&gt;
			gen_random_truth_table($inum, $onum, $in, $out);&lt;br /&gt;
&lt;br /&gt;
			if (check_linearization_possibility($in, $out)) {&lt;br /&gt;
				print_table_to_file($out_file, $in, $out);&lt;br /&gt;
				echo &amp;quot;Possible !!!!\n&amp;quot;;&lt;br /&gt;
				break;&lt;br /&gt;
			} else {&lt;br /&gt;
				echo &amp;quot;Not possible\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		echo &amp;quot;\n\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	check_truth_table_linearity(&amp;quot;example.txt&amp;quot;);&lt;br /&gt;
	// try_to_find_linear_truth_table(&amp;quot;tt.txt&amp;quot;, 3, 2);&lt;br /&gt;
	&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Примеры логических функций ==&lt;br /&gt;
&lt;br /&gt;
=== Представимы линейным полиномом ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3 4&lt;br /&gt;
0 0 0  0 1 1 1&lt;br /&gt;
0 0 1  0 0 1 1&lt;br /&gt;
0 1 0  1 0 0 0&lt;br /&gt;
0 1 1  0 1 0 0&lt;br /&gt;
1 0 0  1 1 1 0&lt;br /&gt;
1 0 1  1 0 1 0&lt;br /&gt;
1 1 0  1 1 1 1&lt;br /&gt;
1 1 1  1 0 1 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Непредставимы линейным полиномом ===&lt;br /&gt;
&lt;br /&gt;
ISCAS85 C17:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
5 2&lt;br /&gt;
(0, 0, 0, 0, 0) | (0, 0)&lt;br /&gt;
(0, 0, 0, 0, 1) | (0, 1)&lt;br /&gt;
(0, 0, 0, 1, 0) | (0, 0)&lt;br /&gt;
(0, 0, 0, 1, 1) | (0, 1)&lt;br /&gt;
(0, 0, 1, 0, 0) | (0, 0)&lt;br /&gt;
(0, 0, 1, 0, 1) | (0, 1)&lt;br /&gt;
(0, 0, 1, 1, 0) | (0, 0)&lt;br /&gt;
(0, 0, 1, 1, 1) | (0, 0)&lt;br /&gt;
(0, 1, 0, 0, 0) | (1, 1)&lt;br /&gt;
(0, 1, 0, 0, 1) | (1, 1)&lt;br /&gt;
(0, 1, 0, 1, 0) | (1, 1)&lt;br /&gt;
(0, 1, 0, 1, 1) | (1, 1)&lt;br /&gt;
(0, 1, 1, 0, 0) | (1, 1)&lt;br /&gt;
(0, 1, 1, 0, 1) | (1, 1)&lt;br /&gt;
(0, 1, 1, 1, 0) | (0, 0)&lt;br /&gt;
(0, 1, 1, 1, 1) | (0, 0)&lt;br /&gt;
(1, 0, 0, 0, 0) | (0, 0)&lt;br /&gt;
(1, 0, 0, 0, 1) | (0, 1)&lt;br /&gt;
(1, 0, 0, 1, 0) | (0, 0)&lt;br /&gt;
(1, 0, 0, 1, 1) | (0, 1)&lt;br /&gt;
(1, 0, 1, 0, 0) | (1, 0)&lt;br /&gt;
(1, 0, 1, 0, 1) | (1, 1)&lt;br /&gt;
(1, 0, 1, 1, 0) | (1, 0)&lt;br /&gt;
(1, 0, 1, 1, 1) | (1, 0)&lt;br /&gt;
(1, 1, 0, 0, 0) | (1, 1)&lt;br /&gt;
(1, 1, 0, 0, 1) | (1, 1)&lt;br /&gt;
(1, 1, 0, 1, 0) | (1, 1)&lt;br /&gt;
(1, 1, 0, 1, 1) | (1, 1)&lt;br /&gt;
(1, 1, 1, 0, 0) | (1, 1)&lt;br /&gt;
(1, 1, 1, 0, 1) | (1, 1)&lt;br /&gt;
(1, 1, 1, 1, 0) | (1, 0)&lt;br /&gt;
(1, 1, 1, 1, 1) | (1, 0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-11-26T21:48:16Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Система остаточных классов - введение|Учебник по СОК]] - подробное описание системы остаточных классов&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-07-16T09:44:08Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [http://vscripts.ru/2015/temperature.php Клеточный автомат для моделирования температуры]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-07-16T09:43:37Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [Клеточный автомат для моделирования температуры http://vscripts.ru/2015/temperature.php]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-06-08T12:45:55Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-table.php Генератор Verilog для умножения по модулю (метод 4)] - модулярный умножитель на базе таблицы (case)&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-06-04T16:35:13Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2015-06-04T16:28:11Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2015/index-modulo-multiplication-def.php Генератор Verilog для умножения по модулю (метод 3)] - позиционное умножение с последующим прямым преобразованием) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0</id>
		<title>Полезная литература</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0"/>
				<updated>2015-04-08T15:03:40Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Доступ к большим он-лайн библиотекам == &lt;br /&gt;
* [http://onlinelibrary.wiley.com Wiley] - коллекция 1537 полнотекстовых журналов&lt;br /&gt;
* [http://link.springer.com  Издательство Springer] - Полнотекстовая коллекция электронных журналов издательства Springer &lt;br /&gt;
* [http://www.sciencedirect.com Издательство Elsevier] - более 2000 научных журналов с полными текстами&lt;br /&gt;
* [http://iopscience.iop.org/journals Издательство IOP Publishing]&lt;br /&gt;
&lt;br /&gt;
== Базовая литература ==&lt;br /&gt;
* [http://www.amazon.com/Residue-Number-Systems-Implementation-Engineering/dp/1860948669 Residue Number Systems: Theory and Implementation]&lt;br /&gt;
&lt;br /&gt;
== Журналы для публикаций ==&lt;br /&gt;
&amp;lt;!-- Где упоминается residue number system --&amp;gt;&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00963003 Applied Mathematics and Computation]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/08981221 Computers &amp;amp; Mathematics with Applications]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/03770427 Journal of Computational and Applied Mathematics]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/0022314X Journal of Number Theory]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/13837621 Journal of Systems Architecture]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01679260 Integration, the VLSI Journal]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01651684 Signal Processing]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01656074 Microprocessing and Microprogramming]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00457906 Computers &amp;amp; Electrical Engineering]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/03043975 Theoretical Computer Science]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00200190 Information Processing Letters ]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00200255 Information Sciences]&lt;br /&gt;
&lt;br /&gt;
== Статьи ==&lt;br /&gt;
&lt;br /&gt;
=== DSP ===&lt;br /&gt;
* [http://www.researchgate.net/publication/4034620_RDSP_a_RISC_DSP_based_on_residue_number_system/file/9fcfd50a916e3578e8.pdf RDSP: A RISC DSP based on Residue Number System] (2003) - показывает что применение RNS для проектирования 32-битного ЦОС, дает преимущества как по скорости (15%), так и по площади (30%) и по мощности (22%). Используется специальный набор модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;2n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1), который при n=8 покрывает 32-битный диапазон.&lt;br /&gt;
&lt;br /&gt;
=== Подбор базисов ===&lt;br /&gt;
* [http://arxiv.org/pdf/1211.5248v1 Design Of A Reconfigurable DSP Processor With Bit Efficient Residue Number System] (2012) - Бит-эффективный подбор модулей для заданной размерности данных. Основан на специальных наборах вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;). Подбор ведется для заданного количества модулей в базисе от 3 до 6.&lt;br /&gt;
&lt;br /&gt;
=== Специальные модули ===&lt;br /&gt;
* [https://www.jstage.jst.go.jp/article/elex/8/12/8_12_897/_pdf Fully parallel comparator for the moduli set {2^n,2^n-1,2^n+1}] (2011) - быстрое сравнение чисел для базиса вида {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1}, основанный на операции вычитания.&lt;br /&gt;
* [http://etd.lsu.edu/docs/available/etd-11052010-141445/unrestricted/Report_Nov2.pdf OPTIMIZATION OF NEW CHINESE REMAINDER THEOREMS USING SPECIAL MODULI SETS] - новые версии Китайской теоремы об остатках для эффективной реализации немодульных операций на &amp;quot;не классических&amp;quot; специальных наборах модулей.&lt;br /&gt;
* [http://www.iis.ee.ethz.ch/~zimmi/publications/modulo_arith.pdf Efficient VLSI implementation of modulo (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;±1) addition and multiplication] (R Zimmermann, 1999) - эффективное умножение по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;±1&lt;br /&gt;
* [http://www2.lirmm.fr/arith18/papers/Sousa-RNS.pdf Efﬁcient Method for Magnitude Comparison in RNS Based on Two Pairs of Conjugate Moduli] (Leonel Sousa, 2007) - Интересный набор из 4-х спец-модулей. Эффективная реализация прямых/обратных преобразователей. Эффективная реализация сравнения по величине. Использование для проектирования SAD-процессора.&lt;br /&gt;
* [http://ijcsi.org/papers/IJCSI-8-3-1-407-414.pdf Fast Overflow Detection in Moduli Set {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; – 1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + 1}] (Mehrin Rouhifar, Mehdi Hosseinzadeh Saeid Bahanfar and Mohammad Teshnehlab, 2011) - определение переполнения для спецсистемы модулей &lt;br /&gt;
* [https://www2.lirmm.fr/lirmm/interne/BIBLI/CDROM/MIC/2011/ISCAS_2011/Papers/B2L-D-3-1130.pdf A new RNS scaler for {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; – 1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + 1}] (JYS Low, CH Chang, 2011)&lt;br /&gt;
&lt;br /&gt;
=== Округление, масштабирование, деление в модулярной арифметике ===&lt;br /&gt;
* [http://mod.stavsu.ru/articles/sokcon36.pdf МЕТОДЫ И АЛГОРИТМЫ ОКРУГЛЕНИЯ, МАСШТАБИРОВАНИЯ И ДЕЛЕНИЯ ЧИСЕЛ В МОДУЛЯРНОЙ АРИФМЕТИКЕ] - В статье рассмотрены методы и алгоритмы деления числа в модулярном коде на одно из оснований или их произведение.&lt;br /&gt;
&lt;br /&gt;
=== Логические функции ===&lt;br /&gt;
* [http://www.blif.org/~satrajit/pubs/thesis-ds.pdf On Algorithms for Technology Mapping] (2001) - предложены алгоритмы для натягивания логической функции на заданную библиотеку логических элементов.&lt;br /&gt;
&lt;br /&gt;
=== Помехоустойчивость и сбоеустойчивость ===&lt;br /&gt;
* [http://eprints.soton.ac.uk/257134/1/lly-lh-vtcfall-2001-2.pdf REDUNDANT RESIDUE NUMBER SYSTEM BASED ERROR CORRECTION CODES (2001, Lie-Liang Yang and Lajos Hanzo)] - основные формулы для коррекции ошибок на базе RRNS (Избыточной системы остаточных классов).&lt;br /&gt;
* [http://venus.ece.ndsu.nodak.edu/~katti/pdf/j09.pdf A new residue arithmetic error correction scheme] - предложен метод нахождения и коррекции ошибок на основе RNS, в которой система модулей не является взаимнопростой.&lt;br /&gt;
* [http://jtec.utem.edu.my/index2.php?option=com_docman&amp;amp;task=doc_view&amp;amp;gid=86&amp;amp;Itemid=49 Using RRNS Codes for Cluster Faults Tolerance in Hybrid Memories] - использование RNS для локализации ошибок в гибридной памяти &lt;br /&gt;
===== Помехоустойчивая булева логика =====&lt;br /&gt;
* [http://vscripts.ru/res/pdf/boolean%20logic%20with%20fault%20tolerant%20coding.pdf Boolean logic with fault tolerant coding] - помехоустойчивое кодирование при реализации булевых функций&lt;br /&gt;
* [http://www.swsys.ru/index.php?page=article&amp;amp;id=2602 Исследование архитектурной чувствительности к сбоям с использованием метода статистического внесения сбоев] - методология моделирования схем со случайными ошибками&lt;br /&gt;
* [http://ofinko.ru/files/pdf/RID/article_Finko2004aRUS.pdf Реализация систем булевых функций большой размерности методами модулярной арифметики] - принцип реализация булевых функций методами модулярной арифметики&lt;br /&gt;
&lt;br /&gt;
=== КИХ-фильтры (FIR-filters) ===&lt;br /&gt;
* [http://www.comm.utoronto.ca/~dkundur/course_info/real-time-DSP/notes/8_Kundur_Overlap_Save_Add.pdf Overlap-Save and Overlap-Add (Dr. Deepa Kundur)] - доступным языком объяснены методы фильтрации длинных сигналов: Overlap-Add и Overlap-Save.&lt;br /&gt;
* [http://www.researchgate.net/publication/224254503_Fast_and_energy-efficient_constant-coefficient_FIR_filters_using_residue_number_system/file/9fcfd510a99ff86bd7.pdf Fast and energy-efficient constant-coefficient FIR filters using residue number system, 2011]&lt;br /&gt;
* [http://orbit.dtu.dk/fedora/objects/orbit:117124/datastreams/file_94b457b9-1f5f-42f0-8f16-98b195a5efe3/content Power Efficient Design of Parallel/Serial FIR Filters in RNS, 2012]&lt;br /&gt;
&lt;br /&gt;
=== Криптография ===&lt;br /&gt;
* [http://hal.archives-ouvertes.fr/docs/00/09/03/66/PDF/D8.PDF A Full RNS Implementation of RSA (2002)] - реализация RNS с помощью системы остаточных классов&lt;br /&gt;
* [http://www.cai.sk/ojs/index.php/cai/article/viewFile/116/98 MONTGOMERY AND RNS FOR RSA HARDWARE IMPLEMENTATION (2009)] - быстрая реализация RNS с помощью системы остаточных классов (площадь х10, скорость х2)&lt;br /&gt;
* [http://link.springer.com/article/10.1007%2Fs12209-012-1902-7 Hardware architecture for RSA cryptography based on residue number system (2012)]&lt;br /&gt;
* [http://www.ddt.cs.vsu.ru/?q=system/files/09.pdf Криптография с использованием эллиптических кривых]&lt;br /&gt;
* [http://www.ccs.asia.edu.tw/ezfiles/2/1002/img/370/1203-3.pdf Elliptic Curve Point Multiplication by Generalized Mersenne Numbers] - реализация модулярного умножения Монтгомери для вычислений на эллиптических кривых, базирующаяся на обобщенных числах Мерсена&lt;br /&gt;
&lt;br /&gt;
== Книги ==&lt;br /&gt;
=== Математика ===&lt;br /&gt;
* [http://ftfsite.ru/wp-content/files/mmf_tfkp_LavrentevShabat1965ru_2.2.pdf Методы теории функций комплексного переменного] (М.А. Лаврентьев Б.В. Шабат)&lt;br /&gt;
* [http://topology.math.csu.ru/library/posob/terch/VINOGRADOV_NUMBER_THEORY.PDF Основы теории чисел (Виноградов И.М.)]&lt;br /&gt;
* [http://bookinist.net/books/bookid-320879.html Непозиционные представления в многомерных числовых системах] (Синьков М.В., Губарени Н.М. (1979))&lt;br /&gt;
&lt;br /&gt;
== Сайты со статьями по модулярной арифметике ==&lt;br /&gt;
* [http://ofinko.ru/index.php/rid Официальный сайт ученого Финько Олега Анатольевича]&lt;br /&gt;
&lt;br /&gt;
== Разное ==&lt;br /&gt;
* [http://amath.colorado.edu/documentation/LaTeX/Symbols.pdf Символы Latex]&lt;br /&gt;
* [https://github.com/zhemao/ez8 Описание 8-битного процессора (The easy 8-bit processor)]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Matlab_residue_library</id>
		<title>Matlab residue library</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Matlab_residue_library"/>
				<updated>2015-02-11T14:04:04Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: Новая страница: «Состав  * [http://vscripts.ru/res/2015/matlab/residue_lib.mdl residue_lib.mdl] - библотека модулярных умножителей, сумат…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Состав&lt;br /&gt;
&lt;br /&gt;
* [http://vscripts.ru/res/2015/matlab/residue_lib.mdl residue_lib.mdl] - библотека модулярных умножителей, суматоров, преобразователей и т.д.&lt;br /&gt;
* [http://vscripts.ru/res/2015/matlab/module_convolution.mdl module_convolution.mdl] - основная схема с параметризируемыми подблоками и схемами, в разных вариациях&lt;br /&gt;
* [http://vscripts.ru/res/2015/matlab/module_basic.mdl module_basic.mdl] - вспомогательная схема проверки основных операций сложения и умножения.&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2014-12-04T17:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2014/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2014-12-04T17:42:32Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2014/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2013/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2014-11-26T10:56:04Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
# [http://vscripts.ru/2014/modular-multi-sum.php Генератор Verilog для многовходового сумматора по произвольному модулю] - несколько различных вариантов сумматора нескольких переменных по модулю.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2013/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2014-11-13T16:44:41Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2013/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Схемы ISCAS85]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2014-10-09T12:33:20Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2013/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
# [http://vscripts.ru/2014/coder_decoder_galua_generator.php Генератор Verilog для кодера и декодера Галуа] - только отдельные кодер и декодер.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Метод инжектирования ошибок для оценки надежностных характеристик комбинационных схем]]&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_-_%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5</id>
		<title>Система остаточных классов - введение</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_-_%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5"/>
				<updated>2014-08-28T10:02:28Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Теоретико-числовая база построения системы остаточных классов =&lt;br /&gt;
&lt;br /&gt;
Напомним определение деления с остатком.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Определение. Говорят, что целое число &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; делится на натуральное число &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; с остатком, если имеется пара целых чисел &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, таких, что &amp;lt;math&amp;gt;n = m \cdot q+r&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;0\le r&amp;lt;m&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; называется делимым, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - делителем, &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; - неполным частным, &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; - остатком.&lt;br /&gt;
&lt;br /&gt;
Для целых чисел:&lt;br /&gt;
Определение. Говорят, что целое число &amp;lt;math&amp;gt;n \in Z&amp;lt;/math&amp;gt; делится на натуральное число &amp;lt;math&amp;gt;m \in Z&amp;lt;/math&amp;gt; с остатком, если имеется пара целых чисел &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, таких, что &amp;lt;math&amp;gt;n = m \cdot q+r&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;0\le r&amp;lt;|m|&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример: '''48''' при делении на '''5''' даёт остаток '''3''', т.к. &amp;lt;math&amp;gt;48=5\cdot 9+3&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0\le 3&amp;lt;5&amp;lt;/math&amp;gt;, '''-48''' при делении на '''5''' даёт остаток '''2''', т.к. &amp;lt;math&amp;gt;-48=5\cdot (-10)+2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0\le 2&amp;lt;5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Сравнения и их основные свойства ==&lt;br /&gt;
&lt;br /&gt;
Возьмём произвольное фиксированное натуральное число &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; и будем рассматривать остатки при делении на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; различных целых чисел.&lt;br /&gt;
&lt;br /&gt;
При рассмотрении свойств этих остатков и проведении операций над ними удобно ввести понятие сравнения по модулю.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Определение. Два целых числа &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; b &amp;lt;/math&amp;gt; называются '''сравнимыми по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;''', если их разность &amp;lt;math&amp;gt; a-b &amp;lt;/math&amp;gt; делится без остатка на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Символически сравнимость записывается в виде формулы ('''сравнения'''):&lt;br /&gt;
: &amp;lt;math&amp;gt;a \equiv b \pmod{m}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Число &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; называется '''модулем''' сравнения.&lt;br /&gt;
&lt;br /&gt;
Эквивалентная формулировка:&lt;br /&gt;
&lt;br /&gt;
Определение. Целые числа &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; b &amp;lt;/math&amp;gt; называются '''сравнимыми по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;''', если остатки от деления этих чисел на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; равны.&lt;br /&gt;
&lt;br /&gt;
Отношение сравнимости по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; обладает свойствами рефлексивности, симметричности и транзитивности, т.е. является отношением эквивалентности.&lt;br /&gt;
&lt;br /&gt;
Отнесём все целые числа, дающие при делении на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;  один и тот же остаток в один класс, поэтому получится &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; различных классов по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
Множество всех чисел сравнимых с &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;называется '''классом вычетов &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Подробнее о свойствах сравнений и классах вычетов смотри [[Сравнения и их основные свойства| Сравнения и их основные свойства]] &lt;br /&gt;
&lt;br /&gt;
== Теорема о делении с остатком. Алгоритм Евклида ==&lt;br /&gt;
&lt;br /&gt;
'''Теорема о делении с остатком'''&lt;br /&gt;
для любых целых ''a'' и ''b'',&lt;br /&gt;
&amp;lt;math&amp;gt;b \not= 0&amp;lt;/math&amp;gt;, существует единственный набор целых чисел ''q'' и ''r'', что a = bq + r и &amp;lt;math&amp;gt;0 \le r &amp;lt; |b|&amp;lt;/math&amp;gt;, где |''b''| — модуль числа ''b''.&lt;br /&gt;
&lt;br /&gt;
На этой операции основан алгоритм Евклида нахождения наибольшего общего делителя двух целых чисел.&lt;br /&gt;
&lt;br /&gt;
'''Алгоритм Евклида для целых чисел'''&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; — целые числа, не равные одновременно нулю, и последовательность чисел&lt;br /&gt;
: &amp;lt;math&amp;gt; a &amp;gt; b &amp;gt; r_1 &amp;gt; r_2 &amp;gt; r_3 &amp;gt; r_4 &amp;gt; \cdots &amp;gt;r_n&amp;lt;/math&amp;gt;&lt;br /&gt;
определена тем, что каждое &amp;lt;math&amp;gt;r_k&amp;lt;/math&amp;gt; — это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, то есть&lt;br /&gt;
: &amp;lt;math&amp;gt;a = bq_0 + r_1&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;b = r_1q_1 + r_2&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_1 = r_2q_2 + r_3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\cdots&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{k-2} = r_{k-1} q_{k-1} + r_k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\cdots&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{n-2} = r_{n-1}q_{n-1}+ r_n&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{n-1} = r_n q_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда НОД(''a'',''b''), наибольший общий делитель &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, равен&lt;br /&gt;
&amp;lt;math&amp;gt;r_n&amp;lt;/math&amp;gt;, последнему ненулевому члену этой последовательности.&lt;br /&gt;
&lt;br /&gt;
'''Существование''' таких &amp;lt;math&amp;gt;r_1, r_2, ...&amp;lt;/math&amp;gt;, то есть возможность деления с остатком &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; для любого целого &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и целого &amp;lt;math&amp;gt;b\ne 0&amp;lt;/math&amp;gt;, доказывается индукцией.&lt;br /&gt;
&lt;br /&gt;
'''Корректность''' этого алгоритма вытекает из следующих двух утверждений:&lt;br /&gt;
* Пусть &amp;lt;math&amp;gt;a = bq + r&amp;lt;/math&amp;gt;, тогда НОД (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;) = НОД (&amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;).&lt;br /&gt;
* НОД(0,&amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;) = &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; для любого ненулевого &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; (так как 0 делится на любое целое число, кроме нуля).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Китайская теорема об остатках ==&lt;br /&gt;
&lt;br /&gt;
== Теоремы Эйлера и Ферма, их роль в вычислении мультипликативных обратных элементов по заданному модулю ==&lt;br /&gt;
&lt;br /&gt;
== Числа Мерсенна, Ферма и операции над ними ==&lt;br /&gt;
&lt;br /&gt;
= Математические модели модулярного представления и параллельной обработки информации =&lt;br /&gt;
&lt;br /&gt;
== Представление числа в системе остаточных классов. Модульные операции ==&lt;br /&gt;
&lt;br /&gt;
== Основные методы и алгоритмы перехода от позиционного представления к остаткам ==&lt;br /&gt;
&lt;br /&gt;
== Восстановление позиционного представления числа по его остаткам ==&lt;br /&gt;
&lt;br /&gt;
== Расширение диапазона представления чисел ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_-_%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5</id>
		<title>Система остаточных классов - введение</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_-_%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5"/>
				<updated>2014-08-27T16:54:39Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Теоретико-числовая база построения системы остаточных классов =&lt;br /&gt;
&lt;br /&gt;
Напомним определение деления с остатком.&lt;br /&gt;
&lt;br /&gt;
Определение. Говорят, что целое число &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; делится на натуральное число &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; с остатком, если имеется пара целых чисел &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, таких, что &amp;lt;math&amp;gt;n = m \cdot q+r&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;0\le r&amp;lt;m&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; называется делимым, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - делителем, &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; - неполным частным, &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; - остатком.&lt;br /&gt;
&lt;br /&gt;
Для целых чисел:&lt;br /&gt;
Определение. Говорят, что целое число &amp;lt;math&amp;gt;n \in Z&amp;lt;/math&amp;gt; делится на натуральное число &amp;lt;math&amp;gt;m \in Z&amp;lt;/math&amp;gt; с остатком, если имеется пара целых чисел &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, таких, что &amp;lt;math&amp;gt;n = m \cdot q+r&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;0\le r&amp;lt;|m|&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример: '''48''' при делении на '''5''' даёт остаток '''3''', т.к. &amp;lt;math&amp;gt;48=5\cdot 9+3&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0\le 3&amp;lt;5&amp;lt;/math&amp;gt;, '''-48''' при делении на '''5''' даёт остаток '''2''', т.к. &amp;lt;math&amp;gt;-48=5\cdot (-10)+2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0\le 2&amp;lt;5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Сравнения и их основные свойства ==&lt;br /&gt;
&lt;br /&gt;
Возьмём произвольное фиксированное натуральное число &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; и будем рассматривать остатки при делении на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; различных целых чисел.&lt;br /&gt;
&lt;br /&gt;
При рассмотрении свойств этих остатков и проведении операций над ними удобно ввести понятие сравнения по модулю.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Определение. Два целых числа &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;и &amp;lt;math&amp;gt; b &amp;lt;/math&amp;gt;называются '''сравнимыми по модулю m''', если их разность &amp;lt;math&amp;gt; a − b &amp;lt;/math&amp;gt; делится без остатка на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Символически сравнимость записывается в виде формулы ('''сравнения'''):&lt;br /&gt;
: &amp;lt;math&amp;gt;a \equiv b \pmod{m}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Число &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; называется '''модулем''' сравнения.&lt;br /&gt;
&lt;br /&gt;
Эквивалентная формулировка:&lt;br /&gt;
&lt;br /&gt;
Определение. Целые числа &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;и &amp;lt;math&amp;gt; b &amp;lt;/math&amp;gt;называются '''сравнимыми по модулю m''', если остатки от деления этих чисел на&amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; равны.&lt;br /&gt;
&lt;br /&gt;
Отношение сравнимости по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; обладает свойствами рефлексивности, симметричности и транзитивности, т.е. является отношением эквивалентности.&lt;br /&gt;
&lt;br /&gt;
Отнесём все целые числа, дающие при делении на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;  один и тот же остаток в один класс, поэтому получится &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; различных классов по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
Множество всех чисел сравнимых с &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;называется '''классом вычетов &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Подробнее о свойствах сравнений и классах вычетов смотри [[Сравнения и их основные свойства| Сравнения и их основные свойства]] &lt;br /&gt;
&lt;br /&gt;
== Теорема о делении с остатком. Алгоритм Евклида ==&lt;br /&gt;
&lt;br /&gt;
'''Теорема о делении с остатком'''&lt;br /&gt;
для любых целых ''a'' и ''b'',&lt;br /&gt;
&amp;lt;math&amp;gt;b \not= 0&amp;lt;/math&amp;gt;, существует единственный набор целых чисел ''q'' и ''r'', что a = bq + r и &amp;lt;math&amp;gt;0 \le r &amp;lt; |b|&amp;lt;/math&amp;gt;, где |''b''| — модуль числа ''b''.&lt;br /&gt;
&lt;br /&gt;
На этой операции основан алгоритм Евклида нахождения наибольшего общего делителя двух целых чисел.&lt;br /&gt;
&lt;br /&gt;
'''Алгоритм Евклида для целых чисел'''&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; — целые числа, не равные одновременно нулю, и последовательность чисел&lt;br /&gt;
: &amp;lt;math&amp;gt; a &amp;gt; b &amp;gt; r_1 &amp;gt; r_2 &amp;gt; r_3 &amp;gt; r_4 &amp;gt; \cdots &amp;gt;r_n&amp;lt;/math&amp;gt;&lt;br /&gt;
определена тем, что каждое &amp;lt;math&amp;gt;r_k&amp;lt;/math&amp;gt; — это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, то есть&lt;br /&gt;
: &amp;lt;math&amp;gt;a = bq_0 + r_1&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;b = r_1q_1 + r_2&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_1 = r_2q_2 + r_3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\cdots&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{k-2} = r_{k-1} q_{k-1} + r_k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\cdots&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{n-2} = r_{n-1}q_{n-1}+ r_n&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{n-1} = r_n q_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда НОД(''a'',''b''), наибольший общий делитель &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, равен&lt;br /&gt;
&amp;lt;math&amp;gt;r_n&amp;lt;/math&amp;gt;, последнему ненулевому члену этой последовательности.&lt;br /&gt;
&lt;br /&gt;
'''Существование''' таких &amp;lt;math&amp;gt;r_1, r_2, ...&amp;lt;/math&amp;gt;, то есть возможность деления с остатком &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; для любого целого &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и целого &amp;lt;math&amp;gt;b\ne 0&amp;lt;/math&amp;gt;, доказывается индукцией.&lt;br /&gt;
&lt;br /&gt;
'''Корректность''' этого алгоритма вытекает из следующих двух утверждений:&lt;br /&gt;
* Пусть &amp;lt;math&amp;gt;a = bq + r&amp;lt;/math&amp;gt;, тогда НОД (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;) = НОД (&amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;).&lt;br /&gt;
* НОД(0,&amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;) = &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; для любого ненулевого &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; (так как 0 делится на любое целое число, кроме нуля).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Китайская теорема об остатках ==&lt;br /&gt;
&lt;br /&gt;
== Теоремы Эйлера и Ферма, их роль в вычислении мультипликативных обратных элементов по заданному модулю ==&lt;br /&gt;
&lt;br /&gt;
== Числа Мерсенна, Ферма и операции над ними ==&lt;br /&gt;
&lt;br /&gt;
= Математические модели модулярного представления и параллельной обработки информации =&lt;br /&gt;
&lt;br /&gt;
== Представление числа в системе остаточных классов. Модульные операции ==&lt;br /&gt;
&lt;br /&gt;
== Основные методы и алгоритмы перехода от позиционного представления к остаткам ==&lt;br /&gt;
&lt;br /&gt;
== Восстановление позиционного представления числа по его остаткам ==&lt;br /&gt;
&lt;br /&gt;
== Расширение диапазона представления чисел ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_-_%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5</id>
		<title>Система остаточных классов - введение</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D1%85_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%BE%D0%B2_-_%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5"/>
				<updated>2014-08-27T16:46:02Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Теоретико-числовая база построения системы остаточных классов =&lt;br /&gt;
&lt;br /&gt;
Напомним определение деления с остатком.&lt;br /&gt;
&lt;br /&gt;
Определение. Говорят, что целое число &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; делится на натуральное число &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; с остатком, если имеется пара целых чисел &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, таких, что &amp;lt;math&amp;gt;n = m \cdot q+r&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;0\le r&amp;lt;m&amp;lt;/math&amp;gt;. &lt;br /&gt;
&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; называется делимым, &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; - делителем, &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; - неполным частным, &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; - остатком.&lt;br /&gt;
&lt;br /&gt;
Для целых чисел:&lt;br /&gt;
&lt;br /&gt;
Определение.  Говорят, что целое число &amp;lt;math&amp;gt;n \in Z&amp;lt;/math&amp;gt; делится на натуральное число &amp;lt;math&amp;gt;m \in Z&amp;lt;/math&amp;gt; с остатком, если имеется пара целых чисел &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, таких, что &amp;lt;math&amp;gt;n = m \cdot q+r&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;0\le r&amp;lt;|m|&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример: '''48''' при делении на '''5''' даёт остаток '''3''', т.к. &amp;lt;math&amp;gt;48=5\cdot 9+3&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0\le 3&amp;lt;5&amp;lt;/math&amp;gt;, '''-48''' при делении на '''5''' даёт остаток '''2''', т.к. &amp;lt;math&amp;gt;-48=5\cdot (-10)+2&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0\le 2&amp;lt;5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Сравнения и их основные свойства ==&lt;br /&gt;
&lt;br /&gt;
Возьмём произвольное фиксированное натуральное число &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; и будем рассматривать остатки при делении на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; различных целых чисел.&lt;br /&gt;
&lt;br /&gt;
При рассмотрении свойств этих остатков и проведении операций над ними удобно ввести понятие сравнения по модулю.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Определение. Два целых числа &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;и &amp;lt;math&amp;gt; b &amp;lt;/math&amp;gt;называются '''сравнимыми по модулю m''', если их разность &amp;lt;math&amp;gt; a − b &amp;lt;/math&amp;gt; делится без остатка на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Символически сравнимость записывается в виде формулы ('''сравнения'''):&lt;br /&gt;
: &amp;lt;math&amp;gt;a \equiv b \pmod{m}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Число &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; называется '''модулем''' сравнения.&lt;br /&gt;
&lt;br /&gt;
Эквивалентная формулировка:&lt;br /&gt;
&lt;br /&gt;
Определение. Целые числа &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;и &amp;lt;math&amp;gt; b &amp;lt;/math&amp;gt;называются '''сравнимыми по модулю m''', если остатки от деления этих чисел на&amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; равны.&lt;br /&gt;
&lt;br /&gt;
Отношение сравнимости по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; обладает свойствами рефлексивности, симметричности и транзитивности, т.е. является отношением эквивалентности.&lt;br /&gt;
&lt;br /&gt;
Отнесём все целые числа, дающие при делении на &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;  один и тот же остаток в один класс, поэтому получится &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt; различных классов по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
Множество всех чисел сравнимых с &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;называется '''классом вычетов &amp;lt;math&amp;gt; a &amp;lt;/math&amp;gt;по модулю &amp;lt;math&amp;gt; m &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Подробнее о свойствах сравнений и классах вычетов смотри [[Сравнения и их основные свойства| Сравнения и их основные свойства]] &lt;br /&gt;
&lt;br /&gt;
== Теорема о делении с остатком. Алгоритм Евклида ==&lt;br /&gt;
&lt;br /&gt;
'''Теорема о делении с остатком'''&lt;br /&gt;
для любых целых ''a'' и ''b'',&lt;br /&gt;
&amp;lt;math&amp;gt;b \not= 0&amp;lt;/math&amp;gt;, существует единственный набор целых чисел ''q'' и ''r'', что a = bq + r и &amp;lt;math&amp;gt;0 \le r &amp;lt; |b|&amp;lt;/math&amp;gt;, где |''b''| — модуль числа ''b''.&lt;br /&gt;
&lt;br /&gt;
На этой операции основан алгоритм Евклида нахождения наибольшего общего делителя двух целых чисел.&lt;br /&gt;
&lt;br /&gt;
'''Алгоритм Евклида для целых чисел'''&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; — целые числа, не равные одновременно нулю, и последовательность чисел&lt;br /&gt;
: &amp;lt;math&amp;gt; a &amp;gt; b &amp;gt; r_1 &amp;gt; r_2 &amp;gt; r_3 &amp;gt; r_4 &amp;gt; \cdots &amp;gt;r_n&amp;lt;/math&amp;gt;&lt;br /&gt;
определена тем, что каждое &amp;lt;math&amp;gt;r_k&amp;lt;/math&amp;gt; — это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, то есть&lt;br /&gt;
: &amp;lt;math&amp;gt;a = bq_0 + r_1&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;b = r_1q_1 + r_2&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_1 = r_2q_2 + r_3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\cdots&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{k-2} = r_{k-1} q_{k-1} + r_k&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;\cdots&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{n-2} = r_{n-1}q_{n-1}+ r_n&amp;lt;/math&amp;gt;&lt;br /&gt;
: &amp;lt;math&amp;gt;r_{n-1} = r_n q_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Тогда НОД(''a'',''b''), наибольший общий делитель &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, равен&lt;br /&gt;
&amp;lt;math&amp;gt;r_n&amp;lt;/math&amp;gt;, последнему ненулевому члену этой последовательности.&lt;br /&gt;
&lt;br /&gt;
'''Существование''' таких &amp;lt;math&amp;gt;r_1, r_2, ...&amp;lt;/math&amp;gt;, то есть возможность деления с остатком &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; для любого целого &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; и целого &amp;lt;math&amp;gt;b\ne 0&amp;lt;/math&amp;gt;, доказывается индукцией.&lt;br /&gt;
&lt;br /&gt;
'''Корректность''' этого алгоритма вытекает из следующих двух утверждений:&lt;br /&gt;
* Пусть &amp;lt;math&amp;gt;a = bq + r&amp;lt;/math&amp;gt;, тогда НОД (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;) = НОД (&amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;).&lt;br /&gt;
* НОД(0,&amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;) = &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; для любого ненулевого &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; (так как 0 делится на любое целое число, кроме нуля).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Китайская теорема об остатках ==&lt;br /&gt;
&lt;br /&gt;
== Теоремы Эйлера и Ферма, их роль в вычислении мультипликативных обратных элементов по заданному модулю ==&lt;br /&gt;
&lt;br /&gt;
== Числа Мерсенна, Ферма и операции над ними ==&lt;br /&gt;
&lt;br /&gt;
= Математические модели модулярного представления и параллельной обработки информации =&lt;br /&gt;
&lt;br /&gt;
== Представление числа в системе остаточных классов. Модульные операции ==&lt;br /&gt;
&lt;br /&gt;
== Основные методы и алгоритмы перехода от позиционного представления к остаткам ==&lt;br /&gt;
&lt;br /&gt;
== Восстановление позиционного представления числа по его остаткам ==&lt;br /&gt;
&lt;br /&gt;
== Расширение диапазона представления чисел ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0</id>
		<title>Полезная литература</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0"/>
				<updated>2014-08-06T10:42:31Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Доступ к большим он-лайн библиотекам == &lt;br /&gt;
* [http://www.sciencedirect.com Издательство Elsevier] - более 2000 научных журналов с полными текстами&lt;br /&gt;
* [http://www.springerlink.com Издательство Springer] - более 1200 научных журналов с полными текстами&lt;br /&gt;
* [http://iopscience.iop.org/journals Издательство IOP Publishing]&lt;br /&gt;
&lt;br /&gt;
== Базовая литература ==&lt;br /&gt;
* [http://www.amazon.com/Residue-Number-Systems-Implementation-Engineering/dp/1860948669 Residue Number Systems: Theory and Implementation]&lt;br /&gt;
&lt;br /&gt;
== Журналы для публикаций ==&lt;br /&gt;
&amp;lt;!-- Где упоминается residue number system --&amp;gt;&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00963003 Applied Mathematics and Computation]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/08981221 Computers &amp;amp; Mathematics with Applications]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/03770427 Journal of Computational and Applied Mathematics]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/0022314X Journal of Number Theory]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/13837621 Journal of Systems Architecture]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01679260 Integration, the VLSI Journal]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01651684 Signal Processing]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01656074 Microprocessing and Microprogramming]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00457906 Computers &amp;amp; Electrical Engineering]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/03043975 Theoretical Computer Science]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00200190 Information Processing Letters ]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00200255 Information Sciences]&lt;br /&gt;
&lt;br /&gt;
== Статьи ==&lt;br /&gt;
&lt;br /&gt;
=== DSP ===&lt;br /&gt;
* [http://www.researchgate.net/publication/4034620_RDSP_a_RISC_DSP_based_on_residue_number_system/file/9fcfd50a916e3578e8.pdf RDSP: A RISC DSP based on Residue Number System] (2003) - показывает что применение RNS для проектирования 32-битного ЦОС, дает преимущества как по скорости (15%), так и по площади (30%) и по мощности (22%). Используется специальный набор модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;2n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1), который при n=8 покрывает 32-битный диапазон.&lt;br /&gt;
&lt;br /&gt;
=== Подбор базисов ===&lt;br /&gt;
* [http://arxiv.org/pdf/1211.5248v1 Design Of A Reconfigurable DSP Processor With Bit Efficient Residue Number System] (2012) - Бит-эффективный подбор модулей для заданной размерности данных. Основан на специальных наборах вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;). Подбор ведется для заданного количества модулей в базисе от 3 до 6.&lt;br /&gt;
&lt;br /&gt;
=== Специальные модули ===&lt;br /&gt;
* [https://www.jstage.jst.go.jp/article/elex/8/12/8_12_897/_pdf Fully parallel comparator for the moduli set {2^n,2^n-1,2^n+1}] (2011) - быстрое сравнение чисел для базиса вида {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1}, основанный на операции вычитания.&lt;br /&gt;
* [http://etd.lsu.edu/docs/available/etd-11052010-141445/unrestricted/Report_Nov2.pdf OPTIMIZATION OF NEW CHINESE REMAINDER THEOREMS USING SPECIAL MODULI SETS] - новые версии Китайской теоремы об остатках для эффективной реализации немодульных операций на &amp;quot;не классических&amp;quot; специальных наборах модулей.&lt;br /&gt;
* [http://www.iis.ee.ethz.ch/~zimmi/publications/modulo_arith.pdf Efficient VLSI implementation of modulo (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;±1) addition and multiplication] (R Zimmermann, 1999) - эффективное умножение по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;±1&lt;br /&gt;
* [http://www2.lirmm.fr/arith18/papers/Sousa-RNS.pdf Efﬁcient Method for Magnitude Comparison in RNS Based on Two Pairs of Conjugate Moduli] (Leonel Sousa, 2007) - Интересный набор из 4-х спец-модулей. Эффективная реализация прямых/обратных преобразователей. Эффективная реализация сравнения по величине. Использование для проектирования SAD-процессора.&lt;br /&gt;
* [http://ijcsi.org/papers/IJCSI-8-3-1-407-414.pdf Fast Overflow Detection in Moduli Set {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; – 1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + 1}] (Mehrin Rouhifar, Mehdi Hosseinzadeh Saeid Bahanfar and Mohammad Teshnehlab, 2011) - определение переполнения для спецсистемы модулей &lt;br /&gt;
* [https://www2.lirmm.fr/lirmm/interne/BIBLI/CDROM/MIC/2011/ISCAS_2011/Papers/B2L-D-3-1130.pdf A new RNS scaler for {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; – 1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + 1}] (JYS Low, CH Chang, 2011)&lt;br /&gt;
&lt;br /&gt;
=== Округление, масштабирование, деление в модулярной арифметике ===&lt;br /&gt;
* [http://mod.stavsu.ru/articles/sokcon36.pdf МЕТОДЫ И АЛГОРИТМЫ ОКРУГЛЕНИЯ, МАСШТАБИРОВАНИЯ И ДЕЛЕНИЯ ЧИСЕЛ В МОДУЛЯРНОЙ АРИФМЕТИКЕ] - В статье рассмотрены методы и алгоритмы деления числа в модулярном коде на одно из оснований или их произведение.&lt;br /&gt;
&lt;br /&gt;
=== Логические функции ===&lt;br /&gt;
* [http://www.blif.org/~satrajit/pubs/thesis-ds.pdf On Algorithms for Technology Mapping] (2001) - предложены алгоритмы для натягивания логической функции на заданную библиотеку логических элементов.&lt;br /&gt;
&lt;br /&gt;
=== Помехоустойчивость и сбоеустойчивость ===&lt;br /&gt;
* [http://eprints.soton.ac.uk/257134/1/lly-lh-vtcfall-2001-2.pdf REDUNDANT RESIDUE NUMBER SYSTEM BASED ERROR CORRECTION CODES (2001, Lie-Liang Yang and Lajos Hanzo)] - основные формулы для коррекции ошибок на базе RRNS (Избыточной системы остаточных классов).&lt;br /&gt;
* [http://venus.ece.ndsu.nodak.edu/~katti/pdf/j09.pdf A new residue arithmetic error correction scheme] - предложен метод нахождения и коррекции ошибок на основе RNS, в которой система модулей не является взаимнопростой.&lt;br /&gt;
* [http://jtec.utem.edu.my/index2.php?option=com_docman&amp;amp;task=doc_view&amp;amp;gid=86&amp;amp;Itemid=49 Using RRNS Codes for Cluster Faults Tolerance in Hybrid Memories] - использование RNS для локализации ошибок в гибридной памяти &lt;br /&gt;
===== Помехоустойчивая булева логика =====&lt;br /&gt;
* [http://vscripts.ru/res/pdf/boolean%20logic%20with%20fault%20tolerant%20coding.pdf Boolean logic with fault tolerant coding] - помехоустойчивое кодирование при реализации булевых функций&lt;br /&gt;
* [http://www.swsys.ru/index.php?page=article&amp;amp;id=2602 Исследование архитектурной чувствительности к сбоям с использованием метода статистического внесения сбоев] - методология моделирования схем со случайными ошибками&lt;br /&gt;
* [http://ofinko.ru/files/pdf/RID/article_Finko2004aRUS.pdf Реализация систем булевых функций большой размерности методами модулярной арифметики] - принцип реализация булевых функций методами модулярной арифметики&lt;br /&gt;
&lt;br /&gt;
=== КИХ-фильтры (FIR-filters) ===&lt;br /&gt;
* [http://www.comm.utoronto.ca/~dkundur/course_info/real-time-DSP/notes/8_Kundur_Overlap_Save_Add.pdf Overlap-Save and Overlap-Add (Dr. Deepa Kundur)] - доступным языком объяснены методы фильтрации длинных сигналов: Overlap-Add и Overlap-Save.&lt;br /&gt;
* [http://www.researchgate.net/publication/224254503_Fast_and_energy-efficient_constant-coefficient_FIR_filters_using_residue_number_system/file/9fcfd510a99ff86bd7.pdf Fast and energy-efficient constant-coefficient FIR filters using residue number system, 2011]&lt;br /&gt;
* [http://orbit.dtu.dk/fedora/objects/orbit:117124/datastreams/file_94b457b9-1f5f-42f0-8f16-98b195a5efe3/content Power Efficient Design of Parallel/Serial FIR Filters in RNS, 2012]&lt;br /&gt;
&lt;br /&gt;
=== Криптография ===&lt;br /&gt;
* [http://hal.archives-ouvertes.fr/docs/00/09/03/66/PDF/D8.PDF A Full RNS Implementation of RSA (2002)] - реализация RNS с помощью системы остаточных классов&lt;br /&gt;
* [http://www.cai.sk/ojs/index.php/cai/article/viewFile/116/98 MONTGOMERY AND RNS FOR RSA HARDWARE IMPLEMENTATION (2009)] - быстрая реализация RNS с помощью системы остаточных классов (площадь х10, скорость х2)&lt;br /&gt;
* [http://link.springer.com/article/10.1007%2Fs12209-012-1902-7 Hardware architecture for RSA cryptography based on residue number system (2012)]&lt;br /&gt;
* [http://www.ddt.cs.vsu.ru/?q=system/files/09.pdf Криптография с использованием эллиптических кривых]&lt;br /&gt;
* [http://www.ccs.asia.edu.tw/ezfiles/2/1002/img/370/1203-3.pdf Elliptic Curve Point Multiplication by Generalized Mersenne Numbers] - реализация модулярного умножения Монтгомери для вычислений на эллиптических кривых, базирующаяся на обобщенных числах Мерсена&lt;br /&gt;
&lt;br /&gt;
== Книги ==&lt;br /&gt;
=== Математика ===&lt;br /&gt;
* [http://ftfsite.ru/wp-content/files/mmf_tfkp_LavrentevShabat1965ru_2.2.pdf Методы теории функций комплексного переменного] (М.А. Лаврентьев Б.В. Шабат)&lt;br /&gt;
* [http://topology.math.csu.ru/library/posob/terch/VINOGRADOV_NUMBER_THEORY.PDF Основы теории чисел (Виноградов И.М.)]&lt;br /&gt;
* [http://bookinist.net/books/bookid-320879.html Непозиционные представления в многомерных числовых системах] (Синьков М.В., Губарени Н.М. (1979))&lt;br /&gt;
&lt;br /&gt;
== Сайты со статьями по модулярной арифметике ==&lt;br /&gt;
* [http://ofinko.ru/index.php/rid Официальный сайт ученого Финько Олега Анатольевича]&lt;br /&gt;
&lt;br /&gt;
== Разное ==&lt;br /&gt;
* [http://amath.colorado.edu/documentation/LaTeX/Symbols.pdf Символы Latex]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_ISCAS85</id>
		<title>Схемы ISCAS85</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_ISCAS85"/>
				<updated>2014-07-11T06:16:28Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Набор типовых комбинационных микроэлектронных схем для тестирования эффективности алгоритмов&lt;br /&gt;
&lt;br /&gt;
== Список схем набора ==&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;Наименование схемы&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;Исходное описание схемы&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;В базисе библиотеки Nangate&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;В базисе библиотеки Nangate c базовыми вентилями&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c17&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c17.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c17_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c17_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c432&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c432_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c432_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c499&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c499.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c499_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c499_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c880&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c880.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c880_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c880_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c1355&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c1355.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c1355_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c1355_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c1908&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c1908.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c1908_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c1908_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c2670&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c2670.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c2670_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c2670_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c3540&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c3540.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c3540_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c3540_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c5315&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c5315.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c5315_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c5315_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c6288&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c6288.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c6288_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c6288_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c7552&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c7552.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c7552_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c7552_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Набор подсхем из схемы c432 ===&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;Наименование схемы&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;Исходное описание схемы&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;В базисе библиотеки Nangate&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;В базисе библиотеки Nangate c базовыми вентилями&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;74181&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74181.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74181_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74181_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;74182&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74182.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74182_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74182_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;74283&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74283.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74283_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74283_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;74L85&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74L85.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74L85_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74L85_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
== Используемые библиотеки стандартных ячеек ==&lt;br /&gt;
&lt;br /&gt;
[http://vscripts.ru/res/testckt/verilog/libs/NangateOpenCellLibrary.db Исходная библиотека Nangate в &amp;quot;.db&amp;quot; формате]&lt;br /&gt;
&lt;br /&gt;
[http://vscripts.ru/res/testckt/verilog/libs/NangateOpenCellLibrary_typical_conditional_nldm.lib Исходная библиотека Nangate в &amp;quot;.lib&amp;quot; формате]&lt;br /&gt;
&lt;br /&gt;
[http://vscripts.ru/res/testckt/verilog/libs/NangateOpenCellLibraryCut.db Сокращенная библиотека базовых стандартных ячеек Nangate в &amp;quot;.db&amp;quot; формате]&lt;br /&gt;
&lt;br /&gt;
[http://vscripts.ru/res/testckt/verilog/libs/NangateOpenCellLibrary_Cut.lib Сокращенная библиотека базовых стандартных ячеек Nangate в &amp;quot;.lib&amp;quot; формате]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_ISCAS85</id>
		<title>Схемы ISCAS85</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_ISCAS85"/>
				<updated>2014-07-11T06:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Набор типовых комбинационных микроэлектронных схем для тестирования эффективности алгоритмов&lt;br /&gt;
&lt;br /&gt;
== Список схем набора ==&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;Наименование схемы&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;Исходное описание схемы&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;В базисе библиотеки Nangate&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;В базисе библиотеки Nangate c базовыми вентилями&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c17&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c17.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c17_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c17_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c432&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c432_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c432_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c499&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c499.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c499_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c499_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c880&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c880.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c880_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c880_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c1355&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c1355.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c1355_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c1355_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c1908&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c1908.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c1908_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c1908_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c2670&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c2670.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c2670_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c2670_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c3540&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c3540.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c3540_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c3540_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c5315&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c5315.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c5315_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c5315_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c6288&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c6288.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c6288_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c6288_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c7552&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c7552.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat/c7552_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/ISCAS_flat_cut/c7552_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Набор подсхем из схемы c432&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;Наименование схемы&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;Исходное описание схемы&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;В базисе библиотеки Nangate&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;В базисе библиотеки Nangate c базовыми вентилями&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;74181&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74181.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74181_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74181_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;74182&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74182.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74182_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74182_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;74283&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74283.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74283_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74283_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;74L85&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74L85.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74L85_flat.v verilog]&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432_parts/74L85_flat_cut.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
== Используемые библиотеки стандартных ячеек ==&lt;br /&gt;
&lt;br /&gt;
[http://vscripts.ru/res/testckt/verilog/libs/NangateOpenCellLibrary.db Исходная библиотека Nangate в &amp;quot;.db&amp;quot; формате]&lt;br /&gt;
&lt;br /&gt;
[http://vscripts.ru/res/testckt/verilog/libs/NangateOpenCellLibrary_typical_conditional_nldm.lib Исходная библиотека Nangate в &amp;quot;.lib&amp;quot; формате]&lt;br /&gt;
&lt;br /&gt;
[http://vscripts.ru/res/testckt/verilog/libs/NangateOpenCellLibraryCut.db Сокращенная библиотека базовых стандартных ячеек Nangate в &amp;quot;.db&amp;quot; формате]&lt;br /&gt;
&lt;br /&gt;
[http://vscripts.ru/res/testckt/verilog/libs/NangateOpenCellLibrary_Cut.lib Сокращенная библиотека базовых стандартных ячеек Nangate в &amp;quot;.lib&amp;quot; формате]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_ISCAS85</id>
		<title>Схемы ISCAS85</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_ISCAS85"/>
				<updated>2014-07-10T07:37:49Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Набор типовых комбинационных микроэлектронных схем для тестирования эффективности алгоритмов&lt;br /&gt;
&lt;br /&gt;
== Список схем набора ==&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c17&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c17.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c432&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c432.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c499&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c499.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c880&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c880.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c1355&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c1355.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c1908&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c1908.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c2670&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c2670.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c3540&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c3540.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c5315&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c5315.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c6288&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c6288.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;c7552&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border: 1px solid black; width: 100px; padding: 5px;&amp;quot;&amp;gt;[http://vscripts.ru/res/testckt/verilog/c7552.v verilog]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_ISCAS85</id>
		<title>Схемы ISCAS85</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_ISCAS85"/>
				<updated>2014-07-10T07:32:34Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: Новая страница: «Набор типовых комбинационных микроэлектронных схем для тестирования эффективности алг…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Набор типовых комбинационных микроэлектронных схем для тестирования эффективности алгоритмов&lt;br /&gt;
&lt;br /&gt;
== Список схем набора ==&lt;br /&gt;
* c17&lt;br /&gt;
* c432&lt;br /&gt;
* c499&lt;br /&gt;
* c880&lt;br /&gt;
* c1355&lt;br /&gt;
* c1908&lt;br /&gt;
* c2670&lt;br /&gt;
* c3540&lt;br /&gt;
* c5315&lt;br /&gt;
* c6288&lt;br /&gt;
* c7552&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0</id>
		<title>Полезная литература</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0"/>
				<updated>2014-07-09T16:00:13Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Доступ к большим он-лайн библиотекам == &lt;br /&gt;
* [http://www.sciencedirect.com Издательство Elsevier] - более 2000 научных журналов с полными текстами&lt;br /&gt;
* [http://www.springerlink.com Издательство Springer] - более 1200 научных журналов с полными текстами&lt;br /&gt;
* [http://iopscience.iop.org/journals Издательство IOP Publishing]&lt;br /&gt;
&lt;br /&gt;
== Базовая литература ==&lt;br /&gt;
* [http://www.amazon.com/Residue-Number-Systems-Implementation-Engineering/dp/1860948669 Residue Number Systems: Theory and Implementation]&lt;br /&gt;
&lt;br /&gt;
== Журналы для публикаций ==&lt;br /&gt;
&amp;lt;!-- Где упоминается residue number system --&amp;gt;&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00963003 Applied Mathematics and Computation]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/08981221 Computers &amp;amp; Mathematics with Applications]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/03770427 Journal of Computational and Applied Mathematics]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/0022314X Journal of Number Theory]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/13837621 Journal of Systems Architecture]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01679260 Integration, the VLSI Journal]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01651684 Signal Processing]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01656074 Microprocessing and Microprogramming]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00457906 Computers &amp;amp; Electrical Engineering]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/03043975 Theoretical Computer Science]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00200190 Information Processing Letters ]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00200255 Information Sciences]&lt;br /&gt;
&lt;br /&gt;
== Статьи ==&lt;br /&gt;
&lt;br /&gt;
=== DSP ===&lt;br /&gt;
* [http://www.researchgate.net/publication/4034620_RDSP_a_RISC_DSP_based_on_residue_number_system/file/9fcfd50a916e3578e8.pdf RDSP: A RISC DSP based on Residue Number System] (2003) - показывает что применение RNS для проектирования 32-битного ЦОС, дает преимущества как по скорости (15%), так и по площади (30%) и по мощности (22%). Используется специальный набор модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;2n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1), который при n=8 покрывает 32-битный диапазон.&lt;br /&gt;
&lt;br /&gt;
=== Подбор базисов ===&lt;br /&gt;
* [http://arxiv.org/pdf/1211.5248v1 Design Of A Reconfigurable DSP Processor With Bit Efficient Residue Number System] (2012) - Бит-эффективный подбор модулей для заданной размерности данных. Основан на специальных наборах вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;). Подбор ведется для заданного количества модулей в базисе от 3 до 6.&lt;br /&gt;
&lt;br /&gt;
=== Специальные модули ===&lt;br /&gt;
* [https://www.jstage.jst.go.jp/article/elex/8/12/8_12_897/_pdf Fully parallel comparator for the moduli set {2^n,2^n-1,2^n+1}] (2011) - быстрое сравнение чисел для базиса вида {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1}, основанный на операции вычитания.&lt;br /&gt;
* [http://etd.lsu.edu/docs/available/etd-11052010-141445/unrestricted/Report_Nov2.pdf OPTIMIZATION OF NEW CHINESE REMAINDER THEOREMS USING SPECIAL MODULI SETS] - новые версии Китайской теоремы об остатках для эффективной реализации немодульных операций на &amp;quot;не классических&amp;quot; специальных наборах модулей.&lt;br /&gt;
* [http://www.iis.ee.ethz.ch/~zimmi/publications/modulo_arith.pdf Efficient VLSI implementation of modulo (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;±1) addition and multiplication] (R Zimmermann, 1999) - эффективное умножение по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;±1&lt;br /&gt;
* [http://www2.lirmm.fr/arith18/papers/Sousa-RNS.pdf Efﬁcient Method for Magnitude Comparison in RNS Based on Two Pairs of Conjugate Moduli] (Leonel Sousa, 2007) - Интересный набор из 4-х спец-модулей. Эффективная реализация прямых/обратных преобразователей. Эффективная реализация сравнения по величине. Использование для проектирования SAD-процессора.&lt;br /&gt;
* [http://ijcsi.org/papers/IJCSI-8-3-1-407-414.pdf Fast Overflow Detection in Moduli Set {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; – 1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + 1}] (Mehrin Rouhifar, Mehdi Hosseinzadeh Saeid Bahanfar and Mohammad Teshnehlab, 2011) - определение переполнения для спецсистемы модулей &lt;br /&gt;
* [https://www2.lirmm.fr/lirmm/interne/BIBLI/CDROM/MIC/2011/ISCAS_2011/Papers/B2L-D-3-1130.pdf A new RNS scaler for {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; – 1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + 1}] (JYS Low, CH Chang, 2011)&lt;br /&gt;
&lt;br /&gt;
=== Округление, масштабирование, деление в модулярной арифметике ===&lt;br /&gt;
* [http://mod.stavsu.ru/articles/sokcon36.pdf МЕТОДЫ И АЛГОРИТМЫ ОКРУГЛЕНИЯ, МАСШТАБИРОВАНИЯ И ДЕЛЕНИЯ ЧИСЕЛ В МОДУЛЯРНОЙ АРИФМЕТИКЕ] - В статье рассмотрены методы и алгоритмы деления числа в модулярном коде на одно из оснований или их произведение.&lt;br /&gt;
&lt;br /&gt;
=== Логические функции ===&lt;br /&gt;
* [http://www.blif.org/~satrajit/pubs/thesis-ds.pdf On Algorithms for Technology Mapping] (2001) - предложены алгоритмы для натягивания логической функции на заданную библиотеку логических элементов.&lt;br /&gt;
&lt;br /&gt;
=== Помехоустойчивость и сбоеустойчивость ===&lt;br /&gt;
* [http://eprints.soton.ac.uk/257134/1/lly-lh-vtcfall-2001-2.pdf REDUNDANT RESIDUE NUMBER SYSTEM BASED ERROR CORRECTION CODES (2001, Lie-Liang Yang and Lajos Hanzo)] - основные формулы для коррекции ошибок на базе RRNS (Избыточной системы остаточных классов).&lt;br /&gt;
* [http://venus.ece.ndsu.nodak.edu/~katti/pdf/j09.pdf A new residue arithmetic error correction scheme] - предложен метод нахождения и коррекции ошибок на основе RNS, в которой система модулей не является взаимнопростой.&lt;br /&gt;
* [http://jtec.utem.edu.my/index2.php?option=com_docman&amp;amp;task=doc_view&amp;amp;gid=86&amp;amp;Itemid=49 Using RRNS Codes for Cluster Faults Tolerance in Hybrid Memories] - использование RNS для локализации ошибок в гибридной памяти &lt;br /&gt;
===== Помехоустойчивая булева логика =====&lt;br /&gt;
* [http://vscripts.ru/res/pdf/boolean%20logic%20with%20fault%20tolerant%20coding.pdf Boolean logic with fault tolerant coding] - помехоустойчивое кодирование при реализации булевых функций&lt;br /&gt;
* [http://www.swsys.ru/index.php?page=article&amp;amp;id=2602 Исследование архитектурной чувствительности к сбоям с использованием метода статистического внесения сбоев] - методология моделирования схем со случайными ошибками&lt;br /&gt;
* [http://ofinko.ru/files/pdf/RID/article_Finko2004aRUS.pdf Реализация систем булевых функций большой размерности методами модулярной арифметики] - принцип реализация булевых функций методами модулярной арифметики&lt;br /&gt;
&lt;br /&gt;
=== КИХ-фильтры (FIR-filters) ===&lt;br /&gt;
* [http://www.comm.utoronto.ca/~dkundur/course_info/real-time-DSP/notes/8_Kundur_Overlap_Save_Add.pdf Overlap-Save and Overlap-Add (Dr. Deepa Kundur)] - доступным языком объяснены методы фильтрации длинных сигналов: Overlap-Add и Overlap-Save.&lt;br /&gt;
* [http://www.researchgate.net/publication/224254503_Fast_and_energy-efficient_constant-coefficient_FIR_filters_using_residue_number_system/file/9fcfd510a99ff86bd7.pdf Fast and energy-efficient constant-coefficient FIR filters using residue number system, 2011]&lt;br /&gt;
* [http://orbit.dtu.dk/fedora/objects/orbit:117124/datastreams/file_94b457b9-1f5f-42f0-8f16-98b195a5efe3/content Power Efficient Design of Parallel/Serial FIR Filters in RNS, 2012]&lt;br /&gt;
&lt;br /&gt;
=== Криптография ===&lt;br /&gt;
* [http://hal.archives-ouvertes.fr/docs/00/09/03/66/PDF/D8.PDF A Full RNS Implementation of RSA (2002)] - реализация RNS с помощью системы остаточных классов&lt;br /&gt;
* [http://link.springer.com/article/10.1007%2Fs12209-012-1902-7 Hardware architecture for RSA cryptography based on residue number system (2012)]&lt;br /&gt;
&lt;br /&gt;
== Книги ==&lt;br /&gt;
=== Математика ===&lt;br /&gt;
* [http://ftfsite.ru/wp-content/files/mmf_tfkp_LavrentevShabat1965ru_2.2.pdf Методы теории функций комплексного переменного] (М.А. Лаврентьев Б.В. Шабат)&lt;br /&gt;
* [http://topology.math.csu.ru/library/posob/terch/VINOGRADOV_NUMBER_THEORY.PDF Основы теории чисел (Виноградов И.М.)]&lt;br /&gt;
* [http://bookinist.net/books/bookid-320879.html Непозиционные представления в многомерных числовых системах] (Синьков М.В., Губарени Н.М. (1979))&lt;br /&gt;
&lt;br /&gt;
== Сайты со статьями по модулярной арифметике ==&lt;br /&gt;
* [http://ofinko.ru/index.php/rid Официальный сайт ученого Финько Олега Анатольевича]&lt;br /&gt;
&lt;br /&gt;
== Разное ==&lt;br /&gt;
* [http://amath.colorado.edu/documentation/LaTeX/Symbols.pdf Символы Latex]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0</id>
		<title>Полезная литература</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0"/>
				<updated>2014-07-09T15:42:26Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Доступ к большим он-лайн библиотекам == &lt;br /&gt;
* [http://www.sciencedirect.com Издательство Elsevier] - более 2000 научных журналов с полными текстами&lt;br /&gt;
* [http://www.springerlink.com Издательство Springer] - более 1200 научных журналов с полными текстами&lt;br /&gt;
* [http://iopscience.iop.org/journals Издательство IOP Publishing]&lt;br /&gt;
&lt;br /&gt;
== Базовая литература ==&lt;br /&gt;
* [http://www.amazon.com/Residue-Number-Systems-Implementation-Engineering/dp/1860948669 Residue Number Systems: Theory and Implementation]&lt;br /&gt;
&lt;br /&gt;
== Журналы для публикаций ==&lt;br /&gt;
&amp;lt;!-- Где упоминается residue number system --&amp;gt;&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00963003 Applied Mathematics and Computation]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/08981221 Computers &amp;amp; Mathematics with Applications]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/03770427 Journal of Computational and Applied Mathematics]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/0022314X Journal of Number Theory]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/13837621 Journal of Systems Architecture]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01679260 Integration, the VLSI Journal]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01651684 Signal Processing]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/01656074 Microprocessing and Microprogramming]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00457906 Computers &amp;amp; Electrical Engineering]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/03043975 Theoretical Computer Science]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00200190 Information Processing Letters ]&lt;br /&gt;
* [http://www.sciencedirect.com/science/journal/00200255 Information Sciences]&lt;br /&gt;
&lt;br /&gt;
== Статьи ==&lt;br /&gt;
&lt;br /&gt;
=== DSP ===&lt;br /&gt;
* [http://www.researchgate.net/publication/4034620_RDSP_a_RISC_DSP_based_on_residue_number_system/file/9fcfd50a916e3578e8.pdf RDSP: A RISC DSP based on Residue Number System] (2003) - показывает что применение RNS для проектирования 32-битного ЦОС, дает преимущества как по скорости (15%), так и по площади (30%) и по мощности (22%). Используется специальный набор модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;2n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1), который при n=8 покрывает 32-битный диапазон.&lt;br /&gt;
&lt;br /&gt;
=== Подбор базисов ===&lt;br /&gt;
* [http://arxiv.org/pdf/1211.5248v1 Design Of A Reconfigurable DSP Processor With Bit Efficient Residue Number System] (2012) - Бит-эффективный подбор модулей для заданной размерности данных. Основан на специальных наборах вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;). Подбор ведется для заданного количества модулей в базисе от 3 до 6.&lt;br /&gt;
&lt;br /&gt;
=== Специальные модули ===&lt;br /&gt;
* [https://www.jstage.jst.go.jp/article/elex/8/12/8_12_897/_pdf Fully parallel comparator for the moduli set {2^n,2^n-1,2^n+1}] (2011) - быстрое сравнение чисел для базиса вида {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1}, основанный на операции вычитания.&lt;br /&gt;
* [http://etd.lsu.edu/docs/available/etd-11052010-141445/unrestricted/Report_Nov2.pdf OPTIMIZATION OF NEW CHINESE REMAINDER THEOREMS USING SPECIAL MODULI SETS] - новые версии Китайской теоремы об остатках для эффективной реализации немодульных операций на &amp;quot;не классических&amp;quot; специальных наборах модулей.&lt;br /&gt;
* [http://www.iis.ee.ethz.ch/~zimmi/publications/modulo_arith.pdf Efficient VLSI implementation of modulo (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;±1) addition and multiplication] (R Zimmermann, 1999) - эффективное умножение по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;±1&lt;br /&gt;
* [http://www2.lirmm.fr/arith18/papers/Sousa-RNS.pdf Efﬁcient Method for Magnitude Comparison in RNS Based on Two Pairs of Conjugate Moduli] (Leonel Sousa, 2007) - Интересный набор из 4-х спец-модулей. Эффективная реализация прямых/обратных преобразователей. Эффективная реализация сравнения по величине. Использование для проектирования SAD-процессора.&lt;br /&gt;
* [http://ijcsi.org/papers/IJCSI-8-3-1-407-414.pdf Fast Overflow Detection in Moduli Set {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; – 1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + 1}] (Mehrin Rouhifar, Mehdi Hosseinzadeh Saeid Bahanfar and Mohammad Teshnehlab, 2011) - определение переполнения для спецсистемы модулей &lt;br /&gt;
* [https://www2.lirmm.fr/lirmm/interne/BIBLI/CDROM/MIC/2011/ISCAS_2011/Papers/B2L-D-3-1130.pdf A new RNS scaler for {2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; – 1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + 1}] (JYS Low, CH Chang, 2011)&lt;br /&gt;
&lt;br /&gt;
=== Округление, масштабирование, деление в модулярной арифметике ===&lt;br /&gt;
* [http://mod.stavsu.ru/articles/sokcon36.pdf МЕТОДЫ И АЛГОРИТМЫ ОКРУГЛЕНИЯ, МАСШТАБИРОВАНИЯ И ДЕЛЕНИЯ ЧИСЕЛ В МОДУЛЯРНОЙ АРИФМЕТИКЕ] - В статье рассмотрены методы и алгоритмы деления числа в модулярном коде на одно из оснований или их произведение.&lt;br /&gt;
&lt;br /&gt;
=== Логические функции ===&lt;br /&gt;
* [http://www.blif.org/~satrajit/pubs/thesis-ds.pdf On Algorithms for Technology Mapping] (2001) - предложены алгоритмы для натягивания логической функции на заданную библиотеку логических элементов.&lt;br /&gt;
&lt;br /&gt;
=== Помехоустойчивость и сбоеустойчивость ===&lt;br /&gt;
* [http://eprints.soton.ac.uk/257134/1/lly-lh-vtcfall-2001-2.pdf REDUNDANT RESIDUE NUMBER SYSTEM BASED ERROR CORRECTION CODES (2001, Lie-Liang Yang and Lajos Hanzo)] - основные формулы для коррекции ошибок на базе RRNS (Избыточной системы остаточных классов).&lt;br /&gt;
* [http://venus.ece.ndsu.nodak.edu/~katti/pdf/j09.pdf A new residue arithmetic error correction scheme] - предложен метод нахождения и коррекции ошибок на основе RNS, в которой система модулей не является взаимнопростой.&lt;br /&gt;
* [http://jtec.utem.edu.my/index2.php?option=com_docman&amp;amp;task=doc_view&amp;amp;gid=86&amp;amp;Itemid=49 Using RRNS Codes for Cluster Faults Tolerance in Hybrid Memories] - использование RNS для локализации ошибок в гибридной памяти &lt;br /&gt;
===== Помехоустойчивая булева логика =====&lt;br /&gt;
* [http://vscripts.ru/res/pdf/boolean%20logic%20with%20fault%20tolerant%20coding.pdf Boolean logic with fault tolerant coding] - помехоустойчивое кодирование при реализации булевых функций&lt;br /&gt;
* [http://www.swsys.ru/index.php?page=article&amp;amp;id=2602 Исследование архитектурной чувствительности к сбоям с использованием метода статистического внесения сбоев] - методология моделирования схем со случайными ошибками&lt;br /&gt;
* [http://ofinko.ru/files/pdf/RID/article_Finko2004aRUS.pdf Реализация систем булевых функций большой размерности методами модулярной арифметики] - принцип реализация булевых функций методами модулярной арифметики&lt;br /&gt;
&lt;br /&gt;
=== КИХ-фильтры (FIR-filters) ===&lt;br /&gt;
* [http://www.comm.utoronto.ca/~dkundur/course_info/real-time-DSP/notes/8_Kundur_Overlap_Save_Add.pdf Overlap-Save and Overlap-Add (Dr. Deepa Kundur)] - доступным языком объяснены методы фильтрации длинных сигналов: Overlap-Add и Overlap-Save.&lt;br /&gt;
* [http://www.researchgate.net/publication/224254503_Fast_and_energy-efficient_constant-coefficient_FIR_filters_using_residue_number_system/file/9fcfd510a99ff86bd7.pdf Fast and energy-efficient constant-coefficient FIR filters using residue number system, 2011]&lt;br /&gt;
* [http://orbit.dtu.dk/fedora/objects/orbit:117124/datastreams/file_94b457b9-1f5f-42f0-8f16-98b195a5efe3/content Power Efficient Design of Parallel/Serial FIR Filters in RNS, 2012]&lt;br /&gt;
&lt;br /&gt;
=== Криптография ===&lt;br /&gt;
* [http://hal.archives-ouvertes.fr/docs/00/09/03/66/PDF/D8.PDF A Full RNS Implementation of RSA (2002)] - реализация RNS с помощью системы остаточных классов&lt;br /&gt;
&lt;br /&gt;
== Книги ==&lt;br /&gt;
=== Математика ===&lt;br /&gt;
* [http://ftfsite.ru/wp-content/files/mmf_tfkp_LavrentevShabat1965ru_2.2.pdf Методы теории функций комплексного переменного] (М.А. Лаврентьев Б.В. Шабат)&lt;br /&gt;
* [http://topology.math.csu.ru/library/posob/terch/VINOGRADOV_NUMBER_THEORY.PDF Основы теории чисел (Виноградов И.М.)]&lt;br /&gt;
* [http://bookinist.net/books/bookid-320879.html Непозиционные представления в многомерных числовых системах] (Синьков М.В., Губарени Н.М. (1979))&lt;br /&gt;
&lt;br /&gt;
== Сайты со статьями по модулярной арифметике ==&lt;br /&gt;
* [http://ofinko.ru/index.php/rid Официальный сайт ученого Финько Олега Анатольевича]&lt;br /&gt;
&lt;br /&gt;
== Разное ==&lt;br /&gt;
* [http://amath.colorado.edu/documentation/LaTeX/Symbols.pdf Символы Latex]&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2014-07-03T13:45:27Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2013/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Бимодульная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2014.07 - [[Исследование надежностных характеристик различных методов резервирования комбинационных схем с помощью метода инжектирования ошибок]]&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D0%A0%D0%B8%D0%B4%D0%B0-%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D0%B0</id>
		<title>Пример коррекции ошибки с помощью кодов Рида-Соломона</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D0%A0%D0%B8%D0%B4%D0%B0-%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D0%B0"/>
				<updated>2014-06-18T06:05:53Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Постановка задачи ==&lt;br /&gt;
В данной статье разбирается пример работы алгоритма коррекции ошибки для 16-битных строк. Строка разбивает на блоки длиной 4 бита и каждый блок представляет собой элемент поля Галуа GF&amp;lt;sub&amp;gt;16&amp;lt;/sub&amp;gt;. Необходимо отследить и исправить одиночную ошибку, внесённую в один из блоков.&lt;br /&gt;
&lt;br /&gt;
== Теоретические основы алгоритма ==&lt;br /&gt;
=== Поля Галуа ===&lt;br /&gt;
Операцию сложения определим как &amp;quot;исключающее ИЛИ&amp;quot; &amp;lt;math&amp;gt;(XOR)&amp;lt;/math&amp;gt;.Очевидно, что в таком случае операция сложения является обратной самой себе. Тогда операция умножения в двоичном виде будет выглядеть так:&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;math&amp;gt; \begin{matrix} *\underline{\begin{matrix}&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
\end{matrix}}\\&lt;br /&gt;
+\underline{\begin{matrix}&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
\end{matrix}} \\&lt;br /&gt;
\begin{matrix}&lt;br /&gt;
 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
\end{matrix} \\&lt;br /&gt;
\end{matrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так можно умножать полиномы, в данном случае мы умножили:&lt;br /&gt;
&amp;lt;math&amp;gt; (x + 1) * (x^2 + x) = x^3 + x&amp;lt;/math&amp;gt;.&lt;br /&gt;
Определим также операцию деления чисел(или полиномов) с остатком – по аналогичным правилам, например:&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{110010}{101011}=011001 &amp;lt;/math&amp;gt;&lt;br /&gt;
или &amp;lt;math&amp;gt; \frac{x^5 + x^4 + x}{x^5 + x^3 + x + 1} = x^4 + x^3 + 1  &amp;lt;/math&amp;gt;&lt;br /&gt;
Теперь построим поле из 16 элементов &amp;lt;math&amp;gt; GF_{16} &amp;lt;/math&amp;gt;. Операцию сложения определена на XOR, Операция деления дополнена получением остатка по некоторому модулю.&lt;br /&gt;
Выберем в качестве модуля неприводимый полином &amp;lt;math&amp;gt; x^4+x+1 (10011) &amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возьмем единицу и будем последовательно умножать ее на 2 и рассмотрим числа, которые будут при этом &lt;br /&gt;
# &amp;lt;math&amp;gt;1= 2^0=0001 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^0*2=2^1=0010 _{mod 10011} = 2 = x^1 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^1*2=2^2=0100 _{mod 10011} = 4 = x^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^2*2=2^3=1000 _{mod 10011} = 8 = x^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^3*2=2^4=10000 _{mod 10011} = 0011 = 3 = x+1 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^4*2=2^5=100000 _{mod 10011} = 0110 = 6 = x^2+x &amp;lt;/math&amp;gt;&lt;br /&gt;
и так далее.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Составим таблицу умножения'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Степень&lt;br /&gt;
! Результат&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 0001&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 0010&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 0100&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8&lt;br /&gt;
| 1000&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 0011&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
| 0110&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 12&lt;br /&gt;
| 1100&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 11&lt;br /&gt;
| 1011&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 5&lt;br /&gt;
| 0101&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
| 1010&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 7&lt;br /&gt;
| 0111&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 14&lt;br /&gt;
| 1110&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 15&lt;br /&gt;
| 1111&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 13&lt;br /&gt;
| 1101&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 9&lt;br /&gt;
| 1001&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 1&lt;br /&gt;
| 0001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Таким образом, при дальнейшем умножении весь цикл повторится снова. Полученные степени двойки не сложно умножать между собой, например: &amp;lt;math&amp;gt; 13*15=2^{13}*2^{12}=2^{25 mod 15}=2^{10}=7 &amp;lt;/math&amp;gt;. Можно проверить результат,разделив &amp;lt;math&amp;gt; \frac{7}{13}=\frac{2^{10}}{2^{13}}=2^{-3 mod 15}=2^{12}=15 &amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Таким образом, получили поле &amp;lt;math&amp;gt;GF_{16}&amp;lt;/math&amp;gt;, то есть для двоичных 4-разрядных чисел.'''&lt;br /&gt;
== Коды Рида - Соломона ==&lt;br /&gt;
При построении кода Рида-Соломона задается пара чисел N,K, где N-Общее количество символов, а К- «полезное» количество символов, N-K символов задают избыточный код, предназначенный для восстановления ошибок.&lt;br /&gt;
Такой код Рида-Соломона будет иметь «расстояние Хемминга» &amp;lt;math&amp;gt;D=N-K+1&amp;lt;/math&amp;gt;.&lt;br /&gt;
В соответствии с теорией кодирования, код, имеющий расстояние Хемминга &amp;lt;math&amp;gt;D=2t+1&amp;lt;/math&amp;gt;, позволяет восстанавливать t ошибок. Таким образом, если нам необходимо восстановить t ошибок, то общее количество символов сообщения &amp;lt;math&amp;gt;N=K+2t&amp;lt;/math&amp;gt;.&lt;br /&gt;
Сообщения при кодировании Рида-Соломона представляются полиномами.&lt;br /&gt;
Исходное сообщение представляется как коэффициенты полинома &amp;lt;math&amp;gt;p(x)&amp;lt;/math&amp;gt; степени &amp;lt;math&amp;gt;K-1&amp;lt;/math&amp;gt;, имеющего &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; коэффициентов.&amp;lt;br /&amp;gt;&lt;br /&gt;
Порождающий многочлен Рида-Соломона,&amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;, строится следующий образом:&lt;br /&gt;
&amp;lt;math&amp;gt; g(x)=(x+2)(x+2^{2})..(x+2^{ D-1 } ) &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;2 - &amp;lt;/math&amp;gt; примитивный член поля. Нетрудно понять, что &amp;lt;math&amp;gt;2^{1},2^{2},..,2^{D-1}&amp;lt;/math&amp;gt; - корни этого многочлена.&amp;lt;br&amp;gt;&lt;br /&gt;
Например, построим порождающий многочлен кода Рида-Соломона с &amp;lt;math&amp;gt;N=15,K=9&amp;lt;/math&amp;gt;, способного исправлять до 3 ошибок &amp;lt;math&amp;gt;(15-9)/2=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=(x+2)(x+2^{2} )(x+2^{3} )(x+2^{4} )(x+2^{5} )(x+2^{6} )=x^{6}+7x^{5}+9x^{4}+3x^{3}+12x^{2}+10x+12&amp;lt;/math&amp;gt;.     ''(Возведение в степень и умножения выполнены над полем GF&amp;lt;sub&amp;gt;16&amp;lt;/sub&amp;gt; )!''&lt;br /&gt;
== Кодирование Рида-Соломона ==&lt;br /&gt;
Кодирование Рида-Соломона будем производить систематическим кодом, это означает, что в закодированное сообщение будет содержать в себе в явном виде исходное сообщение. Каким образом это делается:&lt;br /&gt;
Сначала полином сдвигается на &amp;lt;math&amp;gt;N-K&amp;lt;/math&amp;gt; коэффициентов влево &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;p'(x)=p(x)x^{N-K}&amp;lt;/math&amp;gt; ,а потом вычисляется остаток от деления на порождающий полином и прибавляется к &amp;lt;math&amp;gt;p'(x)&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;C(x)=p'(x)+p'(x)mod g(x)&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для систематического кого очевидно, что &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; старших коэффициентов полученного кода &amp;lt;math&amp;gt;C(x)&amp;lt;/math&amp;gt; содержат исходное сообщение. Это удобно при декодировании.&lt;br /&gt;
Закодированное сообщение &amp;lt;math&amp;gt;C(x)&amp;lt;/math&amp;gt; обладает очень важным свойством: оно без остатка делится на порождающий многочлен &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Докажем это свойство:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
Пусь &amp;lt;math&amp;gt;r(x)&amp;lt;/math&amp;gt;-остаток от деления &amp;lt;math&amp;gt;p'(x)&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Тогда,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;p'(x)=g(x)u(x)+r(x)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Итак,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;r(x)=p'(x)mod g(x)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Тогда&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;C(x)=p'(x)+p'(x)mod g(x)=g(x)u(x)+r(x)+r(x)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Вспомним, что в арифметике поля Галуа сложения являются одновременно и вычитанием, тогда &amp;lt;math&amp;gt;r(x)+r(x)=0&amp;lt;/math&amp;gt;!Следовательно &amp;lt;math&amp;gt;C(x)&amp;lt;/math&amp;gt; делится на &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; без остатка.&amp;lt;br /&amp;gt;&lt;br /&gt;
Таким образом, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;C(x) mod g(x)=0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
В случае, если закодированное сообщение будет изменено, то это равенство будет нарушенным, не считая случая, когда ошибка окажется кратной &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;. Факт искажения можно рассматривать как прибавление к &amp;lt;math&amp;gt;C(x)&amp;lt;/math&amp;gt; некоторого полинома ошибки &amp;lt;math&amp;gt;E(x)&amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Пример:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Рассмотрим кодирование информации. Пусть наше сообщение такое:&lt;br /&gt;
&amp;lt;math&amp;gt;12, 10, 12, 7&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Полином сообщения получается такой:&lt;br /&gt;
&amp;lt;math&amp;gt;I(x)=12x^{3}+10x^{2}+12x+7&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Умножаем на &amp;lt;math&amp;gt;x^{2}&amp;lt;/math&amp;gt;,получаем:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;I'(x)=12x^{5}+10x^{4}+12x^{3}+7x^{2}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Делим на &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; и получаем остаток: &amp;lt;math&amp;gt;r(x)= x + 4 &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
В итоге получается полином закодированного сообщения: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;C(x)=12x^{5}+10x^{4}+12x^{3}+7x^{2}+x+4&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
== Декодирование Рида-Соломона ==&lt;br /&gt;
Первым шагом необходимо выполнить деление полинома на порождающий полином &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;. Если остаток от деления равен 0, то сообщение не искажено и декодирование для систематического кода тривиально.&amp;lt;br /&amp;gt;&lt;br /&gt;
Разделим закодированное сообщение на образующий полином: &amp;lt;math&amp;gt;\frac{12x^{5}+10x^{4}+12x^{3}+7x^{2}+x+4}{x^{6}+7x^{5}+9x^{4}+3x^{3}+12x^{2}+10x+12}=0&amp;lt;/math&amp;gt;,&amp;lt;br /&amp;gt; в этом можно убедиться, самостоятельно проделав операцию деления, согласно арифметике поля GF_{16}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Внесем ошибку в закодированное сообщение, полином ошибки &amp;lt;math&amp;gt;E(x)=14x^{4}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Разделим получившееся закодированное сообщение &amp;lt;math&amp;gt;C'(x)&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;g(x): r(x) = 14x + 14&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
В случае присутствия ошибки выполняем следующие действия:&amp;lt;br /&amp;gt;&lt;br /&gt;
Декодирование основано на построении многочлена синдрома ошибки S(x) и отыскании соответствующего ему многочлена локаторов L(x).&amp;lt;br /&amp;gt;&lt;br /&gt;
Локаторы ошибок – это элементы поля Галуа, степень которых совпадает с позицией ошибки. Так, если искажён коэффициент при &amp;lt;math&amp;gt;x^{4}&amp;lt;/math&amp;gt;, то локатор этой ошибки равен &amp;lt;math&amp;gt;a^{4}&amp;lt;/math&amp;gt;, если искажён коэффициент при &amp;lt;math&amp;gt;x^{7}&amp;lt;/math&amp;gt; то локатор ошибки будет равен &amp;lt;math&amp;gt;a^{7}&amp;lt;/math&amp;gt; и т.п. (а – примитивный член, т.е. в нашем случае a=2).&lt;br /&gt;
Многочлен локаторов &amp;lt;math&amp;gt;L(x)&amp;lt;/math&amp;gt; – это многочлен, корни которого обратны локаторам ошибок. Таким образом, многочлен &amp;lt;math&amp;gt;L(x)&amp;lt;/math&amp;gt; должен иметь вид &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L(x)=(1+xX_1 )(1+xX_2)..(1+xX_i)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;X_1,X_2,..,X_i&amp;lt;/math&amp;gt; - локаторы ошибок&amp;lt;br /&amp;gt;&lt;br /&gt;
Ясно, что если этот многочлен будет найден, то мы легко сможем определить локаторы ошибок – для этого потребуется только определить его корни.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для определения этого полинома сначала получают вспомогательный полином &amp;lt;math&amp;gt;S(x)&amp;lt;/math&amp;gt;, так называемый синдром ошибки. Коэффициенты синдрома ошибки получаются подстановкой степеней примитивного члена в остаток многочлен &amp;lt;math&amp;gt;r(x) = C(x) mod          g(x)&amp;lt;/math&amp;gt;:    &amp;lt;math&amp;gt;S_i=e(a^{i})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Для нашего примера:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(1) = 1;&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(2) = 3;&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Между &amp;lt;math&amp;gt;L(x)&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;S(x)&amp;lt;/math&amp;gt; существует соотношение&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L(x)S(x)=W(x)modx^{N-K}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;W(x)&amp;lt;/math&amp;gt; называется многочленом ошибок. Степень многочлена &amp;lt;math&amp;gt;W(x)&amp;lt;/math&amp;gt; не может превышать &amp;lt;math&amp;gt;t-1&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; – количество ошибок, то есть в максимальном случае &amp;lt;math&amp;gt;(N-K)/2-1&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
С учётом этого обстоятельства, а также учитывая, что свободный член &amp;lt;math&amp;gt;L(x):  L_0=1&amp;lt;/math&amp;gt; (ведь &amp;lt;math&amp;gt;L(x)=(1+xX_1 )(1+xX_2 )..(1+xX_i) )&amp;lt;/math&amp;gt; можно составить систему линейных уравнений.&lt;br /&gt;
&amp;lt;math&amp;gt;W(x)=&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(L_0 S_1+L_1 S_0 )X+&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(L_0 S_2+L_1 S_1+L_2 S_0 ) X^2+&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(L_0 S_3+L_1 S_2+L_2 S_1+L_3 S_0 ) X^3+&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;...&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(L_0 S_{N-K-1}+L_1 S_{N-K-2}..L_{(N-K)/2} S_{(N-K)/2-1}X^{N-K-1}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;t = (N-K)/2&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Коэффициенты при степенях от 0 до t – 1 не равны нулю, при старших степенях должны быть нулевыми.&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_t+L_1 S_{t-1}+L_2 S_{t-2}+L_3 S_{t-3}...L_t S_0  = 0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_{t+1}+L_1 S_t+L_2 S_{t-1}+L_3 S_{t-2}...L_t S_1  = 0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_{t+2}+L_1 S_{t+1}+L_2 S_t+L_3 S_{t-1}...L_t S_2  = 0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\dots&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_{2t-1}+L_1 S_{2t-2}+L_2 S_{2t-3}+L_3 S_{2t-4}...L_t S_t  = 0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Коэффициент &amp;lt;math&amp;gt;L_0&amp;lt;/math&amp;gt; известен, остальные необходимо найти, следовательно требуется составить t уравнений.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 S_{t-1}+L_2 S_{t-2}+L_3 S_{t-3}...L_t S_0  = S_t&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 S_t+L_2 S_{t-1}+L_3 S_{t-2}...L_t S_1  = S_{t+1}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 S_{t+1}+L_2 S_t+L_3 S_{t-1}...L_t S_2  = S_{t+2}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;...&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 S_{2t-2}+L_2 S_{2t-3}+L_3 S_{2t-4}...L_t S_t  = S_{2t-1}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
В матричном виде:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M=&lt;br /&gt;
\quad\left\|\begin{array}{ccccc} &lt;br /&gt;
S_{t-1} &amp;amp;  S_{t-2} &amp;amp; S_{t-3} &amp;amp; \cdots &amp;amp; S_0\\&lt;br /&gt;
S_{t} &amp;amp;  S_{t-1} &amp;amp; S_{t-2} &amp;amp; \cdots &amp;amp; S_1\\&lt;br /&gt;
S_{t+1} &amp;amp;  S_{t} &amp;amp; S_{t-1} &amp;amp; \cdots &amp;amp; S_2\\&lt;br /&gt;
\cdots &amp;amp; \cdots &amp;amp; \cdots &amp;amp; \cdots &amp;amp; \cdots \\ &lt;br /&gt;
S_{2t-2} &amp;amp;  S_{2t-3} &amp;amp; S_{2t-4} &amp;amp; \cdots &amp;amp; S_t\\&lt;br /&gt;
\end{array}\right\|&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V=\quad\left\|\begin{array}{c} &lt;br /&gt;
S_{t} \\&lt;br /&gt;
S_{t+1} \\&lt;br /&gt;
S_{t+2} \\&lt;br /&gt;
\cdots \\ &lt;br /&gt;
S_{2t-1} \\&lt;br /&gt;
\end{array}\right\|&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L=\quad\left\|\begin{array}{c} &lt;br /&gt;
L_{1} \\&lt;br /&gt;
L_{2} \\&lt;br /&gt;
L_{3} \\&lt;br /&gt;
\cdots \\ &lt;br /&gt;
L_{t} \\&lt;br /&gt;
\end{array}\right\|&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;ML = V, \Rightarrow M^{-1}V&amp;lt;/math&amp;gt;&lt;br /&gt;
Например, для нашего примера – кода Рида-Соломона (6, 4) матрица M имеет вид:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = S_1&amp;lt;/math&amp;gt;  , а вектор   &amp;lt;math&amp;gt;V = S_2; &amp;lt;/math&amp;gt;   &amp;lt;math&amp;gt;  L(1) = S(2) / S(1) = 3 / 1 = 3 &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Таким образом, вычисление полинома локаторов сводится к построению матрицы M, нахождению обратной ей и умножению на вектор V.&lt;br /&gt;
Обратная матрица получается так же, как и в обычной математике, например Жордановым методом. &lt;br /&gt;
После того, как полином &amp;lt;math&amp;gt;L(x)&amp;lt;/math&amp;gt; найден, следует найти его корни – они будут обратны к локаторам ошибок. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для нашего примера многочлен локаторов &amp;lt;math&amp;gt;L(x) =1 + 3x &amp;lt;/math&amp;gt; имеет корень \frac{1}{3}, а обратный к нему  &amp;lt;math&amp;gt; 3 = 2^{4}&amp;lt;/math&amp;gt;, а значит позиция ошибки равна &amp;lt;math&amp;gt;x^{4}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
После нахождения позиции ошибки,займемся нахождением значением ошибки:&amp;lt;br /&amp;gt;&lt;br /&gt;
Воспользуемся определением синдромной функции:&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(1) = r(\alpha) = e_1 L_1 + e_2 L_2 + ... + e_n L_n&amp;lt;/math&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(2) = r(\alpha) = e_1 L_1^{2} + e_2 L_2^{2} + ... + e_n L_n^{2}&amp;lt;/math&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;...&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(n) = r(\alpha) = e_1 L_1^{n} + e_2 L_2^{n} + ... + e_n L_n^{n}&amp;lt;/math&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; где &amp;lt;math&amp;gt;e_1,e_2,..,e_n - &amp;lt;/math&amp;gt;значение ошибки. &amp;lt;math&amp;gt;L_1,L_2,..,L_n - &amp;lt;/math&amp;gt;позиция ошибки.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Для нашего кода &amp;lt;math&amp;gt;RS(6,4): S(1) = e_1 L_1; e_1 = S(1) / L_1 = 1 / 3 = 2^{0} / 2^{4} = 2^{11} = 14&amp;lt;/math&amp;gt; - позиция ошибки.&amp;lt;br /&amp;gt;Таким образом сформируем многочлен вычисленной ошибки &amp;lt;math&amp;gt;E'(x) = 14x^{4}&amp;lt;/math&amp;gt;, который совпадает с заданным &amp;lt;math&amp;gt;E(x)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D0%A0%D0%B8%D0%B4%D0%B0-%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D0%B0</id>
		<title>Пример коррекции ошибки с помощью кодов Рида-Соломона</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D0%A0%D0%B8%D0%B4%D0%B0-%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D0%B0"/>
				<updated>2014-06-18T06:05:39Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: Новая страница: «= Пример коррекции ошибки с помощью кодов Рида-Соломона = == Постановка задачи == В данной с…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Пример коррекции ошибки с помощью кодов Рида-Соломона =&lt;br /&gt;
== Постановка задачи ==&lt;br /&gt;
В данной статье разбирается пример работы алгоритма коррекции ошибки для 16-битных строк. Строка разбивает на блоки длиной 4 бита и каждый блок представляет собой элемент поля Галуа GF&amp;lt;sub&amp;gt;16&amp;lt;/sub&amp;gt;. Необходимо отследить и исправить одиночную ошибку, внесённую в один из блоков.&lt;br /&gt;
&lt;br /&gt;
== Теоретические основы алгоритма ==&lt;br /&gt;
=== Поля Галуа ===&lt;br /&gt;
Операцию сложения определим как &amp;quot;исключающее ИЛИ&amp;quot; &amp;lt;math&amp;gt;(XOR)&amp;lt;/math&amp;gt;.Очевидно, что в таком случае операция сложения является обратной самой себе. Тогда операция умножения в двоичном виде будет выглядеть так:&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;math&amp;gt; \begin{matrix} *\underline{\begin{matrix}&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
\end{matrix}}\\&lt;br /&gt;
+\underline{\begin{matrix}&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
\end{matrix}} \\&lt;br /&gt;
\begin{matrix}&lt;br /&gt;
 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
\end{matrix} \\&lt;br /&gt;
\end{matrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так можно умножать полиномы, в данном случае мы умножили:&lt;br /&gt;
&amp;lt;math&amp;gt; (x + 1) * (x^2 + x) = x^3 + x&amp;lt;/math&amp;gt;.&lt;br /&gt;
Определим также операцию деления чисел(или полиномов) с остатком – по аналогичным правилам, например:&lt;br /&gt;
&amp;lt;math&amp;gt; \frac{110010}{101011}=011001 &amp;lt;/math&amp;gt;&lt;br /&gt;
или &amp;lt;math&amp;gt; \frac{x^5 + x^4 + x}{x^5 + x^3 + x + 1} = x^4 + x^3 + 1  &amp;lt;/math&amp;gt;&lt;br /&gt;
Теперь построим поле из 16 элементов &amp;lt;math&amp;gt; GF_{16} &amp;lt;/math&amp;gt;. Операцию сложения определена на XOR, Операция деления дополнена получением остатка по некоторому модулю.&lt;br /&gt;
Выберем в качестве модуля неприводимый полином &amp;lt;math&amp;gt; x^4+x+1 (10011) &amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возьмем единицу и будем последовательно умножать ее на 2 и рассмотрим числа, которые будут при этом &lt;br /&gt;
# &amp;lt;math&amp;gt;1= 2^0=0001 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^0*2=2^1=0010 _{mod 10011} = 2 = x^1 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^1*2=2^2=0100 _{mod 10011} = 4 = x^2 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^2*2=2^3=1000 _{mod 10011} = 8 = x^3 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^3*2=2^4=10000 _{mod 10011} = 0011 = 3 = x+1 &amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt; 2^4*2=2^5=100000 _{mod 10011} = 0110 = 6 = x^2+x &amp;lt;/math&amp;gt;&lt;br /&gt;
и так далее.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Составим таблицу умножения'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Степень&lt;br /&gt;
! Результат&lt;br /&gt;
|-&lt;br /&gt;
| 0&lt;br /&gt;
| 1&lt;br /&gt;
| 0001&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 2&lt;br /&gt;
| 0010&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| 4&lt;br /&gt;
| 0100&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| 8&lt;br /&gt;
| 1000&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| 3&lt;br /&gt;
| 0011&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| 6&lt;br /&gt;
| 0110&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| 12&lt;br /&gt;
| 1100&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| 11&lt;br /&gt;
| 1011&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| 5&lt;br /&gt;
| 0101&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| 10&lt;br /&gt;
| 1010&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 7&lt;br /&gt;
| 0111&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 14&lt;br /&gt;
| 1110&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 15&lt;br /&gt;
| 1111&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 13&lt;br /&gt;
| 1101&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 9&lt;br /&gt;
| 1001&lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 1&lt;br /&gt;
| 0001&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Таким образом, при дальнейшем умножении весь цикл повторится снова. Полученные степени двойки не сложно умножать между собой, например: &amp;lt;math&amp;gt; 13*15=2^{13}*2^{12}=2^{25 mod 15}=2^{10}=7 &amp;lt;/math&amp;gt;. Можно проверить результат,разделив &amp;lt;math&amp;gt; \frac{7}{13}=\frac{2^{10}}{2^{13}}=2^{-3 mod 15}=2^{12}=15 &amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Таким образом, получили поле &amp;lt;math&amp;gt;GF_{16}&amp;lt;/math&amp;gt;, то есть для двоичных 4-разрядных чисел.'''&lt;br /&gt;
== Коды Рида - Соломона ==&lt;br /&gt;
При построении кода Рида-Соломона задается пара чисел N,K, где N-Общее количество символов, а К- «полезное» количество символов, N-K символов задают избыточный код, предназначенный для восстановления ошибок.&lt;br /&gt;
Такой код Рида-Соломона будет иметь «расстояние Хемминга» &amp;lt;math&amp;gt;D=N-K+1&amp;lt;/math&amp;gt;.&lt;br /&gt;
В соответствии с теорией кодирования, код, имеющий расстояние Хемминга &amp;lt;math&amp;gt;D=2t+1&amp;lt;/math&amp;gt;, позволяет восстанавливать t ошибок. Таким образом, если нам необходимо восстановить t ошибок, то общее количество символов сообщения &amp;lt;math&amp;gt;N=K+2t&amp;lt;/math&amp;gt;.&lt;br /&gt;
Сообщения при кодировании Рида-Соломона представляются полиномами.&lt;br /&gt;
Исходное сообщение представляется как коэффициенты полинома &amp;lt;math&amp;gt;p(x)&amp;lt;/math&amp;gt; степени &amp;lt;math&amp;gt;K-1&amp;lt;/math&amp;gt;, имеющего &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; коэффициентов.&amp;lt;br /&amp;gt;&lt;br /&gt;
Порождающий многочлен Рида-Соломона,&amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;, строится следующий образом:&lt;br /&gt;
&amp;lt;math&amp;gt; g(x)=(x+2)(x+2^{2})..(x+2^{ D-1 } ) &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;2 - &amp;lt;/math&amp;gt; примитивный член поля. Нетрудно понять, что &amp;lt;math&amp;gt;2^{1},2^{2},..,2^{D-1}&amp;lt;/math&amp;gt; - корни этого многочлена.&amp;lt;br&amp;gt;&lt;br /&gt;
Например, построим порождающий многочлен кода Рида-Соломона с &amp;lt;math&amp;gt;N=15,K=9&amp;lt;/math&amp;gt;, способного исправлять до 3 ошибок &amp;lt;math&amp;gt;(15-9)/2=3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;g(x)=(x+2)(x+2^{2} )(x+2^{3} )(x+2^{4} )(x+2^{5} )(x+2^{6} )=x^{6}+7x^{5}+9x^{4}+3x^{3}+12x^{2}+10x+12&amp;lt;/math&amp;gt;.     ''(Возведение в степень и умножения выполнены над полем GF&amp;lt;sub&amp;gt;16&amp;lt;/sub&amp;gt; )!''&lt;br /&gt;
== Кодирование Рида-Соломона ==&lt;br /&gt;
Кодирование Рида-Соломона будем производить систематическим кодом, это означает, что в закодированное сообщение будет содержать в себе в явном виде исходное сообщение. Каким образом это делается:&lt;br /&gt;
Сначала полином сдвигается на &amp;lt;math&amp;gt;N-K&amp;lt;/math&amp;gt; коэффициентов влево &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;p'(x)=p(x)x^{N-K}&amp;lt;/math&amp;gt; ,а потом вычисляется остаток от деления на порождающий полином и прибавляется к &amp;lt;math&amp;gt;p'(x)&amp;lt;/math&amp;gt;: &amp;lt;math&amp;gt;C(x)=p'(x)+p'(x)mod g(x)&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для систематического кого очевидно, что &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; старших коэффициентов полученного кода &amp;lt;math&amp;gt;C(x)&amp;lt;/math&amp;gt; содержат исходное сообщение. Это удобно при декодировании.&lt;br /&gt;
Закодированное сообщение &amp;lt;math&amp;gt;C(x)&amp;lt;/math&amp;gt; обладает очень важным свойством: оно без остатка делится на порождающий многочлен &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Докажем это свойство:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
Пусь &amp;lt;math&amp;gt;r(x)&amp;lt;/math&amp;gt;-остаток от деления &amp;lt;math&amp;gt;p'(x)&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Тогда,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;p'(x)=g(x)u(x)+r(x)&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Итак,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;r(x)=p'(x)mod g(x)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Тогда&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;C(x)=p'(x)+p'(x)mod g(x)=g(x)u(x)+r(x)+r(x)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Вспомним, что в арифметике поля Галуа сложения являются одновременно и вычитанием, тогда &amp;lt;math&amp;gt;r(x)+r(x)=0&amp;lt;/math&amp;gt;!Следовательно &amp;lt;math&amp;gt;C(x)&amp;lt;/math&amp;gt; делится на &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; без остатка.&amp;lt;br /&amp;gt;&lt;br /&gt;
Таким образом, &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;C(x) mod g(x)=0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
В случае, если закодированное сообщение будет изменено, то это равенство будет нарушенным, не считая случая, когда ошибка окажется кратной &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;. Факт искажения можно рассматривать как прибавление к &amp;lt;math&amp;gt;C(x)&amp;lt;/math&amp;gt; некоторого полинома ошибки &amp;lt;math&amp;gt;E(x)&amp;lt;/math&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Пример:'''&amp;lt;br /&amp;gt;&lt;br /&gt;
Рассмотрим кодирование информации. Пусть наше сообщение такое:&lt;br /&gt;
&amp;lt;math&amp;gt;12, 10, 12, 7&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Полином сообщения получается такой:&lt;br /&gt;
&amp;lt;math&amp;gt;I(x)=12x^{3}+10x^{2}+12x+7&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Умножаем на &amp;lt;math&amp;gt;x^{2}&amp;lt;/math&amp;gt;,получаем:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;I'(x)=12x^{5}+10x^{4}+12x^{3}+7x^{2}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Делим на &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt; и получаем остаток: &amp;lt;math&amp;gt;r(x)= x + 4 &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
В итоге получается полином закодированного сообщения: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;C(x)=12x^{5}+10x^{4}+12x^{3}+7x^{2}+x+4&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
== Декодирование Рида-Соломона ==&lt;br /&gt;
Первым шагом необходимо выполнить деление полинома на порождающий полином &amp;lt;math&amp;gt;g(x)&amp;lt;/math&amp;gt;. Если остаток от деления равен 0, то сообщение не искажено и декодирование для систематического кода тривиально.&amp;lt;br /&amp;gt;&lt;br /&gt;
Разделим закодированное сообщение на образующий полином: &amp;lt;math&amp;gt;\frac{12x^{5}+10x^{4}+12x^{3}+7x^{2}+x+4}{x^{6}+7x^{5}+9x^{4}+3x^{3}+12x^{2}+10x+12}=0&amp;lt;/math&amp;gt;,&amp;lt;br /&amp;gt; в этом можно убедиться, самостоятельно проделав операцию деления, согласно арифметике поля GF_{16}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Внесем ошибку в закодированное сообщение, полином ошибки &amp;lt;math&amp;gt;E(x)=14x^{4}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Разделим получившееся закодированное сообщение &amp;lt;math&amp;gt;C'(x)&amp;lt;/math&amp;gt; на &amp;lt;math&amp;gt;g(x): r(x) = 14x + 14&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
В случае присутствия ошибки выполняем следующие действия:&amp;lt;br /&amp;gt;&lt;br /&gt;
Декодирование основано на построении многочлена синдрома ошибки S(x) и отыскании соответствующего ему многочлена локаторов L(x).&amp;lt;br /&amp;gt;&lt;br /&gt;
Локаторы ошибок – это элементы поля Галуа, степень которых совпадает с позицией ошибки. Так, если искажён коэффициент при &amp;lt;math&amp;gt;x^{4}&amp;lt;/math&amp;gt;, то локатор этой ошибки равен &amp;lt;math&amp;gt;a^{4}&amp;lt;/math&amp;gt;, если искажён коэффициент при &amp;lt;math&amp;gt;x^{7}&amp;lt;/math&amp;gt; то локатор ошибки будет равен &amp;lt;math&amp;gt;a^{7}&amp;lt;/math&amp;gt; и т.п. (а – примитивный член, т.е. в нашем случае a=2).&lt;br /&gt;
Многочлен локаторов &amp;lt;math&amp;gt;L(x)&amp;lt;/math&amp;gt; – это многочлен, корни которого обратны локаторам ошибок. Таким образом, многочлен &amp;lt;math&amp;gt;L(x)&amp;lt;/math&amp;gt; должен иметь вид &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L(x)=(1+xX_1 )(1+xX_2)..(1+xX_i)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;X_1,X_2,..,X_i&amp;lt;/math&amp;gt; - локаторы ошибок&amp;lt;br /&amp;gt;&lt;br /&gt;
Ясно, что если этот многочлен будет найден, то мы легко сможем определить локаторы ошибок – для этого потребуется только определить его корни.&amp;lt;br /&amp;gt;&lt;br /&gt;
Для определения этого полинома сначала получают вспомогательный полином &amp;lt;math&amp;gt;S(x)&amp;lt;/math&amp;gt;, так называемый синдром ошибки. Коэффициенты синдрома ошибки получаются подстановкой степеней примитивного члена в остаток многочлен &amp;lt;math&amp;gt;r(x) = C(x) mod          g(x)&amp;lt;/math&amp;gt;:    &amp;lt;math&amp;gt;S_i=e(a^{i})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Для нашего примера:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(1) = 1;&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(2) = 3;&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Между &amp;lt;math&amp;gt;L(x)&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;S(x)&amp;lt;/math&amp;gt; существует соотношение&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L(x)S(x)=W(x)modx^{N-K}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;W(x)&amp;lt;/math&amp;gt; называется многочленом ошибок. Степень многочлена &amp;lt;math&amp;gt;W(x)&amp;lt;/math&amp;gt; не может превышать &amp;lt;math&amp;gt;t-1&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; – количество ошибок, то есть в максимальном случае &amp;lt;math&amp;gt;(N-K)/2-1&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt; &lt;br /&gt;
С учётом этого обстоятельства, а также учитывая, что свободный член &amp;lt;math&amp;gt;L(x):  L_0=1&amp;lt;/math&amp;gt; (ведь &amp;lt;math&amp;gt;L(x)=(1+xX_1 )(1+xX_2 )..(1+xX_i) )&amp;lt;/math&amp;gt; можно составить систему линейных уравнений.&lt;br /&gt;
&amp;lt;math&amp;gt;W(x)=&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(L_0 S_1+L_1 S_0 )X+&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(L_0 S_2+L_1 S_1+L_2 S_0 ) X^2+&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(L_0 S_3+L_1 S_2+L_2 S_1+L_3 S_0 ) X^3+&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;...&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;(L_0 S_{N-K-1}+L_1 S_{N-K-2}..L_{(N-K)/2} S_{(N-K)/2-1}X^{N-K-1}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;t = (N-K)/2&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Коэффициенты при степенях от 0 до t – 1 не равны нулю, при старших степенях должны быть нулевыми.&amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_t+L_1 S_{t-1}+L_2 S_{t-2}+L_3 S_{t-3}...L_t S_0  = 0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_{t+1}+L_1 S_t+L_2 S_{t-1}+L_3 S_{t-2}...L_t S_1  = 0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_{t+2}+L_1 S_{t+1}+L_2 S_t+L_3 S_{t-1}...L_t S_2  = 0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\dots&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_0 S_{2t-1}+L_1 S_{2t-2}+L_2 S_{2t-3}+L_3 S_{2t-4}...L_t S_t  = 0&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Коэффициент &amp;lt;math&amp;gt;L_0&amp;lt;/math&amp;gt; известен, остальные необходимо найти, следовательно требуется составить t уравнений.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 S_{t-1}+L_2 S_{t-2}+L_3 S_{t-3}...L_t S_0  = S_t&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 S_t+L_2 S_{t-1}+L_3 S_{t-2}...L_t S_1  = S_{t+1}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 S_{t+1}+L_2 S_t+L_3 S_{t-1}...L_t S_2  = S_{t+2}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;...&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L_1 S_{2t-2}+L_2 S_{2t-3}+L_3 S_{2t-4}...L_t S_t  = S_{2t-1}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
В матричном виде:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M=&lt;br /&gt;
\quad\left\|\begin{array}{ccccc} &lt;br /&gt;
S_{t-1} &amp;amp;  S_{t-2} &amp;amp; S_{t-3} &amp;amp; \cdots &amp;amp; S_0\\&lt;br /&gt;
S_{t} &amp;amp;  S_{t-1} &amp;amp; S_{t-2} &amp;amp; \cdots &amp;amp; S_1\\&lt;br /&gt;
S_{t+1} &amp;amp;  S_{t} &amp;amp; S_{t-1} &amp;amp; \cdots &amp;amp; S_2\\&lt;br /&gt;
\cdots &amp;amp; \cdots &amp;amp; \cdots &amp;amp; \cdots &amp;amp; \cdots \\ &lt;br /&gt;
S_{2t-2} &amp;amp;  S_{2t-3} &amp;amp; S_{2t-4} &amp;amp; \cdots &amp;amp; S_t\\&lt;br /&gt;
\end{array}\right\|&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;V=\quad\left\|\begin{array}{c} &lt;br /&gt;
S_{t} \\&lt;br /&gt;
S_{t+1} \\&lt;br /&gt;
S_{t+2} \\&lt;br /&gt;
\cdots \\ &lt;br /&gt;
S_{2t-1} \\&lt;br /&gt;
\end{array}\right\|&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;L=\quad\left\|\begin{array}{c} &lt;br /&gt;
L_{1} \\&lt;br /&gt;
L_{2} \\&lt;br /&gt;
L_{3} \\&lt;br /&gt;
\cdots \\ &lt;br /&gt;
L_{t} \\&lt;br /&gt;
\end{array}\right\|&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;ML = V, \Rightarrow M^{-1}V&amp;lt;/math&amp;gt;&lt;br /&gt;
Например, для нашего примера – кода Рида-Соломона (6, 4) матрица M имеет вид:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = S_1&amp;lt;/math&amp;gt;  , а вектор   &amp;lt;math&amp;gt;V = S_2; &amp;lt;/math&amp;gt;   &amp;lt;math&amp;gt;  L(1) = S(2) / S(1) = 3 / 1 = 3 &amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Таким образом, вычисление полинома локаторов сводится к построению матрицы M, нахождению обратной ей и умножению на вектор V.&lt;br /&gt;
Обратная матрица получается так же, как и в обычной математике, например Жордановым методом. &lt;br /&gt;
После того, как полином &amp;lt;math&amp;gt;L(x)&amp;lt;/math&amp;gt; найден, следует найти его корни – они будут обратны к локаторам ошибок. &amp;lt;br /&amp;gt;&lt;br /&gt;
Для нашего примера многочлен локаторов &amp;lt;math&amp;gt;L(x) =1 + 3x &amp;lt;/math&amp;gt; имеет корень \frac{1}{3}, а обратный к нему  &amp;lt;math&amp;gt; 3 = 2^{4}&amp;lt;/math&amp;gt;, а значит позиция ошибки равна &amp;lt;math&amp;gt;x^{4}&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
После нахождения позиции ошибки,займемся нахождением значением ошибки:&amp;lt;br /&amp;gt;&lt;br /&gt;
Воспользуемся определением синдромной функции:&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(1) = r(\alpha) = e_1 L_1 + e_2 L_2 + ... + e_n L_n&amp;lt;/math&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(2) = r(\alpha) = e_1 L_1^{2} + e_2 L_2^{2} + ... + e_n L_n^{2}&amp;lt;/math&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;...&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;S(n) = r(\alpha) = e_1 L_1^{n} + e_2 L_2^{n} + ... + e_n L_n^{n}&amp;lt;/math&amp;gt;,&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt; где &amp;lt;math&amp;gt;e_1,e_2,..,e_n - &amp;lt;/math&amp;gt;значение ошибки. &amp;lt;math&amp;gt;L_1,L_2,..,L_n - &amp;lt;/math&amp;gt;позиция ошибки.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Для нашего кода &amp;lt;math&amp;gt;RS(6,4): S(1) = e_1 L_1; e_1 = S(1) / L_1 = 1 / 3 = 2^{0} / 2^{4} = 2^{11} = 14&amp;lt;/math&amp;gt; - позиция ошибки.&amp;lt;br /&amp;gt;Таким образом сформируем многочлен вычисленной ошибки &amp;lt;math&amp;gt;E'(x) = 14x^{4}&amp;lt;/math&amp;gt;, который совпадает с заданным &amp;lt;math&amp;gt;E(x)&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA_Rajendra_S._Katti</id>
		<title>Схема коррекции ошибок Rajendra S. Katti</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BA%D1%86%D0%B8%D0%B8_%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA_Rajendra_S._Katti"/>
				<updated>2014-05-26T08:35:07Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Введение ==&lt;br /&gt;
Традиционный метод коррекции ошибок, основан на использовании избыточной системы остаточных классов с взаимнопростыми основаниями. Недостатки представления чисел в такой системе с целью коррекции ошибок при вычислениях покажем на примере.&lt;br /&gt;
&lt;br /&gt;
Пусть избыточная СОК определяется следующими модулями &amp;lt;math&amp;gt; m_1 = 3, m_2 = 4, m_3 = 5, m_4 = 7&amp;lt;/math&amp;gt;, а динамический диапазон определяется &amp;lt;math&amp;gt;m_1&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;m_2&amp;lt;/math&amp;gt; и соответственно равен &amp;lt;math&amp;gt;\{0,...,11\}&amp;lt;/math&amp;gt;, а модули &amp;lt;math&amp;gt;m_3, m_4&amp;lt;/math&amp;gt; являются дополнительными и необходимы для проверки на ошибки.&lt;br /&gt;
&lt;br /&gt;
Натуральное число из динамического диапазона может быть восстановлено по любым трём из четырёх остатков по представленным модулям. Например, число &amp;lt;math&amp;gt;x=5=(2,1,0,2)&amp;lt;/math&amp;gt; может быть представлено как &amp;lt;math&amp;gt;(2,1,0)&amp;lt;/math&amp;gt; в системе модулей &amp;lt;math&amp;gt;\{m_1, m_2, m_3\}&amp;lt;/math&amp;gt; или &amp;lt;math&amp;gt;(2,0,2), (1,0,2)&amp;lt;/math&amp;gt; в системах &amp;lt;math&amp;gt;\{m_1, m_3, m_4\}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\{m_2, m_3, m_4\}&amp;lt;/math&amp;gt; соответственно. Поэтому, если одна цифра отбрасывается в представлении &amp;lt;math&amp;gt;(2,1,0,2)&amp;lt;/math&amp;gt;, правильный результат восстановления будет получен тогда и только тогда, когда отбрасываемая цифра ошибочна. Итак, обнаружение ошибок и коррекция выполняется следующим образом:&lt;br /&gt;
# Если число лежит вне динамического диапазона - произошла ошибка.&lt;br /&gt;
# Остатки отбрасываются по одному и если в результате одного из отбрасываний полученное число лежит в динамическом диапазоне, то отброшенный остаток является ошибочным.&lt;br /&gt;
# Корректное значение остатка получается расширением полученного на шаге 2 множества модулей, остатки по которым не содержат ошибок.&lt;br /&gt;
&lt;br /&gt;
Такой подход требует много времени и вычислительных ресурсов. Ниже будет предложена новая схема обнаружения и коррекции ошибок на основе СОК.&lt;br /&gt;
&lt;br /&gt;
== Модули, имеющие общие делители ==&lt;br /&gt;
Каждый набор остатков необязательно соответствует числу из динамического диапазона, если модули не являются попарно взаимно простыми. Легко показать, что такое соответствие есть тогда и только тогда, когда равенство&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_i|_k = |r_j|_k&amp;lt;/math&amp;gt;,&lt;br /&gt;
выполняется для любых &amp;lt;math&amp;gt;i, j&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;k = gcd(r_i, r_j)&amp;lt;/math&amp;gt;. Таким образом, ошибочный разряд может быть найден выполнением только простой операции вычисления остатка.&lt;br /&gt;
&lt;br /&gt;
Приведём пример, демонстрирующий, как можно проверить набор остатков на наличие ошибок. Проверим набор &amp;lt;math&amp;gt;(2, 6, 30, 42)&amp;lt;/math&amp;gt; в системе модулей &amp;lt;math&amp;gt;\{4, 15, 36, 48\}&amp;lt;/math&amp;gt;. Наибольшие общие делители всевозможных пар модулей соответственно равны: &amp;lt;math&amp;gt;gcd(4, 15) = 1, gcd(4, 36) = 4, gcd(4, 48) = 4, gcd(15, 36) = 3, gcd(15, 48) = 3, gcd(36, 48) = 12&amp;lt;/math&amp;gt;.&lt;br /&gt;
Используя описанное выше соотношение для проверки, получаем: &amp;lt;math&amp;gt;|2|_4=|30|_4, |2|_4=|42|_4, |6|_3 = |30|_3, |6|_3=|42|_3&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; |30|_{12}=|42|_{12}&amp;lt;/math&amp;gt;. То есть ошибок нет и число может быть восстановлено с использованием китайской теоремы об остатках (КТО) для модулей, имеющих нетривиальные общие делители.&lt;br /&gt;
&lt;br /&gt;
'''КТО для системы модулей, попарно не взаимно простых'''. Пусть есть представление &amp;lt;math&amp;gt;(r_1, ..., r_n)&amp;lt;/math&amp;gt; натурального числа &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, определяемое системой модулей &amp;lt;math&amp;gt;(m_1, ..., m_n)&amp;lt;/math&amp;gt;. Тогда&lt;br /&gt;
:&amp;lt;math&amp;gt;|x|_M = \left | \sum^{n}_{i=1} {{{\alpha}_i}r_i} \right |&amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt; {\alpha}_i &amp;lt;/math&amp;gt;- число, такое что &amp;lt;math&amp;gt;|{\alpha}_i|_M = 0, |{\alpha}_i|_{\frac{M}{{\mu}_i}} = 1 &amp;lt;/math&amp;gt;,&lt;br /&gt;
где &amp;lt;math&amp;gt; {\mu}_i &amp;lt;/math&amp;gt; - числа, такие что &amp;lt;math&amp;gt; M = \prod^n_{i=1}{{\mu}_i} &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; {\mu}_i &amp;lt;/math&amp;gt; делит &amp;lt;math&amp;gt; m_i &amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt; M = lcm(m_1, ..., m_n) &amp;lt;/math&amp;gt;. Если для некоторого &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; такое &amp;lt;math&amp;gt;{\alpha}_i&amp;lt;/math&amp;gt; не существует, то соответствующее слагаемое в сумме опускается. &lt;br /&gt;
&lt;br /&gt;
Операции над числами остаются корректными и в системе не взаимно простых попарно модулей.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Если в множестве модулей &amp;lt;math&amp;gt;(m_1, ..., m_n)&amp;lt;/math&amp;gt; есть имеющие нетривиальный общий делитель, то каждый набор остатков &amp;lt;math&amp;gt;(r_1, ..., r_n)&amp;lt;/math&amp;gt; необязательно соответствует некоторому числу. Каждый набор, для которого такое соответствие имеет место, будем называть '''кодовым словом'''.&lt;br /&gt;
&lt;br /&gt;
'''Расстоянием''' между двумя представлениями чисел в СОК(кодовыми словами) будем считать количество разрядов, в которых кодовые слова различаются между собой. &lt;br /&gt;
&lt;br /&gt;
'''Кодовым расстоянием''' назовём минимальное расстояние среди всех пар кодовых слов.&lt;br /&gt;
&lt;br /&gt;
Чтобы обнаружить и исправить &amp;lt;math&amp;gt;d-1&amp;lt;/math&amp;gt; или меньше ошибок, необходимо и достаточно, чтобы кодовое расстояние было не меньше &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;. Не более &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; ошибок может быть обнаружено и исправлено тогда и только тогда, когда кодовое расстояние больше, чем &amp;lt;math&amp;gt;(2t+1)&amp;lt;/math&amp;gt;. Если кодовое расстояние больше или равно, чем &amp;lt;math&amp;gt;(t+d+1)&amp;lt;/math&amp;gt;, то любая комбинация из &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; ошибок может быть исправлена и до &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;ошибок могут быть обнаружены. &lt;br /&gt;
Для множества из &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; модулей в соответствующей системе могут быть представлены числа &amp;lt;math&amp;gt;(0, ..., M-1)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;M = lcm(m_1, ..., m_n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Циклическим числом''' &amp;lt;math&amp;gt;c_i&amp;lt;/math&amp;gt; для каждого модуля &amp;lt;math&amp;gt;m_i&amp;lt;/math&amp;gt; назовём &amp;lt;math&amp;gt;c_i = M/m_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
=== Модули с попарно взаимно простыми циклическими числами ===&lt;br /&gt;
Построим теперь систему модулей с попарно взаимно простыми циклическими числами, которая поможет получит эффективный алгоритм обнаружения и коррекции ошибок. &lt;br /&gt;
&lt;br /&gt;
'''Построение 1'''. &lt;br /&gt;
#Выберем &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; попарно взаимно простых циклических чисел, не равных единице &amp;lt;math&amp;gt;(c_1, ..., c_n)&amp;lt;/math&amp;gt;.&lt;br /&gt;
#Получим систему модулей &amp;lt;math&amp;gt;(m_1, ..., m_n)&amp;lt;/math&amp;gt; следующим образом:&lt;br /&gt;
:&amp;lt;math&amp;gt;m_i = \frac{1}{c_i}\prod^n_{k=1}{c_k}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Полученные модули обладают двумя свойствами:&lt;br /&gt;
#Наименьшие общие кратны всевозможных пар модулей равны между собой.&lt;br /&gt;
#Наибольшие общие делители всевозможных пар модулей различны.&lt;br /&gt;
&lt;br /&gt;
'''Теорема 1'''. Для построенной системы модулей кодовое расстояние равно &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; - количество модулей.&lt;br /&gt;
&lt;br /&gt;
==== Алгоритм обнаружения ошибки ====&lt;br /&gt;
#Если &amp;lt;math&amp;gt;r_i \geqslant m_i&amp;lt;/math&amp;gt;, то произошла ошибка в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-том разряде.&lt;br /&gt;
#Если не выполняется хотя бы одно из следующей системы равенств:&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_i|_{k_{ij}}=|r_j|_{k_{ij}}, k_{ij} = gcd(m_i, m_j)&amp;lt;/math&amp;gt;,&lt;br /&gt;
то произошла ошибка.&lt;br /&gt;
&lt;br /&gt;
'''Теорема 2'''. Для системы из четырёх модулей &amp;lt;math&amp;gt;(m_1, m_2, m_3, m_4)&amp;lt;/math&amp;gt; ошибка в одном разряде влечёт за собой невыполнением как минимум двух, а как максимум трёх равенств из системы выше. Причём, если ошибка в &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt;, то равенства, которые не выполняются, содержат &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Алгоритм локализации ошибки ====&lt;br /&gt;
Теорема 2 даёт алгоритм локализации ошибки. Ошибочным является разряд, который содержится во всех равенствах, которые не выполняются.&lt;br /&gt;
==== Алгоритм коррекции ошибки ====&lt;br /&gt;
Предложим, что ошибка в &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\bar{r_i}&amp;lt;/math&amp;gt; - правильное значение. Тогда &amp;lt;math&amp;gt;\bar{r_i}&amp;lt;/math&amp;gt; можно найти, решая следующую систему уравнений:&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar{r_i}|_{k_a} = |r_j|_{k_a}, k_a = gcd(m_i, m_j)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar{r_i}|_{k_b} = |r_k|_{k_b}, k_b = gcd(m_i, m_k)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Решение заключается в составлении множеств &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;A = \left \{ f = |r_j|_{k_a}  + k_a k_x : f &amp;lt; m_i, k_x \geq 0 \right \}&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;B = \left \{ g = |r_k|_{k_b}  + k_b k_y : g &amp;lt; m_i, k_y \geq 0 \right \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
и поиске пересечения &amp;lt;math&amp;gt;A \cap B&amp;lt;/math&amp;gt;. Можно доказать, что такое пересечение всегда непусто и состоит ровно из одного элемента.&lt;br /&gt;
&lt;br /&gt;
==== Примеры ====&lt;br /&gt;
'''Пример обнаружения одной ошибки.'''&lt;br /&gt;
Воспользуемся Построением 1 для получения системы модулей. Используя попарно взаимно простые циклические числа &amp;lt;math&amp;gt;(c_1, c_2, c_3, c_4)=(2, 3, 5, 7)&amp;lt;/math&amp;gt;, получим систему модулей &amp;lt;math&amp;gt;(m_1, m_2, m_3, m_4)=(105, 70, 42, 30)&amp;lt;/math&amp;gt;. Пусть теперь в остаточном представлении &amp;lt;math&amp;gt;(r_1, r_2, r_3, r_4)=(30, 60, 30, 0)&amp;lt;/math&amp;gt; содержится одна ошибка. Проверяя совместность представления, найдём, что следующие равенства не выполняются:&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_1|_{35} = |r_2|_{35}, 35 = gcd(105, 70)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_2|_{14} = |r_3k|_{14}, 14 = gcd(70, 42)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;math&amp;gt;r_2&amp;lt;/math&amp;gt; является общим в этих равенствах, ошибочным является остаток &amp;lt;math&amp;gt;60&amp;lt;/math&amp;gt;. Для того чтобы получить правильное значение, составим множества &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; как было описано выше:&lt;br /&gt;
:&amp;lt;math&amp;gt;A = \left \{ f = |r_1|_{35}  + 35 k_x : f &amp;lt; 70, k_x \geq 0 \right \}&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;B = \left \{ g = |r_3|_{14}  + 14 k_y : g &amp;lt; 70, k_y \geq 0 \right \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получим:&lt;br /&gt;
:&amp;lt;math&amp;gt;A = \left \{ 30, 65 \right \}&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;B = \left \{ 2,16,30,44,58\right \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Таким образом скорректированное значение &amp;lt;math&amp;gt;\{ \bar {r_2} \}= A \cap B = \{ 30 \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Необязательно вычислять множество &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; полностью. Так как &amp;lt;math&amp;gt;|r_1|_{35} &amp;gt; 14&amp;lt;/math&amp;gt;, то &amp;lt;math&amp;gt;k_y \geq 2&amp;lt;/math&amp;gt;. Вычисления элементов множеств следует прекратить, как только их пересечение больше не пусто.&lt;br /&gt;
'''Пример обнаружения двух и коррекции одной ошибки.'''&lt;br /&gt;
Для обнаружения двух и коррекции одной ошибки требуется по крайней мере 5 модулей и кодовое расстояние равное 4. Если мы выберем циклические числа &amp;lt;math&amp;gt;(2, 3, 5, 7, 11)&amp;lt;/math&amp;gt; мы получим набор модулей &amp;lt;math&amp;gt;(m_1, m_2, m_3, m_4, m_5) = (1155, 770, 462, 330, 210)&amp;lt;/math&amp;gt;. Чтобы проверить, есть ли ошибки в остаточном представлении &amp;lt;math&amp;gt;(r_1, r_2, r_3, r_4, r_5)&amp;lt;/math&amp;gt;, нужно выяснить, какие из следующих равенств не выполняются:&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_1|_{385} = |r_2|_{385}, 385 = gcd(1155, 770)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_1|_{231} = |r_3|_{231}, 231 = gcd(1155, 462)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_1|_{105} = |r_5|_{105}, 105 = gcd(1155, 210)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_2|_{154} = |r_3|_{154}, 154 = gcd(462, 770)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_2|_{110} = |r_4|_{110}, 110 = gcd(330, 770)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_2|_{70} = |r_5|_{70}, 70 = gcd(210, 770)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_3|_{66} = |r_4|_{66}, 66 = gcd(462, 330)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_3|_{42} = |r_5|_{42}, 42 = gcd(462, 210)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_4|_{30} = |r_5|_{30}, 30 = gcd(330, 210)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Следует отметить, что если три или четыре из равенств выше не выполняются, то обнаружена одна ошибка. Если их пять и больше, то ошибок две. Аналогично предыдущему примеру, можно построить три множества &amp;lt;math&amp;gt;A, B, C&amp;lt;/math&amp;gt;. Исправленное значение ошибочного разряда получим, найдя пересечение этих множеств:&lt;br /&gt;
&amp;lt;math&amp;gt;\{ \bar {r_i} \}= A \cap B \cap C&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Модули с произвольными циклическими числами ===&lt;br /&gt;
Если мы уберём ограничение на взаимную простоту циклических числе, то обнаружение и коррекция ошибки может быть всё ещё осуществлена сокращением динамического диапазона. Следующие теорема и следствие связывают кодовое расстояние и динамический диапазон.&lt;br /&gt;
&lt;br /&gt;
'''Теорема 3'''. Пусть есть множество модулей &amp;lt;math&amp;gt;(m_1, m_2, ..., m_n)&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;(l_1, l_2, ..., l_a)&amp;lt;/math&amp;gt; - множество наименьших общих кратных всевозможных различных пар модулей, где &amp;lt;math&amp;gt;a = C^2_n&amp;lt;/math&amp;gt;. Тогда, если &amp;lt;math&amp;gt;l = \min{(l_1, l_2, ..., l_a)}&amp;lt;/math&amp;gt;, то кодовое расстояние множества всех представлений чисел &amp;lt;math&amp;gt;\{0, ..., l-1\}&amp;lt;/math&amp;gt; в системе остаточных классов равно &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Следствие'''. Пусть есть множество модулей &amp;lt;math&amp;gt;(m_1, m_2, ..., m_n)&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;(l_1, l_2, ..., l_a)&amp;lt;/math&amp;gt; - множество наименьших общих кратных всевозможных кортежей из &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; различных модулей, где &amp;lt;math&amp;gt;a = C^i_n&amp;lt;/math&amp;gt;. Тогда, если &amp;lt;math&amp;gt;l = \min{(l_1, l_2, ..., l_a)}&amp;lt;/math&amp;gt;, то кодовое расстояние множества всех представлений чисел &amp;lt;math&amp;gt;\{0, ..., l-1\}&amp;lt;/math&amp;gt; в системе остаточных классов равно &amp;lt;math&amp;gt;n - 1 + i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Далее будем предполагать, что ошибочный разряд только один. Из теоремы 3 следует, что для коррекции одной ошибки требуется множество из 4 модулей &amp;lt;math&amp;gt;(m_1, m_2, m_3, m_4)&amp;lt;/math&amp;gt;. Пусть &amp;lt;math&amp;gt;l_1, l_2, l_3&amp;lt;/math&amp;gt; - соответственно наименьшее из НОК всех пар, наименьшее из НОК всех троек и НОК всех модулей. Из теоремы 3 и следствия из неё следует, что для множества чисел &amp;lt;math&amp;gt;\{0, ..., l_1-1\}&amp;lt;/math&amp;gt; кодовое расстояние соответствующего множества кодовых слов равно &amp;lt;math&amp;gt;3&amp;lt;/math&amp;gt;, а для множеств &amp;lt;math&amp;gt;\{0, ..., l_2-1\}&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;\{0, ..., l_3-1\}&amp;lt;/math&amp;gt; - не меньше &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; и не меньше &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; соответственно. Разделим множество всех кодовых слов на три подмножества:&lt;br /&gt;
:&amp;lt;math&amp;gt;A = \{x : 0 \leq x \leq l_1-1\}&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;B = \{x : l_1 \leq x \leq l_2-1\}&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;C = \{x : l_2 \leq x \leq l_3-1\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Для коррекции одной ошибки необходимо кодовое расстояние, равное трём, то есть все слова из &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; выходят за границы динамического диапазона. Пусть необходимо обнаружить/исправить одну ошибку в остаточном представлении.&lt;br /&gt;
&lt;br /&gt;
==== Алгоритм обнаружения ошибки ====&lt;br /&gt;
#Если &amp;lt;math&amp;gt;r_i \geqslant m_i&amp;lt;/math&amp;gt;, то произошла ошибка в &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;-том разряде.&lt;br /&gt;
#Если остаточное представление не является совместным и слово не лежит в динамическом диапазоне, то произошла ошибка. Для проверки нужно воспользоваться КТО для перевода числа из остаточного представления и проверить, выполняется ли &amp;lt;math&amp;gt;x \leq l_1-1&amp;lt;/math&amp;gt;.&lt;br /&gt;
#Если остаточное представление не является совместным, то произошла ошибка.&lt;br /&gt;
#Если остаточное представление является совместным и лежит в динамическом диапазоне, то ошибок нет.&lt;br /&gt;
==== Алгоритм коррекции ошибки ====&lt;br /&gt;
Начнём описание алгоритма со следующей леммы.&lt;br /&gt;
&lt;br /&gt;
'''Лемма 1'''. Существует и единственно кодовое слово в множестве &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;, такое что кодовое расстояние между этим словом и остаточным представлением &amp;lt;math&amp;gt;(r_1, r_2, r_3, r_4)&amp;lt;/math&amp;gt; равно &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Опишем теперь коррекцию ошибки для каждого варианта:&lt;br /&gt;
#Кодовое слово за пределами динамического диапазона и совместно.&lt;br /&gt;
#Кодовое слово не совместно.&lt;br /&gt;
&lt;br /&gt;
'''Вариант 1'''. Пусть остаточное представление &amp;lt;math&amp;gt;(r_1, r_2, r_3, r_4)&amp;lt;/math&amp;gt; соответствует целому &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;. Так как только один разряд ошибочный, то &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt; принадлежит множеству &amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt;. Коррекция выполняется следующим образом:&lt;br /&gt;
#Для всех кортежей из трёх остатков вычислить по КТО соответствующее целое.&lt;br /&gt;
#Если полученное целое принадлежит динамическому диапазону, то ошибка в исключённом разряде.&lt;br /&gt;
#Предположим без потери общности, что ошибочным является &amp;lt;math&amp;gt;r_3&amp;lt;/math&amp;gt;. Найдём правильное значение &amp;lt;math&amp;gt;\bar {r_3}&amp;lt;/math&amp;gt; из следующих уравнений:&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar{r_3}|_{k_a} = |r_1|_{k_a}, k_a = gcd(m_3, m_1)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar{r_3}|_{k_b} = |r_2|_{k_b}, k_b = gcd(m_3, m_2)&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar{r_3}|_{k_c} = |r_4|_{k_c}, k_c = gcd(m_3, m_4)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если полученных решений несколько, то согласно Лемме 1 только одно из них принадлежит динамическому диапазону.&lt;br /&gt;
&lt;br /&gt;
'''Вариант 2'''. Пусть кодовое слово &amp;lt;math&amp;gt;(r_1, r_2, r_3, r_4)&amp;lt;/math&amp;gt; не является совместным, то есть не выполняется равенство:&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_i|_{k_a} = |r_j|_{k_a}, k_a = gcd(m_i, m_j)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Значит ошибочным является либо &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt;, либо &amp;lt;math&amp;gt;r_j&amp;lt;/math&amp;gt;. Пусть ошибка в &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt;, найдём правильное значение, как в шаге 3 выше. Если для полученных решений, соответствующие целые не лежат в динамическом диапазоне, то ошибка в &amp;lt;math&amp;gt;r_j&amp;lt;/math&amp;gt;, и её можно исправить тем же способом, описанным в шаге 3. &lt;br /&gt;
&lt;br /&gt;
==== Примеры ====&lt;br /&gt;
Определим множество модулей &amp;lt;math&amp;gt;(m_1, m_2, m_3, m_4) = (8,6,4,2)&amp;lt;/math&amp;gt;. Все кодовые слова и их целые эквиваленты приведены ниже:&lt;br /&gt;
:&amp;lt;math&amp;gt;(0,0,0,0) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(1,1,1,1) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(2,2,2,0) = 2&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(3,3,3,1) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(4,4,0,0) = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(5,5,1,3) = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(6,0,2,0) = 6&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(7,1,3,1) = 7&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(0,2,0,0) = 8&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(1,3,1,1) = 9&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(2,4,2,0) = 10&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(3,5,3,1) = 11&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(4,0,0,0) = 12&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(5,1,1,1) = 13&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(6,2,2,0) = 14&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(7,3,3,1) = 15&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(0,4,0,0) = 16&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(1,5,1,1) = 17&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(2,0,2,0) = 18&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(3,1,3,1) = 19&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(4,2,0,0) = 20&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(5,3,1,1) = 21&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(6,4,2,0) = 22&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(7,5,3,1) = 23&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Множества &amp;lt;math&amp;gt;A, B, C&amp;lt;/math&amp;gt;, определённые выше, равны &amp;lt;math&amp;gt;A = \{0, ..., 3\}, B = \{4, ..., 7\}, C = \{8, ..., 23\}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим теперь несколько примеров обнаружения и коррекции. &lt;br /&gt;
&lt;br /&gt;
'''Пример 1 '''. Остаточное представление &amp;lt;math&amp;gt;(r_1, r_2, r_3, r_4) = (2,0,2,0)&amp;lt;/math&amp;gt; является совместным и не принадлежит динамическому диапазону. Четыре кортежа из трёх остатков и соответствующие им целые:&lt;br /&gt;
:&amp;lt;math&amp;gt;(2,0,2) = 18&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(0,2,0) = 6&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(2,0,0) = 18&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(2,2,0) = 2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Единственное представление, лежащее в &amp;lt;math&amp;gt;\{0, ..., 3\}&amp;lt;/math&amp;gt; -  это &amp;lt;math&amp;gt;(2,2,0)&amp;lt;/math&amp;gt;, следовательно &amp;lt;math&amp;gt;r_2 = 0&amp;lt;/math&amp;gt; является ошибочным. Эта ошибка может быть исправлена, правильное значение можно найти из следующих уравнений:&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_2}|_2 = |r_1|_2 = 0&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_2}|_2 = |r_3|_2 = 0&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_2}|_2 = |r_4|_2 = 0&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;\bar {r_2} \leq 5&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Им удовлетворяют три решения: &amp;lt;math&amp;gt;0, 2, 4&amp;lt;/math&amp;gt;. Правильным является &amp;lt;math&amp;gt; \bar {r_2} = 2&amp;lt;/math&amp;gt;, так оставшиеся два соответствуют представлениям, лежащим вне динамического диапазона. &lt;br /&gt;
&lt;br /&gt;
'''Пример 2 '''. Остаточное представление &amp;lt;math&amp;gt;(r_1, r_2, r_3, r_4) = (0,0,0,5)&amp;lt;/math&amp;gt;. Так как &amp;lt;math&amp;gt;r_4 \geq 2&amp;lt;/math&amp;gt;, то &amp;lt;math&amp;gt;r_4&amp;lt;/math&amp;gt; - ошибочный. Найдём правильное значение из следующих уравнений:&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_4}|_2 = |r_1|_2 = 0&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_4}|_2 = |r_2|_2 = 0&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_4}|_2 = |r_3|_2 = 0&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;\bar {r_4} \leq 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаем &amp;lt;math&amp;gt;\bar {r_4} = 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Пример 3 '''. Остаточное представление &amp;lt;math&amp;gt;(r_1, r_2, r_3, r_4) = (1,3,3,1)&amp;lt;/math&amp;gt; является несовместным, так как не выполняется следующее равенство:&lt;br /&gt;
:&amp;lt;math&amp;gt;|r_1|_4 = |r_3|_4&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;math&amp;gt;r_3&amp;lt;/math&amp;gt; - ошибочный. Тогда скорректированное значение &amp;lt;math&amp;gt;r_3&amp;lt;/math&amp;gt; может быть найдено из следующих уравнений:&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_3}|_4 = |r_1|_4 = 1&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_3}|_2 = |r_2|_2 = 1&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;|\bar {r_3}|_2 = |r_4|_2 = 1&amp;lt;/math&amp;gt;,&lt;br /&gt;
:&amp;lt;math&amp;gt;\bar {r_3} \leq 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Решая, находим &amp;lt;math&amp;gt; \bar {r_3} = 1 &amp;lt;/math&amp;gt;. Скорректированное остаточное представление &amp;lt;math&amp;gt;(1,3,1,1) = 9&amp;lt;/math&amp;gt; лежит вне динамического диапазона. Значит, ошибочным является &amp;lt;math&amp;gt;r_1&amp;lt;/math&amp;gt;. Проводя аналогичную процедуру, находим &amp;lt;math&amp;gt;r_1 = 3&amp;lt;/math&amp;gt;. Полученное остаточное представление &amp;lt;math&amp;gt;(3,3,3,1) = 3&amp;lt;/math&amp;gt; лежит в динамическом диапазоне, коррекция завершена. Заметим, что мы пытались обнаружить ошибку в остаточном представлении &amp;lt;math&amp;gt;(1,3,3,1)&amp;lt;/math&amp;gt;, которое имеет кодовое расстояние равное &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt; с совместными представлениями &amp;lt;math&amp;gt;(1,3,1,1)&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;(3,3,3,1)&amp;lt;/math&amp;gt;. По Лемме 1 только одно из них лежит в динамическом диапазоне.&lt;br /&gt;
== Литература ==&lt;br /&gt;
Rajendra S. Katti, A New Residue Arithmetic Error Correction Scheme, IEEE Trans. Computers, 1996, том 45, стр. 13-19&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2014-05-22T12:15:24Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2013/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Рекурсивная модулярная арифметика‎‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/Main</id>
		<title>Main</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/Main"/>
				<updated>2014-05-07T13:39:59Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table style=&amp;quot;width: 100%;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; border-right: 1px solid gray; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
== Генераторы Verilog (базовые операции) ==&lt;br /&gt;
&lt;br /&gt;
=== Модулярные сумматоры === &lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-2n-1.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - реализация на базе двух сумматоров и мультиплексора (вариант Романа).&lt;br /&gt;
# [http://vscripts.ru/dima/adder.php Генератор Verilog для сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - полностью комбинационная реализация без мультиплексора (вариант Димы).&lt;br /&gt;
# [http://vscripts.ru/dima/all_adders.php?n=31 Генератор Verilog для сумматора по произвольному модулю] - реализация предлагающая оптимальный вариант.&lt;br /&gt;
&lt;br /&gt;
=== Модулярные умножители ===&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication.php Генератор Verilog для умножения по модулю (метод 1)] - от 3 до 1000 по индексному методу (умножение заменено на сложение).&lt;br /&gt;
# [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php Генератор Verilog для умножения по модулю (метод 2)] - от 3 до 1000 по методу разности квадратов (X*Y = (1/4)*(X+Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - (1/4)*(X-Y)&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) &lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-plus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n-minus-1.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1] - для n от 3 до 43.&lt;br /&gt;
# [http://vscripts.ru/2013/multiplication-mod-2-pow-n.php Генератор Verilog для умножителя по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;] - для n от 3 до 43.&lt;br /&gt;
&lt;br /&gt;
=== Классические умножители (до 128 бит) ===&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-recur.php Бинарных умножитель на базе рекурсивной модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - используется два иерархических уровня модулей вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-4-mod-generator.php Бинарный умножитель на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - используется перспективный набор из 4-х модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/high-bit-int-multiplication-hierarchical.php Бинарный умножитель на базе иерархического метода] - используется метод &amp;quot;разделяй и властвуй&amp;quot; без использования модулярной арифметики.&lt;br /&gt;
&lt;br /&gt;
=== Прямые модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/forward-converter-2supn-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Романа). &lt;br /&gt;
# [http://vscripts.ru/dima/fwd_generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов (версия Димы). &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-4-mod-generator.php Модулярный базис (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - прямой преобразователь из позиционной системы счисления в систему остаточных классов. &lt;br /&gt;
# [http://vscripts.ru/2013/forward-converter-universal.php Универсальный прямой преобразователь] - прямой преобразователь из позиционной системы счисления в СОК для произвольной системы модулей (Две версии: комбинационный и конвейерный).&lt;br /&gt;
&lt;br /&gt;
=== Обратные модулярные преобразователи ===&lt;br /&gt;
# [http://vscripts.ru/2012/reverse-converter-2supn-generator.php Генератор Verilog для обратного преобразователя из базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - сверхбыстрый обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-4-mod-generator.php Генератор Verilog для обратного преобразователя из 4-х элементного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь в позиционную систему.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-crt2-based.php Генератор Verilog обратного преобразователя для произвольных взаимнопростых модулей] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей (комбинационная и конвейерная версии).&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей.&lt;br /&gt;
# [http://vscripts.ru/2013/reverse-converter-pipeline-mixed-radix-with-error-correction.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется перспективная схема с уменьшенной площадью.&lt;br /&gt;
# [http://vscripts.ru/2014/straightforward_error_correction_reverse_converter.php Генератор Verilog конвеерного обратного преобразователя на базе полиадического кода с коррекцией ошибок] - универсальный обратный преобразователь в позиционную систему для произвольного числа модулей с коррекцией одиночной ошибки в одном из каналов. Два старших модуля являются избыточными. Используется стандартный метод проекций.&lt;br /&gt;
=== КИХ-фильтры ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-fir-filter-generator.php Генератор Verilog для КИХ-фильтров (простейший метод)] - конвейерная структура сделанная по формуле свертки O(N&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;).&lt;br /&gt;
# [http://vscripts.ru/2013/simple-modular-fir-filter-generator.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярного базиса (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)]&lt;br /&gt;
# [http://vscripts.ru/dima/verilog_generator_modular_fir_filter.php Генератор Verilog для конвейерных КИХ-фильтров на базе модулярной арифметики и БПФ] - перспективный метод с использование БПФ в конечном поле и сложностью O(N*logN)&lt;br /&gt;
&lt;br /&gt;
=== Скалярное произведение ===&lt;br /&gt;
# [http://vscripts.ru/2013/simple-mac-unit.php Генератор Verilog для MAC-Unit (простейший метод)] - синхронный вариант с дефолтной реализацией.&lt;br /&gt;
# [http://vscripts.ru/2013/fast-simple-scalar-multiplication.php Генератор Verilog для быстрого вычисления скалярного произведения с конвейризацией] - синхронный вариант на обычной позиционной арифметике.&lt;br /&gt;
# [http://vscripts.ru/2013/modular_scalar_multiplication.php Генератор Verilog для вычисления скалярного произведения на базе модулярной арифметики] - синхронный вариант на модулярной арифметике.&lt;br /&gt;
&lt;br /&gt;
=== Другое ===&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sum-kwain.php Генератор Verilog для модулярных операций по методу Квайна] - генератор операций сложения и умножения, для малых модулей (от 3 до 15).&lt;br /&gt;
# [http://vscripts.ru/2012/generator-sub-sqr.php Генератор Verilog для квадрата разности по модулю p] - состоит из вычитателя и таблицы квадратов (LUT). &lt;br /&gt;
# [http://vscripts.ru/2013/modular-multiplication-for-fir-filter.php Генератор умножителя для конвейерной реализации модулярного FIR-фильтра]&lt;br /&gt;
# [http://vscripts.ru/dima/fast_fourier_transform_web.php?p=257&amp;amp;len=128 Генератор Verilog для прямых и инверсных Теоретико Числовых БПФ] - используется конвейерная структура Radix2SPDF.&lt;br /&gt;
&lt;br /&gt;
== SAD процессоры (поиск различия между двумя картинками) ==&lt;br /&gt;
# [http://vscripts.ru/2012/sad_generator.php Генератор Verilog для реализации позиционного SAD процессора] - поиск векторов компенсации движения в стандартном виде.&lt;br /&gt;
# [http://vscripts.ru/2012/sad_modular_generator.php Генератор Verilog для реализации модулярного SAD процессора] - поиск векторов компенсации движения в модулярном базисе вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1).&lt;br /&gt;
&lt;br /&gt;
== Формулы и математика ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime-set-generator.php Генератор простых чисел Прота для реализации операции свёртки] ([http://vscripts.ru/2012/prime-set-generator_new.php Версия 2]) - по методу БПФ в конечном поле.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17-simple.php Формула для обратного преобразователя для базиса вида (2n-1, 2n, 2n+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код.&lt;br /&gt;
# [http://vscripts.ru/2012/basis-15x16x17.php Проверка формул обратного преобразователя для базиса вида (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1)] - обратный преобразователь для спец. системы модулей из системы остаточных классов в позиционный код. &lt;br /&gt;
# [http://vscripts.ru/2012/sad-modular-basis-calculator.php Генератор базисов для SAD процессоров разной размерности] - базисы специального вида и обычного. &lt;br /&gt;
# [http://vscripts.ru/2013/draw_complex_mod.php Рисовалка области значений комплексного вычета] - вычет комплексного числа по комлексному переменному&lt;br /&gt;
# [http://vscripts.ru/2013/check_basis.php Проверка базиса и расчет его динамического диапазона]&lt;br /&gt;
# [http://vscripts.ru/2013/find-inverse-by-mod.php Нахождение обратного элемента по модулю]&lt;br /&gt;
# [http://vscripts.ru/2013/radix_converter.php Преобразование позиционной системы счисления для заданного числа]&lt;br /&gt;
# [http://vscripts.ru/2014/backward_rns_converter_online.php Преобразование из системы остаточных классов в позиционный вид]&lt;br /&gt;
# [http://vscripts.ru/2014/recursieve_rns_basis_generator.php Генератор базисов для рекурсивной модулярной арифметики]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;width: 50%; vertical-align: top; padding: 0px 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Справочные материалы ==&lt;br /&gt;
=== Определения ===&lt;br /&gt;
* [[Система остаточных классов|Система остаточных классов (Модулярная арифметика)]] - определение&lt;br /&gt;
* [[Функция Эйлера]]&lt;br /&gt;
* [[Описание КТО II|Описание Китайской теоремы об остатках II (CRT II)]]&lt;br /&gt;
* [[Описание КТО III|Описание Китайской теоремы об остатках III (CRT III)]]&lt;br /&gt;
* [[Вычет по комплексному переменному‎]]&lt;br /&gt;
* [[Свёртка (цифровая обработка сигналов)|Свёртка (ЦОС)]]&lt;br /&gt;
* [[Полиадический код|Полиадический код (система счисления со смешанным основанием)]]&lt;br /&gt;
* [[Модулярная логарифметика‎]]&lt;br /&gt;
* [[Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)|Теория по системе из 4-х модулей (2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;+1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;-1, 2&amp;lt;sup&amp;gt;n+1&amp;lt;/sup&amp;gt;+1)]]&lt;br /&gt;
* [[Фильтр с конечной импульсной характеристикой]]&lt;br /&gt;
* [[Теоретические основы применения модулярной арифметики для обнаружения и коррекции ошибок]]&lt;br /&gt;
* [[Описание работы универсального прямого преобразователя]]&lt;br /&gt;
&lt;br /&gt;
=== Алгоритмы ===&lt;br /&gt;
* [[Нахождение обратного элемента по модулю]]&lt;br /&gt;
* [[Схема коррекции ошибок Rajendra S. Katti]]&lt;br /&gt;
* [[Метод умножения Шёнхаге — Штрассена]]&lt;br /&gt;
* [[Расчет следующего значения функции на базе квадратичной интерполяции]]&lt;br /&gt;
&lt;br /&gt;
== Программы == &lt;br /&gt;
* [[(Prog) Генератор Verilog из таблиц истинности для сумматоров по модулю|Генератор Verilog из таблиц истинности для сумматоров по модулю]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра по стандартной формуле (Си)‎|Расчет FIR-фильтра по стандартной формуле]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Add (Си)‎|Расчет FIR-фильтра через ДПФ метод Overlap-Add]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ метод Overlap-Save‎|Расчет FIR-фильтра через ДПФ метод Overlap-Save‎]]&lt;br /&gt;
* [[(Prog) Расчет FIR-фильтра через ДПФ над конечным полем‎‎|Расчет FIR-фильтра через ДПФ над конечным полем‎‎]]&lt;br /&gt;
&lt;br /&gt;
=== Разное ===&lt;br /&gt;
* [[Алгоритм Espresso]] - эффективный алгоритм для минимизации булевых функций&lt;br /&gt;
* [[MIS: A multiple-level logic optimization system]] - система логического синтеза&lt;br /&gt;
* [[Запустить ModelSim из командной строки]] - руководство по запуску ModelSim без использования графического интерфейса&lt;br /&gt;
* [[Введение в АЦП]] - описание видов аналого-цифровых преобразователей (двоичных)&lt;br /&gt;
* [[Модулярное АЦП]] - описание различных архитектур АЦП и их сравнение&lt;br /&gt;
* [[Специальные системы модулей]] - разные типы систем&lt;br /&gt;
* [[Пример коррекции ошибки на базе системы остаточных классов]]&lt;br /&gt;
* [[Полезная литература]]&lt;br /&gt;
&lt;br /&gt;
== Результаты исследований ==&lt;br /&gt;
# 2013.11 - [[Результаты синтеза прямых преобразователей для простых модулей в пределах 8 бит]]&lt;br /&gt;
# 2013.10 - [[Моделирование работы модулярного КИХ фильтра, исследование эффективности экстраполяционных методов для коррекции ошибок]]&lt;br /&gt;
# 2013.10 - [[Разработка модулярного КИХ фильтра на базе теоретико-числового БПФ]]&lt;br /&gt;
# 2013.08 - [[Комплексное исследование обратных преобразователей|Комплексное исследование обратных преобразователей (4 метода)]]&lt;br /&gt;
# 2013.05 - [[Комплексное исследование умножителей в диапазоне 3 - 64 бит]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза двоичных умножителей (3 - 64 бит)]]&lt;br /&gt;
# 2013.04 - [[Результаты синтеза прямых/обратных преобразователей на спец модулях вида 2^n-1, 2^n, 2^n+1 для Д.Д. до 128 бит.]]&lt;br /&gt;
# 2013.02 - [[Сравнение разных методов умножения по модулю - 2^n-1,индексный,по методу разности квадратов и позиционный.]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения различных методов построения модулярных умножителей (индексный метод, разность квадратов, метод Espresso)]]&lt;br /&gt;
# 2013.02 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Espresso]]&lt;br /&gt;
# 2013.01 - [[Результат сравнения модулярных сумматоров в стандартном исполнении и по методу Квайна]]&lt;br /&gt;
# 2012.12 - [[Результат сравнения SAD-процессоров модулярный vs позиционный (промежуточный отчет 12.2012)]]&lt;br /&gt;
# 2012.12 - [[Исследование позиционного умножения на нашей библиотеке]]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов умножения по модулю]] - сравнение позиционного, [http://vscripts.ru/2012/index-modulo-multiplication.php индексного умножителя] и [http://vscripts.ru/2012/index-modulo-multiplication-sqr.php умножителя по методу разности квадратов]&lt;br /&gt;
# 2012.12 - [[Сравнение разных методов сложения по модулю 2^n-1]] (модуль вида 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1) - сравнение позиционного сумматора и двух вариантов реализации сумматора по модулю 2&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;-1 ([http://vscripts.ru/2012/generator-sum-2n-1.php Генератор 1], [http://vscripts.ru/dima/adder.php Генератор 2]).&lt;br /&gt;
&lt;br /&gt;
== Временные и тестовые скрипты ==&lt;br /&gt;
# [http://vscripts.ru/2012/prime.php Список случайных простых чисел] - для теста от 900 до 20000 &lt;br /&gt;
# [http://vscripts.ru/2012/multable.php Таблица умножения по модулю] - от 3 до 100 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8</id>
		<title>Запустить ModelSim из командной строки</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8"/>
				<updated>2014-05-07T13:27:15Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Решение приводится для Windows-систем для классической простой задачи. Пусть на входе имеется файл test.v, в котором задана схема для моделирования и записан тест-бенч.&lt;br /&gt;
&lt;br /&gt;
== Порядок действий ==&lt;br /&gt;
Для начала необходимо найти расположение папки с ModelSim. Сделать это можно к примеру нажав правой кнопкой мыши на ярлык программы. Выбрав &amp;quot;Свойтсва/Properties&amp;quot; и далее в открывшемся окошке &amp;quot;Open file location&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
В нашем случае путь такой:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\modelsim.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создайте в той же папке что и module.v файл run.bat. И запишите в нем следующие команды:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\vlib.exe work&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vlog.exe -work work test.v&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vsim.exe -c -do test.do adder&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Замечания: &lt;br /&gt;
* замените пути до файлов &amp;quot;C:\Programs\Altera\modelsim_ase\win32aloem\&amp;quot; на свои &lt;br /&gt;
* замените '''adder''' на имя своего модуля верхнего уровня&lt;br /&gt;
* директория '''work''' должна отсутствовать при первом запуске скрипта, вы так же можете поменять её им на любое другое&lt;br /&gt;
* если в проекте у вас используется несколько Verilog-файлов то вы можете указать их через пробел (во второй строчке BAT-файла)&lt;br /&gt;
&lt;br /&gt;
Этот исполняемый BAT-файл по двойному клику запустит компиляцию Verilog-файла и затем запустит задание на моделирование, которое надо будет написать в файле test.do. В большинстве случаев структура у test.do файла будет одинаковая:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;run -all&lt;br /&gt;
quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные функции для Test Bench ==&lt;br /&gt;
&lt;br /&gt;
Поскольку вы озаботились запуском ModelSim из командной строки значит вы скорее всего автоматизируете работу моделирования. И в этом случае вместо команд $display в Test Bench пригодится запись в файл. Запись в файл обеспечивается следующими функциями:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
integer file;&lt;br /&gt;
file = $fopen(&amp;quot;output.dat&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
$fwrite (file, &amp;quot;%f&amp;quot;, var);&lt;br /&gt;
$fclose(file);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная последовательность команд запишет в файл с именем output.dat значение вещественной переменной var.&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8</id>
		<title>Запустить ModelSim из командной строки</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8"/>
				<updated>2014-05-07T13:14:58Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Решение приводится для Windows-систем для классической простой задачи. Пусть на входе имеется файл test.v, в котором задана схема для моделирования и записан тест-бенч.&lt;br /&gt;
&lt;br /&gt;
== Порядок действий ==&lt;br /&gt;
Для начала необходимо найти расположение папки с ModelSim. Сделать это можно к примеру нажав правой кнопкой мыши на ярлык программы. Выбрав &amp;quot;Свойтсва/Properties&amp;quot; и далее в открывшемся окошке &amp;quot;Open file location&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
В нашем случае путь такой:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\modelsim.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создайте в той же папке что и module.v файл run.bat. И запишите в нем следующие команды:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\vlib.exe work&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vlog.exe -work work test.v&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vsim.exe -c -do test.do adder&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Замечания: &lt;br /&gt;
* замените пути до файлов &amp;quot;C:\Programs\Altera\modelsim_ase\win32aloem\&amp;quot; на свои &lt;br /&gt;
* замените '''adder''' на имя своего модуля верхнего уровня&lt;br /&gt;
* директория '''work''' должна отсутствовать при первом запуске скрипта, вы так же можете поменять её им на любое другое&lt;br /&gt;
* если в проекте у вас используется несколько Verilog-файлов то вы можете указать их через пробел (во второй строчке BAT-файла)&lt;br /&gt;
&lt;br /&gt;
Этот исполняемый BAT-файл по двойному клику запустит компиляцию Verilog-файла и затем запустит задание на моделирование, которое надо будет написать в файле test.do. В большинстве случаев структура у test.do файла будет одинаковая:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;run -all&lt;br /&gt;
quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные функции для Test Bench ==&lt;br /&gt;
&lt;br /&gt;
Поскольку вы озаботились запуском ModelSim из командной строки значит вы скорее всего автоматизируете работу моделирования. И в этом случае вместо команд $display в Test Bench пригодится запись в файл. Запись в файл обеспечивается следующими функциями:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;file = $fopen(&amp;quot;output.dat&amp;quot;, &amp;quot;w&amp;quot;);&lt;br /&gt;
$fwrite (file, &amp;quot;%f&amp;quot;, var);&lt;br /&gt;
$fclose(file);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная последовательность команд запишет в файл с именем output.dat значение вещественной переменной var.&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8</id>
		<title>Запустить ModelSim из командной строки</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8"/>
				<updated>2014-05-07T12:45:22Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Решение приводится для Windows-систем для классической простой задачи. Пусть на входе имеется файл test.v, в котором задана схема для моделирования и записан тест-бенч.&lt;br /&gt;
&lt;br /&gt;
== Порядок действий ==&lt;br /&gt;
Для начала необходимо найти расположение папки с ModelSim. Сделать это можно к примеру нажав правой кнопкой мыши на ярлык программы. Выбрав &amp;quot;Свойтсва/Properties&amp;quot; и далее в открывшемся окошке &amp;quot;Open file location&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
В нашем случае путь такой:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\modelsim.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создайте в той же папке что и module.v файл run.bat. И запишите в нем следующие команды:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\vlib.exe work&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vlog.exe -work work test.v&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vsim.exe -c -do test.do adder&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Замечания: &lt;br /&gt;
* замените пути до файлов &amp;quot;C:\Programs\Altera\modelsim_ase\win32aloem\&amp;quot; на свои &lt;br /&gt;
* замените '''adder''' на имя своего модуля верхнего уровня&lt;br /&gt;
* директория '''work''' должна отсутствовать при первом запуске скрипта, вы так же можете поменять её им на любое другое&lt;br /&gt;
* если в проекте у вас используется несколько Verilog-файлов то вы можете указать их через пробел (во второй строчке BAT-файла)&lt;br /&gt;
&lt;br /&gt;
Этот исполняемый BAT-файл по двойному клику запустит компиляцию Verilog-файла и затем запустит задание на моделирование, которое надо будет написать в файле test.do. В большинстве случаев структура у test.do файла будет одинаковая:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;run -all&lt;br /&gt;
quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные функции для Test Bench ==&lt;br /&gt;
&lt;br /&gt;
Поскольку вы озаботились запуском ModelSim из командной строки значит вы скорее всего автоматизируете работу моделирования. И в этом случае вместо команд $display в Test Bench пригодится запись в файл. Запись в файл обеспечивается следующими функциями:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;file = $fopen(&amp;quot;output.dat&amp;quot;);&lt;br /&gt;
$fwrite (file, &amp;quot;%f&amp;quot;, var);&lt;br /&gt;
$fclose(file);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная последовательность команд запишет в файл с именем output.dat значение вещественной переменной var.&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8</id>
		<title>Запустить ModelSim из командной строки</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8"/>
				<updated>2014-05-07T12:36:54Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Решение приводится для Windows-систем для классической простой задачи. Пусть на входе имеется файл test.v, в котором задана схема для моделирования и записан тест-бенч.&lt;br /&gt;
&lt;br /&gt;
== Порядок действий ==&lt;br /&gt;
Для начала необходимо найти расположение папки с ModelSim. Сделать это можно к примеру нажав правой кнопкой мыши на ярлык программы. Выбрав &amp;quot;Свойтсва/Properties&amp;quot; и далее в открывшемся окошке &amp;quot;Open file location&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
В нашем случае путь такой:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\modelsim.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создайте в той же папке что и module.v файл run.bat. И запишите в нем следующие команды:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\vlib.exe work&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vlog.exe -work work test.v&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vsim.exe -c -do test.do adder&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Замечания: &lt;br /&gt;
* замените пути до файлов &amp;quot;C:\Programs\Altera\modelsim_ase\win32aloem\&amp;quot; на свои &lt;br /&gt;
* замените '''adder''' на имя своего модуля верхнего уровня&lt;br /&gt;
* директория '''work''' должна отсутствовать при первом запуске скрипта, вы так же можете поменять её им на любое другое&lt;br /&gt;
&lt;br /&gt;
Этот исполняемый BAT-файл по двойному клику запустит компиляцию Verilog-файла и затем запустит задание на моделирование, которое надо будет написать в файле test.do. В большинстве случаев структура у test.do файла будет одинаковая:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;run -all&lt;br /&gt;
quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные функции для Test Bench ==&lt;br /&gt;
&lt;br /&gt;
Поскольку вы озаботились запуском ModelSim из командной строки значит вы скорее всего автоматизируете работу моделирования. И в этом случае вместо команд $display в Test Bench пригодится запись в файл. Запись в файл обеспечивается следующими функциями:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;file = $fopen(&amp;quot;output.dat&amp;quot;);&lt;br /&gt;
$fwrite (file, &amp;quot;%f&amp;quot;, var);&lt;br /&gt;
$fclose(file);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная последовательность команд запишет в файл с именем output.dat значение вещественной переменной var.&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	<entry>
		<id>https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8</id>
		<title>Запустить ModelSim из командной строки</title>
		<link rel="alternate" type="text/html" href="https://vscripts.ru/w/%D0%97%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_ModelSim_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8"/>
				<updated>2014-05-07T10:32:18Z</updated>
		
		<summary type="html">&lt;p&gt;Turbo: Новая страница: «Решение приводится для Windows-систем для классической простой задачи. Пусть на входе имеет…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Решение приводится для Windows-систем для классической простой задачи. Пусть на входе имеется файл test.v, в котором задана схема для моделирования и записан тест-бенч.&lt;br /&gt;
&lt;br /&gt;
== Порядок действий ==&lt;br /&gt;
Для начала необходимо найти расположение папки с ModelSim. Сделать это можно к примеру нажав правой кнопкой мыши на ярлык программы. Выбрав &amp;quot;Свойтсва/Properties&amp;quot; и далее в открывшемся окошке &amp;quot;Open file location&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
В нашем случае путь такой:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\modelsim.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создайте в той же папке что и module.v файл run.bat. И запишите в нем следующие команды:&lt;br /&gt;
&amp;lt;pre&amp;gt;C:\Programs\Altera\modelsim_ase\win32aloem\vlog.exe test.v&lt;br /&gt;
C:\Programs\Altera\modelsim_ase\win32aloem\vsim.exe -c -do test.do adder&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Замечание: замените пути до файлов на свои и замените adder на имя своего модуля верхнего уровня.&lt;br /&gt;
&lt;br /&gt;
Этот исполняемый BAT-файл по двойному клику запустит компиляцию Verilog-файла и затем запустит задание на моделирование, которое надо будет написать в файле test.do. В большинстве случаев структура у test.do файла будет одинаковая:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;run -all&lt;br /&gt;
quit&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полезные функции для Test Bench ==&lt;br /&gt;
&lt;br /&gt;
Поскольку вы озаботились запуском ModelSim из командной строки значит вы скорее всего автоматизируете работу моделирования. И в этом случае вместо команд $display в Test Bench пригодится запись в файл. Запись в файл обеспечивается следующими функциями:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;file = $fopen(&amp;quot;output.dat&amp;quot;);&lt;br /&gt;
$fwrite (file, &amp;quot;%f&amp;quot;, var);&lt;br /&gt;
$fclose(file);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная последовательность команд запишет в файл с именем output.dat значение вещественной переменной var.&lt;/div&gt;</summary>
		<author><name>Turbo</name></author>	</entry>

	</feed>