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

 
 
> генератор переменной частоты на ПЛИС, xilinx spartan3
Anton_NN
сообщение Jul 28 2009, 07:59
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 21-05-09
Пользователь №: 49 331



Передо мной поставлена задача, на базе плис SPARTAN3 организовать
генератор переменной частоты, с шагом 1Гц в частотном диапазоне от 1Гц до
15кГц, скважность 2.
Как это сделать?
Пытался сделать ничего не вышло.
Для примера собрал в софте webpackise 8.2i схему на счетчике с паралельной загрузкой и аккумуляторе.
С выхода счетчика частота меняется, но не линейно, а изменяется в 2 раза (примерно так в 1-2-4-8-16-32-64 и.д. что мне не подходит), линейно меняется только период.
Проект во вложенном файле.
Заранее благодарю!
Прикрепленные файлы
Прикрепленный файл  ACC_SCHET.rar ( 360.86 килобайт ) Кол-во скачиваний: 44
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Boris_TS
сообщение Jul 28 2009, 08:12
Сообщение #2


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Anton_NN @ Jul 28 2009, 11:59) *
Передо мной поставлена задача, на базе плис SPARTAN3 организовать генератор переменной частоты, с шагом 1Гц в частотном диапазоне от 1Гц до 15кГц, скважность 2.
Как это сделать?

Для любой скважности задача решается одинаково:
1. Строится управляемый делитель частоты, выходом которого является выходной перенос (COut) загружаемого счетчика.
2. COut подается на схему, формирующую импульсы заданной (или даже измиеняемой) скважности.
Go to the top of the page
 
+Quote Post
Anton_NN
сообщение Jul 28 2009, 08:24
Сообщение #3





Группа: Новичок
Сообщений: 12
Регистрация: 21-05-09
Пользователь №: 49 331



Цитата(Boris_TS @ Jul 28 2009, 12:12) *
Для любой скважности задача решается одинаково:
1. Строится управляемый делитель частоты, выходом которого является выходной перенос (COut) загружаемого счетчика.
2. COut подается на схему, формирующую импульсы заданной (или даже измиеняемой) скважности.


Если посмотреть мой проект, то там есть счетчик с паралельной загрузкой! Проблема в том, что на выходе этого счетчика линейно меняется период (Т), а мне нужна линейно изменяющаяся частота (f). f=1/T!
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jul 28 2009, 10:17
Сообщение #4


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Anton_NN @ Jul 28 2009, 12:24) *
Если посмотреть мой проект, то там есть счетчик с параллельной загрузкой! Проблема в том, что на выходе этого счетчика линейно меняется период (Т), а мне нужна линейно изменяющаяся частота (f). f=1/T!

Ну так какая проблема (?!!) - создайте таблицу соответствия: такая-то частота = такому-то коэффициенту, и запишите её в Block RAM.
В Вашу систему подавайте задание в виде кода желаемой частоты, из Block RAM по адресу = коду желаемой частоты считывайте коэффициент деления для загружаемого счетчика.

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

Цитата(petrov @ Jul 28 2009, 14:10) *
Можно и в схематике, вы ведь в квартусе работаете?

Altera Quartus вроде же не поддерживает Xilinx Spartan-3 (см. subj)
Go to the top of the page
 
+Quote Post
Anton_NN
сообщение Jul 28 2009, 10:34
Сообщение #5





Группа: Новичок
Сообщений: 12
Регистрация: 21-05-09
Пользователь №: 49 331



Цитата(Boris_TS @ Jul 28 2009, 14:17) *
Ну так какая проблема (?!!) - создайте таблицу соответствия: такая-то частота = такому-то коэффициенту, и запишите её в Block RAM.
В Вашу систему подавайте задание в виде кода желаемой частоты, из Block RAM по адресу = коду желаемой частоты считывайте коэффициент деления для загружаемого счетчика.

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


Altera Quartus вроде же не поддерживает Xilinx Spartan-3 (см. subj)


Работаю в webpack ise 8.2i.
С Block RAM пробовал, интересно конечно, но кто загружать будет эту сетку - там же значений целая куча!!! Проект получиться негибким - необходимо чтобы пользователь вводил всего 3 величины -1) начальная частота работы в Гц, 2) конечная частота в Гц, 3) шаг частоты в Гц...... и пошло-поехало biggrin.gif
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jul 28 2009, 18:24
Сообщение #6


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Anton_NN @ Jul 28 2009, 14:34) *
С Block RAM пробовал, интересно конечно, но кто загружать будет эту сетку - там же значений целая куча!!!

Конечно куча значений, а как Вы хотели... (можно и без кучи значений обойтись, но тогда надо городить вычислитель - с Block RAM обычно попроще выходит).
А у Block RAM, есть атрибут начальной инициализации - INIT (читай: cgd.pdf, lib.pdf, xst.pdf), позволяющий использовать этот BRAM, как BROM. Конечно, заполнять начальными значениями удобнее на VHDL/Verilog,.. но можно и ручками поработать,.. да и были еще mem файлы - надо только поглядеть в сторону IP Core Generator - он достаточно хорошо работает с схемным вводом проекта.

Цитата(Anton_NN @ Jul 28 2009, 14:34) *
Проект получиться негибким - необходимо чтобы пользователь вводил всего 3 величины:
1) начальная частота работы в Гц,
2) конечная частота в Гц,
3) шаг частоты в Гц...... и пошло-поехало

Наверное, Вы - студент... Я угадал ?
Go to the top of the page
 
+Quote Post
Anton_NN
сообщение Jul 28 2009, 20:10
Сообщение #7





Группа: Новичок
Сообщений: 12
Регистрация: 21-05-09
Пользователь №: 49 331



Цитата(Boris_TS @ Jul 28 2009, 22:24) *
Конечно куча значений, а как Вы хотели... (можно и без кучи значений обойтись, но тогда надо городить вычислитель - с Block RAM обычно попроще выходит).
А у Block RAM, есть атрибут начальной инициализации - INIT (читай: cgd.pdf, lib.pdf, xst.pdf), позволяющий использовать этот BRAM, как BROM. Конечно, заполнять начальными значениями удобнее на VHDL/Verilog,.. но можно и ручками поработать,.. да и были еще mem файлы - надо только поглядеть в сторону IP Core Generator - он достаточно хорошо работает с схемным вводом проекта.


Боюсь, что с той дискретой которая мне требуется мне просто объема памяти не хватит, если я забью все RAMами


Цитата(Boris_TS @ Jul 28 2009, 22:24) *
Наверное, Вы - студент... Я угадал ?


Я не студент - работаю в фирме инж.электрик. Руководство поставило задачу реализовать генератор переменной частоты на плис, с минимальными манипуляциями, о которых я выше говорил. С RAM действительно пробовал до 100 Гц, частота меняется примерно линейно(дискретность в 1Гц все равно не получилась), но необходимо 15000 значений и куча адрессного пространства в софте, чтобы заполнить RAM.

Сообщение отредактировал Anton_NN - Jul 28 2009, 20:17
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jul 29 2009, 08:05
Сообщение #8


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Anton_NN @ Jul 29 2009, 00:10) *
Я не студент - работаю в фирме инж.электрик.

Это хорошо: т.к. Вы не студент, то имеет смысл обсуждать технические вопросы.

Цитата(Anton_NN @ Jul 28 2009, 11:59) *
Передо мной поставлена задача, на базе плис SPARTAN3 организовать генератор переменной частоты.
Цитата(Anton_NN @ Jul 28 2009, 11:59) *
Руководство поставило задачу реализовать генератор переменной частоты на плис, с минимальными манипуляциями, о которых я выше говорил

1. Генератор чего же именно Вам надо сделать ? ПЛИС устройство цифровое и, соответственно, синус ну никак не родит, поэтому под "генератором частоты" можно подразумевать 2 существенно разные вещи:
a] генератор прямоугольных импульсов.
b] генератор кодов для ЦАП, с выхода которого Вы сможете получить что-то очень близкое к синусоидальным колебаниям заданной частоты. (Пресловутый DDS).

Цитата(Anton_NN @ Jul 29 2009, 00:10) *
Боюсь, что с той дискретой которая мне требуется мне просто объема памяти не хватит, если я забью все RAMами

Да. Тут я прокривоглазился - мне показалось, что Вам необходим шаг 1кГк - т.е. получается всего 15 значений (которые хорошо ложились бы и в DistRAM и в BRAM).
Go to the top of the page
 
+Quote Post
Anton_NN
сообщение Jul 29 2009, 10:24
Сообщение #9





Группа: Новичок
Сообщений: 12
Регистрация: 21-05-09
Пользователь №: 49 331



Цитата(Boris_TS @ Jul 29 2009, 12:05) *
1. Генератор чего же именно Вам надо сделать ? ПЛИС устройство цифровое и, соответственно, синус ну никак не родит, поэтому под "генератором частоты" можно подразумевать 2 существенно разные вещи:
a] генератор прямоугольных импульсов.
b] генератор кодов для ЦАП, с выхода которого Вы сможете получить что-то очень близкое к синусоидальным колебаниям заданной частоты. (Пресловутый DDS).


2. Да. Тут я прокривоглазился - мне показалось, что Вам необходим шаг 1кГк - т.е. получается всего 15 значений (которые хорошо ложились бы и в DistRAM и в BRAM).


Необходимо организовать генератор прямоугольных импульсов с переменной частотой(1Гц....15кГц, с минимальным шагом в 1Гц), которым из софта, написанного мною на СИ, пользователь будет вводить всего 3 значения:1) начальная частота 2) шаг частоты (ускорение) 3) конечная частота.все. поэтому RAM исключается. по-всякому пробовал результат один - нелинейность изменения частоты!

Сообщение отредактировал Anton_NN - Jul 29 2009, 10:31
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jul 29 2009, 10:38
Сообщение #10


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Anton_NN @ Jul 29 2009, 14:24) *
Необходимо организовать генератор прямоугольных импульсов с переменной частотой(1Гц....15кГц, с минимальным шагом в 1Гц)

Без погрешностей, это реализовать невозможно. Поэтому поясните, какие именно виды ошибок генерируемых импульсов допустимы:
1. В случае, если после задания частоты импульсы генерируются одинаковыми (от периода к периоду), Какая максимальная допустима погрешность периода импульсов ?
2. Если по какой-то причине нельзя допускать долговременную ошибку частоты, то какая погрешность допустима на "дрожание" фронтов ?
Go to the top of the page
 
+Quote Post
Anton_NN
сообщение Jul 29 2009, 11:10
Сообщение #11





Группа: Новичок
Сообщений: 12
Регистрация: 21-05-09
Пользователь №: 49 331



Цитата(Boris_TS @ Jul 29 2009, 14:38) *
Без погрешностей, это реализовать невозможно. Поэтому поясните, какие именно виды ошибок генерируемых импульсов допустимы:
1. В случае, если после задания частоты импульсы генерируются одинаковыми (от периода к периоду), Какая максимальная допустима погрешность периода импульсов ?
2. Если по какой-то причине нельзя допускать долговременную ошибку частоты, то какая погрешность допустима на "дрожание" фронтов ?


Я понимаю что без погрешностей не реализовать. ТЗ составлено таким образом, что виды допустимых ошибок генерируемых импульсов не указаны, работа идет на результат, на первом этапе допускается и дрожание фронтов и погрешность периода, но чем меньше они будут тем лучше.
Go to the top of the page
 
+Quote Post
VladimirB
сообщение Jul 29 2009, 12:06
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 614
Регистрация: 12-06-09
Из: рядом с Москвой
Пользователь №: 50 219



Цитата(Anton_NN @ Jul 29 2009, 15:10) *
Я понимаю что без погрешностей не реализовать. ТЗ составлено таким образом, что виды допустимых ошибок генерируемых импульсов не указаны, работа идет на результат, на первом этапе допускается и дрожание фронтов и погрешность периода, но чем меньше они будут тем лучше.

Если у вас не получается в ПЛИС сделать DDS с компаратором, то можно воспользоватся
готовым решение от АналоговыхДевиц:

http://www.analog.com/en/rfif-components/d...ts/product.html

там есть встроенный компаратор и в даташите на Figure 2. приведена схема включения для генерации прямоугольных импульсов.

Если скорость перестройки частоты небольшая то для управления достаточно будет прикрутить какой нибудь простенький микроконтроллер с USB и не нужно ни какой ПЛИС.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Anton_NN   генератор переменной частоты на ПЛИС   Jul 28 2009, 07:59
|- - Maverick   Цитата(Anton_NN @ Jul 28 2009, 11:24) Есл...   Jul 28 2009, 09:00
|- - VladimirB   Цитата(Anton_NN @ Jul 29 2009, 00:10) Бою...   Jul 28 2009, 20:49
||- - des00   Цитата(VladimirB @ Jul 28 2009, 14:49) Не...   Jul 29 2009, 03:26
|- - Boris_TS   Цитата(Anton_NN @ Jul 29 2009, 14:24) Нео...   Jul 29 2009, 12:02
|- - Anton_NN   Цитата(Boris_TS @ Jul 29 2009, 16:02) Ест...   Jul 29 2009, 14:04
|- - Boris_TS   Цитата(Anton_NN @ Jul 29 2009, 18:04) В п...   Jul 29 2009, 15:19
|- - Anton_NN   Цитата(Boris_TS @ Jul 29 2009, 19:19) 1. ...   Jul 30 2009, 05:01
|- - Boris_TS   Цитата(Anton_NN @ Jul 30 2009, 09:01) ......   Jul 30 2009, 06:23
- - des00   занятно, раз в 2/3 месяца возникает на этом форуме...   Jul 28 2009, 08:46
|- - Anton_NN   Цитата(des00 @ Jul 28 2009, 12:46) занятн...   Jul 28 2009, 09:40
|- - VladimirB   Цитата(Anton_NN @ Jul 28 2009, 13:40) Есл...   Jul 28 2009, 09:57
||- - Maverick   Цитата(VladimirB @ Jul 28 2009, 12:57) В ...   Jul 28 2009, 13:11
|- - petrov   Цитата(Anton_NN @ Jul 28 2009, 13:40) Есл...   Jul 28 2009, 10:10
||- - Anton_NN   Цитата(petrov @ Jul 28 2009, 14:10) Можно...   Jul 28 2009, 12:00
||- - petrov   Цитата(Anton_NN @ Jul 28 2009, 16:00) Раб...   Jul 28 2009, 12:41
|- - des00   Цитата(Anton_NN @ Jul 28 2009, 04:40) Есл...   Jul 28 2009, 10:23
- - murmel1   Кхм-хм. Извините, коли не в тему, но имею одно пре...   Jul 29 2009, 17:15


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:23
Рейтинг@Mail.ru


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