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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Требуется создать делитель частоты, 10МГЦ->1Гц
TIT0
сообщение Nov 3 2009, 22:17
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 25-10-08
Пользователь №: 41 178



Здравствуйте уважаемые. У меня задача поделить частоту 10МГц до 1 Гц затем эту поделенную частоту(1Гц), синхронизировать по фазе с другой, тоже 1Гц. Сделал это на рассыпухе, с двумя Д-триггерами для синхронизации, да 7 счетчиками к155ие9, но многа жрет собака и мне посоветовали сделать это на ПЛИСе, поиск по форуму так и не дал мне пока ничего интересного, поэтому я решил создать тему и спросить мнение знающих людей. Реально ли сделать это на плисе? Если да то какой плис для этого лучше выбрать, я никогда не имел опыта работы с плисами, программировал только контроллеры.
Условия задачи
1. По возможности быстродействующий, минимальное время задержки сигнала вход->выход.
2. Малое энергопотребление.
3. Прошивка должна храниться в энергонезависимой памяти, чтобы не прошивать каждый раз при запуске.
4. "Быстрое" освоение.
Желательно Атмел. И я так подозреваю, что нужен будет программатор и среда программирования, какие лучше использовать.
Задание одноразовое так что особо "с запасом" ничего не надо.
Спасибо за внимание.

Сообщение отредактировал TIT0 - Nov 3 2009, 22:18
Go to the top of the page
 
+Quote Post
Джеймс
сообщение Nov 3 2009, 22:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 20-01-06
Пользователь №: 13 399



Что-то не врубаюсь. Если у Вас уже есть частота 1Гц, зачем еще делить другую и синхронизировать? Получится то же самое.
Go to the top of the page
 
+Quote Post
TIT0
сообщение Nov 4 2009, 08:10
Сообщение #3





Группа: Участник
Сообщений: 5
Регистрация: 25-10-08
Пользователь №: 41 178



Сейчас объясню, пусть у нас есть сигнал с частотой 1Гц назовем его S1. Есть сигнал с частотой 10МГц S2, и сигнал после деления 1Гц S3. Спустя время t, сигнал S1 отключается и вместо него начинает использоваться S3. Отсюда необходимость их синхронизации. То есть S1 генерирует генератор G1, а сигнал S3 генератор G3. Задача заменить используемый сигнал с одного генератора на сигнал с другого.

Сообщение отредактировал TIT0 - Nov 4 2009, 08:11
Go to the top of the page
 
+Quote Post
Andrew Su
сообщение Nov 4 2009, 08:14
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 301
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 647



Добрый день.
Для начала найдите возможность раздобыть среду проектирования от Xilinx или Altera.
И у тех и у других есть бесплатные версии, которые можно скачать с сайтов. Для вашей задачи
они вполне будут достаточны.
Для реализации вашего устройства вполне подойдет какое-либо семейство CPLD(от Xilinx или Altera).
CPLD прошивается программатором, входящим в состав среды проектирования через кабель-программатор.
Простейшая схема кабеля-программатора(для Xilinx) для LPT порта в прикрепленном файле.
CPLD прошивается многократно и хранит прошивку после снятия питания.
Полезную информацию, в т.ч. на русском языке можно найти на www.plis.ru.
Наверняка для Altera есть аналогичные источники информации.
Прикрепленные файлы
Прикрепленный файл  JTAG_cable.pdf ( 26.31 килобайт ) Кол-во скачиваний: 60
 
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Nov 4 2009, 09:39
Сообщение #5


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Надо просто делитель частоты 10 МГц -> 1 Гц (это будет просто счетчик) асинхронно ресетить от входной частоты 1 Гц. Соответственно когда исходный 1 Гц пропадет - фронты деленной частоты будут в том же месте, где был последний фронт исходных 1 Гц. Имейте только в виду, что если этот 1 Гц должен отключаться чисто, без звона.
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Nov 4 2009, 09:51
Сообщение #6


Местный
***

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



Цитата(TIT0 @ Nov 4 2009, 01:17) *
Здравствуйте уважаемые. У меня задача поделить частоту 10МГц до 1 Гц затем эту поделенную частоту(1Гц), синхронизировать по фазе с другой, тоже 1Гц. Сделал это на рассыпухе, с двумя Д-триггерами для синхронизации, да 7 счетчиками к155ие9, но многа жрет собака и мне посоветовали сделать это на ПЛИСе, поиск по форуму так и не дал мне пока ничего интересного, поэтому я решил создать тему и спросить мнение знающих людей. Реально ли сделать это на плисе? Если да то какой плис для этого лучше выбрать, я никогда не имел опыта работы с плисами, программировал только контроллеры.
Условия задачи
1. По возможности быстродействующий, минимальное время задержки сигнала вход->выход.
2. Малое энергопотребление.
3. Прошивка должна храниться в энергонезависимой памяти, чтобы не прошивать каждый раз при запуске.
4. "Быстрое" освоение.

А какая точность формирования этого 1МГц должна быть и каково "минимальное время задержки"? Может, можно обойтись микроконтроллером за $1, тактируемым 10МГц, сигнал 1Гц подается на вход таймера, захватываем и на другом таймере воспроизводим. Это будет дешевле ПЛИС. Проблема скорее в критерии "пропадания", моменте перехвата и корректном возврате на тактовый импульс 1Гц при его возвращении, если произошел уход фазы.

Сообщение отредактировал Sergey'F - Nov 4 2009, 09:55
Go to the top of the page
 
+Quote Post
TIT0
сообщение Nov 4 2009, 09:53
Сообщение #7





Группа: Участник
Сообщений: 5
Регистрация: 25-10-08
Пользователь №: 41 178



Спасибо за ответы,
Цитата
асинхронно ресетить от входной частоты 1 Гц
, я так и делаю, просто я сделал схему на микросхемах к155ие9 и кp1533тм2, а они все вместе много потребляют, поэтому я решил переделать на плисах, собственно вопрос не в том как, а в том на каком плисе это проще и лучше сделать.

Точность 1Гц у меня на микросхемах получилась 0.1мкс. То есть один импульс от 10МГц.

Сообщение отредактировал TIT0 - Nov 4 2009, 10:05
Go to the top of the page
 
+Quote Post
BORIV
сообщение Nov 4 2009, 09:58
Сообщение #8


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

Группа: Участник
Сообщений: 131
Регистрация: 5-05-06
Пользователь №: 16 820



Цитата(TIT0 @ Nov 4 2009, 01:17) *
Сделал это на рассыпухе, с двумя Д-триггерами для синхронизации, да 7 счетчиками к155ие9, но многа жрет собака ... я никогда не имел опыта работы с плисами, программировал только контроллеры.


Так что мешает заменить серию на менее жрущую - 1533, например или реализовать данный алгоритм на простейшем микроконтроллере.
Сдаётся, что данная задача слишком проста для ПЛИС и решение не будет стоить потраченных усилий.
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 4 2009, 10:24
Сообщение #9


Гуру
******

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



Цитата(TIT0 @ Nov 4 2009, 12:53) *
собственно вопрос не в том как, а в том на каком плисе это проще и лучше сделать.


Так это элементарно:
1) нужен 1 триггер на синхронизатор входного 1 герца с 10 МГц-ами.
2) нужно два триггера на ловилку фронта входного 1 Гц.
3) нужно делить на 10E6, это вроде как 24 триггера.

Пункты 1..3 требуют 1+2+(24) = 27 ячеек ПЛИС.
Так как счетчик не по модулю 2^N, то будет еще компаратор на сброс, накинем еще пару ячеек.
Итого 29 ячеек. Это грубая прикидка. Точно влезет в EPM3064, возможно влезет в EPM3032.

теперь пишем RTL:
Код
module tsts (clk, in, out);
input clk, in;
output out;

reg [2:0] sync;
always @(posedge clk)
  sync <= {sync[1:0], in};
  
wire clr;
assign clr = (sync[2:1] == 2'b10);

reg [23:0] cnt;
always @(posedge clk)
  if (clr || (cnt == 24'd9999999))
    cnt <= 24'h0;
  else
    cnt <= cnt + 1'b1;
    
assign out = cnt[23];

endmodule


Синтезируем - получаем 30 ячеек и EPM3032.

Теперь если нужен на выходе меандр, перецентрируем счетчик, не 0...9999999, а 3388608...13388607.

Код
module tsts (clk, in, out);
input clk, in;
output out;

reg [2:0] sync;
always @(posedge clk)
  sync <= {sync[1:0], in};
  
wire clr;
assign clr = (sync[2:1] == 2'b10);

reg [23:0] cnt;
always @(posedge clk)
  if (clr || (cnt == 24'd13388607))
    cnt <= 24'd3388608;
  else
    cnt <= cnt + 1'b1;
    
assign out = cnt[23];

endmodule


Синтезируем - 32 ячейки - опять EPM3032, но совсем под завязку, на 100%.
Проверяем тайминг - на EPM3032ATC44-10 получаем Fmax > 60 MHz. Все ОК.

А, забыл, цель-то потребление. Тогда однозначно выбираем ПЛИС серии ispMACH 4000ZE , тоже наверное 32 ячейки (только надо проверить, так как тут притык, я не буду синтезировать). Докучи она 5-вольт-толерантна по входам. Вот и все, задача решена. В результате мой выбор - LC4032ZE-7TN48C, цена примерно $1.6 за сотню при покупке через ABN Universal. Только, повторю, так как тут впритык, надо проверить синтезом под это семейство. А то может, если меандр нужен, переделать конструкцию в последовательные делитель на 5000000 и на 2 вместо центрированного счетчика с загрузкой, это вернет (должно вернуть) на 30 ячеек.

ЗЫ. Касаемо освоения - lattice/altera/xilinx будут примерно одинаковы. Главное освоить verilog, для чего достаточно какого нибудь симулятора. А вот с Вашим любимым атымелом можете и повозиться, они сдирательством занимались, и софт там... И потребление... Ну в общем не буду продолжать smile.gif
Go to the top of the page
 
+Quote Post
TIT0
сообщение Nov 4 2009, 10:36
Сообщение #10





Группа: Участник
Сообщений: 5
Регистрация: 25-10-08
Пользователь №: 41 178



Цитата
заменить серию на менее жрущую - 1533,
7 микрух, много будут потреблять, около 210мА.
Цитата
реализовать данный алгоритм на простейшем микроконтроллере

Выпала возможность изучить ПЛИСы вот и решил попробовать новую для себя технологию.
То что задача проста неважно, важно что у меня появиться какой никакой опыт в работе с ПЛИСами.

Сообщение отредактировал TIT0 - Nov 4 2009, 10:37
Go to the top of the page
 
+Quote Post
BORIV
сообщение Nov 4 2009, 11:00
Сообщение #11


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

Группа: Участник
Сообщений: 131
Регистрация: 5-05-06
Пользователь №: 16 820



Цитата(TIT0 @ Nov 4 2009, 13:36) *
7 микрух, много будут потреблять, около 210мА.

Выпала возможность изучить ПЛИСы вот и решил попробовать новую для себя технологию.
То что задача проста неважно, важно что у меня появиться какой никакой опыт в работе с ПЛИСами.


Немного ошиблись 7 * 21 = 147

Если ради опыта, то конечно... Я понял вопрос, как поиск оптимального результата.
Go to the top of the page
 
+Quote Post
TIT0
сообщение Nov 4 2009, 12:14
Сообщение #12





Группа: Участник
Сообщений: 5
Регистрация: 25-10-08
Пользователь №: 41 178



ОЙ, только заметил опечатку в своем первом посте, я имел ввиду Альтеру, видимо пора заканчивать писать посты на форум в час ночи))

Тогда в итоге я вижу следующее решение.
1. Среда программирования Altera MAX+PLUS II или Quartus II
2. ПЛИС EPM3064, как я понял из даташита, у него потребляемый ток при 10МГц будет около 20мА, что приемлемо для меня.
3. Программатор ByteBlaster.
Спасибо всем за ответы.

Сообщение отредактировал TIT0 - Nov 4 2009, 11:45
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 4 2009, 12:18
Сообщение #13


Гуру
******

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



Цитата(TIT0 @ Nov 4 2009, 15:14) *
1. Среда программирования Altera MAX+PLUS II или Quartus II

Квартус без каких либо или. Максплюс устарел и не поддерживатеся оооочень давно.
Go to the top of the page
 
+Quote Post
eliza
сообщение Nov 4 2009, 14:18
Сообщение #14





Группа: Участник
Сообщений: 8
Регистрация: 25-01-06
Пользователь №: 13 605



MaxPlus устарел, но использовать тяжеловесный Quartus для маленького кристалла - стоит ли?
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 4 2009, 14:20
Сообщение #15


Гуру
******

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



Цитата(eliza @ Nov 4 2009, 17:18) *
MaxPlus устарел, но использовать тяжеловесный Quartus для маленького кристалла - стоит ли?

Естественно стоит. Как минимум, чтобы потом не переучиваться на него при более серьезном проекте. Да и синтезатор с маппером максплюса оставляют желать лучшего, во времена максплюса для работы с верилогом использовали леонардоспектрум из-за тупости оптимизатора макса.
Go to the top of the page
 
+Quote Post

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

 


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


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