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

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


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

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



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


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

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



С последовательным резистором самый правильный вариант но еть проблема корпус BGA, выходов 20, плата маленькая. Оставлю напоследок. Сначала попробую исключить одновременное переключение транзисторов(как времянку), а в дальнейшем переразводку сделаю и дополнительно буфера поставлю. До этого эти функции обработки кнопок и управления транзисторами выполнял процессор через ПЛИС EPM7128. Она настолько дубовая что с транзисторами легко спавлялась. Убрал проц, поставил циклон и наткнулся на сложности, но думаю оно того стоило. При увеличении каоличества входов и выходов получил 5-и кратное сокращение потребляемой мощности на циклоне.



Цитата(R.A.K. @ Apr 10 2012, 20:32) *
Вы лучше выложите здесь свой код для одной кнопки.


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

Код следующий

------------------------------ Переменные для обработки кнопки 1 --------------------
signal bt1 : std_logic;
signal en_bt1 : std_logic;
signal er_bt1 : std_logic;
signal start_bt1_count : std_logic;
signal bt1_count : integer range 0 to 31 := 0;
signal bt1_er_count : integer range 0 to 15 := 0;
.
.
.
------------------------------ Обработка кнопки 1 --------------------------------------------------------------------
------------------------------ Антидребезг 0.03 сек ---------------------------------
PROCESS (bt1, CLK_610_Hz, bt1_count)
BEGIN
if bt1 = '1' then bt1_count <= 0;
elsif CLK_610_Hz 'EVENT and CLK_610_Hz = '1' and bt1_count < 18 THEN
bt1_count <= bt1_count + 1;
end if;
END PROCESS;

en_bt1 <= '1' when bt1_count = 18 else '0';

----------------------------- Проверка на залипание 5 сек ---------------------------

PROCESS (bt1, CLK_2_Hz, bt1_er_count)
BEGIN
if bt1 = '1' then bt1_er_count <= 0;
elsif CLK_2_Hz 'EVENT and CLK_2_Hz = '1' and bt1_er_count < 13 THEN
bt1_er_count <= bt1_er_count + 1;
end if;
END PROCESS;

er_bt1 <= '1' when bt1_er_count = 13 else '0';




Сообщение отредактировал seldim - Apr 10 2012, 17:28
Go to the top of the page
 
+Quote Post
R.A.K.
сообщение Apr 10 2012, 18:04
Сообщение #3


Участник
*

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



Цитата(seldim @ Apr 10 2012, 21:33) *
Код следующий

Ок. (тянет придраться к наличию bt1_count и bt1_er_count в списках чувствительности).

Что такое module instantiation знаете/умеете?
component, port map...

Если нет, то почитайте. Могу Суворова, Шейнин порекомендовать.

Если да, то пишите еще один модуль, в нем будете использовать компонент "сканер одной кнопки "(его код Вы только что привели выше). С помощью generic в цикле подключите на каждую из 30 кнопок по одному компоненту. Цепи кнопок для этого удобнее объединить в шину. Фактически это будет просто список цепей, но получиться очень компактный код.


Попутно. Код можно обрамлять
Код
... и тогда он будет выглядеть так
.

Попутнее. Я не уверен, что способ ввода обрабатываемх сигналов через асинхронный сброс является устойчивым и живучим методом. Я о метастабильности. Местные гуру, надеюсь, меня поправят (или поддержат sm.gif).

Предложение посмотреть пример использования generic в сорцах пикоблэйза еще в силе. Их там много (только на FPGA смотрите, не берите на CPLD).

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

Сообщений в этой теме
- seldim   Нужна помощь. Обработка группы кнопок с применение процедур   Apr 9 2012, 16:15
- - vetal   1. Реализуйте нужную задачу для одной кнопки. 2. Р...   Apr 9 2012, 16:25
- - R.A.K.   Сути задачи, честно говоря, не понял, но может Вам...   Apr 9 2012, 16:27
- - seldim   Для одной кнопки все реализовано, но когда начинаю...   Apr 9 2012, 17:03
- - Builder   Цитата(seldim @ Apr 9 2012, 19:15) Есть з...   Apr 9 2012, 18:14
|- - des00   Цитата(Builder @ Apr 9 2012, 13:14) Не пе...   Apr 9 2012, 18:15
|- - Builder   Цитата(des00 @ Apr 9 2012, 21:15) вообще ...   Apr 9 2012, 18:35
- - R.A.K.   Цитата(Builder @ Apr 9 2012, 22:14) Ещё, ...   Apr 9 2012, 18:23
- - seldim   ПРоцессор не подойдет нужно сделать все на внутрен...   Apr 10 2012, 02:08
|- - dm.pogrebnoy   Цитата(seldim @ Apr 10 2012, 06:08) ПРоце...   Apr 10 2012, 03:09
- - XVR   Делаете RAM на 30 ячеек, каждая хранит состояние (...   Apr 10 2012, 10:14
- - Leka   Цитата(seldim @ Apr 9 2012, 20:15) Есть з...   Apr 10 2012, 11:46
- - Leka   Думал, задачка подходящая для отладки синтеза Си -...   Apr 10 2012, 13:29
- - seldim   Си не знаю, но судя по написанному вроде похоже на...   Apr 10 2012, 15:00
|- - R.A.K.   Цитата(seldim @ Apr 10 2012, 19:00) Си не...   Apr 10 2012, 16:32
- - seldim   bt1_count и bt1_er_count в списках чувствительност...   Apr 11 2012, 01:54
|- - andrew_b   Цитата(seldim @ Apr 11 2012, 04:54) bt1_c...   Apr 11 2012, 04:22
||- - seldim   Цитата(andrew_b @ Apr 11 2012, 08:22) Не ...   Apr 11 2012, 15:20
|- - R.A.K.   Цитата(seldim @ Apr 11 2012, 05:54) bt1_c...   Apr 11 2012, 16:07
- - seldim   Спасибо за пример. Вот это действительно компактны...   Apr 11 2012, 18:30


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

 


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


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