|
Синхронный счетчик для измерения частоты |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 31)
|
Aug 17 2007, 13:13
|

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

|
Цитата(олесь @ Aug 17 2007, 16:01)  Уважаемые спецы. Посоветуйте на каком плисе можно реализовать высокоскоростной многоразрядный, больше 20бит синхронный счетчик (предназначенный для измерения частоты).
Счетчик должен работать на частоте, например больше 150МГц.
Можно ли это реализовать, на каком плисе , какую платформу для программирования выбрать Можно и 64 бита, 250 MHz сделать. Carry Look-ahead Counter ищите. Вот результаты на 2003 год :-) http://www.telesys.ru/wwwboards/vhdl/18/messages/6062.shtmlЕсли не знакомы с ПЛИС и это разовая работа - закажите - Вам напишут.
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Aug 17 2007, 17:00
|
Частый гость
 
Группа: Свой
Сообщений: 85
Регистрация: 6-05-07
Пользователь №: 27 538

|
Цитата(Victor® @ Aug 17 2007, 17:13)  Можно и 64 бита, 250 MHz сделать. Carry Look-ahead Counter ищите. Вот результаты на 2003 год :-) http://www.telesys.ru/wwwboards/vhdl/18/messages/6062.shtmlЕсли не знакомы с ПЛИС и это разовая работа - закажите - Вам напишут. Заказывать счетчик? Для эксперемента запустил ISE, взял счетчик из language template, не прописывал никаких констрейнов, проверил синтез и на FPGA и на CPLD. FPGA- 32разряда, 230МГц. (Spartan3E 50й) CPLD- 32разряда, 264МГц. (XC2C64A,) настройки синтезатора выставил специально на базовые.
|
|
|
|
|
Aug 28 2007, 13:48
|
iBuilder©
   
Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322

|
Цитата(Andrewak @ Aug 28 2007, 16:33)  Я бы не спешил с Альтерой. http://www.latticesemi.com/products/cpldspld/ispgal.cfmНа мой взгляд, это лучшее, что можно предложить для Вашей задачи. Но если в дальнейшем планируете наращивать функциоанльность, то лучше вот это: http://www.latticesemi.com/products/cpldsp...mach4000bcv.cfmУспехов! Fmax для чего приведена? Если просто щёлкать тригером - так это не то, насколько понимаю интересна скорость работы счётчика, а она может сильно отличаться от скорости чёлканья одним тригером...
|
|
|
|
|
Aug 28 2007, 14:09
|
Частый гость
 
Группа: Новичок
Сообщений: 148
Регистрация: 13-12-05
Пользователь №: 12 162

|
Цитата(Builder @ Aug 28 2007, 17:48)  Fmax для чего приведена? Если просто щёлкать тригером - так это не то, насколько понимаю интересна скорость работы счётчика, а она может сильно отличаться от скорости чёлканья одним тригером... Fmax - это максимальная скорость тактирования кристалла. Скорость работы счётчика как раз и определяется скоростью щёлканья триггера.
|
|
|
|
|
Aug 28 2007, 18:02
|
Частый гость
 
Группа: Свой
Сообщений: 85
Регистрация: 6-05-07
Пользователь №: 27 538

|
Andrewak, максимальная частота щелканья триггера конечно влияет на частоту счетчика, но ни как не равна ей.  В качестве примера опять приведу CPLD Xilinx: XC2C32-3PC44, предельная частота триггера у нее чуть выше 550 МГц, но часотта работы даже 2х разрядного счетчика уже заметно ниже всего 417МГц. Это обусловленно тем, что время распостранения сигналов от одной макроячейки до другой не моментальное, а порой и весьма существенное, а для нормальной работы счетчика необходимо, что бы в момент прихода тактового сигнала все переключения предыдущего такта были завершены и все сигналы имели четко распознаваемый, установившийся, уровень. p.s. Заранее извиняюсь если обижу, но использовать для создания высокочастотных схем кристалл с максимально возможной частотой 400-450 МГц это далеко не самый разумный выход.
|
|
|
|
|
Aug 28 2007, 21:16
|
iBuilder©
   
Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322

|
Цитата(Andrewak @ Aug 28 2007, 17:09)  Fmax - это максимальная скорость тактирования кристалла. Скорость работы счётчика как раз и определяется скоростью щёлканья триггера. Это с какой стати? Как было уже подмечено, скорость тригера определяет скорость счётчика, но не только она. Кто цепи переноса учитывать будет? Или у Вас счётчик без них работать будет? Корректными для сравнения и оценки являются таблички, в которых приведены скорости работы типичных модулей: счётчиков, дешифраторов, сумматоров и т.д. Судить о скорости работы этих модулей только по скорости переключения тригера нельзя.
|
|
|
|
|
Aug 29 2007, 06:11
|
Частый гость
 
Группа: Новичок
Сообщений: 148
Регистрация: 13-12-05
Пользователь №: 12 162

|
Цитата(Builder @ Aug 29 2007, 01:16)  Andrewak, максимальная частота щелканья триггера конечно влияет на частоту счетчика, но ни как не равна ей. В качестве примера опять приведу CPLD Xilinx: XC2C32-3PC44, предельная частота триггера у нее чуть выше 550 МГц, но часотта работы даже 2х разрядного счетчика уже заметно ниже всего 417МГц. Это обусловленно тем, что время распостранения сигналов от одной макроячейки до другой не моментальное, а порой и весьма существенное, а для нормальной работы счетчика необходимо, что бы в момент прихода тактового сигнала все переключения предыдущего такта были завершены и все сигналы имели четко распознаваемый, установившийся, уровень. p.s. Заранее извиняюсь если обижу, но использовать для создания высокочастотных схем кристалл с максимально возможной частотой 400-450 МГц это далеко не самый разумный выход. Цитата Это с какой стати? Как было уже подмечено, скорость тригера определяет скорость счётчика, но не только она. Кто цепи переноса учитывать будет? Или у Вас счётчик без них работать будет? Корректными для сравнения и оценки являются таблички, в которых приведены скорости работы типичных модулей: счётчиков, дешифраторов, сумматоров и т.д. Судить о скорости работы этих модулей только по скорости переключения тригера нельзя. Совершенно верно. Но я написал: "Скорость работы счётчика как раз и определяется скоростью щёлканья триггера." Может быть написал не совсем корректно, но я имел в виду, что это основополагающий фактор. Задержка распространения между ячейками есть в любой ПЛИС. Кроме того, для одинаковых технологических норм (например, 130 нм) при похожих архитектурах ПЛИС разных производителей эти задержки можно сравнивать, а вот частоты тактирования у ПЛИС одного класса разных производителей могут сильно отличаться. А по теме данной разработки могу сказать следующее: я вообще не считаю разумным использование ПЛИС для деления частоты, но также не могу отговорить от этого, так как не знаю специфики проекта. Я бы применил для этих целей специализированные микросхемы делителей. Например, что нибудь из этой линейки: http://www.onsemi.com/PowerSolutions/product.do?id=MC12095Но, опять же, не зная точно что нужно сделать, сложно что либо советовать.
Сообщение отредактировал Andrewak - Aug 29 2007, 06:17
|
|
|
|
|
Aug 30 2007, 06:22
|
Частый гость
 
Группа: Новичок
Сообщений: 148
Регистрация: 13-12-05
Пользователь №: 12 162

|
Цитата(Rendom @ Aug 29 2007, 21:29)  Andrewak, такие специализированные микросхемы обычно потребляют в 2-3 раза больше, чем CPLD. Но и работают в 4-5 раз быстрее  Кроме того, их не нужно конфигурировать, а это бывает немаловажно, когда нет опыта работы с ПЛИС и ограничено время. Поставил на плату и сразу получил результат. Конечно, потреблять вся конструкция будет больше, да и места на плате займет столько же или больше из за разводки. К тому же нужно очень аккуратно разводить - частота... А можно вообще применить комплексное решение: делилка + ПЛИС
|
|
|
|
|
Aug 30 2007, 06:42
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(Andrewak @ Aug 29 2007, 10:11)  А по теме данной разработки могу сказать следующее: я вообще не считаю разумным использование ПЛИС для деления частоты, но также не могу отговорить от этого, так как не знаю специфики проекта. Я бы применил для этих целей специализированные микросхемы делителей. Например, что нибудь из этой линейки: http://www.onsemi.com/PowerSolutions/product.do?id=MC12095Но, опять же, не зная точно что нужно сделать, сложно что либо советовать. Очень весело. Человек хочет счоччик. 20-разрядный. Подозреваю, для частотомера. А вы ему советуете предскалер. ;О)
|
|
|
|
|
Aug 31 2007, 06:37
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(Andrewak @ Aug 29 2007, 13:11)  Совершенно верно. Но я написал: "Скорость работы счётчика как раз и определяется скоростью щёлканья триггера." Может быть написал не совсем корректно, но я имел в виду, что это основополагающий фактор. Задержка распространения между ячейками есть в любой ПЛИС. Максимальная частота тактирования триггра является основополагающим фактором при разрядностьях счетчика обычно не более полдюжины, а вот при бОльших разрядностях (а у нас тут рассматривается именно такой случай) доминирующим фактором становятся задержки на цепях переноса. И максимальная частота счетчика определяется именно суммой задержек вычислений переносов и самих переносов, т.к. следующий фронт клока не может быть подан (при правильной работе счетчика) до тех пор, пока на входах триггеров счетчика не установятся новые значения, а это произойдет только после того, как отработает комбинационная логика, вычисляющая значения переносов, и сигналы переносов не пройдут по своим цепям. Именно это и ограничивает максимальные частоты. Для борьбы с этим иногда применяют спецальные архитектуры как, например, в Cyclone, где значения каждого из пятиразрядных блоков вычисляется параллельно, но в одном случае для переноса, равного 0, в другом - для переноса, равного 1, а когда реальное значение выходит из предыдущего 5-разрядного блока, то производится просто переключение между уже вычисленными значениями. Эта архитектура называется Carry-Select. Очень эффективное решение в плане повышения быстродействия. Но весьма дорогое, по причине чего в Cyclone II он него отказались.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 31 2007, 14:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Соотносится очень просто - каждый следующий триггер работает на половинной часте предыдущего. Поэтому макс. чатота определяется только первым триггером. Заодно и разрешение счета управляет только одним первым триггером, а не разветвляется на все триггеры в синхронной схеме. На картинке кусок счетчика после синтеза в Synplify. Успехов! Rob.
|
|
|
|
|
Aug 31 2007, 16:13
|

Гуру
     
Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553

|
Цитата Вот я и хочу понять, как соотнести многоразрядный асинхронный последовательный счетчик с высокой частотой следования импульсов счета на первом триггере. ... Рассмотрим систему из 4 D-триггеров(Т- специально брать не будем) c выводами C(тактовый), D(вход) и Q(выход) и запишем уравнения : C1=входной сигнал;D1=!Q1;(частота с1=fin) C2=Q1;D2=!Q2;(частота с2=fin/2) C3=Q2;D3=!Q3;(частота с3=fin/4) C4=Q3;D4=!D4;(частота с4=fin/8) .... Вот в принципе и все) А сложность снятия данных заключается в том, что реакция на Q4 может появиться позже, чем закончится период на С1 за счет задержек.
|
|
|
|
|
Aug 31 2007, 16:40
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Код module Flip(Clk,En,Rst,Q) /* synthesis syn_hier = "hard" */; input Rst,Clk,En; output reg Q;
always @(posedge Clk or posedge Rst) begin if (Rst) Q<=0; else if (En) Q<=~Q; end endmodule
module AsynjCnt(Clk,En,Rst,Q) /* synthesis syn_hier = "hard" */; parameter WH=16;
input Clk,Rst,En; output [WH-1:0] Q;
//reg [WH-1:0] rC /* synthesis syn_keep = 1 */; wire [WH-1:0] wClki; wire [WH-1:0] wClk;
assign wClki={~Q[WH-2:0],Clk}; assign #(1) wClk =wClki;
generate genvar ii; begin:gen for (ii=0;ii<WH;ii=ii+1) begin:cnt if (ii==0) Flip flp(.Clk(wClk[ii]),.En(En) ,.Rst(Rst),.Q(Q[ii])); else Flip flp(.Clk(wClk[ii]),.En(1'b1),.Rst(Rst),.Q(Q[ii])); end end endgenerate
endmodule Вот собственно и кусок кода картинка которого приведенна выше. Удачи! Rob
|
|
|
|
|
Sep 1 2007, 08:36
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(dxp @ Sep 1 2007, 09:47)  У буржуинов для такого счетчика даже имеется название: ripple-carry counter. В доFPGA'шные (рассыпушные) времена были весьма популярны в силу простоты реализации, малому потреблению ресурсов по сравнению с синхронным счетчиком. С развитием ПЛИС необходимость в таких счетчиках почти отпала (за исключением случаев, подобных обсуждаемому). В середине 90-х у Альтеры была целая апнота, где описывались недостатки ripple-carry counter'ов и рекомендовалось использовать синхронные счетчики (при этом не забывалось подчеркнуть, как классно такой счетчик реалзиуется уже на FLEX8000 в carry look-ahead режиме  ). Мы как всегда шли своим путем. Уже на 133 серии стало понятна бесперспективность использования последовательных счетчиков в "высокоскоростных" устройствах. И даже некая угроза качеству разработки, потому что многие добивались работоспособности устройства с помощью rc цепочек при серийном изготовлении. А с переходом на 530 серию о последователльных счетчиках вообще забыли, потому что их уже не было в номенклатуре этой серии, что позволило интуитивно сразу перейти на одноклоковую синхронизацию при проектировании. Поэтому на FPGA такая схема ложилась не глядя, а вот те, кто с временными колбасками работал, пролетели по полной. Вот я и подумал, что мой опыт сыграл со мной злую шутку и я упустил что то важное. А ссылка на FLEX8000, ab_137, так там под именем ripple-carry counter нарисована связка триггеров, тактируемых одним клоком. Кстати необходимость в последовательном счетчике я и здесь не почувствовал. Частота то таже получилась. Правда повторюсь без указаний синтезатору (неохота сейчас замену подбирать в своем пакете)
|
|
|
|
|
Sep 1 2007, 11:11
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(RobFPGA @ Sep 1 2007, 13:39)  Приветствую!
Апноты и гайды служат лиш для расширения кругозора. Это не догмы. Разработчик должен выбирать наиболее оптимальные варианты реализации поставленной ему задачи.
После синтеза всегда полезно посмотреть в RTL как реализована та или иная конструкция. Весьма полезно и в образовательных целях и в плане оптимизации дизайна. Иногда синтезатры пытаются выглядеть "слишком умными" поэтому их надо вовремя осаждать правильными constrain. Правда в Quartus (Q.) RTL вювер убогий по сравнению с Synplify.
Я в Q. редко чтото делаю, для проверки решил синтезировать для Acex1-3 в Synplify и в Q.
Для 16 бит счетчика получил ~200 МHz для синхронного и >500 для асинхронного Для 32 бит счетчика получил ~100 МHz для синхронного и >500 для асинхронного
При этом задержка от Clk до выхода последнего тригера в асинхронном счетчике для 32 бит равна 65 ns!
Причем цифры как в Q. так и в Synplify почти одинаковые.
Успехов! Rob. Спасибо. И все же хочу добавить, что сравнение на базе асекса очень неудачно. Синхронный счетчик на базе этого кристалла укладывается в мегафункцию lpm_counter и сравнение действительно удручающее. Базовый кристалл для анализа в квартусе для меня циклон. там разница уже другая. Но это уже детали.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|