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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> попытка создания спектроанализатора, XC3S250E-208 и ТФТ 480х234
andreichk
сообщение Dec 29 2012, 21:32
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Привет народ. Вот вымучил ФФТ на корке , получилось что-то похожее на спектр. Во всяком случае на изменение частоты реагирует переползанием пиков сигнала по экрану. Только вот никак не соображу, как сделать так, чтобы пики сигнала располагались только сверху, а не вращались как умалишённые вверх-вниз.
http://www.youtube.com/watch?v=Vy1yDr5oZU8...eature=youtu.be

прилагаю куски кода по частям.
1. корка ФФТ в ИЗЕ

Код
reg [8:0]xn_re;
always @ (posedge CLK_A)
xn_re <= signal;

FFT FFT_A (
  .clk(CLK_A),         // input clk
  .start(1),           // input start
  .unload(1),          // input unload
  .xn_re(xn_re[8:0]),  // input [8 : 0] xn_re min+max
  .xn_im(0),           // input [8 : 0] xn_im
  .fwd_inv(1),         // input fwd_inv
  .fwd_inv_we(1),      // input fwd_inv_we
  .rfd(rfd),           // output rfd
  .busy(busy),         // output busy
  .dv(dv),             // output dv
  .xk_re(xk_re),       // output [8 : 0] xk_re
  .xk_im(xk_im)        // output [8 : 0] xk_im
);


далее блок математики , в котором сигналы с ФФТ обрабатываются и выводятся далее на экран

Код
wire [8:0]out_math;
math math (// математика
          .clk(CLK_A),
             .dv(dv),
          .real_(xk_re),
          .imaginary(xk_im),
          .out_(out_math)
         );

и собственно сама математика

Код
module math (
input clk,
input dv,
input [7:0]real_,
input [7:0]imaginary,
output reg[9:0]out_
);
wire [15:0] real_re;
wire [15:0] imaginary_;
//модуль комплексного числа.    
multiplexor m_re (
  .clk(clk), // input clk
  .a(real_), // input [7 : 0] a
  .b(real_), // input [7 : 0] b
  .ce(dv),  
  .p(real_re) // output [15 : 0] p
);
multiplexor m_im (
  .clk(clk),     // input clk
  .a(imaginary), // input [7 : 0] a
  .b(imaginary), // input [7 : 0] b
  .ce(dv),  
  .p(imaginary_) // output [15 : 0] p
);
reg [16:0] summe;
always @ (posedge clk)
begin
summe <= real_re[15:0] + imaginary_[15:0];
end
wire [8:0]out_m;
sqrt sqrt (
  .clk(clk), // input clk
  .ce(dv),
  .x_in(summe), // input [15 : 0] x_in
  .x_out(out_m) // output [8 : 0] x_out
);
//------------------------ ищем max ----------------------------------
wire [8:0] max = (dv == 1'b1) ? 1'b1: (( max < out_m ) ?  out_m : 1'b1);    
//----------------------- нормировка по max
wire [8:0] max_2;  
divider d_max (
    .clk(clk),         // input clk
    .ce(dv),           // input ce
    .dividend(max),    // input [8 : 0] dividend
    .divisor(2),       // input [8 : 0] divisor
    .fractional(max_2) // output[8 : 0] fractional
    );
wire [8:0] res;      
divider d_res (
    .clk(clk),       // input clk
    .ce(dv),         // input ce
    .dividend(out_m),// input [8 : 0] dividend
    .divisor(max_2), // input [8 : 0] divisor
    .fractional(res) // output[8 : 0] fractional
    );

always @ (posedge clk)
begin
      out_ <= res[7:0] - 118;//двигаем по высоте. меньше - выше
end

endmodule

поскажите, что надо сделать, чтобы устранить это вращение.Спасибо заранее и всех с наступающим Новым годом ! santa2.gif


--------------------
Go to the top of the page
 
+Quote Post
Xenia
сообщение Dec 29 2012, 22:06
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Действительную и мнимую части надо не суммировать (для вывода графика), а получать из них "гипотенузу", т.е. корень квадратный из суммы их квадратов.

На первом этапе можно временно обойтись без корня, а только вычислить сумму квадратов реальной и мнимой частей. Это уже будет число сугубо положительное и дрыгаться вниз оно не будет. Ну, а корень из него нужен лишь для физического смысла амплитуды гармоники.
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 29 2012, 22:15
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



а вы разве не заметили? вот извлечение кв.корня из суммы квадратов

Код
wire [8:0]out_m;
sqrt sqrt (
  .clk(clk), // input clk
  .ce(dv),
  .x_in(summe), // input [15 : 0] x_in
  .x_out(out_m) // output [8 : 0] x_out
);


--------------------
Go to the top of the page
 
+Quote Post
Xenia
сообщение Dec 29 2012, 22:36
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(andreichk @ Dec 30 2012, 02:15) *
а вы разве не заметили? вот извлечение кв.корня из суммы квадратов


А как вы сами объясняете отрицательные значения у себя на графике, если честно складываете квадраты?
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 29 2012, 22:44
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



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


--------------------
Go to the top of the page
 
+Quote Post
Xenia
сообщение Dec 29 2012, 22:50
Сообщение #6


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(andreichk @ Dec 30 2012, 02:44) *
Простите, я по ходу вас неверно понял. Вы хотели сказать, что извлечение кв.корня из суммы квадратов вообще можно исключить и тогда значения будут только положительными? Я проверю это прямо сейчас и выложу фото того, что получилось.


Именно! Однако и корень квадратный из положительного числа не должен приобретать отрицательный знак.

А то у вас сумма 17-разрядная:
reg [16:0] summe;
а корень берется только от 16 разрядов:
.x_in(summe), // input [15 : 0] x_in
Мне трудно предсказать, что от этого бывает. Вдруг функция sqrt() воспринимает бит 15, как знаковый и выдает от этого фигню?
Сдвинули бы вы summe на разряд вправо (или поделили на 2) перед тем, как извлекать корень. Хотя б для "очистки совести".
... в, впрочем, не поможет. Ведь если число воспринимается как отрицательное, то при сдвиге и делении знак сохранится.
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 29 2012, 22:56
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



блин, как это я проглядел? теперь я на распутье или выкинуть извлечение корня или переделать корку корня на 17 разрядов... хорошо, что есть выбор...Спасибо за подсказку.ночь длинная, буду копать..
исключил извлечение кв.корня и вот что получилось:
осталось только развернуть и дело в шляпе. спасибо за подсказку. santa2.gif


--------------------
Go to the top of the page
 
+Quote Post
Xenia
сообщение Dec 29 2012, 23:08
Сообщение #8


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(andreichk @ Dec 30 2012, 02:56) *
блин, как это я проглядел? теперь я на распутье или выкинуть извлечение корня или переделать корку корня на 17 разрядов... хорошо, что есть выбор...Спасибо за подсказку.ночь длинная, буду копать..


Вы лучше переделайте так, чтобы корень извлекался из беззнакового числа, т.е. не считал старший бит за признак отрицательности.
Ведь оба квадрата у вас - числа положительные. Значит, у обоих разряд 15 пустой. Заполниться он может лишь при сложении. Но даже и в этом случае, разряд 16 не нужен, т.к. он с гарантией останется пустым.

Поэтому для суммы вам достаточно 16-разрядного числа, но только с той оговоркой, что оно беззнаковое. И корень должен это как-то понимать, всегда воспринимая аргумент беззнаковым. Общность от этого не теряется, т.е. из отрицательных чисел корень все равно извлекать нельзя.
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 30 2012, 02:18
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



вымучил наконец smile3046.gif


--------------------
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Dec 30 2012, 12:40
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Вы вобще то не сосвсем коректно вычисляете значения спектра. Поскольку если я правильно понял sqrt(|Re|+|I'm|) не является корректным значением

Для правильного вывода спектра желательно реализовывать 10*log10(Re*Re + I'm*I'm) Вэтом случае отсуствуют тяжело гелизуемые в железе функция sqrt и деления да и результат сразу в dB что увеличивает дин диапазон при отображении

Также есть возможность получения приблизительного значения sqrt( Re*Re + I'm*I'm) используя апроксимацию max(|Re|,|Im|)+min (|Re|,|Im|)*K при этом ошибка апроксимации ~5% что для отображения на экране впоне нормально .

Успехов! Rob.

Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 30 2012, 17:25
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



в последней интерпретации я вообще исключил извлечение кв. корня и нормируюсь по МАХ просто суммой квадратов.
Получилось намного красивее, во всяком случае пики задираются в одну сторону.
Код
module math (
input clk,
input dv,
input [8:0]real_,
input [8:0]imaginary,
output reg[8:0]out_
);
wire [17:0] real_re;
wire [17:0] imaginary_;
//модуль комплексного числа.    
multiplexor m_re (
  .clk(clk), // input clk
  .a(real_), // input [8 : 0] a
  .b(real_), // input [8 : 0] b
  .ce(dv),  
  .p(real_re) // output [17 : 0] p
);
multiplexor m_im (
  .clk(clk),     // input clk
  .a(imaginary), // input [8 : 0] a
  .b(imaginary), // input [8 : 0] b
  .ce(dv),  
  .p(imaginary_) // output [17 : 0] p
);
reg [18:0] summe;
always @ (posedge clk)
begin
summe <= real_re[17:0] + imaginary_[17:0];
end
//------------------------ ищем max ----------------------------------
wire [8:0] max = (dv == 1'b1) ? 1'b0: (( max < summe[8:0] ) ?  summe[8:0] : 1'b0);  
//----------------------- нормировка по max
wire [8:0] max_2;  
divider d_max (
    .clk(clk),         // input clk
    .ce(dv),           // input ce
    .dividend(max),    // input [8 : 0] dividend
    .divisor(1),       // input [8 : 0] divisor
    .fractional(max_2) // output[8 : 0] fractional
    );
wire [8:0] res;      
divider d_res (
    .clk(clk),       // input clk
    .ce(dv),         // input ce
    .dividend(summe[8:0]),// input [8 : 0] dividend
    .divisor(max_2), // input [8 : 0] divisor
    .fractional(res) // output[8 : 0] fractional
    );

always @ (posedge clk)
begin
      out_ <= res[8:0] - 305;//двигаем по высоте. меньше - выше
end

endmodule

Хочется конечно логарифм встроить как вы советуете, только вот не могу найти готовых решений на верилоге. Мож у кого завалялось, поделитесь, если не жалко.... rolleyes.gif

правда как обычно какая-то фигня на экран полезла в виде зеркальных повторов. как от этого избавиться, вот ещё задачка..... smile3046.gif


--------------------
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 30 2012, 17:47
Сообщение #12


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (andreichk @ Dec 30 2012, 21:25) *
Хочется конечно логарифм встроить как вы советуете, только вот не могу найти готовых решений на верилоге. Мож у кого завалялось, поделитесь, если не жалко.... rolleyes.gif


..не жалко :
CODE
log10 log10(
  .clk(clk), // input clk
  .ce(dv),
  .x_in(summe), // input [15 : 0] x_in
  .x_out(out_m) // output [8 : 0] x_out
);


..пользуйтесь, всегда рады помочь.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 30 2012, 18:01
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Цитата(Lmx2315 @ Dec 30 2012, 18:47) *
..не жалко :
Код
log10 log10(
  .clk(clk), // input clk
  .ce(dv),
  .x_in(summe), // input [15 : 0] x_in
  .x_out(out_m) // output [8 : 0] x_out
);


..пользуйтесь, всегда рады помочь.

спасибо, только обьясните как ей пользоваться. это же какая-то готовая корка и у меня такой нет. просто так она ИЗЕй не распознаётся.


--------------------
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 30 2012, 18:08
Сообщение #14


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (andreichk @ Dec 30 2012, 22:01) *
спасибо, только обьясните как ей пользоваться. это же какая-то готовая ф-ция. просто так она ИЗЕй не распознаётся.


..даа ладно! а у меня так работает, странно.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 30 2012, 18:09
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



RROR:HDLCompilers:87 - "math.v" line 86 Could not find module/primitive 'log10'


--------------------
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 30 2012, 19:19
Сообщение #16


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (andreichk @ Dec 30 2012, 22:09) *
RROR:HDLCompilers:87 - "math.v" line 86 Could not find module/primitive 'log10'


..сарказм вам неведом.
Сделайте табличную реализацию логарифма - если обойдётесь шагом в 3 дБ вам понадобится всего примерно 60 значений в табличке, вряд-ли больше.
А захотите шаг 1 дБ - уместитесь в 180 строк, вам хватит за глаза.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Flood
сообщение Dec 30 2012, 21:36
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 702
Регистрация: 8-06-06
Пользователь №: 17 871



Цитата(Lmx2315 @ Dec 30 2012, 21:47) *
..не жалко :
Код
log10 log10(
  .clk(clk), // input clk
  .ce(dv),
  .x_in(summe), // input [15 : 0] x_in
  .x_out(out_m) // output [8 : 0] x_out
);


..пользуйтесь, всегда рады помочь.


Со стороны как-то некрасиво выглядит, да и смысл жеста не понятен...
Go to the top of the page
 
+Quote Post
andreichk
сообщение Dec 30 2012, 21:50
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



будем считать это новогодней шюткой santa2.gif


--------------------
Go to the top of the page
 
+Quote Post
novchok
сообщение Jan 1 2013, 15:11
Сообщение #19


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

Группа: Свой
Сообщений: 128
Регистрация: 19-08-10
Из: Смоленск
Пользователь №: 58 991



Мне просто интересно, а как сигнал вводится в систему для анализа. Насколько я понимаю, качество съема сигнала и перевода его в цифру играет решающую роль при анализе спектра. Можете рассказать что именно анализируется, какие АЦП используются, какие фильтры стоят и т.д.


--------------------
Herz укроп и педрила
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 1 2013, 16:41
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



да вот собственно входная часть, никаких спецфильтров, только ОУ и всё. в коде тоже нет никакой цифровой фильтрации, окон и всего того, что в принципе там должно быть. я пока ещё далёк от правильного понимания построения правильных измерительных приборов.Сьём данных,согласно графикам из даташита на корку ФФТ


--------------------
Go to the top of the page
 
+Quote Post
novchok
сообщение Jan 1 2013, 18:28
Сообщение #21


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

Группа: Свой
Сообщений: 128
Регистрация: 19-08-10
Из: Смоленск
Пользователь №: 58 991



Спасибо, схема интересная, единственное, чего могу сказать, OPA2652 честно отработает усиление в 30 не выше 10MHz, а судя по делителю, максимальное усиление как раз 30. Поэтому если будете пытаться получить реальный спектр сигнала, учтите, что операционники заваливают высокочастотный сигнал.


--------------------
Herz укроп и педрила
Go to the top of the page
 
+Quote Post
andreichk
сообщение Jan 1 2013, 19:55
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



ну дык скоп , да и спектр тоже, более , чем на 10-15 МГц и не расчитывался.


--------------------
Go to the top of the page
 
+Quote Post
Timmy
сообщение Jan 2 2013, 07:40
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Входную часть я бы делал примерно так:
Прикрепленное изображение

Грубый/тонкий регуляторы смещения объединёны и регулятор упрощён с учётом того, что ОУ имеет по входу не меньший размах, чем по выходу, поэтому может использоваться в качестве буфера. Вход получится стандартный под осциллографический щуп с делителем.
На схеме от andreichk ассиметрично включён драйвер АЦП, так он не будет держать постоянное синфазное напряжение. И ещё, резисторы регулятора усиления выбраны очень странно, которые с малыми номиналами, если вспомнить, чему равно усиление такой схемы. А триггерную схему можно вообще сделать в цифре, или подключать к выходу IC2, чтобы не грузить высокоомный вход.
UPD:По драйверу АЦП возражение снимаю, его можно и так включать. И тонкое смещение действительно имеет смысл ставить после усилителя, чтобы его регулировка не зависела от коэффициента усиления.

Сообщение отредактировал Timmy - Jan 2 2013, 12:38
Go to the top of the page
 
+Quote Post
MaverickDSP
сообщение Jan 10 2013, 12:32
Сообщение #24





Группа: Новичок
Сообщений: 2
Регистрация: 10-01-13
Из: В. Новгород
Пользователь №: 75 139



Цитата(andreichk @ Dec 30 2012, 20:25) *
правда как обычно какая-то фигня на экран полезла в виде зеркальных повторов. как от этого избавиться, вот ещё задачка..... smile3046.gif

Очень похоже на спектр меандра
Либо сигнал на входе АЦП очень мощный, либо ошибка в типах данных.
В каком режиме работает АЦП ? signed или unsigned ? (ножка DF)
Я так понимаю, ядро БПФ ждет signed.
Go to the top of the page
 
+Quote Post
Uuftc
сообщение Jan 10 2013, 15:14
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 3-10-04
Из: Кукуево-Дальнее
Пользователь №: 767



Цитата(andreichk @ Jan 1 2013, 20:41) *
да вот собственно входная часть, никаких спецфильтров, только ОУ и всё.

Фильтровать по аналогу перед ADC надо обязательно!
Алиасинг иначе никак не победить потом.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jan 10 2013, 18:31
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Если счетные ресурсы есть, то фильтровать по аналогу перед ADC не обязательно. Алиасинг никто уже и не побеждает, его используют. Как вторую, третью и тд. зоны Найквиста. Ну будет поболее шумов в этих зонах, появятся инскажения в сигналах, до приемлемого уровня фильтруется. Хотя не понятно для чего создавать такой спектроанализатор сегодня? Пройденный этап. При нынешних компах + 20 баксов за модуль (RTL2832+FC0013 или E4000) не e-bay получите неплохой спектроанализатор ~50...2200 Мгц.
Go to the top of the page
 
+Quote Post
Uuftc
сообщение Jan 10 2013, 19:20
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 3-10-04
Из: Кукуево-Дальнее
Пользователь №: 767



Цитата(Aner @ Jan 10 2013, 22:31) *
Если счетные ресурсы есть, то фильтровать по аналогу перед ADC не обязательно. Алиасинг никто уже и не побеждает, его используют. Как вторую, третью и тд. зоны Найквиста.

Очень интересно, как можно разделить сигналы из разных диапазонов, например из первого и из второго, оцифрованных одновременно?
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 2 2013, 09:53
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Цитата(MaverickDSP @ Jan 10 2013, 13:32) *
В каком режиме работает АЦП ? signed или unsigned ? (ножка DF)
Я так понимаю, ядро БПФ ждет signed.

assign ADC_DF_DCS = 0;//Offset binary data, duty cycle correction on
при желании можно переключить на
assign ADC_DF_DCS = 1;//2's complement data, duty cycle correction on


Цитата(Uuftc @ Jan 10 2013, 16:14) *
Фильтровать по аналогу перед ADC надо обязательно!
Алиасинг иначе никак не победить потом.

а разве R86,R87,C30 не являются ФНЧ ?

Цитата(Aner @ Jan 10 2013, 19:31) *
Хотя не понятно для чего создавать такой спектроанализатор сегодня
знаете, если бы речь шла о том , где купить подешевле, то тема так бы и называлась, а так, отвечая на ваш вопрос - чтобы окончательно с ума не сойти - ...


--------------------
Go to the top of the page
 
+Quote Post
Victor®
сообщение Feb 2 2013, 16:14
Сообщение #29


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(Uuftc @ Jan 10 2013, 23:20) *
Очень интересно, как можно разделить сигналы из разных диапазонов, например из первого и из второго, оцифрованных одновременно?


Вот-вот... и мне интересно...
Просветите, плз! Жаль Найквиста тут нет...


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 4 2013, 13:04
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Народ, для загрузки скопа в припаянную к спартану флеш, сдули у кого-то из сети и адаптировали под наш модуль(с изменением пинов и тактовой частоты) проект загрузчика флеш. загрузчик собрался и откомпилировался без проблем.Но не хочет грузиться в спартан из за этого сообщения:
WARNING:MapLib:701 - Signal RS232_RXD connected to top level port RS232_RXD has been removed.

Получается, что он отрубил линию загрузки в спартан прямо на входе, ссылаясь , что этот сигнал никуда не идёт.
Весь проект перерыли , но найти обрыв не смогли. Может ктось глянет из опытных, если не влом. smile3046.gif


--------------------
Go to the top of the page
 
+Quote Post
a123-flex
сообщение Feb 4 2013, 14:01
Сообщение #31


Профессионал
*****

Группа: Свой
Сообщений: 1 687
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 884



Цитата(andreichk @ Feb 4 2013, 16:04) *
Народ, для загрузки скопа в припаянную к спартану флеш, сдули у кого-то из сети и адаптировали под наш модуль(с изменением пинов и тактовой частоты) проект загрузчика флеш. загрузчик собрался и откомпилировался без проблем.Но не хочет грузиться в спартан из за этого сообщения:
WARNING:MapLib:701 - Signal RS232_RXD connected to top level port RS232_RXD has been removed.

Получается, что он отрубил линию загрузки в спартан прямо на входе, ссылаясь , что этот сигнал никуда не идёт.
Весь проект перерыли , но найти обрыв не смогли. Может ктось глянет из опытных, если не влом. smile3046.gif


то что трассировщик ругается на ногу, вовсе не означает, что всего лишь только с этой ногой проблема. Рассмотрите technology view после синтезатора - наверняка похерилось несколько блоков в результате оптимизации)


--------------------
Если хочешь узнать, что ждет тебя на дороге впереди, спроси у тех, кто возвращается по ней.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Feb 4 2013, 14:18
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 andreichk
Глянул одним глазом на проект - сложилось впечатление что у вас там нелады с инициализацией ваших примитивов типа LUT3 и так далее. Например ваш RS232_TX это вообще тригер который выводит константу, но имеет синхроный сброс.
Загнал в синплифай 2009, потом P&R ISE 13.2 - входной тракт так как описываете до stop_bit, дальше не смотрел. RS232_TX тоже не константу зашёлкивает, но у него какая то хитрая система с предустановкой. Так что думаю нужно ковырять эти ваши примитивы (коих у вас там море) и их инициализацию (после синтезатора там у вас кстати всё красиво - так что ещё один пункт за INIT).
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 4 2013, 15:09
Сообщение #33


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



немного поковыряли сами и обнаружили следующее:
первоначально этот загрузчик расчитывался на такт.частоту 66МГц,
constant UARTDIV : std_logic_vector(5 downto 0) := "100011";
а мы решили изменить на 80 МГц и сделали так:
constant UARTDIV : std_logic_vector(5 downto 0) := "101010"; -- 43 / 80MH
так вот именно из за этого он и не компилится, но почему? какая ему разница?

Товарищи !!! Помогите кто чем может. Возникла идея добавить в проект модуль с применением ДЦМ и изменить частоту тактирования с 80 МГц до 66 МГц. Выглядит извращением конечно, но кв.генератора на 66 МГц нет и не предвидится.
На верилоге я бы сам справился, а на ВХДЛ не знаю как правильно описать сие действо....


--------------------
Go to the top of the page
 
+Quote Post
andreichk
сообщение Feb 5 2013, 16:30
Сообщение #34


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



проблема решена заменой кварца на на 60 МГц. пересчитал коэф. деления и весь проект и всё получилось !!!

constant UARTDIV : std_logic_vector(5 downto 0) := "100000"; -- 32 / 60MHz

Ура товарищи, спасибо за помощь и содействие... disco.gif


--------------------
Go to the top of the page
 
+Quote Post
compoa
сообщение May 23 2013, 04:11
Сообщение #35





Группа: Новичок
Сообщений: 7
Регистрация: 30-10-12
Из: Н. Новгород
Пользователь №: 74 154



Цитата(andreichk @ Dec 30 2012, 22:09) *
RROR:HDLCompilers:87 - "math.v" line 86 Could not find module/primitive 'log10'

Здравствуйте andreichk. Можно пару вопросов по первому осциллографу SED1335, PIC18F4685 ? Собрал я его, работает нормально, но - 1. Синхронизация не работает. 2. кнопки управления А, В, АВ, SPECTR - работают, остальные нет, при нажатии А^ - фиксируется изображение. 3. На одном канале сильно рисуются вертикальные линии при отсутствии сигнала на входе. Где примерно искать причину. Спасибо. С уважением Александр.
Go to the top of the page
 
+Quote Post
andreichk
сообщение May 25 2013, 11:49
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



мне кажется , что я уже писал, что не занимаюсь давно этим проектом, поэтому ничем помочь не могу.


--------------------
Go to the top of the page
 
+Quote Post
compoa
сообщение May 26 2013, 12:29
Сообщение #37





Группа: Новичок
Сообщений: 7
Регистрация: 30-10-12
Из: Н. Новгород
Пользователь №: 74 154



Цитата(andreichk @ May 25 2013, 15:49) *
мне кажется , что я уже писал, что не занимаюсь давно этим проектом, поэтому ничем помочь не могу.

Go to the top of the page
 
+Quote Post

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

 


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


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