darkniisiis 0 17 октября, 2007 Опубликовано 17 октября, 2007 · Жалоба Вот такой случай,есть шина 16-разрядная шина ISA через которую происходит запись и чтение по всем 16-разрядам.Назовём шину данных d,шину адреса а,источник сигнала с которого происходит чтение данных обозначим как reg. Описать считывание данных в шину по адресу "00000001" из источника reg1,где IOR сигнал разрешения чтения шины можно следующим образом d<=reg1 when a="00000001" and IOR='0' else "ZZZZZZZZZZZZZZZZ"; А вот если необходимо производить чтение сигнала,разделённое по времени и адресу из 2-х источников,например reg1 и reg2, то как это можно правильно организовать?Испробовал несколько конструкций,всегда получаю multi-source в шине,нужен совет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 17 октября, 2007 Опубликовано 17 октября, 2007 · Жалоба Странно, Вы все время похожие вопросы задаете, неужели не додуматься никак? Наверно, поэтому и не отвечает никто. В общем, так, начинать нужно с того, что за микросхему Вы используете. Если, Спартан 3, то внутренних трехстабильных шин в нем нет - ясное дело будет ругань при синтезе или упаковке. А как бы Вы поступили в схематике? Наверно, использовали бы мультиплексор, управляемый адресной шиной. Ну и надо так делать (или дополнить его регистром на выходе). Как мультиплексор описать, надеюсь, разберетесь (можно посмотреть в Language Templates ISE). P.S. В который раз уже пишу - HDL - это не языки программирования, а языки описания, поэтому отталкиваться всегда нужно от имеющихся в используемой микросхеме ресурсов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 17 октября, 2007 Опубликовано 17 октября, 2007 (изменено) · Жалоба Вот такой случай,есть шина 16-разрядная шина ISA через которую происходит запись и чтение по всем 16-разрядам.Назовём шину данных d,шину адреса а,источник сигнала с которого происходит чтение данных обозначим как reg. Описать считывание данных в шину по адресу "00000001" из источника reg1,где IOR сигнал разрешения чтения шины можно следующим образом А вот если необходимо производить чтение сигнала,разделённое по времени и адресу из 2-х источников,например reg1 и reg2, то как это можно правильно организовать?Испробовал несколько конструкций,всегда получаю multi-source в шине,нужен совет. А в чем дело? пишите дальше: d <= reg1 when a = "00000001" and IOR='0' else (others=>'Z'); d <= reg2 when a = "00000010" and IOR='0' else (others=>'Z'); Никакой ругани. Не надо даже запихивать в процесс. Странно, Вы все время похожие вопросы задаете, неужели не додуматься никак? Наверно, поэтому и не отвечает никто. В общем, так, начинать нужно с того, что за микросхему Вы используете. Если, Спартан 3, то внутренних трехстабильных шин в нем нет - ясное дело будет ругань при синтезе или упаковке. А как бы Вы поступили в схематике? Наверно, использовали бы мультиплексор, управляемый адресной шиной. Ну и надо так делать (или дополнить его регистром на выходе). Как мультиплексор описать, надеюсь, разберетесь (можно посмотреть в Language Templates ISE). P.S. В который раз уже пишу - HDL - это не языки программирования, а языки описания, поэтому отталкиваться всегда нужно от имеющихся в используемой микросхеме ресурсов. Насчет трёхстабильной шины, у спартана 3 вы не правы, все у него есть. советую открыть описание на стр.10 Изменено 17 октября, 2007 пользователем stoker Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 17 октября, 2007 Опубликовано 17 октября, 2007 · Жалоба Насчет трёхстабильной шины, у спартана 3 вы не правы, советую открыть описание на стр.10 Все синтезится и не ругается. То что Вы предложили и есть мультиплексор, поэтому и не ругается. Про выходные буферы с третьим состоянием речь не шла. А Вы попробуйте для какого-нибудь внутреннего сигнала в Спартане 3 описать пару конструкций, аналогичных той, которую привел автор темы и внимательно проанализируйте сообщения об ошибках. Потом повторите то же самое, скажем, для Виртекса 2. Уверяю Вас, ошибок Вы не увидите, догадываетесь почему? Если бы Вы привели ссылку на актуальный DS099 May 25, 2007 я бы с большим энтузиазмом воспринял новость о появлении в Спартане 3 внутренних трехстабильных шин (и соответственно буферов). Чтобы окончательно убедить Вас, приведу еще выдержку из Libraries Guide: BUFT Spartan-II, Spartan-IIE Primitive Spartan-3 No Virtex, Virtex-E Primitive Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stoker 0 17 октября, 2007 Опубликовано 17 октября, 2007 · Жалоба То что Вы предложили и есть мультиплексор, поэтому и не ругается. Про выходные буферы с третьим состоянием речь не шла. А Вы попробуйте для какого-нибудь внутреннего сигнала в Спартане 3 описать пару конструкций, аналогичных той, которую привел автор темы и внимательно проанализируйте сообщения об ошибках. Потом повторите то же самое, скажем, для Виртекса 2. Уверяю Вас, ошибок Вы не увидите, догадываетесь почему? Кстати, в первой конструкции If совершенно лишний. Если бы Вы привели ссылку на актуальный DS099 May 25, 2007 я бы с большим энтузиазмом воспринял новость о появлении в Спартане 3 внутренних трехстабильных шин (и соответственно буферов). Чтобы окончательно убедить Вас, приведу еще выдержку из Libraries Guide: BUFT Spartan-II, Spartan-IIE Primitive Spartan-3 No Virtex, Virtex-E Primitive Сорри. Уже успел поменять на новый вариант, тот который предложил сам автор, и он тоже сработал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 17 октября, 2007 Опубликовано 17 октября, 2007 · Жалоба Я бы предложенный рецепт применять не стал. То, что он работает - заслуга шибко нынче умного синтезатора ISE (в данном конкретном случае он правильно "понял" что Вы хотите описать). В других случаях подобное может не пройти. Нужно привыкать писать правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 18 октября, 2007 Опубликовано 18 октября, 2007 · Жалоба Да причем тут внутренние трех стабильные шины и выбор кристалла. Кто нибудь когда нибудь шину ISA видел? Шина данных двунаправленная. Как ее без третьего состояния организовать. Если по русски, то это селектор адреса. И как его описать (схема сравнения или дешифратор) все равно. тем более все равно как это интерпритирует синтезатор. Гораздо лучше нас. Другое дело, что прежде чем описывать, нужно на протокол посмотреть. Без сигнала AEN работать не будет. И зачем выбирать все адресное пространство. В первом 1к адресов под плату прототипа отведено адресное пространство в 32 байта (300-31f). Если используется только словный обмен младший разряд адреса не используется в дешифрации и обращение происходит по четным адресаи 300, 302 и т.д. при этом задействуют сигналы iocs16, ioch rdy. Если мало 16 слов, используется тоже окно в следующем 1к адресов. И так до 64к. это позволяет не задумываться о конфликтах на шине с другими контроллерами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BSV 0 18 октября, 2007 Опубликовано 18 октября, 2007 · Жалоба Да причем тут внутренние трех стабильные шины и выбор кристалла. Кто нибудь когда нибудь шину ISA видел? Шина данных двунаправленная. Как ее без третьего состояния организовать. Видел :( . Про буфер с третьим состоянием речь вообще не шла - ясно, что он там нужен. Автор темы его в первом посте и описал. Трудности возникли с выбором источника данных для шины - это и обсуждалось. Про протокол Вы верно написали (что его смотреть надо), но каков вопрос - таков ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 18 октября, 2007 Опубликовано 18 октября, 2007 · Жалоба Я бы предложенный рецепт применять не стал. То, что он работает - заслуга шибко нынче умного синтезатора ISE (в данном конкретном случае он правильно "понял" что Вы хотите описать). В других случаях подобное может не пройти. Нужно привыкать писать правильно. Ну почему же неправильно? Если синтезатор поддерживает правильную трансляцию тристабильных внутренних шин в архитектуру кристалла без тристабильных внутреннних шин - то в чем проблема? Вообще-то обязан поддерживать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 17 января, 2008 Опубликовано 17 января, 2008 · Жалоба Вот такой случай,есть шина 16-разрядная шина ISA через которую происходит запись и чтение по всем 16-разрядам.Назовём шину данных d,шину адреса а,источник сигнала с которого происходит чтение данных обозначим как reg. Описать считывание данных в шину по адресу "00000001" из источника reg1,где IOR сигнал разрешения чтения шины можно следующим образом d<=reg1 when a="00000001" and IOR='0' else "ZZZZZZZZZZZZZZZZ"; А вот если необходимо производить чтение сигнала,разделённое по времени и адресу из 2-х источников,например reg1 и reg2, то как это можно правильно организовать?Испробовал несколько конструкций,всегда получаю multi-source в шине,нужен совет. multi-source может возникать при назначении одному и тому же сигналу разных значений в разных процессах, опишите все присвоения этому сигналу в одном процессе, например используя технологию написания КА. И проверьте наличие в микросхеме тристабильных буферов, как было сказано выше! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться