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

 
 
> Непонятное поведение Флип-Флопа при синтезе Хилинх версии 10.1, Значение сбрасывается раньше времени
BlackOps
сообщение Aug 10 2010, 04:10
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



Значит так, кода много будет вставлять объясню так.

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

Так вот, когда я все ето дело симуировал, а потом реализовывал на EDK 9.1 то на чипе потом все работало так как хотел.

А теперь, с версией 10.1 у меня какие то странности! А именно:

Есть например один регистр, и автомат управления следит когда его вывод будет равен 768..в етом случае автомат управления должен записать в него 0 через мультиплексор ну и сделать другие определенные действия. Но етого не происxодит! т.к. после того как вывод регистра достигает значения 13 он сбрасывается на 0! Ну и соответственно автомат управления не переходит в нужное состояние которое достигается после значения 768.

Странное явление, и повторю еще раз именно с версией софта Xilinx 10.1 !!

Ест какие соображения?

И еще...регистр етот 10 битовый! И что интересно, у меня еще есть несколько регистров которые примерно так работают..но они не сбрасываются раньше времени и с ними все нормально... а они примерно 5-6 бит... т.е. етот самый длинный как бы.. может сдесь что я недоглядел?... хотя чтоже тут особенного...

спасибо

Сообщение отредактировал BlackOps - Aug 10 2010, 04:14


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
BlackOps
сообщение Aug 10 2010, 08:24
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-06-08
Из: USSR
Пользователь №: 38 121



значит так...а данные простые стд_логик_вектор... ничего особенного....да и кодирую я всегда в таком стиле, поменьше разных заморочек а больше на регистровом уровне... разве что +/- оставляю как есть...а остальное нет.

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

вот уже в логе синтеза обнаружил:
INFO:Xst:2117 - HDL ADVISOR - Mux Selector <row_cnt_inc> of Case statement line 0 was re-encoded using one-hot encoding. The case statement will be optimized (default statement optimization), but this optimization may lead to design initialization problems. To ensure the design works safely, you can:
- add an 'INIT' attribute on signal <row_cnt_inc> (optimization is then done without any risk)

и еще ето:
Using one-hot encoding for signal <row_cnt_inc>.


--------------------
Нажми на кнопку - получишь результат, и твоя мечта осуществится
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Aug 10 2010, 09:01
Сообщение #3


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

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



Цитата(BlackOps @ Aug 10 2010, 12:24) *
вот уже в логе синтеза обнаружил:
INFO:Xst:2117 - HDL ADVISOR - Mux Selector <row_cnt_inc> of Case statement line 0 was re-encoded using one-hot encoding. The case statement will be optimized (default statement optimization), but this optimization may lead to design initialization problems. To ensure the design works safely, you can:
- add an 'INIT' attribute on signal <row_cnt_inc> (optimization is then done without any risk)

и еще ето:
Using one-hot encoding for signal <row_cnt_inc>.

Если хочется победить Xst:2117 - HDL ADVISOR, то попробуйте заменить (others => '0') when others на (others => '0') when "11". При использовании case отказ от when others => мне помог (в ISE 10.1SP3) избавиться от этого сообщения.
Go to the top of the page
 
+Quote Post
tema-electric
сообщение Aug 10 2010, 10:05
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 309
Регистрация: 18-04-08
Из: Томск
Пользователь №: 36 887



Цитата(Boris_TS @ Aug 10 2010, 16:01) *
попробуйте заменить (others => '0') when others на (others => '0') when "11".


А на сколько правомерна такая замена? std_logic кодируется не только по 0 и 1. У него 9 значений. И все остальные получатся неопределенными.

Если я не ошибаюсь конечно.

И по идее правильней бы всё это выглядело как-то так ...

Код
    -- Row counter register control Mux
    with row_cnt_inc select
        row_cnt_reg_in       <=     row_cnt_reg_out when "00",
                                    row_cnt_reg_out + 1 when "01",
                                    (others => '0') when "10",
                                    (others => '0') when "11",
                                    (others => '-') when others;


Сообщение отредактировал tema-electric - Aug 10 2010, 10:28


--------------------
Кто сказал МЯУ?
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Aug 10 2010, 10:15
Сообщение #5


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

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



Цитата(tema-electric @ Aug 10 2010, 14:05) *
А на сколько правомерна такая замена? std_logic кодируется не только по 0 и 1. У него 9 значений. И все остальные получатся неопределенными.

Если я не ошибаюсь конечно.

Для моделирования замена не равнозначная (тут, по идеи, на others надо ловушки вешать, явно описав все правильные состояния),.. а вот для синтеза - полностью эквивалентная. (Вообще-то для case'ов я использовал перечисляемые типы, и соответственно явно указывал все возможные комбинации. Если же вместо одной из комбинация написать others, то появляется сей неприятный XST Info.)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- BlackOps   Непонятное поведение Флип-Флопа при синтезе Хилинх версии 10.1   Aug 10 2010, 04:10
- - andrewkrot   Пока не выложите хоть кусок кода никто Вам не помо...   Aug 10 2010, 05:54
- - Maverick   добавлю/поясню к предыдущему сообщению - нужна схе...   Aug 10 2010, 06:02
- - BlackOps   ок ну вот фрагмент мультиплексора с регистром: Ко...   Aug 10 2010, 06:24
|- - VladimirB   Цитата(BlackOps @ Aug 10 2010, 10:24) ок ...   Aug 10 2010, 21:12
- - andrewkrot   А что в качестве клока используете?   Aug 10 2010, 07:00
- - tema-electric   Может у вас настройки сред разные? Одна соптимизир...   Aug 10 2010, 07:03
- - BlackOps   клок, ну ето уже системный клок на котором все раб...   Aug 10 2010, 07:17
|- - tema-electric   Цитата(BlackOps @ Aug 10 2010, 14:17) да ...   Aug 10 2010, 07:33
|- - tema-electric   Цитата(BlackOps @ Aug 10 2010, 14:51) зна...   Aug 10 2010, 08:30
- - des00   Цитата(BlackOps @ Aug 9 2010, 23:10) Есть...   Aug 10 2010, 09:12
- - BlackOps   значит так..такое кодирование попробовал: Код -- R...   Aug 10 2010, 19:53
- - BlackOps   ну проверил я еще раз все сигналы в поле чувствите...   Aug 11 2010, 09:35


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 00:28
Рейтинг@Mail.ru


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