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

 
 
> Счетчик нажатия кнопок на 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, 10:26
Сообщение #2


Гуру
******

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



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

Ну барин, тут помощник нужен... я ща по памяти правильно на VHDL не напишу, опишу словами%)

выделение фронта - это 2 D триггера идущие друг за другом на одном клоке, один фиксирует текущее состояние входа, другой текущее состояние этого триггера, фактически прошлое состояние входа. Когда один из них 0, другой 1 - значит это фронт.

Дальше есть еще счетчик (счетчик - считает),
Если счетчик 0 и на триггерах описанных выше фронт, - это нажатие кнопки, как только мы это получили в счетчик загружается какое-то число и он начинает считать к 0. Тем самым пропускает все следующие фронты пока не досчитает до 0.
Дребезг - это много много много фронтов, первый мы поймаем, запустим счетчик, обработаем нажатие, а последующие пропустим, так как счетчик будет считать.

Величина счетчика определяет задержку, малая величина пропустить дребезг, большая снизит реакцию на повторное нажатие кнопки, ищите баланс.


Цитата
и что такое метастабильность?

Знание того что это отличает новичка от мастераsm.gif
Изначально понятие означает некое кривое состояние схемы. На пальцах Представьте себе Д триггер, на входе которого меняется сигнал
каждый клок он защелкивает текущее состояние на входе, на входе 1 - на выходе 1, на входе 0 - на выходе 0. А теперь представьте что клок попал ровно на смену сигнала, то есть грубо на входе было 0.5, клок щелкнул и на выходе триггера будет 0.5, то есть какой-то залипший уровень, который часть схемы поймет как 1, а часть как 0, а по сути это ни 0 и ни 1.

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

Чтобы себя защитить от этого ставят 2 триггера друг за другом. В момент клока 1 триггер берет значение сигнала, а 2 триггер значение первого. То есть на входе 2 триггера всегда верный сигнал. Если первый триггер поймает мета-стабильность, то с практически 100% вероятностью, к следующему фронту клока он уже будет в правильном устойчивом состоянии, и со вторым клоком в схему пойдет верное значение....


Но понятие мета-стабильность со временем расширилось до следующего.

представьте себе конструкцию (надеюсь правильно опишу, но думаю смысл вы поймете)

Код
  if(clk'event and clk = 1)
    if (InSignal = 1) then
       А := 2;
       B := 3;
    endif
  endif


для вас это одно условие по которому А станет 2 а В станет 3.

на самом деле это 2 схемы в кристале физически, А становиться 2 по клоку если сигнал 1, и В становиться 3 по клоку если сигнал 1. Теперь эти штуки могут быть в кристале где угодно и время распространения значения InSignal у них может быть разное. И если InSignal смениться очень близко к клоку, может так оказаться что первая схема получит его состояние как 0, а вторая как 1. То есть реально при таких схемах у вас может выполняться только часть условий, а другая нет.

Новичков при отладки это рубит насмертьsm.gif... Защита от этого очень простая, защелкнуть InSignal в триггер по фронту, а потом уже от этого одного элемента распространять сигнал на всю схему, пути этого распространения проверит синтезатор и все будет работать как положено.

Объединяя 1 и 2 получаем что на вход всех сигналов миняющихся черти как относительно клока просто надо ставить 2 д триггера и все будет хорошо....
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.   вот вам пример Кодreg knopka_old = 0; reg [7...   Jul 9 2015, 09:56
|- - aleshanoff   Цитата(Golikov A. @ Jul 9 2015, 14:56) во...   Jul 9 2015, 10:07
|- - Jackov   Цитата(aleshanoff @ Jul 9 2015, 13:07) а ...   Jul 9 2015, 16:48


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

 


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


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