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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Нужна помощь. Обработка группы кнопок с применение процедур
seldim
сообщение Apr 9 2012, 16:15
Сообщение #1


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

Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142



Есть задача: 30 кнопок на входе - вектор А, на выходе должна быть информация о нажатии кнопки после фильта (антидребезг) вектор В и информация о залипании кнопок (фильтра на залипание) - вектор С. Как решить задачу в лоб понятно, но вот как ее решить не создавая кучу переменных. Я анализирую каждый бит входного вектора и создаю на каждый из них кучу переменных, счетчиков для фильтров. В результате код громадный и наверняка могут быть ошибки. Нет лист с виду правильный но почемуто есть взаимное влияние входов на реальной железке. Хочется переписать грамотно.
С процедурами и функциями пока не работал. Если кто может подскажите как их правильно применить для данной задачи или какие есть альтернативные методы. Рабосаю с VHDL.
Go to the top of the page
 
+Quote Post
vetal
сообщение Apr 9 2012, 16:25
Сообщение #2


Гуру
******

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



1. Реализуйте нужную задачу для одной кнопки.
2. Размножте реализацию на нужное количество книпок.
3. Вынесите общие элементы за скобку.
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Apr 9 2012, 16:27
Сообщение #3


Участник
*

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180



Сути задачи, честно говоря, не понял, но может Вам лучше попробовать generate?
Go to the top of the page
 
+Quote Post
seldim
сообщение Apr 9 2012, 17:03
Сообщение #4


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

Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142



Для одной кнопки все реализовано, но когда начинаю код распространять на все 30 кнопок код разрастается количество переменных увеличивается в 30 раз. Вот generate можно попробовать только осталось с ним разобраться.

Кто нибудь может дать пример простой и понятный как использовать generate
Go to the top of the page
 
+Quote Post
Builder
сообщение Apr 9 2012, 18:14
Сообщение #5


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(seldim @ Apr 9 2012, 19:15) *
Есть задача: 30 кнопок на входе - вектор А, на выходе должна быть информация о нажатии кнопки после фильта (антидребезг) вектор В и информация о залипании кнопок (фильтра на залипание) - вектор С. Как решить задачу в лоб понятно, но вот как ее решить не создавая кучу переменных. Я анализирую каждый бит входного вектора и создаю на каждый из них кучу переменных, счетчиков для фильтров. В результате код громадный и наверняка могут быть ошибки. Нет лист с виду правильный но почемуто есть взаимное влияние входов на реальной железке. Хочется переписать грамотно.
С процедурами и функциями пока не работал. Если кто может подскажите как их правильно применить для данной задачи или какие есть альтернативные методы. Рабосаю с VHDL.
Ещё, как вариант - использовать что-то типа пикоблаза, если работаете на ксалинксе. Не переносимо, зато удобно.
Go to the top of the page
 
+Quote Post
des00
сообщение Apr 9 2012, 18:15
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Builder @ Apr 9 2012, 13:14) *
Не переносимо, зато удобно.

вообще то переносимо wink.gif и уже давно


--------------------
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Apr 9 2012, 18:23
Сообщение #7


Участник
*

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180



Цитата(Builder @ Apr 9 2012, 22:14) *
Ещё, как вариант - использовать что-то типа пикоблаза, если работаете на ксалинксе. Не переносимо, зато удобно.

Или даже взять сорцы пикоблэйза в качестве простого и понятного примера generate sm.gif


Цитата(des00 @ Apr 9 2012, 22:15) *
вообще то переносимо wink.gif и уже давно

Интрига! sm.gif Может наводку дадите? (можно даже на водку biggrin.gif )
Go to the top of the page
 
+Quote Post
Builder
сообщение Apr 9 2012, 18:35
Сообщение #8


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(des00 @ Apr 9 2012, 21:15) *
вообще то переносимо wink.gif и уже давно
Да, есть, видел. Но как-то по ресурсам многовато жрёт, на той-же альтере.
Но как я понял на 5-м циклоне уже можно будет делать что-то близкое.

тем кто хочет посмотреть, изучите ссылку:
http://electronix.ru/forum/index.php?showtopic=67269
Go to the top of the page
 
+Quote Post
seldim
сообщение Apr 10 2012, 02:08
Сообщение #9


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

Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142



ПРоцессор не подойдет нужно сделать все на внутренней логике.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Apr 10 2012, 03:09
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933



Цитата(seldim @ Apr 10 2012, 06:08) *
ПРоцессор не подойдет нужно сделать все на внутренней логике.


Формально picoblaze - конечный автомат выполненный на внутренней логике.


--------------------
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 10 2012, 10:14
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Делаете RAM на 30 ячеек, каждая хранит состояние (и счетчики) для каждого входа. Далее делаете КА который сканирует ваши входы и обрабатывает каждый их них, используя ячейку в RAM для хранения всех переменных.
Будет очень компактно
Go to the top of the page
 
+Quote Post
Leka
сообщение Apr 10 2012, 11:46
Сообщение #12


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

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(seldim @ Apr 9 2012, 20:15) *
Есть задача: 30 кнопок на входе - вектор А, на выходе должна быть информация о нажатии кнопки после фильта (антидребезг) вектор В и информация о залипании кнопок (фильтра на залипание) - вектор С.

Алгоритм на Си какой?
Go to the top of the page
 
+Quote Post
Leka
сообщение Apr 10 2012, 13:29
Сообщение #13


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

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Думал, задачка подходящая для отладки синтеза Си --> HDL,
а там, вроде, и автомата то никакого нет - неинтересно получается
(код набросал только для первичной грубой оценки - м/б не рабочим):
Код
static int in, out, bad, max1, max2;
tst(){
    static int new, old, cnt[32];
    static int i=0;
    int sel;

    while(1){
        new=new|(in^old);
        old=in;
        sel=1<<i;
        if(new&sel){
            cnt[i]=0;
            bad&=~sel;
        }else{
            if(cnt[i]>max1)
                out=(out&~sel)|(new&sel);
            if(cnt[i]<max2)
                cnt[i]++;
            else
                bad|=sel;
        }        
        new&=~sel;
        i++;
    }
}


i&=31;
Go to the top of the page
 
+Quote Post
seldim
сообщение Apr 10 2012, 15:00
Сообщение #14


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

Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142



Си не знаю, но судя по написанному вроде похоже на правду только для VHDL будет отличаться. Буду пробовать generate.
Сейчас проблема перешла немного в другую плоскость. Была ошибка в схеме - на выход сиклона 4 (3.3 В режим выхода) посадил на прямую полевик IRF7103 (300pF по входу) как результат полный абзац внутри ПЛИС при включении транзисторов. Перевел выхода в открытый коллектор, сделал подтяжку слало лучше но не совсем. Обнаружил интересный эфект - при включении транзисторов сбрасываются счетчики - фильтры обработки кнопок, так что оказалась ошибка не в грамоздком коде а в схемотехнике. Остальная часть плис управляющая внешним контроллером работает, хотя там логика покруче чем в обработке кнопок. Буду искать метод как побороть сброс счетчиков.

Можно ли в Qvartus 11.1 переместить место физической реализации счетчиков в ПЛИС?
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Apr 10 2012, 16:32
Сообщение #15


Участник
*

Группа: Validating
Сообщений: 55
Регистрация: 6-04-11
Пользователь №: 64 180



Цитата(seldim @ Apr 10 2012, 19:00) *
Си не знаю, но судя по написанному вроде похоже на правду только для VHDL будет отличаться. Буду пробовать generate.

Вы лучше выложите здесь свой код для одной кнопки.

Цитата(seldim @ Apr 10 2012, 19:00) *
Можно ли в Qvartus 11.1 переместить место физической реализации счетчиков в ПЛИС?

Chip Planner, я полагаю. Quartus HandBook Vol.2 наверное. ПМСМ, это лишнее, если в схеме затык. А последовательно резистор к затвору пробовали? Открытый коллектор с подтяжкой не спасает при выключении транзистора (т.е. разряде емкости).

Сообщение отредактировал R.A.K. - Apr 10 2012, 16:34
Go to the top of the page
 
+Quote Post

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

 


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


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