реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вопросы начинающего в ПЛИС
Shaienn
сообщение Feb 3 2010, 11:15
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Добрый день.

Начинаю работать с ПЛИС. Хочу сделать устройство, выделяющее четные и нечетные единицы в исходной информационной последовательности.

написал следующий код:
Код
module Try_AND
(
    // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE!
    clock, data, ones, zeroes
    // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE!
);
// Port Declaration
    input clock;
    input data;
    output ones;
    output zeroes;
    // {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
    // {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
    
    wire p1;
    reg out_c;
    reg out_n;
    
    assign ones = out_c & data;
    assign zeroes = out_n & data;
    assign p1 = data & clock;    
    
    always @(posedge p1) begin
                         out_c<=~out_c;
                         out_n<=out_c;
                         end
        
            
endmodule


Первая просьба. Посмотрите, вообще правильно пишу?

Второй вопрос, Квартус выдает следующий анализ:
Прикрепленное изображение


Такой сдвиг относительно исходных сигналов - это нормально? Я понимаю, задержка и все такое, но как-то много. И как избавиться от коротких импульсов, возникающих, видимо, как раз из-за этой задержки?

Спасибо.
Go to the top of the page
 
+Quote Post
Костян
сообщение Feb 3 2010, 11:26
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



У вас асинхронный дизайн !!! Так делать не стоит....

Должно быть что-то вроде:
Код
  
   always @(posedge clock)
      if (reset)
         data_in  <= 1'b0;
      else
         data_in  <= data;

   assign ones = data_in ? 1'b1 : 1'b0;
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 3 2010, 11:57
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



попробовал применить Ваш совет:

Код
module Try_AND
(
    // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE!
    clock, data, ones, zeroes
    // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE!
);
// Port Declaration
    input clock;
    input data;
    output ones;
    output zeroes;
    // {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
    // {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
    
    reg out_c;
    reg out_n;
    wire ones;
    wire zeroes;
    reg reset;
    reg data_in;
    

    always @(posedge clock)
      if (reset)
                begin
         out_c  <= 1'b0;
         out_n  <= 1'b0;
                end
      else
                begin
         out_c  <= ~out_c;
         out_n <= out_c;
                end
        
    assign ones = data & out_c ? 1'b1 : 1'b0;
    assign zeroes = data & out_n ? 1'b1 : 1'b0;
            
endmodule


Результат анализа такой-же, как и в первом посте. Есть мелкие лишние импульсы. Или я что-то неправильно понял?

Спасибо.

Сообщение отредактировал Shaienn - Feb 3 2010, 11:57
Go to the top of the page
 
+Quote Post
Костян
сообщение Feb 3 2010, 12:16
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(Shaienn @ Feb 3 2010, 09:57) *
Код
         out_c  <= ~out_c;
         out_n <= out_c;
..

Не совсем понятно почему так ? ....

Сделайте следующее

Код
reg [1:0] count;

    always @(posedge clock)
      if (reset)
         count  <= 2'b0;
      else
         if (data)
             count  <= count + 1;
            

   assign zeroes = data ? count[0] : 1'b0;
.....



Смысл . Создаем счетчик (впринципе достаточно и одного разряда , но для наглядности два wink.gif ). Инкрементируем его, если data равно 1, тем самым подсчитывая кол-во единиц в потоке.
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Feb 3 2010, 12:20
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(Shaienn @ Feb 3 2010, 15:57) *
Результат анализа такой-же, как и в первом посте. Есть мелкие лишние импульсы. Или я что-то неправильно понял?


Хм, а что странного в выбросах на выходах комбинационной логики?
Если Ваш дизайн - синхронный, то все эти "переходные процессы" должны закончиться к приходу следующего фронта клока.

Ну или пропустите их через регистры, тактируемые системным клоком - на выходе получите сигнал без иголок
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 3 2010, 12:22
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



не, Вы меня, кажется, немножко не поняли.

Задача такая:
Есть входной поток информации. Синхросигнал. И есть два выхода. На первом (zeroes) выдаются нечетные единицы, а на втором (ones) - четные. Как на приложенном в первом посте графике.

PS. Вдумчиво вчитался в Ваш ответ. Буду думать.

Цитата(Dima_G @ Feb 3 2010, 15:20) *
Хм, а что странного в выбросах на выходах комбинационной логики?
Если Ваш дизайн - синхронный, то все эти "переходные процессы" должны закончиться к приходу следующего фронта клока.

Ну или пропустите их через регистры, тактируемые системным клоком - на выходе получите сигнал без иголок


Так вот я, собственно, и спрашиваю - это норма или мой косяк smile.gif

Сообщение отредактировал Shaienn - Feb 3 2010, 12:23
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 3 2010, 12:31
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Shaienn @ Feb 3 2010, 14:15) *
Добрый день.

Начинаю работать с ПЛИС. Хочу сделать устройство, выделяющее четные и нечетные единицы в исходной информационной последовательности.


В исходной информационной последовательности нули ведь тоже есть. При этом надо идентифицировать паузу (когда нет информационной последовательности).
Должно быть как минимум два входных провода по данным. (например когда есть последовательность, данные взаимоинверсны, когда нет последовательности, на обоих входах данных например нули).
При Вашем подходе нет понятия начала посылки данных.
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Feb 3 2010, 12:34
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(Shaienn @ Feb 3 2010, 15:22) *
Так вот я, собственно, и спрашиваю - это норма или мой косяк smile.gif


если я правильно понимаю Вашу задачу, то ее можно описать так:

Код
bit bNot_Chet;

always_ff @(posedge bClock, posedge bReset) begin
  if (bReset) begin
    bNot_Chet <= '0;
  end else
  if (bData)  begin
    bNot_Chet <= ~bNot_Chet;
  end
end

assign bChetOne     = (~bNot_Chet) && bData;
assign bNotChetOne = bNotChet && bData;


Сообщение отредактировал Dima_G - Feb 3 2010, 12:36
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 3 2010, 12:43
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(sazh @ Feb 3 2010, 15:31) *
В исходной информационной последовательности нули ведь тоже есть. При этом надо идентифицировать паузу (когда нет информационной последовательности).
Должно быть как минимум два входных провода по данным. (например когда есть последовательность, данные взаимоинверсны, когда нет последовательности, на обоих входах данных например нули).
При Вашем подходе нет понятия начала посылки данных.


ну как, в конечном назначении
Код
assign ones = data & out_c ? 1'b1 : 1'b0;

условие появления сигнала на линии - это наличие единицы в информационной последовательности и установленный флаг четной единицы. Когда в информационной последовательности ноль, на выходе тоже ноль.

Цитата(Dima_G @ Feb 3 2010, 15:34) *
если я правильно понимаю Вашу задачу, то ее можно описать так:

Код
bit bNot_Chet;

always_ff @(posedge bClock, posedge bReset) begin
  if (bReset) begin
    bNot_Chet <= '0;
  end else
  if (bData)  begin
    bNot_Chet <= ~bNot_Chet;
  end
end

assign bChetOne     = (~bNot_Chet) && bData;
assign bNotChetOne = bNotChet && bData;


Я думал примерно также (см. первый пост). У меня только отсутствует сигнал Reset.
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 3 2010, 12:52
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Shaienn @ Feb 3 2010, 15:43) *
условие появления сигнала на линии - это наличие единицы в информационной последовательности и установленный флаг четной единицы. Когда в информационной последовательности ноль, на выходе тоже ноль.
Я думал примерно также (см. первый пост). У меня только отсутствует сигнал Reset.


А может установленный флаг нечетной единицы? А если в информационной последовательности сплошные нули? Почему первая единица в потоке всегда четная.
Никому не нужен этот ресет. Он не задает периодичность посылок.
Обычно данные сопровождаются стробом, в котором и определяют понятие четности нечетности.
Поставьте сначала задачу, на базе которой получите схемную реализацию.
Go to the top of the page
 
+Quote Post
yuri_d
сообщение Feb 3 2010, 12:58
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 292
Регистрация: 28-01-05
Из: МО, Мытищи
Пользователь №: 2 274



Цитата(Shaienn @ Feb 3 2010, 14:15) *
Такой сдвиг относительно исходных сигналов - это нормально? Я понимаю, задержка и все такое, но как-то много. И как избавиться от коротких импульсов, возникающих, видимо, как раз из-за этой задержки?

Тестбенч написан неправильно (или ТЗ неправильное). Совпадают фронты тактового сигнала и данных. Нечего удивлятся, что появляются короткие импульсы.

А сдвиг выходный данный относительно входных обязательно должен быть. Если кажется, что много, то посчитайте на бумажке используя информацию из datasheet-а.
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 3 2010, 13:13
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Всем спасибо. Вопросы пока кончились.
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Feb 3 2010, 13:17
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



.

Сообщение отредактировал Dima_G - Feb 3 2010, 13:18
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 3 2010, 15:44
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Возник еще один вопрос:

Код
input clock;
output S;

reg [6:0] Q;

initial begin
        Q = 7'b1111110;
    end

always @(posedge clock)
begin
Q <= Q <<< 1;
end

assign S = Q[6];


Хочу с каждым тактовым импульсом двигать содержимое регистра Q и выдавать на выход значение в шестой ячейке регистра Q. Т.е., по сути, хочу реализовать циклический сдвиг, но почему-то не работает. Взгляните пожалуйста.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 3 2010, 16:13
Сообщение #15


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 09:44) *
Хочу с каждым тактовым импульсом двигать содержимое регистра Q и выдавать на выход значение в шестой ячейке регистра Q. Т.е., по сути, хочу реализовать циклический сдвиг, но почему-то не работает. Взгляните пожалуйста.

так циклический или логический? по коду все нормально %)


--------------------
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 3 2010, 16:26
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(des00 @ Feb 3 2010, 19:13) *
так циклический или логический? по коду все нормально %)


циклический, хочу, чтобы эта комбинация по кругу выдавалась на выход.


просто при установке assign S = Q[0], квартус говорит: Pin "S" is stuck at GND, а это странно, потому что при циклическом сдвиге на этой позиции должны появляться единицы...
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 3 2010, 17:29
Сообщение #17


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 10:26) *
циклический, хочу, чтобы эта комбинация по кругу выдавалась на выход.

тогда и описывайте его. вы же пишете выражение арифметического сдвига(см. стандарт на язык верилог), квартус все правильно делает. В 0 бите всегда будет 0 %)


--------------------
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 3 2010, 23:15
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(des00 @ Feb 3 2010, 20:29) *
тогда и описывайте его. вы же пишете выражение арифметического сдвига(см. стандарт на язык верилог), квартус все правильно делает. В 0 бите всегда будет 0 %)


Так вроде арифметический - это <<, а циклический <<<. Разве не так?
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Feb 4 2010, 03:49
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



<< - битовый сдвиг
<<< - арифметический

Код
input clock;
output S;

reg [6:0] Q;

initial begin
        Q = 7'b1111110;
    end

always @(posedge clock)
begin
  Q <= {Q[5:0], Q[6]};
end

assign S = Q[6];
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 4 2010, 03:49
Сообщение #20


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 17:15) *
Так вроде арифметический - это <<, а циклический <<<. Разве не так?

не зря я вам посоветовал, учите матчасть %)

IEEE Standard Verilog Hardware Description Language IEEE Std 1364-2001 -> 4.1.12 Shift operators

Цитата
4.1.12 Shift operators
There are two types of shift operators, the logical shift operators, << and >>, and the arithmetic shift opera-
tors, <<< and >>>. The left shift operators, << and <<<, shall shift their left operand to the left by the num-
ber by the number of bit positions given by the right operand. In both cases, the vacated bit positions shall be
filled with zeroes. The right shift operators, >> and >>>, shall shift their left operand to the right by the num-
ber of bit positions given by the right operand. The logical right shift shall fill the vacated bit positions with
zeroes. The arithmetic right shift shall fill the vacated bit positions with zeroes if the result type is unsigned.
It shall fill the vacated bit positions with the value of the most-significant (i.e., sign) bit of the left operand if
the result type is signed. If the right operand has an unknown or high impedence value, then the result shall
be unknown. The right operand is always treated as an unsigned number and has no effect on the signedness
of the result. The result signedness is determined by the left-hand operand and the remainder of the expres-
sion, as outlined in 4.5.1


--------------------
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 4 2010, 04:04
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Учу-учу матчасть smile.gif

Оказывается арифметический и циклический сдвиг - это одно и то же.

Так вот мне и нужен циклический(арифметический) сдвиг. Который, согласно мануалу - <<<;

Нужно, чтоб работало именно так:
Цитата
It shall fill the vacated bit positions with the value of the most-significant (i.e., sign) bit of the left operand if
the result type is signed.


Но непонятно, что имеется в виду под словами result type?

Выполнив:
Q = 7'b0000111
Q <= Q <<< 3
Хочу получить:
Q == 7'b0111000....
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 4 2010, 04:10
Сообщение #22


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 22:04) *
Оказывается арифметический и циклический сдвиг - это одно и то же.

вроде одни и те же доки читаем, а результат разный %)

Цитата
Нужно, чтоб работало именно так:

направление сдвига не перепутали ?smile.gif слова про msb относились к сдвигу вправо >>>, а не влево <<< %)

Цитата(Shaienn @ Feb 3 2010, 22:04) *
Выполнив:
Q = 7'b0000111
Q <= Q <<< 3
Хочу получить:
Q == 7'b0111000.

в данном случае именно так и будет, но если Q получает значение только по initial, то квартус Q тупо подвесит VCC/GND и выдаст предупреждение.
но если вы имели в виду вот это
Цитата
Q = 7'b1000111
Q <= Q <<< 3
Хочу получить:
Q == 7'b0111100

то такое одними стандартными сдвигами не сделать, лучше воспользоваться конкатенацией %) например q <= {q[6:0], q[7]} для циклического сдвига на 1 бит.


--------------------
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 4 2010, 04:32
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(des00 @ Feb 4 2010, 08:10) *
вроде одни и те же доки читаем, а результат разный %)


направление сдвига не перепутали ?smile.gif слова про msb относились к сдвигу вправо >>>, а не влево <<< %)


в данном случае именно так и будет, но если Q получает значение только по initial, то квартус Q тупо подвесит VCC/GND и выдаст предупреждение.
но если вы имели в виду вот это

то такое одними стандартными сдвигами не сделать, лучше воспользоваться конкатенацией %) например q <= {q[6:0], q[7]} для циклического сдвига на 1 бит.


Да, хочу, чтобы работало как в приведенном Вами последнем примере. Спасибо за информацию. Буду грызть дальше.


Цитата(Dima_G @ Feb 4 2010, 07:49) *
<< - битовый сдвиг
<<< - арифметический

Код
input clock;
output S;

reg [6:0] Q;

initial begin
        Q = 7'b1111110;
    end

always @(posedge clock)
begin
  Q <= {Q[5:0], Q[6]};
end

assign S = Q[6];


Должно бы работать, но на выходе 0.

Цитата(des00 @ Feb 4 2010, 08:10) *
если Q получает значение только по initial, то квартус Q тупо подвесит VCC/GND и выдаст предупреждение.


А как правильно задать значение для Q?
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 4 2010, 04:33
Сообщение #24


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 22:27) *
Должно бы работать, но на выходе 0.

у меня работает, моделирование в аттаче %)
скорее всего квартус игнорирует ваш initial, надо ему сказать что бы он этого не делал. либо сделать какой либо сигнал сброса вашей схемы, который инициализирует регистр Q
делается это в секции settings -> synthesis -> options -> Ignore Initial
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Feb 4 2010, 04:37
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Хм, а Вы к Quartus отлаживате? Тогда делайте инициализацию например по Reset
Или используйте для отладки симуляторы с поддержкой несинтезируемого подмножества smile.gif
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 10 2010, 07:21
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Снова добрый день.

Спаял я макетную плату для epm3032. Вроде все правильно сделал. Обнаруживается через ByteBlaster.
Зашиваю следующий код:

Код
module Try_AND
(
    // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE!
    reset, clock, C
    // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE!
);
// Port Declaration
    input reset;
    input clock;
    output C;

assign C = clock && ~reset;
endmodule


Контакт reset - через кнопку на 3.3 вольта.
На выходе С = 0, независимо от состояние ноги reset. Но, в то же время, когда изменишь эту строчку на assign C = clock, на выходе, как и завещано, сигнал тактирования. Почему-то не обрабатывается сигнал reset. Подскажите направление поисков.

PS Pin Assignment сделал.

Спасибо.

Сообщение отредактировал Shaienn - Feb 10 2010, 07:27
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 10 2010, 07:36
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Shaienn @ Feb 10 2010, 10:21) *
Снова добрый день.
Контакт reset - через кнопку на 3.3 вольта.
На выходе С = 0, независимо от состояние ноги reset. Но, в то же время, когда изменишь эту строчку на assign C = clock, на выходе, как и завещано, сигнал тактирования. Почему-то не обрабатывается сигнал reset. Подскажите направление поисков.


В Квартусе синтезируемая инициализация пройдет таким образом без ресета
reg [6:0] Q = 7'b1111110;

Что касется кнопки, квартус не причем. Со схематикой кнопки намудрили. (На входе ресет надо получить не только уверренную 1, но и уверенный ноль (Если в функции с приоритетностью не напутано. Скобок для наглядности не жалейте. чтобы в стандарт не лазить).
Смотрите реализацию схемы в RTL просмотрщике квартуса.
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 10 2010, 07:45
Сообщение #28


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(sazh @ Feb 10 2010, 11:36) *
В Квартусе синтезируемая инициализация пройдет таким образом без ресета
reg [6:0] Q = 7'b1111110;

Что касется кнопки, квартус не причем. Со схематикой кнопки намудрили. (На входе ресет надо получить не только уверренную 1, но и уверенный ноль (Если в функции с приоритетностью не напутано. Скобок для наглядности не жалейте. чтобы в стандарт не лазить).
Смотрите реализацию схемы в RTL просмотрщике квартуса.


Точно. Подвесил pulldown резистор к ноге и все стало как надо. Спасибо большое.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 08:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01638 секунд с 7
ELECTRONIX ©2004-2016