|
делитель частоты и джиттер, влияние ПЛИС на джиттер |
|
|
|
May 18 2009, 20:29
|

Знающий
   
Группа: Свой
Сообщений: 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) ПЛИС и джиттер - как они вообще связаны.
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
May 19 2009, 20:12
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(SM @ May 19 2009, 20:56)  То есть, что я имею в виду - если указан констрейн, что Fast Output Register, то он ляжет в IOE, и никаких гвоздей. Не может быть регистров, которые туда не ложатся (за исключением того, что слишком много регистров одновременно пытаются запихать) Совсем не уверен. Если триггер не может туда лечь, он не ляжет, причем без предупреждений. (Altera, IMHO, проверять лениво)Цитата(SM @ May 19 2009, 22:25)  Я думаю, что речь о чем-то типа того: Более чем впечатляет. Я бы так: Код always @(posedge clk) begin if (counter == 3'b0) begin out <= ~out; counter <= (divider[3:1] - 1'b1); end else counter <= counter - 1'b1; end А если есть желание избавиться от джиттера ПЛИС, то надо вынести последний триггер за пределы ПЛИС.
|
|
|
|
|
May 19 2009, 20:34
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(dvladim @ May 20 2009, 00:12)  Совсем не уверен. Если триггер не может туда лечь, он не ляжет, причем без предупреждений. (Altera, IMHO, проверять лениво) А я уверен. Если насильно register duplication не отключили, то если триггер не может туда лечь, то туда ложится копия этого триггера. Если отключили, то сами виноваты, констрейны это святое  По крайней мере вышеприведенный ckg_reg_a ложится и в альтере (cyclone-ii), и в LatticeXP без каких либо противопоказаний. Цитата(dvladim @ May 20 2009, 00:12)  Я бы так: Ну да, в контексте конкретной задачи от автора поста самое оно, и десяток строк против килобайта текста. Моя же цель была слегка посложнее, и на частотах аццких.
|
|
|
|
|
May 21 2009, 18:50
|
Местный
  
Группа: Свой
Сообщений: 368
Регистрация: 16-11-06
Из: Тверь
Пользователь №: 22 379

|
Цитата(des00 @ May 20 2009, 10:21)  т.к. описан самый оптимальный синхронный счетчик для фпга с 4-х входовым лютом А можно спросить в плане самообразования? - как я понял, увеличение быстродействия связано с изменением состояния счетчика на единицу (думаю не важно увеличение или уменьшение  ) - не нужен сумматор (довольно много логических связей), и момент достижения порога отлавливается внутренними средствами ячейки - перенос (не требуется компаратор)? Попутно - если описан компаратор, который сравнивает состояние регистра с нулем всегда будет использоваться бит переноса или иногда будет вставляться компаратор?
|
|
|
|
Сообщений в этой теме
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 Boris_TS Мдааа. Конечно, я с Cyclon 3 не работал, но визуал... May 19 2009, 14:25 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 sazh Цитата(Boris_TS @ May 19 2009, 18:25) Нор... May 19 2009, 18:04  SM Цитата(sazh @ May 19 2009, 22:04) Примерч... May 19 2009, 18:25   sazh Цитата(SM @ May 19 2009, 22:25) Я думаю, ... May 19 2009, 19:25    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   Maverick посмотрите это Может поможет May 20 2009, 06:08    SM Цитата(_Anatoliy @ May 20 2009, 08:52) Мо... May 20 2009, 07:14     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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|