Арифметическое устройство для быстрого преобразования фурье
1. АРИФМЕТИЧЕСКОЕ УСТРОЙСТВО ДЛЯ БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ, содержащее два входных регистра чисел, входной регистр весового коэффициента, множительный блок, два регистра слагаемых, сумматор , коммутатор, четыре регистра результатов и блок управления, о т лич ающее ся тем, что, с целью упрощения устройства, блок управления содержит генератор синхроимпульсов , счетчик тактов, дешифратор , элемент ИЛИ и блок памяти, причем информационные входы входных регистров чисел объединены ,и являются первым входом устройства, выход первого входного регистра чисел соединен с первым входом множитель- . ного блока, второй вход которого .соединен с выходом регистра весового коэффициента, информационный вход которого является вторым входом устройства , выход множительного блока соединен с информацирнным входом первого регистра слагаемых, выход .которого соединен с информационным входом второго регистра слагаемы, выход которого соединен с первым информационным входом сумматора , выход которого соединен с информационными входами регистров результатов,выходы которых объединены между собой и соединены с первым информащ онным входом комлутатора, второй информационный вход которого соединен с выходом второго входного регистра чисел, выход коммутатора соединен с вторым информационным входом сумматора, выход генератора синхроимпульсов блока управления соединен со счетным входом счетчика тактов , выходы которого соединены с адресными входами блока памяти, кроме того, выходы младших разрядов счетчика тактов соединены с входами дешифратора, первый, второй, третий и четвертый выходы которого соединены с входами приема и входом. S выдачи первого, второго, третьего . сл и четвертого регистров результатов соответственно, второй и четвертый выходы дешифратора соединены с входами приема первого и второго, входных регистров чисел соответственно, а также с входами элемента ИЛИ, выход которого соединен с,входами приема первого и второго регистров слагаемых и регистра весового коэффициента , первый выход блока памяти соединен с управляющим входом сумэо матора, второй выход блока-памяти соединен с управляющим входом комZC сд мутатора. 2. Устройство по п. 1, отличающееся тем, что, с целью, обеспечения равномерной выдачи резуль татов, оно содержит дополнительно четыре выходных регистра, информационные входы которых объединены и , соединены с выходом сумматора, вход приема первого выходного регистра и вход -выдачи четвертого выходного регистра соединены с третьим выходом блока памяти, вход выдачи первого выходного регистра и вход приема четвертого выходного регистра соединены с четвертым выходом блока
СОЮЗ СОВЕТСКИХ
СОЦИАЛИСТИЧЕСКИХ
РЕСПУБЛИК (19) (11) 3(5)) 6 06 F 15/332
ОПИСАНИЕ ИЗОБРЕТЕНИ
К ABT0PCHOMV СВИДЕТЕЛЬСТВУ
ГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР
ПО ДЕЛАМ ИЗОБРЕТЕНИЙ И ОТКРЫТИЙ (21) . 3511921/18-24 (22 ) 17.11.82 (46) 07.07.84. Бюп. Р 25 (72) Ю.С.Каневский, С.З.Котов, Н.Е.Куц, Б.А.Некрасов и В.И.Лозинский (71) Киевский ордена Ленина политехнический институт им. 50-летия Великой Октябрьской социалистической революции (53) 681. 3(088.8) (56) 1. Авторское свидетельство СССР
Р 399859, кл. 06 F 7/38, 1971.
2. Авторское свидетельство СССР
Р 736113, кл. Ct 06 Г 15/332, 1977 (прототип). (54)(57) 1. АРИФМЕТИЧЕСКОЕ УСТРОЙСТВО ДЛЯ БЫСТРОГО ПРЕОБРАЗОВАНИЯ
ФУРЬЕ, содержащее два входных регистра чисел, входной регистр весового коэффициента, множительный блок, два регистра слагаемых, сумматор, коммутатор, четыре регистра результатов и блок управления, о т л и ч а ю щ е е с я тем, что, с целью упрощения устройства, блок управления содержит генератор синхроимпульсов, счетчик тактов, дешифратор, элемент ИЛИ и блок памяти, причем информационные входы входных регистров чисел объединены и являют ся первым входом -у строй ст ва, выход первого входного регистра чисел соединен с первым входом множитель- . ного блока, второй вход которого .соединен с выходом регистра весового коэффициента, информационный вход которого является вторым входом устройства, выход множительного блока соединен с информационным входом первого регистра слагае(ых, выход ,которого соединен с информационным . ходом второго регистра слагаемы, выход которого соединен с первым информацион ным входом сумматора, выход которого соеди нен с информационными входами регистров результатов, выходы которых объединены между собой и соединены с первым информацнонным входом коммутатора, второй информационный вход которого соединен с выходом второго входного регистра чисел, выход коммутатора соединен с вторым информационным входом сумматора, выход генератора синхроимпульсов блока управления соединен со счетным входом счетчика тактов, выходы которого соединены с адресными входами блока памяти, кроме того, выходы младших разрядов счетчика тактов соединены с входами дешифратор а, первый, второй, третий и четвертый выходы которого соединены с входами приема и входом выдачи первого, второго, третьего и четвертого регистров результатов соответственно, второй и четвертый выходы дешифратора соединены с вхо- С„ дами приема первого и второго. входных регистров чисел соответственно, а также с входами элемента ИЛИ, выход которого соединен с входами приема первого и второго регистров слагаемых и регистра весового коэффициента, первый выход блока памяти соединен с управляющим входом сумматора, второй выход блока памяти соединен с управляющим входом коммут атор а.
2. Устройство по и. 1, о т л и— ч ающе е ся тем, что, сцелью. обеспечения равномерной выдачи резуль татов, оно содержит дополнительно четыре выходных регистра, информационные входы которых объединены и, соединены с выходом сумматора, вход приема первого выходного регистра и вход .выдачи четвертого выходного регистра соединены с третьим выходом блока памяти, вход выдачи первого выходного регистра и вход приема четвертого выходного регистра соединены с четвертым выходом блока
1101835
35 памяти, входы приема второго и чет- вертого выходных регистров соединены соответственно с пятым и восьмым выходами блока памяти, входы выда1
Изобретение относится к вычислительной технике и может быть использовано при построении устройств, реализующих алгоритм быстрого преобразования Фурье (БПФ), Известно устройство, выполняющее операции с комплексными числами.
Устройство содержит регистры действительной и мнимой частей сомножителей,формирователи поразрядных произведений, комбинационно-накапливающие сумматоры, блок перевода в дополнительный код (1)
Однако это устройстно требует большого объема оборудования.
Наиболее близким к изобретению по технической сущности является устройство для быстрого преобразования
Фурье, содержащее четыре входных регистра чнсел и дна входных регистра весового коэффициента, входы которых являются входами устройства, множительный блок, сумматор, коммутатор слагаемых, коммутатор сомножителей, дна регистра слагаемых, четыре регистра произведений и блок управления, первый выход которого соединен с управляющим входом коммутатора слагаемых, второй выход — с управляющим входом коммутатора сомножителей, выходы регистров весового коэффициента соединены с первыми двумя информационными входами коммутатора сомножителей, выходы которогс соединены с входами множительного блока, выходы которого соединены с входами регистров произведений, выходы которых соединены с первыми четырьмя информационными входами коммутатора слагаеьых, другие четыре информационных входа которого соединены с выходами входных регистров чисел, выходы коммутатора слагаеьих соединены с входами сумматора, выход которого соединен с выходом устройства и с входами регистров слагаемых, выходы которых соединены с третьими и четвертыми информацион-. ными входами регистра сомножителей j2) .
Недостатками известного устройст- . ва являются большие затраты оборудования и множество входов, что требует распараллеливания памяти, а это,в свою очередь, приводит к увеличению внешних связей и усложчи второго и третьего выходных регистров соединены соответственно с шестым и седьмым выходами блока памяти. нению адресации либо к необходимос
° ти установки распределителя данных на входе устройства.
Целью изобретения является упрощение устройства.
Поставленная цель достигается тем,что в арифметическом устройстве для быстрого преобразонания Фурье, содержащем два входных регистра чисел, входной регистр весового коэффициента, множительный блок, два регистра слагаеьых, сумматор, коммутатор, блок управления и четыре регистра результатов, блок управления содержит генератор синхроимпульсов, трехразрядный счетчик тактов, дешифратор, элемент ИЛИ и микропрограммный блок памяти, причем информационные входы входных ре 9 гистров чисел объединены и являются перным входом устройства, выход перУного нходного регистра чисел соединен с первым входом множительного блока, второй вход которого соединен с выходом регистра весового коэффициента,.информационный вход которого является вторым входом устройстна, выход множительного, блока соединен с информационным
gg входом первого регистра слагаемых, выход которого соединен с информа ционным входом второго регистра слагаемых, выход которого соединен с первым информационным входом сумматора, выход которого соединен с ин формационными входами регистров результатон „ выходы которых объединены между собой и соединены с первым информационным входом коммутатора, второй информационный вход которого соединен с выходом второго входного регистра чисел, выход коммутатора соединен с вторым информационным входом сумматора, выход генератора импульсов блока управления соединен со счетным входом счетчика тактов, выходы которого соединены с адресными входами блока памяти, кроме того, выходы младших разрядов счетчика тактов соединены с входами дешифратора, первый, второй, третий и четвертый выходы которого соединены с входом приема и входом выдачи первого, второго, третьего и четвертого регистров результатов соответственно, второй и четвертый
1101835 выходы дешифратора соединены с входами приема первого и второго входных регистров чисел соответственно, а т акже с входами элеме нт а ИЛИ, выход которого соединен с входами приема первого и второго регистров слагаемых и - регистра весового коэффициента, первый выход блока памяти соединен с управляющим входом сумматора, второй выход блока памяти соединен с управляющим 10 входом коммутатора.
Кроме того, с целью обеспечения равномерной выдачи результатов устройство дополнительно содержит четыре выходных регистра, информаци- 15 онные входы которых объединены и соединены с выходом сумматора, вход приема первого выходного регистра и вход выдачи четвертого выходного регистра соединены с третьим выходом блока памяти, вход выдачи первого выходного регистра и вход приема четвертого выходного регистра соединены с четвертым выходом блока памяти, входы приема второго и четвертого выходных регистров соединены соответственно с пятым и восьмым выходами блока памяти, входы выдачи второго и третьего выходных регистров соединены соответственно с шестым и седьмым выходами блока памяти.
На фиг.1 представлена структурная схема устройства; на фиг. 2 — структурная схема устройства, обеспечивающего равномерную выдачу результа- 35 тов; на фиг. 3 — структурная схема блока управления; на фиг. 4 — временная диаграмма, иллюстрирующая работу устройства; на фиг. 5 блок-схема алгоритма функциониро- 40 вания блока управления.
Арифметическое устройство для быстрого преобразования Фурье содержит два входных регистра 1 и 2 чисел, информационные входы которых объединены и являются первым входом устройства, входной регистр 3 весового коэффициента, информационный вход которого является ь.орым входом устройства. Выходы входного регистра
1 чисел и входного регистра 3 весового коэффициента соединены соответственно с первым и вторым входами множительного блока 4, выход которого подключен к информационному входу первого регистра 5 слагаемых.
Выход регистра 5 слагаемых соединен информационным входом второго регистра 6 слагаемых. Выход регистра 6 слагаемых подключен к первому информационному входу сумматора 7, к вто- 60 рому информационному входу которого подключен выход коммутатора 8, информационные входы регистров 9-:12 результатов объединены между собой и соединены с выходом сумматора 7.
Выходы регистров 9-:12 результатов объединены между собой и являются выходом всего устройства, кроме того, выходы регистров 9-:12 результатов соединены с первым информационным входом коммутатора 8, вто рой информационный вход которого соединен с выходом входного регистра 2 чисел.
Выходы блока 13 управления подключены к управляющим входам всех регистров, сумматора 7. и коммутатора 8.
Арифметическое Устройство для быстрого преобразования Фурье, обеспечивающее равномерную выдачу результатов, содержат дополнительно четыре выходных регистра 14- .17, информационные входы которых объединены между собой и подключены к выходу сумматора 7, а выходы выходных регистров 14-;17, также объединенные между собой, являются выходом 18 всего устройства.
Входы управления приемом и выдачей информации выходных регистров
14-:17 соединены с соответствующими выходами блока 13 управления. Сумматор 7 представляет собой сумматор-вычитатель, который имеет вход управления выполняемой операцией.
Непосредственное объединение выходов регистров результатов допустимо, если в качестве этих регистров использовать регистры с тремя состояниями на выходе.
Блок 13 управления (Фиг. 3) содержит генератор 19 синхроимпульсов, выход которого подключен к счетному входу трехразрядного счетчика 20 тактов.
Первый (младший) и второй выходы счетчика 20 соединены с соответствующими входами дешифратора 21, кроме того, первый, второй и третий выходы счетчика 20 подключены к соответствующим входам микропрограммного блока 22 памяти.
Второй и четвертый выходы дешифратора 21 соединены с двумя входами элемента HJIH 23, выход которого является выходом 24 блока 13.управления.
Первый, второй, третий и четвертый выходы дешифратора 21 являются, соответственно выходами 25-28 блока 13 управления, а первый и второй выходы блока 22 памяти являются выходами 29 и 30. Выход 25 подключен к синхровходу приема и к входу управления выдачей информации регистра 11, выход 26 соединен с синхровходами приема регистров 1 и 12 и с входом управления выдачей информации регистра 12, выход 27 подключен к синхровходу приема и к входу управления выдачей регист1101835
A;=В;<;W, А;„=В,-С„Ъ
ReA;=ReB; ReC; ReW I c I
I A;= I B„ ReC; 1й iI с," ReW
ReA;+Ä=Re8;-Дес -Revl ° I ..1 щ
1щД;„=1„,8;-Rec, I Ol i С .Re%
50 исходные отсчеты;
55 преобразованные отсчеты, несоной коэффициент, Ql<%
1 н
--.Ëe В,, -С;
А,, А „,, +I
60 количество отсчетов в исходном массиве; действительная часть числа; мнимая ч аст ь числа.
Re ра 9,выход 28 соединен с синхронходами приема регистров 2 и 10 и с входом управления выдачей информации регистра 10, выход 29 подключен к управляющему входу сумматора 7, а. выход 20 — к управляющему входу коммутатора 8.
При введении четырех выходных регистрой" 14-;17 в блоке 13 управления блок 22 памяти содержит на шесть выходон больше, причем выход 31 10 блока памяти соединен с синхронходом приема регистра 14 и с входом управления выдачей регистра 17, выход 32 соединен с синхронходом приема регистра 16 и с входом управления 15 выдачей регистра 14, выход 33 подключен к синхровходу приема регистра 15,выход 34 подключен к входу управления выдачей регистра 15, выход 35 соединен с входом управления выдачей регистра 16, а выход 36 — с синхровходом приема . регистра 17.
На фиг.5 приняты следующие условные обозначения:
5.— j- i-й-такт, j-й-полутакт;
С вЂ” результ ат на выходе сумматора 7;
БПФ вЂ” момент выдачи результатов преобразования с указанием какой. именно результат вы-. дает ся;
РГ1 2 — входные регистры чисел 1 и 2;
Pr 3 — регистр весоного коэффициента 3;
Pr5 — первый регистр слагаеьих 5у
РГ6 — второй регистр слагаемых 6;
РГ9ф12 — регистры результатов 9- .12;
МΠ— результат на выходе множительного блока 4;
Pr14-;17 — выходные регистры 14-;17, 40
Устройство выполняет базовую операцию алгоритма быстрого преобразования Фурье по основанию 2
PасcMcyрим работу устройства при выполнении базовой операции. Считаем, что прием информации в регистры осуществляется в момент прихода заднегоо фронта синхроимпульса.
В конце первого такта по сигналу с выхода 25 блока 13 управления во входной регистр 1 чисел принимается действительная часть ReC; исходного отсчета С;, во входной регистр 3 весового коэффициента по сигналу с выхода 24 — действительная, часть
Re% несоного коэффициента Х
Во втором такте выполняется умножение в множительном блоке 4 и произведение Re С, ° Re W по сигналу с выхода 24 принимается в регистр 5.
По этому же сигналу в регистр 3 принимается мнимая часть д„, W весового коэффициента М/,а по сигналу с выхода 28 в регистр 2 чисел принимается дейстнительная часть Ее В; исходного отсчета В,.
В третьем такте выполняется умножение и произведение ReC;Ë, „W по сигналу с выхода 24 принимается в регистр 5; по этому же сигналу в регистр 6 принимается произведение ReC Re и в регистр 3 — мнимая часть 3 Ж весового коэффициента %, ao входной регистр 1 чисел по сигналу с выхода 26 принимается мнимая часть 3 С; исходного отсчета С, .
В четвертом такте н множительном блоке 4 выполняется умножение и произведение 3 „C, .1 4 по сигналу с выхода 24 принимается в регистр 5 слагаемых, по этому же сигналу в регистр 6 принимается произведение Rec; 3 „ w а во нходной регистр 3 — действительная часть Зебр весового коэффициента N . По сигналу с выхода 28 во входной регистр 2 принимается мнимая часть 3„, 8 исходного отсчета В;. Коммутатор 8 по, сигналу с выхода 30 подключает к входу сумматора 7 выход входного регистра 2 чисел. Сумматор 7 по сигналам с выхода 29 выполняет операцию сложения н перной половине четвертого такта, а операцию вычитания но второй половине. Соответственно сумма ReB„ ReC„Revg по сигналу с выхода 27 принимается н регистр 9 н середине четвертого такта, а разность
Я Б, Р С.ReW1 по сигналУ
1 с выхода 28 и конце четвертого такта принимается в регистр 10.
В пятом такте в множительном блоке 4 выполняется умножение и произведенис1„,С, EBW по сигналу с выхода
24 принимается в регистр 5, проиэведение1„,с. Re® по этому сигналу принимается в регистр 6, а во нходной
1101835 регистр 3 — действительная часть
ReW Во входной регистр 1 по сигналу с выхода. 26 принимается действительная часть RaC;, следующего исходного отсчета С„„. Коммутатор 8 по сигналу с выхода 30 подключает к входу сумматора 7 выход входного регистра 2. Сумматор 7 по сигналам с выхода 29 выполняет операцию сложения в первой половине пятого такта и операцию вычитания — во второй 10 половине. В середине пятого такта сумма! 8; йеС„1,„ЧЧ по сигналу с выхода 25 принимается в регистр 11, а в конце пятого такта разность
1„,9;- Qec„ I W" по сигналу с выхо- 15 да 26 принимается в регистр 12.
В шестом такте в множительном блоке 4 выполняется умножение и произведени» Rec; йечч"" по сигналу с выхода 24 принимается в регистр 5, в регистр 6 по этому же сигналу принимается произведение 1 С;. Ре Чч,, а в регистр 3 — мнимая часть 1 w +
fn весового коэффициента ЧЧ" . Bo входной регистр 2 по сигналу с выхода 28 принимается действительная часть
Re B; исходного отсчета В,, . Коммутатор 8 по сигналу с выхода 30 подключает к входу сумматора 7 объединенный выход регистров 9-:12 результатов. Сумматор 7 по сигналам с выхода 29 выполняет операцию вычитания в первой половине шестого такта и операцию сложения — во второй.
В первой половине шестого такта по сигналу с выхода 27 из регистра 9 выдается сумма ReS; Rec; КеЧч и в середине такта по этому же сигналу (по заднему фронту) в регистр 9 принимается разность Reb;= ReB„ Rec; Яечч -1 С„"I w . Во второй половине шес- 40 того такта по сигналу с выхода 28 из регистра 10 выдается разность
Re8;-ReC; ° ReW и в конце такта по этому же сигналу в регистр 10 принимается сумма ReA;, ReS,-ReC; ЙеЧЧ + 45
+1 C„"1.К
В седьмом такте в множительном блоке 4 выполняется умножение и произведение ReC;, 1 % "по сигналу с вы-, 50 хода 24 принимается в регистр 5, в регистр 6 по этому же сигналу принимается произведение Rec;„ре М1+ ) а во входной регистр 3 — мнимая часть
1 W весового коэффициентà ЧЧ " .
Во входной регистр 1 по сигналу с выхода 26 принимается мнимая часть исходного отсчета С;„ . Коммутатор 8 по сигналу с выхода 30 подключает к входу сумматор 7 объединенный выход регистров 9-:12 результатов. Сумматор 60
7 по сигналам с. выхода 29 выполняет операцию сложения и операцию вычитания соответственно в первой и второй половинах седьмого такта. В пер вой половине седьмого такта по сиг- 65 налу с выхода 25 из регистра 11 выдается суммами„8; ReC; I W и в середине такта по этому же сигналу в регистр 11 принимается сумма
1 А;-),„Ь; Яес; 1,„W s L C; е W, Во второй половине седьмого такта по сигналу с выхода 26 из регистра 12 выдается разность . Ь„ - ReC; L w и в конце такта по этому же сигналу в . регистр 12 принимается разность
lI 4;„-1,„В;- КЕС; 1,„0, Re W .
В восьмом такте в множительном блоке 4 выполняется умножение и произведение? C;Ä (, W "+ по сигналу с выхода 24 принимается в регистр 5, в регистр 6 по этому же сигналу принимается произведение
RеC;,, I W а в регистр 3 — действительная часть Rew" весового коэффициента W ". Во входной регистр 2 по сигналу с выхода 28 принимается мнимая часть I 8;„исходного отсчета В; Коммутатор
8 по сигналу с выхода 30 подключает к входу сумматора 7 выход входного регистра 2 чисел. Сумматор 7 выполняет операции сложения и вычитания в первой и второй половинах такта соответственно. В первой половине восьмого такта из регистра 9 на выход устройства выдается действительная часть Че Й< преобразованного ..
А, по сигналу с выхода 27 и по этому же сигналу iïî заднему фронту) в регистр 9 принимается сумма Re B;„+
+ЯеС;„Яе ЧЧ " . Во второй половине восьмого такта из регистра 10 на выход устройства по сигналу с выхода 28 выдается действительная часть Re А;,„и по этому же сигналу в регистр 10 принимается разность
ReB;«-йеС „aew" .
В первой половине десятого такта по сигналу с выхода 25 из регистра
11 на выход устройства выдается мнимая часть I A, преобразованного отсчета A и по этому же сигналу в регистр 11 принимается сумма
1 8;,„ йеС;,„1„„чч " . Во второй половине девятого такта по сигналу с выхода 26 из регистра 12 на выход устройства выдается мнимая часть 1 A преобразованного отсчета А;„и по этому же сигналу в регистр 12 принимается разность
B, ReC;« I W . Работа осталь нйх элементов. устройства аналогична описанной для пятого такта.
Далее работа всего устройства аналогична.
При введении четырех выходных регистров 14ф17 работа устройства отличается только в тактах 6-9, относящихся к записи преобразованных отсчетов и выдаче их на выход устройства. A именно, в середине шестого такта действительная часть Re А;
1 101835
1О преобразованного отсчета А; принимается не в регистр 9,а в регистр 14,соответственно Re A; 1,„A,, t Д; „принимаются в регистры 15-17. Тогда выдачу преобраз сван ных отсчетов можно выполнять независимо от промежуточных вычислений, причем равномерно, т.е. по одному результату за один такт. Например, в седьмом такте на выход устройства выдается
ЯвД„, в восьмом - R8 Ajyq, в цевятом — I А„, в десятом — 1 А„ середине десятого такта в регистр14 принимается Re й;, и далее ственно в десятом и одиннадцатом тактах в регистры 15-17, а в одиннадцатом такте можно уже выдав ат ь Я е A;, z, в две н адцат ом К е A „, и т.д.
Таким образом, по сравнению с известным устройством предлагаемое при той же производительности имеетна три регистра и один коммутатор меньше, причем известное устройство включает сложные многовходовые коммутаторы, а предлагаемое — простой 0 двухвходовой. Кроме того, известное устройство имеет шесть входов, тогда как предлагаемое устройство только два, что существенно уменьшает число внешних связей и позволяет
15 работать с линейно организованной
; памятью.
1101835
6 г
1 301835 с4!
РиР
+ с 1 Ъ Р. Q дауд. /
8bio М
Фиг. fb дыд. /7
Нисою (n. / J
Рыкова (e. 2) 1101835 г — — — — —
1 6П = Рг16
L з
1 2
2-1 5 1<Р =Рг171 Рг14С
1 1
2-2
I Prf5= 0 I
1 )
3-1
Рг16= С
3-2
Г ! Рг17=С, мамьБ
1 — —.
Фиг, 1
Составитель А. Федоров
Редактор В.Иванова Техред С. Легеза Корр
Ко ектор В. Бутяга
Заказ 47б9/33 Тираж 699 Подписное
ВНИИПИ Государственного комитета СССР по делам изобретений и открытий
113035, Москва, Ж-35, Раушская наб., д. 4/5
Филиал ППП"Патент", г.ужгород, ул.Проектная,4