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