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

 
 
> Не работает схема верхнего уровня, Помощь в освоении 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
6 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 76)
andrew_b
сообщение May 8 2018, 12:16
Сообщение #2


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

Группа: Свой
Сообщений: 1 975
Регистрация: 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 214
Регистрация: 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 214
Регистрация: 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


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

Группа: Свой
Сообщений: 729
Регистрация: 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 214
Регистрация: 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


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

Группа: Свой
Сообщений: 729
Регистрация: 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 214
Регистрация: 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
Tausinov
сообщение May 10 2018, 09:12
Сообщение #16


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

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



Цитата(призрак @ May 10 2018, 12:06) *
То есть если на элемент ИЛИ на один вход подаётся 1 а другой - неопределённый - логика не сработает?


Выход просто окажется в том же самом неопределенном состоянии.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 10 2018, 09:23
Сообщение #17


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

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



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

Цитата(призрак @ May 10 2018, 12:06) *
И вопрос остался - надо делать отдельный проект для каждого уровня или в одном можно, сейчас вот так
...
Вот симуляция триггера - всё работает
...
То есть если на элемент ИЛИ на один вход подаётся 1 а другой - неопределённый - логика не сработает?

Ну теперь понятнее - судя по всему у Вас что то с выходами Q - как они в TB подключенны ?
Поэтому вместо 1 выход триггеров в X переключается - кофликтует с другим источником на Q.

Давно в Aledc не работал - но насколько помню можете выбрать любой файл в иерархии и сгенерировать для него TB в том же самом проекте.

В доке Aldec или в сети можно (и нужно) найти табличку результата логических операций в зависимости от типа сигналов (0,1,X,U...).

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


Местный
***

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



Добавил установку в триггер, но теперь вопрос - где делать установку в правой программе? Потому что не повлияло на работу обнуление триггера в правой.

Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 10 2018, 10:59
Сообщение #19


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

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



Потому-что начальное значение задается в области декларации сигнала
Например:
Код
architecture RTL of testing
    signal shreg : std_logic_vector(2 downto 0) := (others => '0'); -- вот тут задаем начальное значние !
begin


И вообще. Я боюсь представить себе, как бы у Вас выглядел 256 битный регистр...
Go to the top of the page
 
+Quote Post
Tausinov
сообщение May 10 2018, 11:15
Сообщение #20


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

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



Цитата(призрак @ May 10 2018, 13:52) *
Потому что не повлияло на работу обнуление триггера в правой.


Если сигналу в процессе значение присваивается несколько раз, то актуальным окажется самое последнее из выполненных присвоений, поэтому ничего и не изменилось.
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 10 2018, 11:17
Сообщение #21


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

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



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

Цитата(призрак @ May 10 2018, 13:52) *
Добавил установку в триггер, но теперь вопрос - где делать установку в правой программе? Потому что не повлияло на работу обнуление триггера в правой.
...


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

Покажите лучше TB для модуля 3REG

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


Местный
***

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



Цитата(Flip-fl0p @ May 10 2018, 13:59) *
Потому-что начальное значение задается в области декларации сигнала
Например:
Код
architecture RTL of testing
    signal shreg : std_logic_vector(2 downto 0) := (others => '0'); -- вот тут задаем начальное значние !
begin


И вообще. Я боюсь представить себе, как бы у Вас выглядел 256 битный регистр...




Регистры инициализировались.но ..не работают..
А разработка планируется чтобы не использовать 3 1024-битных регистра)))

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

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

Покажите лучше TB для модуля 3REG

Удачи! Rob.


А разве вставленный блок 4DFF не должен выполнять функцию логики?
Go to the top of the page
 
+Quote Post
призрак
сообщение May 10 2018, 13:16
Сообщение #23


Местный
***

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



Я так понимаю у меня где-то должна появиться функция process(CLK,RS,RST)
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 10 2018, 13:57
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Внесу свои пять копеек.
Первое, из-за чего код нерабочий: сигналы Q0...Q3 присваиваются одновременно внутри процесса и вне его. Симулятор создаст для них по два драйвера один - в '0' по изменению любого сигнала из списка чувствительности, второй - в значение сигналов FF0...FF3. В результате при моделировании получите либо '0', либо 'X'. Про синтез пока даже говорить не стоит.
Cудя по коду вы хотите сделать схему, в которой '1' циклически бегает по выхохам Q0...Q3. Сдвиг вы описали, зацикливание тоже. Осталось задать то, что должно там крутиться. Например, сразу по сбросу выставить схему в одно из устраивающих вас состояний. Потом посмОтрите, как вы будете это все рушить своим входным сигналом.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 10 2018, 14:14
Сообщение #25


Местный
***

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



Цитата(KalashKS @ May 10 2018, 16:57) *
Внесу свои пять копеек.
Первое, из-за чего код нерабочий: сигналы Q0...Q3 присваиваются одновременно внутри процесса и вне его. Симулятор создаст для них по два драйвера один - в '0' по изменению любого сигнала из списка чувствительности, второй - в значение сигналов FF0...FF3. В результате при моделировании получите либо '0', либо 'X'. Про синтез пока даже говорить не стоит.
Cудя по коду вы хотите сделать схему, в которой '1' циклически бегает по выхохам Q0...Q3. Сдвиг вы описали, зацикливание тоже. Осталось задать то, что должно там крутиться. Например, сразу по сбросу выставить схему в одно из устраивающих вас состояний. Потом посмОтрите, как вы будете это все рушить своим входным сигналом.


Да, предполагается потом на логике реализовать чтобы при сбросе всё выставлялось в ноль, а младший регистр в 1, которая при каждом следующем клоке будет сдвигаться в следующий разряд и переходить в нулевой через или, при этом схема не будет зависеть от количества триггеров (сейчас 4 потом хоть 10) а обнуление приходится делать чтобы не было неопределённых значений.
И можжно ссылку на номера строк листинга где двойное присваивание?
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 10 2018, 14:31
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(призрак @ May 10 2018, 17:14) *
младший регистр в 1

Вот этого пока не описано. А стоило бы.

Цитата(призрак @ May 10 2018, 17:14) *
а обнуление приходится делать чтобы не было неопределённых значений.

Необязательно обнулять. Достаточно чтобы были какие-либо определенные значения. В вашем случае "0001".

Цитата(призрак @ May 10 2018, 17:14) *
И можжно ссылку на номера строк листинга где двойное присваивание?

30-я строка блока 4DFF и строки 56-59.

Цитата(призрак @ May 10 2018, 17:14) *
при этом схема не будет зависеть от количества триггеров (сейчас 4 потом хоть 10).

Почитайте, как пишутся сдвиговые регистры на VHDL, про тип std_logic_vector и про generic. Как уже намекали выше, ваш код можно сделать параметризируемым и сжать его до нескольких строк (без учета заголовков и объявлений).

Сообщение отредактировал KalashKS - May 10 2018, 14:31
Go to the top of the page
 
+Quote Post
призрак
сообщение May 10 2018, 15:07
Сообщение #27


Местный
***

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



Цитата(KalashKS @ May 10 2018, 17:31) *
Вот этого пока не описано. А стоило бы.

Необязательно обнулять. Достаточно чтобы были какие-либо определенные значения. В вашем случае "0001".

30-я строка блока 4DFF и строки 56-59.

Почитайте, как пишутся сдвиговые регистры на VHDL, про тип std_logic_vector и про generic. Как уже намекали выше, ваш код можно сделать параметризируемым и сжать его до нескольких строк (без учета заголовков и объявлений).

1. Для этого я пока ввёл промежуточный сигнал и 1 генерю им
2. Без обнулений были неопределённые значения
3. 56-59 - почему? это же просто сброс, он может потом раздельным быть, да и на не подключенные выводы ругается симулятор, до этого просто на земле сидел.
4. до generic я ещё не дошёл, мне бы простую схему запустить чтобы с ней разобраться
Go to the top of the page
 
+Quote Post
Tausinov
сообщение May 10 2018, 16:25
Сообщение #28


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

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



Цитата(призрак @ May 10 2018, 18:07) *
1. Для этого я пока ввёл промежуточный сигнал и 1 генерю им
2. Без обнулений были неопределённые значения


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

Цитата
3. 56-59 - почему? это же просто сброс, он может потом раздельным быть, да и на не подключенные выводы ругается симулятор, до этого просто на земле сидел.


Не важно, что это в вашем или чьем-либо другом понимании, с точки зрения языка сигнал может иметь несколько драйверов только в одном процессе. Из приведенного описания получается, что Qi ВСЕГДА равен FFi, но при этом по любому изменению сигналов из списка чувствительности еще и оказывается равен нулю - так не бывает.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 11 2018, 04:50
Сообщение #29


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

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



Цитата(Tausinov @ May 10 2018, 19:25) *
с точки зрения языка сигнал может иметь несколько драйверов только в одном процессе.
С точки зрения языка сигнал может иметь сколько угодно драйверов в сколько угодном количестве процессов. Результат определяется функцией разрешения (если для используемого типа она определена). Вот с точки зрения железа -- да, драйвер может быть только один.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 05:25
Сообщение #30


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

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



Вообще я бы посоветовал автору делать сразу правильно. Всё Ваше устройство легко уместить в такой код:
CODE
library ieee;
use ieee.std_logic_1164.all;

entity reg_aclr is
port
(
clk : in std_logic;
aclr : in std_logic;
D : in std_logic;
Q : out std_logic_vector(3 downto 0)
);
end entity;

architecture RTL of reg_aclr is
signal shreg: std_logic_vector(3 downto 0) := (others => '0');
begin
process(aclr, clk)
begin
if (aclr = '1') then
shreg <= (others => '0');
elsif (rising_edge(clk)) then
shreg <= shreg(2 downto 0) & (D or shreg(3));
end if;
end process;
Q <= shreg;
end architecture;

Более того, при необходимости можно добавить параметры для настройки разрядности такого регистра и хоть 1000 разрядов делайте rolleyes.gif

Если цель состоит описать именно из отдельных триггеров (правда зачем ?) то можно:
1. Описать отдельно DFF с асинхронным сбросом :

CODE
library ieee;
use ieee.std_logic_1164.all;

entity DFF_aclr is
port
(
clk : in std_logic;
aclr : in std_logic;
D : in std_logic;
Q : out std_logic := '0'
);
end entity;
architecture RTL of DFF_aclr is
begin
reg_proc : process(aclr, clk)
begin
if (aclr = '1') then
Q <= '0';
elsif (rising_edge(clk)) then
Q <= D;
end if;
end process;
end architecture;


2. И описать соединение триггеров между собой:
CODE
library ieee;
use ieee.std_logic_1164.all;

entity reg_aclr is
port
(
clk : in std_logic;
aclr : in std_logic;
D : in std_logic;
Q : out std_logic_vector(3 downto 0)
);
end entity;

architecture RTL of reg_aclr is
signal iQ: std_logic_vector(3 downto 0) := (others => '0');
begin
--===============================================
-- Первый триггер в цепочке сдвигового регистра
--===============================================
DFF0_aclr_comp : entity work.DFF_aclr
port map
(
clk => clk,
aclr => aclr,
D => D or iq(3),
Q => iQ(0)
);

--===============================================
-- Остальные триггера
--===============================================
reg_3to1generate : for i in 0 to 2 generate
DFF_aclr_comp : entity work.DFF_aclr
port map
(
clk => clk,
aclr => aclr,
D => iQ(i),
Q => iQ(i + 1)
);
end generate;
Q <= iQ;
end architecture;

И опять же. В такое описание легко добавить параметры для задания разрядности регистра.

Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 08:03
Сообщение #31


Местный
***

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



Спасибо за помощь, воспользуюсь обязательно всеми советами, но сейчас хочется разобраться почему мой код не работает и как его запустить, чтобы понять где ошибка.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 08:10
Сообщение #32


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

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



Цитата(призрак @ May 11 2018, 11:03) *
Спасибо за помощь, воспользуюсь обязательно всеми советами, но сейчас хочется разобраться почему мой код не работает и как его запустить, чтобы понять где ошибка.

А скиньте код в виде текста )
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 09:18
Сообщение #33


Местный
***

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



Код
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_unsigned.all;

entity \3REG\ is
  port(
       CLKT : in STD_LOGIC;
       RS : in STD_LOGIC;
       RST : in STD_LOGIC;
       Q : out STD_LOGIC_VECTOR(0 to 3):= (others => '0')
  );
end \3REG\;

architecture \3REG\ of \3REG\ is

component \4DFF\
  port (
       CLK : in STD_LOGIC;
       D0,D1,D2,D3 : in STD_LOGIC;
       RS0,RS1,RS2,RS3 : in STD_LOGIC;
       Q0,Q1,Q2,Q3 : out STD_LOGIC
       );
end component;

signal D0 : STD_LOGIC;
signal QT0,QT1,QT2,QT3 : STD_LOGIC := '0';

begin
        
U10 : \4DFF\
  port map(
       CLK => CLKT,
       D0 => D0,
       D1 => QT0,
       D2 => QT1,
       D3 => QT2,
       Q0 => QT0,
       Q1 => QT1,
       Q2 => QT2,
       Q3 => QT3,
       RS0 => RST,
       RS1 => RST,
       RS2 => RST,
       RS3 => RST
  );

Q(3) <= QT3;
Q(2) <= QT2;
Q(1) <= QT1;
Q(0) <= QT0;
D0 <= RS or QT3;

    
end \3REG\;


и исправленный тригер
Код
library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity \4DFF\ is
     port(
         D0,D1,D2,D3 : in STD_LOGIC;
         CLK : in STD_LOGIC;
         RS0,RS1,RS2,RS3 : in STD_LOGIC;
         Q0,Q1,Q2,Q3 : out STD_LOGIC := '0'
           );
end \4DFF\;

architecture \4DFF\ of \4DFF\ is
begin
    
process( CLK,RS0,RS1,RS2,RS3 )
   begin  
             
     if ( RS0='1') then    Q0 <= '0';
     elsif ( rising_edge (CLK)) then Q0 <= D0;
     end if;    
    
     if ( RS1='1') then    Q1 <= '0';
     elsif ( rising_edge (CLK)) then Q1 <= D1;
     end if;    
      
     if ( RS2='1') then    Q2 <= '0';
     elsif ( rising_edge (CLK)) then Q2 <= D2;
     end if;    
    
     if ( RS3='1') then    Q3 <= '0';
     elsif ( rising_edge (CLK) ) then Q3 <= D3;
     end if;    
    end process;    
    
end \4DFF\;
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 09:39
Сообщение #34


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

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



Запустил на Modelsim
1. Пока не убрал слеши из названия модулей не работало.
Теперь файлы регистра выглядит так:
CODE
library ieee;
use ieee.std_logic_1164.all;

entity DFF_aclr is
port
(
D0,D1,D2,D3 : in STD_LOGIC;
CLK : in STD_LOGIC;
RS0,RS1,RS2,RS3 : in STD_LOGIC;
Q0,Q1,Q2,Q3 : out STD_LOGIC := '0'
);
end DFF_aclr;

architecture DFF_aclr of DFF_aclr is
begin

process
(
CLK,
RS0,
RS1,
RS2,
RS3
)
begin
if (RS0='1') then
Q0 <= '0';
elsif (rising_edge (CLK)) then
Q0 <= D0;
end if;

if (RS1='1') then
Q1 <= '0';
elsif (rising_edge (CLK)) then
Q1 <= D1;
end if;

if (RS2='1') then
Q2 <= '0';
elsif (rising_edge (CLK)) then
Q2 <= D2;
end if;

if (RS3='1') then
Q3 <= '0';
elsif (rising_edge (CLK)) then
Q3 <= D3;
end if;
end process;
end DFF_aclr;


2. Убрал ненужные библиотеки. Зачем Вы их подключали я не знаю. Но в принципе они не влияли никак.
CODE
library IEEE;
use IEEE.std_logic_1164.all;
entity reg_aclr is
port(
CLKT : in STD_LOGIC;
RS : in STD_LOGIC;
RST : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR(0 to 3):= (others => '0')
);
end reg_aclr;

architecture reg_aclr of reg_aclr is

component DFF_aclr
port (
CLK : in STD_LOGIC;
D0,D1,D2,D3 : in STD_LOGIC;
RS0,RS1,RS2,RS3 : in STD_LOGIC;
Q0,Q1,Q2,Q3 : out STD_LOGIC
);
end component;

signal D0 : STD_LOGIC;
signal QT0,QT1,QT2,QT3 : STD_LOGIC := '0';

begin

U10 : DFF_aclr
port map(
CLK => CLKT,
D0 => D0,
D1 => QT0,
D2 => QT1,
D3 => QT2,
Q0 => QT0,
Q1 => QT1,
Q2 => QT2,
Q3 => QT3,
RS0 => RST,
RS1 => RST,
RS2 => RST,
RS3 => RST
);

Q(3) <= QT3;
Q(2) <= QT2;
Q(1) <= QT1;
Q(0) <= QT0;
D0 <= RS or QT3;
end reg_aclr;


С таким тестбенчем все работает как и должно:

CODE
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY reg_aclr_vhd_tst IS
END reg_aclr_vhd_tst;
ARCHITECTURE reg_aclr_arch OF reg_aclr_vhd_tst IS
-- constants
-- signals
SIGNAL CLKT : STD_LOGIC;
SIGNAL Q : STD_LOGIC_VECTOR(0 TO 3);
SIGNAL RS : STD_LOGIC := '0';
SIGNAL RST : STD_LOGIC := '0';
COMPONENT reg_aclr
PORT (
CLKT : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(0 TO 3);
RS : IN STD_LOGIC;
RST : IN STD_LOGIC
);
END COMPONENT;
--▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
--========================================================================
-- Формирование констант для вычисления периодв CLK от частоты работы
--========================================================================
constant clk_freq : real := 100.0; -- MHz
constant clk_prd : time := (1000.0/clk_freq) * 1.0 ns; -- Вычисление периода CLK
BEGIN
i1 : reg_aclr
PORT MAP (
-- list connections between master ports and signals
CLKT => CLKT,
Q => Q,
RS => RS,
RST => RST
);
--==========================================
-- Задание тактовой частоты проекта
--==========================================
process
begin
CLKT <= '0'; wait for clk_prd/2;
CLKT <= '1'; wait for clk_prd/2;
end process;

process
begin
wait for 15*clk_prd;
RS <= '1';
wait for clk_prd;
RS <= '0';
wait;
end process;

process
begin
wait for 50*clk_prd;

RST <= '1';
wait for 3*clk_prd;
RST <= '0';
wait;
end process;

END reg_aclr_arch;

Вывод : я предполагаю, что некорректные имена вида \name\
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 09:39
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



А в чем проблема теперь? Подайте сброс, подайте ваш RS меньше чем на такт, на такт, два, четыре. Посмотрите, как именно у вас не работает. Подскажу, если подадите на один такт, работать будет, но, скорее всего, только один раз. А потом послушайте совета, сбрасывайте один из тригеров в '1' и используйте для перезапуска сигнал RST.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 11 2018, 09:45
Сообщение #36


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

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



Цитата(призрак @ May 11 2018, 12:18) *
use IEEE.std_logic_arith.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_unsigned.all;

Во-первых, эти библиотеки вам не нужны, если вы не используете математические функции.
В-вторых, использование std_logic_signed и std_logic_unsigned в одном модуле несколько странно.
В-третьих, не используйте их вообще. Используйте стандартную библиотеку numeric_std

Цитата(Flip-fl0p @ May 11 2018, 12:39) *
Пока не убрал слеши из названия модулей не работало.
Там имя архитектуры совпадает с именем модуля. Почему-то.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 09:56
Сообщение #37


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

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



Цитата(andrew_b @ May 11 2018, 12:45) *

А я даже и не заметил rolleyes.gif . Во всяком случае ни Quartus ни Modelsim не ругались на это. Да и навскидку не помню, чтобы так нельзя было делать. Хотя я даже не думаю про это. Ибо у меня они всегда называются одинаково: либо RTL либо Behavoral
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 10:03
Сообщение #38


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(andrew_b @ May 11 2018, 12:45) *
Там имя архитектуры совпадает с именем модуля. Почему-то.

Я практически всегда так пишу, еще никто не ругался sm.gif.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 11 2018, 10:14
Сообщение #39


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

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



Всю жизнь думал, что имена entity и связанного с ним архитектурного тела должны быть разными.
Ну и ладно.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 10:23
Сообщение #40


Местный
***

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



Цитата(Flip-fl0p @ May 11 2018, 12:39) *
Вывод : я предполагаю, что некорректные имена вида \name\


Убрал слэши и стало ещё хуже, их то генерила сама прога, поэтому когда я их убрал - вся структура проекта рухнула
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 10:30
Сообщение #41


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

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



Цитата(призрак @ May 11 2018, 13:23) *
Убрал слэши и стало ещё хуже, их то генерила сама прога, поэтому когда я их убрал - вся структура проекта рухнула

Значит симулятор кривой, либо настройки где-то не те. Код работает правильно. Modelsim я доверяю больше чем ActiveHDL. То что я скинул работает.
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 10:35
Сообщение #42


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



У вас же раньше все моделировалось. Иксы были, почти там, где надо. Там, где не надо, вероятно, вызывались рукописной задержкой присвоения на 1 ns. Покажите, что получается сейчас.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 11 2018, 10:40
Сообщение #43


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

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



С именами \name\ всё нормально. Это расширенные идентификаторы, появившиеся в VHDL'93.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 11 2018, 10:49
Сообщение #44


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

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



Цитата(andrew_b @ May 11 2018, 13:40) *
С именами \name\ всё нормально. Это расширенные идентификаторы, появившиеся в VHDL'93.

А вот Modelsim ALTERA STARTER EDITION 10.1d не нравится. Сейчас специально проверил.
Пишет что :
Цитата
Component instance "U10 : DFF_aclr" is not bound.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 12:09
Сообщение #45


Местный
***

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



Переписал проект
Код
library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity REG30 is
     port(
         CLKR : in STD_LOGIC;
         RS0 : in STD_LOGIC;
         RST : in STD_LOGIC;
         Q : out STD_LOGIC_VECTOR(0 to 3) := (others => '0')
         );
end REG30;

architecture RTL of REG30 is
component DFF4
  port (
       CLK : in STD_LOGIC;
       D0,D1,D2,D3 : in STD_LOGIC;
       RS0,RS1,RS2,RS3 : in STD_LOGIC;
       Q0,Q1,Q2,Q3 : out STD_LOGIC
       );
end component;

signal D0 : STD_LOGIC;
signal QT0,QT1,QT2,QT3 : STD_LOGIC := '0';

begin

U1 : DFF4
  port map(
       CLK => CLKR,
       D0 => D0,
       D1 => QT0,
       D2 => QT1,
       D3 => QT2,
       Q0 => QT0,
       Q1 => QT1,
       Q2 => QT2,
       Q3 => QT3,
       RS0 => RS0,
       RS1 => RS0,
       RS2 => RS0,
       RS3 => RS0
  );

    Q(3) <= QT3;
    Q(2) <= QT2;
    Q(1) <= QT1;
    Q(0) <= QT0;
    D0 <= RST or QT3;

end architecture;

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

На совпадение имён не обращайте внимания, заметил, поправил, ничего не изменилось
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 12:25
Сообщение #46


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



У меня ваш код промоделировался так, как должен. Посмотрите внутрь блока DFF4. Может у вас по какой-то причине сигналы в него не заходят.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 13:19
Сообщение #47


Местный
***

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



Цитата(KalashKS @ May 11 2018, 15:25) *
У меня ваш код промоделировался так, как должен. Посмотрите внутрь блока DFF4. Может у вас по какой-то причине сигналы в него не заходят.


Хорошо, а я не вижу где в этом десятке строк кода теряется сигнал.

Код
library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity DFF4 is
     port(
         D0,D1,D2,D3 : in STD_LOGIC;
         CLK : in STD_LOGIC;
         RS0,RS1,RS2,RS3 : in STD_LOGIC;
         Q0,Q1,Q2,Q3 : out STD_LOGIC := '0'
           );
end DFF4;

architecture RTL of DFF4 is
begin
    
process( CLK,RS0,RS1,RS2,RS3 )
   begin  
             
     if ( RS0='1') then    Q0 <= '0';
     elsif ( rising_edge (CLK)) then Q0 <= D0;
     end if;    
    
     if ( RS1='1') then    Q1 <= '0';
     elsif ( rising_edge (CLK)) then Q1 <= D1;
     end if;    
      
     if ( RS2='1') then    Q2 <= '0';
     elsif ( rising_edge (CLK)) then Q2 <= D2;
     end if;    
    
     if ( RS3='1') then    Q3 <= '0';
     elsif ( rising_edge (CLK) ) then Q3 <= D3;
     end if;    
    end process;    
end architecture;
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 13:28
Сообщение #48


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Вытащите эти сигналы и порты на временную диаграмму. Там видно будет. Код пока можно считать нормальным.

Сообщение отредактировал KalashKS - May 11 2018, 13:29
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 13:45
Сообщение #49


Местный
***

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



Цитата(KalashKS @ May 11 2018, 16:28) *
Вытащите эти сигналы и порты на временную диаграмму. Там видно будет. Код пока можно считать нормальным.

В смысле? всё что можно - выводится
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 13:52
Сообщение #50


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



В Альдеке можно выводить не только сигналы верхнего уровня, но и любого уровня иерархии. Обычно иерархическое дерево после запуска моделирования находится слева от временной диаграммы на месте списка файлов. В вашем случае интересно, что происходит внутри модуля U1. Ткните в него и вытащите все внутренние сигналы.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 11 2018, 13:59
Сообщение #51


Местный
***

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



Цитата(KalashKS @ May 11 2018, 16:52) *
В Альдеке можно выводить не только сигналы верхнего уровня, но и любого уровня иерархии. Обычно иерархическое дерево после запуска моделирования находится слева от временной диаграммы на месте списка файлов. В вашем случае интересно, что происходит внутри модуля U1. Ткните в него и вытащите все внутренние сигналы.



???
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 11 2018, 14:32
Сообщение #52


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Это несколько сбивает с толку. У вас вашего DFF4 в иерархии нет вообще, как будто его нет в коде. Даже если он не подцепился, в иерархии должен присутствовать модуль U1 хотя бы в сером цвете. Изучите лог компиляции и моделирования на предмет варнингов. А так, как есть, получается, что DFF4 отсутствует, а QT0...QT1 драйвятся дефолтными нулями из объявления и никогда не меняются.
То, что раньше при моделировании у вас были иксы, говорит о том, что вы что-то сломали.

Сообщение отредактировал KalashKS - May 11 2018, 14:41
Go to the top of the page
 
+Quote Post
призрак
сообщение May 14 2018, 08:03
Сообщение #53


Местный
***

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



Цитата(KalashKS @ May 11 2018, 17:32) *
Это несколько сбивает с толку. У вас вашего DFF4 в иерархии нет вообще, как будто его нет в коде. Даже если он не подцепился, в иерархии должен присутствовать модуль U1 хотя бы в сером цвете. Изучите лог компиляции и моделирования на предмет варнингов. А так, как есть, получается, что DFF4 отсутствует, а QT0...QT1 драйвятся дефолтными нулями из объявления и никогда не меняются.
То, что раньше при моделировании у вас были иксы, говорит о том, что вы что-то сломали.

У меня х не было, было неопределённые значения.
А может повлиять версия симуляции, я задавал как квартус 9.1??
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 14 2018, 08:16
Сообщение #54


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(призрак @ May 14 2018, 11:03) *
У меня х не было, было неопределённые значения.

Было. На первой странице в последнем посте.

Цитата(призрак @ May 14 2018, 11:03) *
А может повлиять версия симуляции, я задавал как квартус 9.1??

Теоретически, может быть всякое. Только при чем здусь квартус, если вы в альдеке моделируете? И что значит "задавал"? Если что я моделировал в Active-HDL 10.3.

Сообщение отредактировал KalashKS - May 14 2018, 08:19
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 14 2018, 08:25
Сообщение #55


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

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



Создайте проект заново.
Настройки установите по-умолчанию.
Тут явно косяк в настройках. Код то рабочий, что не я один подтвердил.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 14 2018, 10:18
Сообщение #56


Местный
***

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



Цитата(KalashKS @ May 14 2018, 11:16) *
Было. На первой странице в последнем посте.

Теоретически, может быть всякое. Только при чем здусь квартус, если вы в альдеке моделируете? И что значит "задавал"? Если что я моделировал в Active-HDL 10.3.


При формировании воркспейса можно выбрать симуляцию под конкретное семейство микросхем. там можно выбрать и моделирование под конкретную версию ПО

Создал новый проект с настройками по умолчанию для версии 10.1.3088 - то же самое ((
может вложение как-то не так делаю?



Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 14 2018, 10:53
Сообщение #57


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Логи компиляции и запуска моделирования смотрели?
Go to the top of the page
 
+Quote Post
призрак
сообщение May 14 2018, 11:06
Сообщение #58


Местный
***

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



Цитата(KalashKS @ May 14 2018, 13:53) *
Логи компиляции и запуска моделирования смотрели?


Ошибок нет
Есть вот такая запись:
Warning: DAGGEN_0523: The source is compiled without the -dbg switch. Line breakpoints and assertion debug will not be available.
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 14 2018, 11:18
Сообщение #59


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Тогда у меня больше нет вариантов. Хотя, покажите еще окно Stimulators для ваших портов.

Сообщение отредактировал KalashKS - May 14 2018, 11:33
Go to the top of the page
 
+Quote Post
призрак
сообщение May 14 2018, 11:47
Сообщение #60


Местный
***

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



Цитата(KalashKS @ May 14 2018, 14:18) *
Тогда у меня больше нет вариантов. Хотя, покажите еще окно Stimulators для ваших портов.



Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 14 2018, 12:02
Сообщение #61


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Теперь точно все.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 14 2018, 12:07
Сообщение #62


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

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



А Вы попробуйте мои файлы просимулировать.
Принципиальное отличие это то, что у меня другие имена, и они не являются расширенными. А вдруг поможет ?
Go to the top of the page
 
+Quote Post
призрак
сообщение May 14 2018, 12:26
Сообщение #63


Местный
***

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



Цитата(Flip-fl0p @ May 14 2018, 15:07) *
А Вы попробуйте мои файлы просимулировать.
Принципиальное отличие это то, что у меня другие имена, и они не являются расширенными. А вдруг поможет ?


Первая скомпилилась и отработала как надо

Во второй выдала ошибку # Error: COMP96_0115: REG30.vhd : (31, 20): Actual is not a globally static expression.
на строчку D => D or iq(3),
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 14 2018, 12:32
Сообщение #64


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

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



Цитата(призрак @ May 14 2018, 15:26) *
Первая скомпилилась и отработала как надо

Во второй выдала ошибку # Error: COMP96_0115: REG30.vhd : (31, 20): Actual is not a globally static expression.
на строчку D => D or iq(3),

Включите поддержку VHDL2008 или сформируйте это выражение в отдельном сигнале. И сигнал уже назначайте порту.
UPD
И попробуйте убрать имена DFF4 и поставьте другие. Например имя DFF в Quartus запрещено, т.к это название примитива регистра. Может братья индусы что-то накосячили в коде, и из-за того, что применяется часть зарезервированного имени ничего не работает. Понимаю, что это мало вероятно, ну а вдруг ? wink.gif
Go to the top of the page
 
+Quote Post
призрак
сообщение May 14 2018, 13:37
Сообщение #65


Местный
***

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



Цитата(Flip-fl0p @ May 14 2018, 15:32) *
Включите поддержку VHDL2008 или сформируйте это выражение в отдельном сигнале. И сигнал уже назначайте порту.
UPD
И попробуйте убрать имена DFF4 и поставьте другие. Например имя DFF в Quartus запрещено, т.к это название примитива регистра. Может братья индусы что-то накосячили в коде, и из-за того, что применяется часть зарезервированного имени ничего не работает. Понимаю, что это мало вероятно, ну а вдруг ? wink.gif


Включил поддержку, откомпилилась без ошибок, поменял имена .. и так же не заработала((
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 14 2018, 15:30
Сообщение #66


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

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



Цитата(призрак @ May 14 2018, 16:37) *
Включил поддержку, откомпилилась без ошибок, поменял имена .. и так же не заработала((

Либо ActiveHDL глючная фигня. Либо Вы что-то делаете не так.
Так может это знак - перейти на Modelim ? wink.gif
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 14 2018, 16:01
Сообщение #67


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(Flip-fl0p @ May 14 2018, 18:30) *
ActiveHDL глючная фигня.

Нельзя не согласиться. Особенно после больших апдейтов. Поэтому попробовать другой софт или даже другую версию альдека - вполне рабочий вариант.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 15 2018, 06:04
Сообщение #68


Местный
***

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



Какой пакет есть, с таким и работаем.
Мне кажется я что-то с иерархией не так делаю.
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 15 2018, 08:54
Сообщение #69


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Вспомнил, что аналогичную проблему встречал в Riviera-PRO того же альдека. Сунул туда ваш код и получил один в один ваш результат. Как это побеждать, не придумал. Поэтому настоятельно рекомендую попробовать сменить хотя бы версию Active-HDL. У меня наиболее стабильно работали 9.3 и 10.3. 9.1 - точно глючная, хотя не помню, в каких местах, 10.4 по слухам тоже не очень, 10.1 ваш код съела без проблем до 10.5 руки не дошли.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 15 2018, 10:32
Сообщение #70


Местный
***

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



Цитата(KalashKS @ May 15 2018, 11:54) *
Вспомнил, что аналогичную проблему встречал в Riviera-PRO того же альдека. Сунул туда ваш код и получил один в один ваш результат. Как это побеждать, не придумал. Поэтому настоятельно рекомендую попробовать сменить хотя бы версию Active-HDL. У меня наиболее стабильно работали 9.3 и 10.3. 9.1 - точно глючная, хотя не помню, в каких местах, 10.4 по слухам тоже не очень, 10.1 ваш код съела без проблем до 10.5 руки не дошли.


Так у меня 10.1. а не подскажите, где можно апдейты качнуть, если знаете?
Go to the top of the page
 
+Quote Post
KalashKS
сообщение May 15 2018, 10:41
Сообщение #71


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Цитата(призрак @ May 15 2018, 13:32) *
Так у меня 10.1. а не подскажите, где можно апдейты качнуть, если знаете?

На местном FTP можно поискать. А по поводу версий у меня есть гипотеза, что могут быть проблемы с лицензией, но я ее не проверял.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 21 2018, 12:34
Сообщение #72


Местный
***

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



А нет какого-нибудь руководства по ModelSim?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 21 2018, 12:51
Сообщение #73


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

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



Цитата(призрак @ May 21 2018, 15:34) *
Пишет #Compile of DFF.vhd failed with 1 errors.
Там должно быть кое-что ещё быть написано.
Ну каков глубокий смысл показывать код в виде скриншота? Просто копировать текст уже не модно?

Цитата(призрак @ May 21 2018, 15:34) *
А нет какого-нибудь руководства по ModelSim?
Вся документация в дистрибутиве. Есть также специальный пункт в меню.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение May 21 2018, 13:04
Сообщение #74


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

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



Код
Пишет #Compile of DFF.vhd failed with 1 errors.

Очень жаль, что Вы читаете поверхностно. Зачем же тогда на форуме вопросы задавать ? Я же говорил, что имя DFF запрещено !
Код
Warning (12018): Entity "DFF" will be ignored because it conflicts with Quartus II primitive name
Error (12007): Top-level design entity "DFF" is undefined
Go to the top of the page
 
+Quote Post
призрак
сообщение May 22 2018, 06:24
Сообщение #75


Местный
***

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



Цитата(Flip-fl0p @ May 21 2018, 16:04) *
Код
Пишет #Compile of DFF.vhd failed with 1 errors.

Очень жаль, что Вы читаете поверхностно. Зачем же тогда на форуме вопросы задавать ? Я же говорил, что имя DFF запрещено !
Код
Warning (12018): Entity "DFF" will be ignored because it conflicts with Quartus II primitive name
Error (12007): Top-level design entity "DFF" is undefined

Нет, там всё заработало, на имя не ругается, ошибка оказалась -вместо ; поставил : слишком мелкий шрифт и не сразу заметил.
Просто для первичного ознакомления пользуюсь http://we.easyelectronics.ru/plis/modelsim...ego-nachat.html
а когда стал работать с ModelSim SE-64 10.5 то столкнулся с тем что не совпадают менюшки и тулбоксы, никак не мог начать создание тестбенча.
Что-то нашёл методом тыка, но не до конца.
А по поводу встроенной справки - у меня раб.место без доступа к инету, соответственно ограниченно работает, HTML-справка работает, но там не всё просто.
В этом ActiveHDL более прозрачен в управлении.
Go to the top of the page
 
+Quote Post
призрак
сообщение May 24 2018, 08:21
Сообщение #76


Местный
***

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



Подскажите как в ModelSim 10.5 задать единичное воздействие ( импульс сброса)
Go to the top of the page
 
+Quote Post
andrew_b
сообщение May 24 2018, 09:09
Сообщение #77


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

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



Цитата(призрак @ May 24 2018, 11:21) *
Подскажите как в ModelSim 10.5 задать единичное воздействие ( импульс сброса)

В коде тестбенча формируйте все входные воздействия.
Если уж хочется именно в симуляторе, смотрите команду force.
Go to the top of the page
 
+Quote Post

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

 


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


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