Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы чайника
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Alex03
Появилась тут простенькая задачка, как раз для освоения ПЛИС.
Сделать хотим типа универсальной платы входов.
С одной стороны SPI, с другой стороны сигналы с датчиков.
1. Дискретных (16 входов, сейчас это реализованно на 2-х дискретных 8ми разрядных сдвиговых регистрах)
2. частотных (надо считать число импульсов, по считыванию по SPI обнулять счётчик)
3. 4-ок сигналов с датчиков положений, 2 - квадратурная модуляция, 2 концевики (реверсивный счётчик с 4 шагами на период, с контролем границ)
4. и т.д.

В общем просится синхронность между SPI и всякими счётчиками и т.д.
Притом т.к. входов не много (около 20-ти) то проще их простробировать?

Нужен генератор. Но требований по частоте и её стабильности великих нет.
Т.е. 5..20MHz вполне устраивают.
Отсюда вопросы.
1. Насколько хорошо/правильно делать генератор на логических элементах (инверторах) самой ПЛИС?
2. А если этот генератор не на кварцевом резонаторе соорудить а на RC?
3. Или всётаки правильнее поставить внешний генератор?
4. Мож я вообще не в ту сторону смотрю?

Пока остановились на CPLD EPM3128.

P.S. Сильно не пинайте страниц 10 форума просмотрел, в поиске тоже прямого ответа не нашел.
Doka
ставьте внешний - он не таких больших денег стоит, а то потом получится как в теме "Сначала пожлобились - потом мучаемся"
slog
У меня тоже была похожая задача, остановился на EPM3064. Запихнул в нее макет проекта, но с трудом. Хотел использовать EPM3128. Но теперь думаю EPM240 явно лучше будет. И дешевле. Так что рекомендую EPM240 посмотреть. С генератором не изобретай велосипед, бери готовый внешний. Мегагерц лучше побольше.
Я с нуля свой проект запустил за один день, заработало, потом еще дня 3 оптимизировал, заодно и плисы изучал.
okela
Однозначно внешний - меньше проблем возможных , да и с синхронностью проще будет, т.к.
у ПЛИСины есть спецвход тактирования.
EvgenyNik
Я бы тоже отговорил автора от 3000-ой серии в пользу MAXII.
Посмотрите MAXII-240 и 570 - они совместимы по выводам питания и отличаются на пару-тройку ножек IO. Если использовать только одинаковые выводы, то не будет проблем с переходом на 570-ую в случае нехватки 240-ой.
Незаменимый плюс МАКС2 это возможность задать входам функцию тригера Шмитта, что пойдёт только на пользу при организации интерфейсов связи. Да и флэш там на борту - можно программно прошивать описание модулей и датчиков, реализованных на плате.
И по поводу генератора. На МАКС2 вполне можно сделать на 1 резисторе и 1 конденсаторе. Неплохо реализуется и стандартный на кварце. Но Вы посмотрите - нельзя ли использовать для этой цели тактовый сигнал SPI?!
А вот с частотными дачиками (счётчиками импульсов) существует типовая проблема - приход счётного импульса в момент доступа к данным счётчика. Эту ситуацию надо иметь в виду и грамотно разрулить ещё до проектирования, т.е. на этапе алгоритма.
Alex03
Цитата(Евгений Николаев @ Nov 8 2006, 19:24) *
Я бы тоже отговорил автора от 3000-ой серии в пользу MAXII.
Посмотрите MAXII-240 и 570 - они совместимы по выводам питания и отличаются на пару-тройку ножек IO. Если использовать только одинаковые выводы, то не будет проблем с переходом на 570-ую в случае нехватки 240-ой.
Незаменимый плюс МАКС2 это возможность задать входам функцию тригера Шмитта, что пойдёт только на пользу при организации интерфейсов связи. Да и флэш там на борту - можно программно прошивать описание модулей и датчиков, реализованных на плате.


Ок! Погляжу.

Цитата
И по поводу генератора. На МАКС2 вполне можно сделать на 1 резисторе и 1 конденсаторе. Неплохо реализуется и стандартный на кварце. Но Вы посмотрите - нельзя ли использовать для этой цели тактовый сигнал SPI?!


Эх. Я уже на внешний генератор "окучился", а Вы меня разуверили. smile.gif
Клок от SPI не получится, он там то есть, то нет, пачками порций по 8 импульсов с относительно большими паузами.

Цитата
А вот с частотными дачиками (счётчиками импульсов) существует типовая проблема - приход счётного импульса в момент доступа к данным счётчика. Эту ситуацию надо иметь в виду и грамотно разрулить ещё до проектирования, т.е. на этапе алгоритма.


Так на то она, синхронность, мне и нужна, чтобы на эти грабли не наступать. Иначе мне и генератор не нужин был бы.
-Al-
Цитата(Евгений Николаев @ Nov 8 2006, 17:24) *
И по поводу генератора. На МАКС2 вполне можно сделать на 1 резисторе и 1 конденсаторе. Неплохо реализуется и стандартный на кварце. Но Вы посмотрите - нельзя ли использовать для этой цели тактовый сигнал SPI?!

В MAXII есть встроенный генератор (правда частота у него может лежать в широких пределах). Находится он в блоке внутреннего Flash, обычно используется для программирования/стирания оного, но можно вывести наружу для своих нужд smile.gif

Цитата
Oscillator
OSC_ENA, one of the input signals in the UFM block, is used to enable the
oscillator signal to output through the OSC output port. You can use this
OSC output port to connect with the interface logic in the logic array. It can
be routed through the logic array and fed back as an input clock for the
address register (ARCLK) and the data register (DRCLK). The output
frequency of the OSC port is one-fourth that of the oscillator frequency. As
a result, the frequency range of the OSC port is 4.8 to 8.4 MHz. The
maximum clock frequency accepted by ARCLK and DRCLK is 10 MHz.
When the OSC_ENA input signal is asserted, the oscillator is enabled and
the output is routed to the logic array through the OSC output. When the
OSC_ENA is set low, the OSC output drives constant low. The routing
delay from the OSC port of the UFM block to OSC output pin depends on
placement. You can analyze this delay using the Quartus II timing
analyzer.
The internal oscillator has a frequency range from 19.2 to 33.6 MHz. The
only time the internal oscillator enables itself is during download or for
ISC mode. At all other times or if the UFM is not used, the oscillator is not
running. In UFM user mode, it is up to the OSC_ENA signal to enable the
oscillator. The internal oscillator does not need to toggle during read
operations. However, this oscillator must be enabled for program or erase
sequences. OSC_ENA can be tied low if you are not issuing any PROGRAM
or ERASE commands.

*The oscillator frequency range is preliminary and subject to
change. Contact Altera for more information.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.