Цитата(Мур @ Sep 7 2017, 22:31)

Есть задача расщепить адресное пространство на 3 одинаковых модуля, чтобы внутреннее содержимое можно было видеть без пробелов. У меня есть решение, но оно имеет 3 слоя логики.
Подумалось, что можно сделать быстрее по быстродействию при помощи ПЗУ. Однако нарвался на сообщение "Multiple declarations of unsigned included via multiple use clauses;"
Как обойти преграду? Спасибо за любые наводки!

Не проще сделать 2 старших разряда счётчика/адреса как управляющий сигнал для мультиплексора, выбора модуля памяти.
И мультиплексор тоже сделать синхронным, возможно мультиплексор и не понадобиться, если сделать разрешение работы модулей по двум старшим разрядам шины адреса. В итоге получаем запись/чтение за два такта, но зато повышается быстродействие. Здесь не забываем сделать pipeline=2 для шины данных и Ареса.
Или если все в одном блоке памяти просто выше указанным способом разделить на 4 части адресное пространство. Тогда при чтении/записи данных в память вы делаете сразу в двух старших разрядах предустановку с каким адресным пространством работаетете... разрядность счётчика адреса на два разряда меньше, чем разрядность адресной шины. Два старших разряда к счётчику добавляем операцией конкатинации
Или шину данных увеличить в 3 раза, тогда вы будете читать/писать данные сразу для трёх модулей
Да и возьмите из темплате нормальное описание для блочной памяти. Логику управления сделайте уровнем выше... Пользуйтесь генериком для задания разрядности шин и package. Очень удобно, это просто совет Память можно инициализировать изначально.
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"