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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Хочу построить КВ трансивер на ПЛИС, что для этого нужно?
~Elrond~
сообщение Oct 21 2015, 13:33
Сообщение #46


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

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Ради интереса сделал генератор с применением ряда Тейлора 2 порядка. Результаты по сравнению с 1 порядком:
1) Выигрыш по SFDR 20 дБ (132 против 112).
2) По занимаемым LUT - в 2.5 раза больше.
3) По занимаемой памяти - в 2 раза больше.
4) По умножителям - в 3.3 раза больше.
По-моему, для большинства случаев оно того не стоит. И если занимаемую память можно сократить в 2 раза (уменьшив таблицу), то с остальным ничего не поделать.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Oct 21 2015, 14:35
Сообщение #47


Знающий
****

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



Цитата(~Elrond~ @ Oct 21 2015, 16:33) *
Ради интереса сделал генератор с применением ряда Тейлора 2 порядка. Результаты по сравнению с 1 порядком:
1) Выигрыш по SFDR 20 дБ (132 против 112).
2) По занимаемым LUT - в 2.5 раза больше.
3) По занимаемой памяти - в 2 раза больше.
4) По умножителям - в 3.3 раза больше.
По-моему, для большинства случаев оно того не стоит. И если занимаемую память можно сократить в 2 раза (уменьшив таблицу), то с остальным ничего не поделать.

А таблица какого размера была?
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Oct 21 2015, 15:51
Сообщение #48


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

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Для 1 порядка - 512х18бит.
Для 2 порядка - 512х32бит.
В таблице четверть круга.

Уменьшил таблицу в 2 раза - потерял 18 дБ (на 2 порядке).
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Oct 21 2015, 19:27
Сообщение #49


Знающий
****

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



Цитата(~Elrond~ @ Oct 21 2015, 18:51) *
Уменьшил таблицу в 2 раза - потерял 18 дБ (на 2 порядке).

18дБ ожидаемо (там будет кубическая зависимость от размера таблицы), мне не понятно почему SFDR такой маленький у Вас выходит. Ведь имея таблицу в 1024элемента на 180градусов, максимальная ошибка вычислений не должна превысить:

(pi/1024)^3/3! = 4.81e-9
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 22 2015, 11:20
Сообщение #50


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



По совету присутствующего тут коллеги поигрался с разрядностями:
Оригинальная структура:
Сигнал 16 бит множится на 17 бит выход NCO, затем младшие 32 бита идут на CIC - выход которого (32 бит) на FIR.
Была попытка усечь на 10 бит вход CIC (ещё отбросить младшие 10 бит после умножения), с соответствующим изменением параметров данного блока в megawizard) - появилась постоянная составляющая на выходе CIC (где-то на -60 дБ от full scale, значение приблизительное).

Сообщение отредактировал Genadi Zawidowski - Oct 22 2015, 11:23
Go to the top of the page
 
+Quote Post
Timmy
сообщение Oct 22 2015, 12:16
Сообщение #51


Знающий
****

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



Цитата(Genadi Zawidowski @ Oct 22 2015, 14:20) *
По совету присутствующего тут коллеги поигрался с разрядностями:
Оригинальная структура:
Сигнал 16 бит множится на 17 бит выход NCO, затем младшие 32 бита идут на CIC - выход которого (32 бит) на FIR.
Была попытка усечь на 10 бит вход CIC (ещё отбросить младшие 10 бит после умножения), с соответствующим изменением параметров данного блока в megawizard) - появилась постоянная составляющая на выходе CIC (где-то на -60 дБ от full scale, значение приблизительное).

Из-за отсечения действительно должно создаваться смещение, хотя -60dB мне кажется многовато. Чтобы смещения не было, и обеспечить максимальную разрядность, можно использовать отсечение или округление с переносом всей ошибки в следующий такт и сложением с ошибкой из предыдущего такта. Типа дельта-сигма модуляции первого порядка.
Go to the top of the page
 
+Quote Post
vovanse
сообщение Oct 22 2015, 12:59
Сообщение #52


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

Группа: Свой
Сообщений: 185
Регистрация: 14-02-06
Из: Кемерово
Пользователь №: 14 293



Цитата(Aleksandr Vihorev @ Oct 15 2015, 15:01) *
Где можно недорого приобрести
....
Нахожусь в г. Кемерово.


На счет недорого не знаю, но в Кемерово мало мест, где можно хоть что-то купить. Вот одно из них. http://eltompro.ru/ Могут привести под заказ. Сами берем все через Томск или Новосибирск, там масса фирмочек которые привезут все что угодно. Ну и интернет магазины.
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Oct 22 2015, 16:18
Сообщение #53


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

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Цитата
появилась постоянная составляющая на выходе CIC (где-то на -60 дБ от full scale, значение приблизительное).
Нельзя просто так взять и отсечь младшие разряды. Нужно к результату усечения прибавить значение старшего (знакового) разряда.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 22 2015, 16:50
Сообщение #54


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Значение старшего из отюрасываемых?
Go to the top of the page
 
+Quote Post
Aleksandr Vihore...
сообщение Oct 23 2015, 12:02
Сообщение #55


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-01-15
Пользователь №: 84 516



А какую разрядность лучше выбрать для фазы? Можно ведь выбрать большую разрядность и для итераций CORDIC понадобиться много ресурсов. Аможно для четверти круга выбрать небольшую разрядность, но выполнить модуль по подсчету количества колебаний - и ошибка в опеределении текущей фазы будет сводиться к минимуму по мере отработки большого количества циклов. Как выбрать оптимальную разрядность?
Go to the top of the page
 
+Quote Post
rolin
сообщение Sep 28 2016, 12:04
Сообщение #56


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224



Кто-нибудь может поделиться кодом АРУ на verilog , ну или в крайнем случае VHDL ?

Умаялся я уже с этим AGC.....
Go to the top of the page
 
+Quote Post
rolin
сообщение Sep 28 2016, 16:46
Сообщение #57


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 31-01-09
Пользователь №: 44 224



Вот, га что меня хватило....
Работает только на увеличение усиления, стабилизации нет, на уменьшение не работает. Что-то я не понимаю, видимо

Код
    //  AGC
    reg [23:0] agc_control = 24'd0; // 83888608
   wire [23:0] max_gain = 23'd8000000 - step_up;
    wire [23:0] min_gain = 23'd1 + step_dwn;
    wire [23:0] step_up = 23'd56000; // 1 sec
    wire [23:0] step_dwn = 16'd560;  // 10 msec
    wire [23:0] gate = 24'd8000000;
    
    
    wire signed [47:0] mult_out;
   mult_24Sx24S_w agc_mult(det_out, agc_control, mult_out);
    wire signed [23:0] agc_mult_out = mult_out[35:12];
        

   reg [5:0] state = 0;
    wire [23:0] mod = agc_mult_out[23] ? ~agc_mult_out : agc_mult_out;
   always @(posedge clock)
    begin
       case (state)
        0: if(det_out_strobe) state <= state + 1'd1;
        1,2,3 : state <= state + 1'd1;
        4: begin
              if(mod > gate) if(agc_control > min_gain) agc_control <= agc_control - step_dwn;
             if(mod < gate) if(agc_control < max_gain) agc_control <= agc_control + step_up;  
                state <= state + 1'd1;
            end
       5,6,7: state <= state + 1'd1;
       8: begin agc_out <= agc_mult_out; agc_out_strobe <= 1; state <= state + 1'd1; end
       9: begin agc_out_strobe <= 0; state <= 1'd0; end    
        default: state <= 1'd0;
        endcase
      

    end
Go to the top of the page
 
+Quote Post

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

 


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


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