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

 
 
6 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Не работает схема верхнего уровня, Помощь в освоении VHDL
призрак
сообщение May 8 2018, 11:31
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



День добрый всем.
Не пинайте сразу, только начал освоение VHDL, а спросить не у кого.
Работаю в Active HDL 10.2.

Проблема такая : создал компонент - синхронный счетверённый Д-триггер с общим клоком, всё компилируется и работает.
Создаю в том же проекте другой компонент - в основе тот-же 4-Д-триггер с обвеской простой логикой - всё компилится, но при симуляции - неопределённое состояние выходов, т.е. не работает.
В чём может быть ошибка? вроде же создают многокомпонентные схемы? или надо другой проект создавать и в него добавлять компонент?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 8 2018, 12:16
Сообщение #2


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

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



Телепаты уже в летних отпусках. Покажите код.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 8 2018, 12:43
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Цитата(andrew_b @ May 8 2018, 15:16) *
Телепаты уже в летних отпусках. Покажите код.

Да там особо нет текста

Вот ещё схема для понимания

Цитата(призрак @ May 8 2018, 15:37) *
Да там особо нет текста

Вот циклограмма


Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  3REG.vhd.pdf ( 410.24 килобайт ) Кол-во скачиваний: 14
Прикрепленный файл  3REG_SCH.pdf ( 47.64 килобайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 8 2018, 12:51
Сообщение #4


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

Группа: Свой
Сообщений: 1 182
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(призрак @ May 8 2018, 15:43) *
Да там особо нет текста

Вот ещё схема для понимания

Ну и кто за Вас будет ресетить логику в начале симуляции?.

По умолчанию все регистры при старте симуляции ставятся в U состояние (в отличии от реального железа) - это помогает при разработку отслеживать некорректную инициализацию дизайна.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 8 2018, 13:10
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Цитата(RobFPGA @ May 8 2018, 15:51) *
Приветствую!


Ну и кто за Вас будет ресетить логику в начале симуляции?.

По умолчанию все регистры при старте симуляции ставятся в U состояние (в отличии от реального железа) - это помогает при разработку отслеживать некорректную инициализацию дизайна.

Удачи! Rob.


Ресет отключен пока в процессе отладки, по логике схема должна работать примерно так:
с 1 тактом первый триггер принимает состояние 1
со 2 тактом - второй 1, первый ноль, и т.д.
бегающая единичка

Цитата(призрак @ May 8 2018, 15:55) *
Ресет отключен пока в процессе отладки, по логике схема должна работать примерно так:
с 1 тактом первый триггер принимает состояние 1
со 2 тактом - второй 1, первый ноль, и т.д.
бегающая единичка

Добавил сброс вместо земли - не поменялось
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 8 2018, 13:13
Сообщение #6


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

Группа: Свой
Сообщений: 1 182
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(призрак @ May 8 2018, 15:55) *
Ресет отключен пока в процессе отладки, по логике схема должна работать примерно так:
...
Это понятно что по логику - но по факту я вижу схему которая может работать (в симе) как минимум 17-ю разными вариантами в зависимости от того как изначально инициализируются регистры.
Один из этих вариантов Вы и видите.

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

P.S. Какой тощий сброс sad.gif аш жалко. На тригграх ресет какой ? асинхронный или синхронный?

Удачи! Rob.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 8 2018, 13:21
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Цитата(RobFPGA @ May 8 2018, 16:13) *
Приветствую!
Это понятно что по логику - но по факту я вижу схему которая может работать (в симе) как минимум 17-ю разными вариантами в зависимости от того как изначально инициализируются регистры.
Один из этих вариантов Вы и видите.

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

P.S. Какой тощий сброс sad.gif аш жалко. На тригграх ресет какой ? асинхронный или синхронный?

Удачи! Rob.


Простой триггер:
if ( RS='1') then
FF <= '0' ;
elsif ( CLK'event and CLK = '1' ) then
FF <= D after 1 ns ;
end if;
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 8 2018, 14:53
Сообщение #8


В поисках себя...
****

Группа: Свой
Сообщений: 698
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(призрак @ May 8 2018, 16:21) *
Простой триггер:
if ( RS='1') then
FF <= '0' ;
elsif ( CLK'event and CLK = '1' ) then
FF <= D after 1 ns ;
end if;

Во-первых
Код
after 1 ns;
не синтезируется.
Во-вторых у вас триггер никак не инициализирован.
Либо вручную при объявлении сигнала (или порта) присвойте начальное значение, либо сначала сбрасывайте триггер. Хотя это Вам говорили. Что Вы ещё хотите услышать я не знаю.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 10 2018, 06:22
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Примерно понял.
Но, в примерах триггера не делают предварительную установку значения, и всё работает..
И получается что сигнал сброса, генерируемый в начале тестирования, не устанавливает в ноль, а надо делать заранее установку?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 10 2018, 06:37
Сообщение #10


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

Группа: Свой
Сообщений: 1 182
Регистрация: 23-12-04
Пользователь №: 1 643



Приветстувую!
Цитата(призрак @ May 10 2018, 09:22) *
Примерно понял.
Но, в примерах триггера не делают предварительную установку значения, и всё работает..
И получается что сигнал сброса, генерируемый в начале тестирования, не устанавливает в ноль, а надо делать заранее установку?

Это значит что у Вас что то не так либо с сигналом сброса либо с описанием триггера.
Попробуйте сделать сброс шириной в пару тактов CLK, Ну и описание триггера целиком покажите.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 10 2018, 06:42
Сообщение #11


В поисках себя...
****

Группа: Свой
Сообщений: 698
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(призрак @ May 10 2018, 09:22) *
Примерно понял.
Но, в примерах триггера не делают предварительную установку значения, и всё работает..

Потому-что многим триггерам предварительная установка не требуется.
Например есть выход 8-разрядного регистра data_out. И есть сигнал валидности этих данных data_valid.
Так вот начальная установка регистра data_out не требуется. А вот сигнал валидности data_valid желательно как-либо установить в начальное значение. Либо путем начального сброса, либо начальной установкой схемы.
Более того не все FPGA поддерживают возможность начальной установки значения, на сколько я помню FPGA фирмы Actel не умеют инициализировать триггеры каким-то значением. А некоторые FPGA могут затребовать дополнительных ресурсов для начальной установки значения. Например в чипах Altera cyclone C5SEMA5F31C6 установка начального значения триггера в нули - ресурсов не требует. А вот установка в единицы - требует дополнительный слой логики, что может иметь значение на проектах, критичных к максимальным частотам.

Цитата
И получается что сигнал сброса, генерируемый в начале тестирования, не устанавливает в ноль, а надо делать заранее установку?
Не так. Правильно сделанный сброс - устанавливает значение триггера в то значение, в которое Вы его сбрасываете. Ключевая фраза - правильно сделанный сброс. А как делать правильно - зависит от проекта. У меня обычно присутствует начальный сброс.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 10 2018, 08:26
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



Хорошо, но в данном случае что надо первоначально обнулять? D0...3? Q0...3? FF0...3?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 10 2018, 08:50
Сообщение #13


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

Группа: Свой
Сообщений: 1 182
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(призрак @ May 10 2018, 11:26) *
Хорошо, но в данном случае что надо первоначально обнулять? D0...3? Q0...3? FF0...3?

Ресетить всегда нужно источник сигнала. Что является источником в Вашей схеме? - выход триггеров.

Еще раз повторю - если при подачи на вход сброса RS Ваш триггер не сбрасывается - это значит что что то не так и дальнейшие гадания ни к чему не приведут. Надо для начала разобраться с одним триггером - почему он не сбрасывается?
Просимулируйте один триггер - выведите на диаграмму все сигналы из с него (или изнутри 4DF) и посмотрите что и как.

Судя по куску кода триггера он асинхронный - может Вы не добавили RS в список чувствительности процесса?

P.S. Ну и когда с триггером разберетесь - ресет дизайна нужно делать так чтобы всегда приводить схему в нужное состояние - в Вашей схеме это не так - от ширины импульса на входе RST будет зависть что запишется в регистр и соответственно бегущую единицу Вы получите не всегда.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
Tausinov
сообщение May 10 2018, 08:51
Сообщение #14


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

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(призрак @ May 10 2018, 11:26) *
Хорошо, но в данном случае что надо первоначально обнулять? D0...3? Q0...3? FF0...3?

У вас внутренние состояния регистров U - т.е. неопределены, и из-за того, что на первый из регистров подается выход последнего прооренный со входным сигналом, это самое неопределенное состояние так и будет бесконечно на выходе каждого из регистров. Выше вам уже правильно посоветовали либо задать изначальные состояния этих самых регистров, либо устанавливать их по сбросу.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 10 2018, 09:06
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 216
Регистрация: 12-12-06
Из: Москва
Пользователь №: 23 439



И вопрос остался - надо делать отдельный проект для каждого уровня или в одном можно, сейчас вот так



Цитата(RobFPGA @ May 10 2018, 11:50) *
Приветствую!


Ресетить всегда нужно источник сигнала. Что является источником в Вашей схеме? - выход триггеров.

Еще раз повторю - если при подачи на вход сброса RS Ваш триггер не сбрасывается - это значит что что то не так и дальнейшие гадания ни к чему не приведут. Надо для начала разобраться с одним триггером - почему он не сбрасывается?
Просимулируйте один триггер - выведите на диаграмму все сигналы из с него (или изнутри 4DF) и посмотрите что и как.

Судя по куску кода триггера он асинхронный - может Вы не добавили RS в список чувствительности процесса?

P.S. Ну и когда с триггером разберетесь - ресет дизайна нужно делать так чтобы всегда приводить схему в нужное состояние - в Вашей схеме это не так - от ширины импульса на входе RST будет зависть что запишется в регистр и соответственно бегущую единицу Вы получите не всегда.

Удачи! Rob.



Вот симуляция триггера - всё работает

Цитата(Tausinov @ May 10 2018, 11:51) *
У вас внутренние состояния регистров U - т.е. неопределены, и из-за того, что на первый из регистров подается выход последнего прооренный со входным сигналом, это самое неопределенное состояние так и будет бесконечно на выходе каждого из регистров. Выше вам уже правильно посоветовали либо задать изначальные состояния этих самых регистров, либо устанавливать их по сбросу.


То есть если на элемент ИЛИ на один вход подаётся 1 а другой - неопределённый - логика не сработает?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th August 2018 - 12:20
Рейтинг@Mail.ru


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