Делитель на 10 на ПЛИС Altera

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
foxit
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт ноя 16, 2007 00:40:17
Откуда: Украина

Делитель на 10 на ПЛИС Altera

Сообщение foxit »

Доброго времени суток.

Есть высокостабильный сигнал 1 Мгц.
Из него необходимо получить 100 кГц, 10 кГц, 1 Гц, 0.1 Гц.

Я так понимаю нужно сделать делитель на 10.
Данный сабж нужно сделать на ПЛИС Altera max3000.

Помогите, в ПЛИСах не силен.
Аватара пользователя
Callous
Встал на лапы
Сообщения: 115
Зарегистрирован: Вс апр 20, 2008 16:54:13
Откуда: Украина, Чернигов

Сообщение Callous »

на самом деле в макс+ или квартусе. счетчик из библиотеки поставить можна.......просто и сердито...через визард создайте. Ну или точнее столько счетчиков сколько частот. соответственно каждый со своим коэф. счета.
10
100
1000
10000
ну и потом зашить это всё в ваш девайс.
Аватара пользователя
Kodi
Открыл глаза
Сообщения: 51
Зарегистрирован: Ср сен 12, 2007 15:43:47
Откуда: Украина Днепропетровск
Контактная информация:

Сообщение Kodi »

foxit когда такое делать будешь следи за скважностью...
Однажды мне надо было получить сигнал на 100кГц. Кварца я такого не нашёл. Пришлось генератор на кварце 1МГц и поделил на 10 миктосхемой К155ИЕ1.
И скважность естественно поменялась. Так что советую следить за этим и отчётливо представлять какой скважности надо получить сигнал.
Аватара пользователя
HeoH
Открыл глаза
Сообщения: 75
Зарегистрирован: Пт июл 20, 2007 12:49:45
Откуда: Novosibirsk
Контактная информация:

Сообщение HeoH »

Код: Выделить всё

TITLE "freq_div";

INCLUDE "lpm_counter.inc";

SUBDESIGN divd
(
 CLK : INPUT;
 OUT : OUTPUT;
)

VARIABLE

lch : DFF;
dv : lpm_counter WITH (LPM_WIDTH = 5);
wr : NODE;

BEGIN

dv.clock = CLK;
if dv.q[] < 5 then
wr = VCC;
else
wr = GND;
end if;

if dv.q[] < 9 then
dv.sclr = GND;
else
dv.sclr = VCC;
end if;


lch.clk = CLK;
lch.d = wr;
out = lch.q;

END;


Только если так делать, то получивш. 100 кГц импульсы будут не синхронизованы с 1 МГц...т.е. передний фронт 100 кГц будет смещен относительно 1 МГц примерно на 5 нс, хотя я даже не знаю как от этого избавиться=)) На 10, 1 и сколько душе угодно кГц делается подобным образом...думаю тут и 32 макроцелки хватит под всю железяку.. если что-то не понятно, объясню..

ну и ниже симул.вэйвформ получившийся...

чуть не забыл...это на AHDL написал, если совсем не знакомы с ПЛИСами.
Вложения
divider.GIF
(8.39 КБ) 632 скачивания
<o> ёшкин кот
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

А для синхронизации можно поставить на выходе D-триггер, например..
Поделённый сигнал - на вход D,
а 1 МГц на вход C...
Аватара пользователя
HeoH
Открыл глаза
Сообщения: 75
Зарегистрирован: Пт июл 20, 2007 12:49:45
Откуда: Novosibirsk
Контактная информация:

Сообщение HeoH »

А в D-триггере нет никаких задержек по установке на выходе единицы??? т.е. прям таки 0 пикосекунд???

На самом деле, такая задача разрешима применением ФАПЧа(PLL), но не факт что топикстартеру это надо...к примеру, в CycloneII аж 4 внутренних PLL, но на рассмотрение у нас МАХ3000, так что про внутренние PLL можно забыть...

Тем более я не сильно понимаю зачем плодить сущность, когда
lch.clk = CLK; --1MHz
lch.d = wr; --100kHz
out = lch.q;
<o> ёшкин кот
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»