sazh 9 August 31, 2006 Posted August 31, 2006 · Report post В смысле в схематике предусмотрено - при попытке установить запрещённые комбинации соединения выходов все шины остаются в высокоимпедансном состоянии Это врядли. Ведь схематик контролирует только правильность использования того или иного примитива (например примиты tri можно обединять по третьему состоянию). А правильно ли при этом Вы управляете этим примитивом при выдачи данных на общую шину, увидите только при моделировании. Можно также пальцем кристалл потрогать. Quote Share this post Link to post Share on other sites More sharing options...
stssao 0 August 31, 2006 Posted August 31, 2006 · Report post Опять я криво обьясняю ;) да, мною в схеме предусмотрено ... и далее по тексту. Также стоят резисторы 30ом на случай непредусмотренных сбоев в железках. Пока проблем не замечено. Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 August 31, 2006 Posted August 31, 2006 · Report post Я задал вопрос, ответ на который не нашёл. Мне ответили - надо реализовывать каждую линию отдельным процессом. Где это написано в ваших книжках, покажите? Почаще спрашивайте в конференциях - еще и не такое узнаете ---------------------------------------------------------- Самая нормальная книжка - IEEE 1076-2002. Все остальное - дилетанство. Quote Share this post Link to post Share on other sites More sharing options...
sazh 9 September 1, 2006 Posted September 1, 2006 · Report post Почаще спрашивайте в конференциях - еще и не такое узнаете ---------------------------------------------------------- Самая нормальная книжка - IEEE 1076-2002. Все остальное - дилетанство. Нехорошо. Вырывать фразу из контекста. Это Квартус реализовал Выше приведенную схему в четыре процесса. Видимо он и есть дилетант. Книжка это конечн нормальная. Но ее видимо никто не читает. Потому что никто так и не привел описание двух наложенных друг на друга АП6 в одном процессе. А тогда как говориться: ЧТО мне в имени твоем? Кстати наверилог это делается элементарно. Quote Share this post Link to post Share on other sites More sharing options...
Postoroniy_V 0 September 1, 2006 Posted September 1, 2006 · Report post ......................... 2Postoroniy_V > ага точно, читать ничего не надо! нафих? всегда можно в конфе спросить > а если бы инета не было? Я задал вопрос, ответ на который не нашёл. Мне ответили - надо реализовывать каждую линию отдельным процессом. Где это написано в ваших книжках, покажите? > и не понятно почему такая любовь к громоздким конструкциям? > можно ведь так > > DOUT0 <= DIN0 when ENABLE0='1' else DIN1 when ENABLE1='1' else 'Z'; > DIN0 <= DOUT0 when ENABLE2='1' else DIN1 when ENABLE3='1' else 'Z'; Если вы не возражаете, я проверю ваш вариант немного позже. Ну Вы уж извините :) "Чукча не писатель чукча читатель" :laugh: книжек не пишу. читайте стандарт. Oldring Вам уже сказал про него. А Ваш случай частный, так что можете сами про него в "своих" книжках написать про проверку - жду с нетерпением результата :) Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 1, 2006 Posted September 1, 2006 · Report post Нехорошо. Вырывать фразу из контекста. Это Квартус реализовал Выше приведенную схему в четыре процесса. Видимо он и есть дилетант. Книжка это конечн нормальная. Но ее видимо никто не читает. Потому что никто так и не привел описание двух наложенных друг на друга АП6 в одном процессе. А тогда как говориться: ЧТО мне в имени твоем? Кстати наверилог это делается элементарно. Квартус тут при чем? Квартус может транслировать схематик как хочет - он тупая программа. Это не означает что так делать надо и тем более не означает что так делать нужно обязательно. Человек же решил что это требование языка или синтезатора, и ругается на книжки, что в них это сокровенное знание не описано, и поэтому их можно не читать. Но какая разница СКОЛЬКО процессов в таком простом случае? Не понял утверждение про АП6. Откровенно говоря, я уже подзабыл особенности этой микросхемы - ну буфер и буфер. Очевидно, требуемую конструкцию можно описать и в виде одного последовательного процесса, написав подряд несколько операторов IF. В чем проблема? Есть только одна тонкость. Последовательные конструкции в процессе вводят приоритет входов разрешения буферов. Если нужно аккуратно промоделировать в симуляторе такие конфликты с использованием металогических значений - при описании в одном процессе нужно вводить массив из пары сигналов и явный вызов функции разрешения. Для такой задачи несколько процессов (по одному на вход разрешения, но не на разряд данных!) действительно проще. Но в рассматриваемой задаче это все тонкие извращения, которые абсолютно не нужны. Quote Share this post Link to post Share on other sites More sharing options...
alex_os 0 September 1, 2006 Posted September 1, 2006 · Report post Блин , а Альтеры разве есть внутренние трехстабильные буфера? Ежели нету на фига так извращаться и напрягать синтезатор. Всеравно он сделает эту схему в виде мультиплексора какого-нибудь... Quote Share this post Link to post Share on other sites More sharing options...
Postoroniy_V 0 September 1, 2006 Posted September 1, 2006 · Report post Блин , а Альтеры разве есть внутренние трехстабильные буфера? Ежели нету на фига так извращаться и напрягать синтезатор. Всеравно он сделает эту схему в виде мультиплексора какого-нибудь... если бы Вы читали самое первое сообщение, то поняли что все эти жуткие перенапряжения ума :) для того чтобы описать на ВХДЛ трехстаб логику изображенную на схеме. а то что там синтезатор сделает не суть важно Quote Share this post Link to post Share on other sites More sharing options...
stssao 0 September 1, 2006 Posted September 1, 2006 · Report post 2Postoroniy_V У меня получается такой код: (если я правильно вас понял) entity BTEST is port ( sele : in std_logic_vector (1 downto 0); portA_io : inout std_logic_vector (8 downto 0); portB_io : inout std_logic_vector (8 downto 0); portC_io : inout std_logic_vector (8 downto 0) ); end entity BTEST; architecture BEHAV of BTEST is begin process(sele, portA_io, portB_io, portC_io) begin case sele is when "00" => portB_io <= portA_io; when "01" => portA_io <= portB_io; when "10" => portC_io <= portA_io; when "11" => portA_io <= portC_io; when others => portA_io <= "ZZZZZZZZZ"; portB_io <= "ZZZZZZZZZ"; portC_io <= "ZZZZZZZZZ"; end case; end process; end architecture BEHAV; Не пашет. Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 1, 2006 Posted September 1, 2006 · Report post У меня получается такой код: (если я правильно вас понял) Неправильно. Quote Share this post Link to post Share on other sites More sharing options...
stssao 0 September 1, 2006 Posted September 1, 2006 · Report post 2Oldring > требуемую конструкцию можно описать и в виде одного последовательного процесса, написав подряд > несколько операторов IF. В чем проблема? Не симулируется эта конструкция, поэтому и возник вопрос. > Для такой задачи несколько процессов (по одному на вход разрешения, но не на разряд данных!) > действительно проще. например такой код тоже не симулируется: (поправьте если я не прав) process(en_BA, en_CA, portB_io, portC_io) begin if en_BA='1' and en_CA='0' then portA_io <= portB_io; elsif en_BA='0' and en_CA='1' then portA_io <= portC_io; else portA_io <= (others => 'Z'); end if; end process; process(en_AC, portA_io) begin if en_AC='0' then portC_io <= portA_io; else portC_io <= (others => 'Z'); end if; end process; process(en_AB, portA_io) begin if en_AB='0' then portB_io <= portA_io; else portB_io <= (others => 'Z'); end if; end process; Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 1, 2006 Posted September 1, 2006 · Report post например такой код тоже не симулируется: (поправьте если я не прав) Конечно не симулируется. Для симуляции нужно вставить этот код в описание архитектуры компонента и подать тестовые воздействия на входы, правильно описав интерфейс. Сам кусок кода вроде нормальный, если не считать некоторую громоздкость описания - впрочем, в его правильности нельзя быть уверенным на 100% пока не увидел отсутсвие сообщений об ошибках. Quote Share this post Link to post Share on other sites More sharing options...
stssao 0 September 1, 2006 Posted September 1, 2006 (edited) · Report post 2Oldring Архитектура почти та же, что и в предыдущем коде. entity BTEST is port ( en_AB : in std_logic; en_AC : in std_logic; en_BA : in std_logic; en_CA : in std_logic; portA_io : inout std_logic_vector (8 downto 0); portB_io : inout std_logic_vector (8 downto 0); portC_io : inout std_logic_vector (8 downto 0) ); end entity BTEST; architecture BEHAV of BTEST is begin ... end architecture BEHAV; > в его правильности нельзя быть уверенным на 100% пока не увидел отсутсвие сообщений об ошибках. Ошибок 0 предупреждений 0. И всё-таки не симулируется. Edited September 1, 2006 by zaratustra Quote Share this post Link to post Share on other sites More sharing options...
Oldring 0 September 1, 2006 Posted September 1, 2006 · Report post Проверяйте генерацию тестовых сигналов. Quote Share this post Link to post Share on other sites More sharing options...
alex_os 0 September 2, 2006 Posted September 2, 2006 · Report post 2Postoroniy_V У меня получается такой код: (если я правильно вас понял) entity BTEST is port ( sele : in std_logic_vector (1 downto 0); portA_io : inout std_logic_vector (8 downto 0); portB_io : inout std_logic_vector (8 downto 0); portC_io : inout std_logic_vector (8 downto 0) ); end entity BTEST; architecture BEHAV of BTEST is begin process(sele, portA_io, portB_io, portC_io) begin case sele is when "00" => portB_io <= portA_io; when "01" => portA_io <= portB_io; when "10" => portC_io <= portA_io; when "11" => portA_io <= portC_io; when others => portA_io <= "ZZZZZZZZZ"; portB_io <= "ZZZZZZZZZ"; portC_io <= "ZZZZZZZZZ"; end case; end process; end architecture BEHAV; Не пашет. Дык, when others никогда не выполняется :). Еще к Вам вопрос что будет если на вашей схеме открыть самый верхний и самый нижний буфер?! Признайтесь, зачем вам такая схема? Quote Share this post Link to post Share on other sites More sharing options...