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

 
 
> Счетчик нажатия кнопок на LDM-XC3S500E-PQ208 (Spartan 3e), Проект считает количество нажатий и выводит результат на светодиоды
aleshanoff
сообщение Jul 9 2015, 06:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 2-05-15
Из: Смоленск
Пользователь №: 86 484



Здравствуйте. Собираю 4-х разрядный счетчик нажатия кнопки на плате LDM-XC3S500E-PQ208.

Выдает следующую ошибку:

......
ERROR:Place:1018 - A clock IOB / clock component pair have been found that are not placed at an optimal clock IOB /
clock site pair. The clock component <but1_BUFGP/BUFG> is placed at site <BUFGMUX_X1Y0>. The IO component <but1> is
placed at site <IPAD174>. This will not allow the use of the fast path between the IO and the Clock buffer. If this
sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .ucf
file to demote this message to a WARNING and allow your design to continue. However, the use of this override is
highly discouraged as it may lead to very poor timing results. It is recommended that this error condition be
corrected in the design. A list of all the COMP.PINs used in this clock placement rule is listed below. These
examples can be used directly in the .ucf file to override this clock rule.
< NET "but1" CLOCK_DEDICATED_ROUTE = FALSE; >


подскажите, где я ошибся?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jul 9 2015, 09:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



вот вам пример

Код
reg knopka_old = 0;
reg [7:0] ButHolder = 0;
reg knopka = 0;
reg knopka_0 = 0;


always @(posedge clk)
   begin
      //устраняем метастабильность
     knopka_0 <= knopka_in;
     knopka <= knopka_0;
     //выделяем фронт
     knopka_old <= knopka;

     //устраняем дребезг
     if(ButHolder != 0)
        ButHolder <= ButHolder - 1'b1;

     //реагируем на нажатие
     if((ButHolder == 0) && (knopka_old == 1'b1) && (knopka == 1'b0)) //для нулящей кнопки
        begin
           ButHolder <= 255;  
           .... //действия на нажатие кнопки
        end

   end


тут надо использовать внешний клок с заданной частотой идущий на клоковую ногу, можно его поправить при помощи PLL
knopka_in - это ножка кнопки, считаем что кнопка нулит вход, его надо подтянуть в 1.

первое что делается это устраняется метастабильность - это обязательно надо делать со всеми входными произвольными сигналами.

второе это сохраняется старое значение кнопки, когда старое будет 1, а новое 0 - это фронт, это переход из не нажатого состояние в нажатое, мы реагиурем не на уровень а на изменение, причем в одну сторону.

Но нажатие детектируется только когда счетчик в 0. Этот счетчик каждое нажатие кнопки взводиться в число, тем самым определяется пауза, во время этой паузы не будет детектироваться нажатия кнопки.


вот собственно и все. Дребезг - это по сути многократные нажатия кнопки, мы вводим паузу которая их просто пропускает.
Go to the top of the page
 
+Quote Post
aleshanoff
сообщение Jul 9 2015, 10:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 2-05-15
Из: Смоленск
Пользователь №: 86 484



Цитата(Golikov A. @ Jul 9 2015, 14:56) *
вот вам пример

Код
reg knopka_old = 0;
reg [7:0] ButHolder = 0;
reg knopka = 0;
reg knopka_0 = 0;


always @(posedge clk)
   begin
      //устраняем метастабильность
     knopka_0 <= knopka_in;
     knopka <= knopka_0;
     //выделяем фронт
     knopka_old <= knopka;

     //устраняем дребезг
     if(ButHolder != 0)
        ButHolder <= ButHolder - 1'b1;

     //реагируем на нажатие
     if((ButHolder == 0) && (knopka_old == 1'b1) && (knopka == 1'b0)) //для нулящей кнопки
        begin
           ButHolder <= 255;  
           .... //действия на нажатие кнопки
        end

   end


а на VHDL можно? или в схематике? я мало что понял из программы.

и что такое метастабильность?
Go to the top of the page
 
+Quote Post
Jackov
сообщение Jul 9 2015, 16:48
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(aleshanoff @ Jul 9 2015, 13:07) *
а на VHDL можно? или в схематике? я мало что понял из программы.

https://youtu.be/KqCAsrgsSwg
Вариант схемы не очень хороший, но тоже работает.

Сообщение отредактировал Jackov - Jul 9 2015, 16:49
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- aleshanoff   Счетчик нажатия кнопок на LDM-XC3S500E-PQ208 (Spartan 3e)   Jul 9 2015, 06:01
- - Bad0512   Цитата(aleshanoff @ Jul 9 2015, 12:01) Зд...   Jul 9 2015, 06:30
- - egorman44   Цитата(aleshanoff @ Jul 9 2015, 09:01) Зд...   Jul 9 2015, 06:51
- - Lmx2315   Цитата(aleshanoff @ Jul 9 2015, 10:01) .....   Jul 9 2015, 07:12
|- - Bad0512   Цитата(Lmx2315 @ Jul 9 2015, 13:12) ..вст...   Jul 9 2015, 07:53
|- - Lmx2315   Цитата(Bad0512 @ Jul 9 2015, 11:53) Ошибк...   Jul 9 2015, 08:03
- - aleshanoff   Всем спасибо за такое бурное обсуждение))) Ошибк...   Jul 9 2015, 08:27
|- - Bad0512   Цитата(aleshanoff @ Jul 9 2015, 14:27) Вс...   Jul 9 2015, 08:39
- - aleshanoff   Собрал, работает, считает, но как и предполагалось...   Jul 9 2015, 08:57
|- - iosifk   Цитата(aleshanoff @ Jul 9 2015, 11:57) ст...   Jul 9 2015, 10:43
- - qwa   Цитата(aleshanoff @ Jul 9 2015, 11:57) И ...   Jul 9 2015, 08:59
- - aleshanoff   Особенно не понятна фраза из статьи: "Для это...   Jul 9 2015, 09:00
|- - Amurak   Цитата(aleshanoff @ Jul 9 2015, 12:00) о ...   Jul 9 2015, 09:09
|- - aleshanoff   Цитата(Amurak @ Jul 9 2015, 14:09) О том,...   Jul 9 2015, 09:16
- - Golikov A.   Цитатаа на VHDL можно? или в схематике? я мало что...   Jul 9 2015, 10:26


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 15:46
Рейтинг@Mail.ru


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