|
Модераторы: Mazzi |
|
enzaime |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.8.2013 Репутация: нет Всего: нет |
Привет всем, есть вот такой код (компиляция проходит успешно, ошибка при симуляции) (Код специально упрощён)
Но если заменить rez(indexes(i))<=1; на rez(2*i)<=1, то всё норм будет. Мне такой вариант не подходит, т.к. индексы могут быть произвольными например (0,1,4,5) или (1,2,3,2,7,4) так что с помощью только i их задать будет тяжело. Вариант с записью значений в переменную в последовательном цикле, а потом в сигнал мне не подходит, потому что нужна параллельность. Что-то эквивалентное тому, что выше, было бы отлично. |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 1 Всего: 223 |
||||
|
||||
enzaime |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.8.2013 Репутация: нет Всего: нет |
А чем именно странный?
Добавлено через 2 минуты и 26 секунд Да и разницы для меня нет на каком этапе ошибка. Интересно как её исправить. |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 1 Всего: 223 |
||||
|
||||
enzaime |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.8.2013 Репутация: нет Всего: нет |
Хорошо. Теперь так: задача в том, чтобы 4 элемента вектора q заполнились 1, причём индексы элементов могут быть произвольными (случайными), эти индексы сохранены в массиве indexes.
Но выскакивает ошибка, что Signal "q" has multiple sources but is not resolved, хотя в массиве indexes нет повторяющихся значений. Вот в этом и проблема. |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 1 Всего: 223 |
А как они будут сбрасываться в '0'? Кроме того, у вас эти присваивания стоят вне какого либо процесса, т.е. они статические. В таком случае действительно нельзя присваивать таким образом - у вас все строки 14 выполняются одновременно, и непонятно, что делать при одновременной записи в один и тот же элемент массива q (и то, что в indexes нет повторяющихся индексов дела не меняет - массив indexes не является константой, так что повторяющиеся элементы появиться могут позже). Уберите generate и внесите весть цикл for под process и условие if (clk='1' and clk'event), это будет симулироваться, и может быть даже синтезироваться |
|||
|
||||
enzaime |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.8.2013 Репутация: нет Всего: нет |
В примере выше я ошибся здесь:
q(indexes(i))<='1' when clk='1' and clk'event else clk='0'; а хотел написать: q(indexes(i))<='1' when clk='1' and clk'event else '0'; Про одновременное присваивание, дело в том, что мне именно так и надо, чтобы присваивания происходили одновременно, а с процессом придётся использовать loop for - последовательный оператор. К тому же если изменить в исходном примере q(indexes(i))<='1' when clk='1' and clk'event else '0'; на q(indexes(i))<='1' when clk='1' and clk'event else '0'; , то никакой ошибки нет. Это мне и не ясно, т.к. на мой взгляд принципиально ничего не изменилось. |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 1 Всего: 223 |
Это у вас какая то дельта функция получится - элемент массива q выдаст импульс нулевой длинны по фронту clk
Тогда надо убедится, что они (несколько штук) не происходят одновременно в один и тот же элемент массива q, и убедить в этом симулятор Или задать правила разрешения для одновременной записи для массива q |
|||
|
||||
enzaime |
|
||||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.8.2013 Репутация: нет Всего: нет |
Я уж не знаю создавать ли новую тему, но у меня появился ещё вопрос.
Вот есть такой код:
файл с разрешающей функцией:
как-то возникли проблемы с определением последнего измененного значения. Может я вообще изначально неправильно использую средства языка? Но мне как-то непонятно как сделать так чтобы решение test работало правильно. |
||||
|
|||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 1 Всего: 223 |
||||
|
||||
enzaime |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 16.8.2013 Репутация: нет Всего: нет |
Спасибо, если найду ответ, то отпишусь.
|
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разное (электроника) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |