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

 
 
> делитель частоты и джиттер, влияние ПЛИС на джиттер
sysel
сообщение May 18 2009, 20:29
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Здравствуйте!
Задача такова: имеется генератор с частотой 33 МГц и джиттером N пикосекунд (генератор подключен ко входу CLK0 ПЛИС семейства Cyclone III).
требуется на ПЛИС реализовать управляемый делитель частоты (1/2, 1/4, 1/6, 1/8, 1/10, 1/12, 1/14, 1/16). Требуется на выходе делителя получить сигнал с как можно меньшим джиттером (разумеется, джиттер меньше чем N пс получить не выйдет).

Моё решение:
Код
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_unsigned.all;

ENTITY clkdiv IS
    GENERIC
        (
            divsz : natural := 3 -- разрядность счетчика
        );    
    PORT
        (
            clk: in std_logic; -- входной клок
            div: in std_logic_vector((divsz-1) downto 0); -- коэффициент деления
            sco: out std_logic -- выходной клок
        );
END clkdiv;

ARCHITECTURE rtl OF clkdiv IS
    signal CN : std_logic_vector((divsz-1) downto 0); -- счетчик
    signal T,Q : std_logic;
BEGIN
    T<='1' when (CN=div) else '0';
    process (clk,T)
    begin
        if (falling_edge(clk)) then    -- по спаду клока
            if (T='1') then
                CN<=(others=>'0');
            else
                CN<=CN+1;
            end if;
        end if;
    end process;
    
    process (clk,T)
    begin
        if (rising_edge(clk) and (T='1')) then -- по фронту клока
            Q<=not Q;
        end if;
    end process;
    sco<=Q;
END rtl;


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

Вопросы:
1) насколько корректна такая реализация?
2) как такое решение может повлиять на джиттер выходного сигнала?
3) ПЛИС и джиттер - как они вообще связаны.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Boris_TS
сообщение May 19 2009, 14:25
Сообщение #2


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188





Мдааа. Конечно, я с Cyclon 3 не работал, но визуально схема - отвратительная (на уровне начинающего):
1. Выходной триггер имеет обратную связь, в нормальных ПЛИС в IOB это не ложиться (или у Cyclon 3 нет выходных триггеров ?) - соответственно будет прирост jitter'а за счет передачи логического сигнала к выходному буферу (обычно clock распространяеста по ПЛИС с меньшим jitter'ом, чем все остальные сигналы).
2. Э-хе-хе... Кто ж так делитель делает ??! Нормальные люди используют выходной перенос (назовём его CY) загружаемого счетчика: сам CY подается на счетный триггер, сигнал с которого подается на дополнительный выходной триггер (обязательно выходной триггер, иначе дополнительный прирост jitter’а). Дополнительно CY подаётся на вход Load это загружаемого счётчика, а вот значением, которое загружается - выбирается количество тактов, которое счетчик будет досчитывать до переноса (т.е. коэффициент деления). Такая схема значительно компактнее и быстродейственней... если конечно суметь правильно сделать тот самый загружаемый счетчик.
Go to the top of the page
 
+Quote Post
sazh
сообщение May 19 2009, 18:04
Сообщение #3


Гуру
******

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



Цитата(Boris_TS @ May 19 2009, 18:25) *
Нормальные люди используют выходной перенос (назовём его CY) загружаемого счетчика: сам CY подается на счетный триггер, сигнал с которого подается на дополнительный выходной триггер (обязательно выходной триггер, иначе дополнительный прирост jitter’а). Дополнительно CY подаётся на вход Load это загружаемого счётчика, а вот значением, которое загружается - выбирается количество тактов, которое счетчик будет досчитывать до переноса (т.е. коэффициент деления). Такая схема значительно компактнее и быстродейственней... если конечно суметь правильно сделать тот самый загружаемый счетчик.


Примерчик можно?
Go to the top of the page
 
+Quote Post
SM
сообщение May 19 2009, 18:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(sazh @ May 19 2009, 22:04) *
Примерчик можно?


Я думаю, что речь о чем-то типа того:

Код
reg [2:0] tckg_prediv;
reg tckg_en;
reg [11:0] tckg_div_coeff;
reg [10:0] tckg_coeff_a, tckg_coeff_b, tckg_coeff;
reg [10:0] tckg_cnt;
reg tckg_cnt_z;
reg ckg_reg_a;

// coefficient for even halfwave
always @(posedge tckg_clk)
   tckg_coeff_b <= tckg_div_coeff[11:1] + tckg_div_coeff[0];

// coefficient for odd halfwave
always @(posedge tckg_clk)
   tckg_coeff_a <= tckg_div_coeff[11:1];
  
// additional optional pre-divider with enable (control[7])
always @(posedge tckg_clk)
  tckg_prediv <= control[7] ? (tckg_prediv + 1'b1) : 3'h0;

// pre-divider zero pass
always @(posedge tckg_clk)
  tckg_en <= !(|tckg_prediv);

// main divider zero pass
always @(posedge tckg_clk)
  tckg_cnt_z <= tckg_cnt == 11'h001;
  
// output T-ff;  ckg_reg_a is output of generated frequency
always @(posedge tckg_clk)
  if (tckg_en && tckg_cnt_z)
    ckg_reg_a <= ~ckg_reg_a;

// coefficient mux for even/odd halfwaves
always @(posedge tckg_clk)
  if (tckg_en && tckg_cnt_z)
    tckg_coeff <= ckg_reg_a ? tckg_coeff_b : tckg_coeff_a;

// carry pipeline for main divider
reg [1:0] cntc;
always @(posedge tckg_clk)
  if (tckg_en)
  begin
    cntc[0] <= tckg_cnt[3:0] == 4'h1;
    cntc[1] <= tckg_cnt[7:0] == 8'h1;
  end

// main divider itself
always @(posedge tckg_clk)
  if (tckg_en)
    if (tckg_cnt_z) tckg_cnt <= tckg_coeff; else
      begin
        tckg_cnt[3:0] <= tckg_cnt[3:0] - 1'b1;
        tckg_cnt[7:4] <= tckg_cnt[7:4] - cntc[0];
        tckg_cnt[10:8] <= tckg_cnt[10:8] - cntc[1];
      end
Go to the top of the page
 
+Quote Post
sazh
сообщение May 19 2009, 19:25
Сообщение #5


Гуру
******

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



Цитата(SM @ May 19 2009, 22:25) *
Я думаю, что речь о чем-то типа того:


Счетчик впечатляет конечно.
Но речь ведь шла о выходном клоке. Самого интересного нет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sysel   делитель частоты и джиттер   May 18 2009, 20:29
- - =AK=   Цитата(sysel @ May 19 2009, 05:59) (разум...   May 19 2009, 01:08
|- - sysel   В своём вопросе я не конкретизировал джиттер. Я то...   May 19 2009, 05:24
|- - =AK=   Цитата(sysel @ May 19 2009, 14:54) Откуда...   May 19 2009, 05:49
|- - SM   Цитата(Boris_TS @ May 19 2009, 18:25) 1. ...   May 19 2009, 14:33
||- - Boris_TS   Цитата(SM @ May 19 2009, 17:33) Или ложит...   May 19 2009, 16:47
||- - SM   Цитата(Boris_TS @ May 19 2009, 20:47) тен...   May 19 2009, 16:56
|||- - SM   Цитата(sazh @ May 19 2009, 23:25) Но речь...   May 19 2009, 20:03
|||- - sazh   Цитата(SM @ May 20 2009, 00:03) Для тех, ...   May 19 2009, 20:09
||- - Boris_TS   Цитата(sazh @ May 19 2009, 21:04) Примерч...   May 20 2009, 11:14
||- - SM   Цитата(Boris_TS @ May 20 2009, 15:14) нео...   May 20 2009, 11:33
||- - Boris_TS   Цитата(SM @ May 20 2009, 14:33) А зачем д...   May 20 2009, 12:10
||- - SM   Цитата(Boris_TS @ May 20 2009, 16:10) Мы ...   May 20 2009, 12:27
|- - sysel   Всем спасибо за помощь и конструктивную критику. Я...   May 20 2009, 18:30
- - dvladim   Цитата(SM @ May 19 2009, 20:56) То есть, ...   May 19 2009, 20:12
|- - SM   Цитата(dvladim @ May 20 2009, 00:12) Совс...   May 19 2009, 20:34
|- - _Anatoliy   Цитата(SM @ May 19 2009, 21:34) Моя же це...   May 20 2009, 04:52
|- - Maverick   посмотрите это Может поможет   May 20 2009, 06:08
|- - des00   Цитата(_Anatoliy @ May 19 2009, 22:52) Мо...   May 20 2009, 06:21
|- - SM   Цитата(_Anatoliy @ May 20 2009, 08:52) Мо...   May 20 2009, 07:14
|- - Andr2I   Цитата(des00 @ May 20 2009, 10:21) т.к. о...   May 21 2009, 18:50
|- - SM   Цитата(Andr2I @ May 21 2009, 22:50) А мож...   May 21 2009, 19:10
- - dvladim   Цитата(SM @ May 20 2009, 00:34) А я увере...   May 20 2009, 19:25
|- - SM   Цитата(dvladim @ May 20 2009, 23:25) надо...   May 21 2009, 04:21
- - atlantic   Похоже вопрос в неправильной ветке задан(надо к ан...   May 20 2009, 20:45


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

 


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


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