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

 
 
> Странное поведение Questa
MegaVolt
сообщение Jan 18 2016, 14:35
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Прикрепленное изображение


Странно выдёт себя симулятор. Смотрим первый курсор. Циклограмма берётся из схемы и подаётся на вход регистра.

Clk - клок
Bus2IP_Data данные на входе регистра
CPU_GPIO_Write это CE регистра.
ADC_GPIO выход регистра.

Т.е. мы подали на вход FFFFFFFF подали запись и ничего не записалось sad.gif(

Смотрим второй курсор.
Та же циклограмма только сформирована с помощью Force.

Всё работает и записывается.

Чём подобное поведение может быть объяснено?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kolya
сообщение Jan 18 2016, 15:16
Сообщение #2


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

Группа: Свой
Сообщений: 85
Регистрация: 21-03-11
Из: Киев
Пользователь №: 63 755



Как минимум тем, что если вы случайно записываете нули в нулевой регистр - то не увидите этого.

Сделайте просто, чтобы Bus2IP_Data и ADC_GPIO ВСЕГДА различались. Иногда только так косяки можно найти)
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Jan 18 2016, 16:04
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(Kolya @ Jan 18 2016, 18:14) *
Как минимум тем, что если вы случайно записываете нули в нулевой регистр - то не увидите этого.
Как это случайно? На картинке вполне реальные сигналы которые в одном случае приводят к записи а во втором нет. О какой случайности идёт речь?

Я даже больше скажу этот кусок в железе работает. Т.е. проблема в каких то нюансах симуляции.


Всё оказалось чуть хитрее.

В тестбенче нельзя писать вот так:

wait until CLK'event and CLK='1';
Signal <= '0';

Потому что изменения будут происходить ровно по фронту а не после него как мне казалось sad.gif((

Пришлось сделать так:

wait until CLK'event and CLK='1';
wait for 1 ns;
Signal <= '0';

Может кто подскажет как правильно генерить синхронные сигналы?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jan 19 2016, 13:09
Сообщение #4


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(MegaVolt @ Jan 18 2016, 19:04) *
В тестбенче нельзя писать вот так:

wait until CLK'event and CLK='1';
Signal <= '0';

Потому что изменения будут происходить ровно по фронту а не после него как мне казалось sad.gif ((
Это вельми странно. Я именно так и пишу, и никогда проблем не имел. Правда, я пишу wait until rising_edge(clk); но не думаю, что это должно отличаться поведением от вашего варианта.

Цитата
Пришлось сделать так:

wait until CLK'event and CLK='1';
wait for 1 ns;
Signal <= '0';
Дельта-задержка есть, поэтому дополнительной явной задержки по идее не нужно.
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Jan 19 2016, 14:31
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(andrew_b @ Jan 19 2016, 16:09) *
Это вельми странно. Я именно так и пишу, и никогда проблем не имел. Правда, я пишу wait until rising_edge(clk); но не думаю, что это должно отличаться поведением от вашего варианта.

Дельта-задержка есть, поэтому дополнительной явной задержки по идее не нужно.
Так и я считал что так должно работать. Но видимо есть какой то нюанс который я не до конца понимаю. Но картинки вверху. При любом увеличении изменения данных и клока происходят одномоментно. А есть или нет дельта сказать сложно.

Цитата(Kolya @ Jan 19 2016, 15:24) *
Если так, тогда поменяйте
wait until CLK'event and CLK='1';
на wait until CLK'event and CLK='0';
Для тестбенча не принципиально, а вот для себя вы точно сделаете сдвижку на половину такта и гарантированно будет ловится сигнал CE и Data по переднему фронту системного клока.
Вариант. Когда ясна проблема её решить уже можно кучей разных способов. Тут важно было понять что за глюк.
Go to the top of the page
 
+Quote Post



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

 


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


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