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

 
 
> Вопрос про ПЛИС в целом и VHDL, как описать адресуемый модуль
Golikov A.
сообщение Jul 18 2006, 19:54
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Здрасте. Пробовал воспользоваться поиском, ни к чему хорошему это не привело.

Вопроса 2.

Первый
Можно ли описать такую вещ? Шину надо отпускать в 3 состояние (или high impedance не уверен что это одно и тоже) но при этом подтянуть ее к земле. В смысле чтобы если ее никто не дергает она ноль, но если кто ее дергает, конфликтов нет. Можно ли это сделать внутри ПЛИС? Это аналог того, что с наружи резюком к земле шинку подтянуть ну или к питанию. Если можно то лучше пример.

Второй
Я как то его поднимал, и ответы меня устроили, но сейчас чуть другая ситуация. На плате 9 одинаковых ЦАП, хочется написать один интерфейсный модуль, а потом его размножить. Для этого надо писать модуль с возможностью задачи адреса (даже адресов). Как я понимаю это надо делать через Женерик или через внешнюю шину на которую константой задать адрес. Но вот беда, все что написано в женерике или передается снаружи не является статиком, и в кейз это запихать нельзя. На кейзе построен внутренний дешифратор адреса, каждый блок имеет несколько адресов. Я решил проблему описав кейз через иф и елсиф, но как то это криво. Как решают проблему профессионалы? Я имею ввиду как делаются по уму модули с меняемыми адресными пространствами? Пакедж не подойдет, потому что надо уметь создавать копии модулей с разными адресами.

И как бы подпункт этого вопроса, я потом все написанные модули объединяю в графике, мне так как то удобно, но вот вопрос, как нарисованному модулю задать параметры женерика? Есть ли какие методы, я вроде все обтыкал не нашел.

Ну вот и все, надеюсь вопросы не вызовут бурю негодования по поводу их несерьезности, заранее спасибо. Все это для Ксалинксов и среды ИСЕ 7.1, и VHDL, но ради эрудиции хотелось бы и про другие плис-среды услышать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dinam
сообщение Jul 19 2006, 05:14
Сообщение #2


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

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Цитата(Golikov A. @ Jul 19 2006, 02:54) *
... в 3 состояние (или high impedance не уверен что это одно и тоже) ...
Одно и тоже smile.gif
Цитата(Golikov A. @ Jul 19 2006, 02:54) *
В смысле чтобы если ее никто не дергает она ноль, но если кто ее дергает, конфликтов нет. Можно ли это сделать внутри ПЛИС? Это аналог того, что с наружи резюком к земле шинку подтянуть ну или к питанию. Если можно то лучше пример.
У Altera, такая возможность обзывается bus-hold. Это уже обсуждалось, вот, здесь, например, http://electronix.ru/forum/index.php?showt...&hl=pull-up
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 19 2006, 08:42
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



[quote name='dinam' date='Jul 19 2006, 09:14' post='135467']
[/quote] У Altera, такая возможность обзывается bus-hold. Это уже обсуждалось, вот, здесь, например, http://electronix.ru/forum/index.php?showt...&hl=pull-up
[/quote]

не совсем то!
это если шина выходит наружу. А меня интересует как это реализовать внутри ПЛИС, то есть если внутри ПЛИС блоки все висят на одной шине, и когда не выбраны отпускают ее в Z, но вот хочется чтобы когда все ее в Z отпустили она была бы в нуле.



Про instantiation.
если я правильно понял сделать еще один блок который следит за шиной, и если все устройства ее отпустили делает шину нулевой, а если кто то держит то наружу выпускает то что на шине? Глобально это имелось ввиду? или я совсем ничего не понял...


почему кейз не ест, ну наверное вот почему

ADRES_WIDTH - определен в пакедже.

generic (constant SDAC_ADR : std_logic_vector ((ADRES_WIDTH-1) downto 0) :=(others=>'0'));

case ADR is
when SDAC_ADR =>TimeOutAfterCS<="0000";
when others => Null;
end case;

Line 139. Choice SDAC_ADR is not a locally static expression.

причем вот сейчас это пишу и это просто варнинг, а вчера это был еррор... Странно может устал вчера и не так что то понял, но смысл такой. Наверное через кейз можно.
Go to the top of the page
 
+Quote Post
seven7
сообщение Jul 19 2006, 09:25
Сообщение #4


Участник
*

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



[quote name='Golikov A.' date='Jul 19 2006, 11:42' post='135539']
[quote name='dinam' date='Jul 19 2006, 09:14' post='135467']
[/quote] У Altera, такая возможность обзывается bus-hold. Это уже обсуждалось, вот, здесь, например, http://electronix.ru/forum/index.php?showt...&hl=pull-up
[/quote]

не совсем то!
это если шина выходит наружу. А меня интересует как это реализовать внутри ПЛИС, то есть если внутри ПЛИС блоки все висят на одной шине, и когда не выбраны отпускают ее в Z, но вот хочется чтобы когда все ее в Z отпустили она была бы в нуле.

[/quote]

Внутри ПЛИС нет как такового Z состояния. По-моему в втором спартане была что-то наподобие Z-состояния
т.е. там была логика типа открытого коллектора и pullup резистора поэтому могли несколько нетов к одной точки подключаться.

То что я предложил тебе написать, только лишь для того, чтоб синтезатор понял, какую логику ты хочешь построить. Потом при синтезе он ругнется что заменил, то что ты хотел, на комбинаторику.
Вроде такого
Xst:2040 - Unit GCTL: 2 multi-source signals are replaced by logic (pull-up yes): FXP_MAIN0/nREQOE, FXP_MAIN0/nREQOUT.

Но это будет работать, если написано правильно.

С кейсом работать generic не будет по определению.
См. параграф 8.8 IEEE Standard VHDL Language Reference Manual
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jul 19 2006, 10:45
Сообщение #5


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

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



Цитата(seven7 @ Jul 19 2006, 13:25) *
ВнутриПЛИС нет как такового Z состояния. По-моему в втором спартане былачто-то наподобие Z-состояния т.е. там была логика типа открытогоколлектора и pullup резистора поэтому могли несколько нетов к однойточки подключаться.

Ничего подобного. В Спартанах 1 и 2 и во всех Виртексах внутри есть тристабильные буферы (BUFE, BUFT).
Go to the top of the page
 
+Quote Post
seven7
сообщение Jul 19 2006, 11:41
Сообщение #6


Участник
*

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



Цитата(andrew_b @ Jul 19 2006, 13:45) *
Ничего подобного. В Спартанах 1 и 2 и во всех Виртексах внутри есть тристабильные буферы (BUFE, BUFT).

Могу ошибаться, мне так говорили когда учили, значит в этом соврали sad.gif Сам не имел на практике дела с сп1/2 и вертексом
Go to the top of the page
 
+Quote Post



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

 


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


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