ViKo 1 14 августа, 2010 Опубликовано 14 августа, 2010 · Жалоба Так мне уже не понятно, почему des00 так не сделал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 5 14 августа, 2010 Опубликовано 14 августа, 2010 · Жалоба Так мне уже не понятно, почему des00 так не сделал? Чтобы сделать выводы, наверно нужно иметь представление о проекте целиком. Ну и интеллектуальные возможности разработчика тоже влияние имеют. Вот я и спросил о коллективном мышлении. Где эта золотая середина. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба Так мне уже не понятно, почему des00 так не сделал? В своем коде, перенесите in в модуль и транзитом передайте наружу. Суть бага в том, что wor поддерживается ква, но только в том случае явного присвоения к цепи через assign, если присвоение идет через port map, то ква считает это нарушением. В таком случае у wor появляется много драйверов, что не правильно с точки зрения ква (!!!!). Т.е. мало того, что фича не поддерживается(несмотря на заявления в хелпе), так и еще в разъяснении ошибки написан полный бред (wor и был разработан под множество драйверов). А в смысле коллективного творчества, допустимо ли такое описание (наглядность изложения и т.д.). Этот хак как раз и родился как коллективное творчество %). Целью было удобство описания и легкая расширяемость. Добавление слейва не составляет труда, инсталлируешь модуль и подключаешь его к сигналам шины. И не нужны никакие арбитры, явные мультиплексоры и т.д. и т.п., ква всё делает сам, за счет преобразования "софтового z состояния" в мультиплексоры. Но при переносе на другую платформу возможны проблемы %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба В своем коде, перенесите in в модуль и транзитом передайте наружу. Суть бага в том, что wor поддерживается ква прошу прощения, а разве проводная логика для синтеза в ПЛИС поддерживается вообще? я думал, она была придумана для низкоуровневого моделирования, а не для логического дизайна. по-крайне мере я бы её явно запретил, а то какой-то inferred logic получается (противоречие принципу WYSIWYG) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба прошу прощения, а разве проводная логика для синтеза в ПЛИС поддерживается вообще? а почему бы и нет ? не вижу проблем с синтезом wor/wand/tri0/tri1. Кроме того в хелпе квартуса эти фичи отмечены как supported Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба а почему бы и нет ? не вижу проблем с синтезом wor/wand/tri0/tri1. Кроме того в хелпе квартуса эти фичи отмечены как supported Проблема в том, что внутри ПЛИС, как вы понимаете, нет подтягивающих резисторов, выходов с тремя состояниями, выходов с открытым коллектором. А без этого wor/wand/tri не сделать. Это все заменяется логическими схемами, мультиплексорами. Вот так оно и supported. А в выходном пине ни логики, ни мультиплексора не сделаешь. Вот и нет проводной логики в портах. Разве что снаружи объединить выводы :-) Так что меня этот "глюк" не удивляет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба Проблема в том, что внутри ПЛИС, как вы понимаете, нет подтягивающих резисторов, выходов с тремя состояниями, выходов с открытым коллектором. А без этого wor/wand/tri не сделать. Нет позвольте, про wire/tri ваши слова еще можно принять (да и квартус говорит об этом же), но для wor/wand/tri0/tri1 это ни к месту. Обратимся к стандарту IEEE 1364-2001 -> 3.7 Net types -> 3.7.2 Wired nets The wor and trior nets shall create wired or configurations, such that when any of the drivers is 1, the resulting value of the net is 1. The wand and triand nets shall create wired and configurations, such that if any driver is 0, the value of the net is 0.The net types wor and trior shall be identical in their syntax and functionality. The net types wand and triand shall be identical in their syntax and functionality. в стандарте ни слова нет о тех вещах что вы привели. Не вижу никаких проблем с поддержкой синтеза wired or/and. Это просто широкий OR или широкий AND. Идем дальше 12.3 Ports -> 12.3.9 Port connection rules Each port connection shall be a continuous assignment of source to sink, where one connected item shall be a signal source and the other shall be a signal sink. The assignment shall be a continuous assignment from source to sink for input or output ports. тут явное указание того, что assign и port connection одинаковы. Поэтому между ними не должно быть никакой разницы. Поэтому, то что происходит с wor/wand в квартусе есть чистой воды нарушение требований стандарта, программистский баг, незамеченный тестерами. ЗЫ. Так альтера мне и не дает войти в саппорт, чтобы написать им гневное письмо о наличии ламеров в тестерах %( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба Не вижу никаких проблем с поддержкой синтеза wired or/and. Это просто широкий OR или широкий AND. Посмотрите на картинку, где я показал результат работы. Написано WideOr. А не wired or. Мягко говоря, Altera подтасовала понятия. Это не одно и то же, хотя функцию выполняют одну. Wired Or на стандартных логических микросхемах можно было собрать, используя логику с открытым коллектором (стоком), прицепив их несколько на один провод, и присобачив туда же подтягивающий резистор. (Не помню, правда, реального примера за свою практику, обходился обычными логическими микросхемами. Как и большинство других разработчиков, я думаю.) Внутри имеющихся ПЛИС это невозможно, там нет ни wor, ни trior. А стандарт - он же универсальный, предусмотрел такую возможность. Если появится ПЛИС, в которой будут элементы с тремя состояниями, там все будет реализовано по-честному. Вот тогда-то шины будет просто делать! Эх! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 августа, 2010 Опубликовано 17 августа, 2010 · Жалоба Посмотрите на картинку, где я показал результат работы. Написано WideOr. А не wired or. Мягко говоря, Altera подтасовала понятия. А теперь главное. IEEE 1364-2001 -> 3.7 Net types -> 3.7.2 Wired nets -> Table 4—Truth table for wand and triand nets и Table 5—Truth table for wor and trior nets Покажите с использованием этих таблиц, возможную неоднозначность того, что может происходить в wor/wand цепях? И неоднозначность синтеза данных конструкций. Это не одно и то же, хотя функцию выполняют одну.... Пока вы, на основе стандарта, не докажете эту неоднозначность, всё это философские рассуждения времен россыпухи. Если появится ПЛИС, в которой будут элементы с тремя состояниями, там все будет реализовано по-честному. Вот тогда-то шины будет просто делать! Эх! давно появились, virtex2/spartan2, но развития не получили ЗЫ. И еще раз напомню, баг заключается в том, что в ква назначение через assign и через port map для wor/wand/tri0/tr1 неэквивалентны. Что является нарушением стандарта. Претензий по тому, как он синтезирует эти типы нет. Посмотрите на Wired Or на стандартных логических микросхемах можно было собрать, используя логику с открытым коллектором (стоком), прицепив их несколько на один провод, и присобачив туда же подтягивающий резистор. Вы описываете монтажное И. Монтажное ИЛИ делается по другому %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 17 августа, 2010 Опубликовано 17 августа, 2010 · Жалоба Покажите с использованием этих таблиц, возможную неоднозначность того, что может происходить в wor/wand цепях? И неоднозначность синтеза данных конструкций. Пока вы, на основе стандарта, не докажете эту неоднозначность, всё это философские рассуждения времен россыпухи. Разве я говорил про неоднозначность? Я говорю о невозможности физически реализовать wor|wand внутри ПЛИС. Это не философское рассуждение, а констатация факта. И то что в ПЛИС они заменяются обычными or|and с использованием логических элементов, меня не удивляет, скорее, радует. Также, как то, что элементы с z-состоянием заменяются мультиплексорами. И то, что это невозможно сделать на выводах, меня не беспокоит. Чего и вам желаю :) давно появились, virtex2/spartan2, но развития не получили Жаль, что не получили. Хотя мне кажется, что с быстродействием таких элементов не так хорошо, как у обычных. ЗЫ. И еще раз напомню, баг заключается в том, что в ква назначение через assign и через port map для wor/wand/tri0/tr1 неэквивалентны. Что является нарушением стандарта. Претензий по тому, как он синтезирует эти типы нет. Т.е. "к...ы" они, что не написали этого в документации? Ну что ж - "к...ы"! :) Вы описываете монтажное И. Монтажное ИЛИ делается по другому %) Верно. Я потом заметил, но решил, что на суть вопроса это не влият. Upd. В Handbook на Quartus 9.1 из 2454 страниц wired in/or, wor/wand не упоминаются вообще. В Help Quartus 9.0 написано только: Wired Nets (wor, wand,trior, and triand Nets) Supported Все остальное - наши с вами фантазии. Не вижу предмета для спора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 17 августа, 2010 Опубликовано 17 августа, 2010 · Жалоба Вот такой код у меня (Quartus 9.0 без SP) работает: module Test2_wor (input logic [6:0] in, output wor out); generate genvar i; for (i = 0; i <= 6; i++) begin : wor_gen assign out = in[i]; end : wor_gen endgenerate endmodule Фактически - SUB_FIRST из первого поста. ?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 18 апреля, 2015 Опубликовано 18 апреля, 2015 · Жалоба Монтажное ИЛИ - удобно для развитого тестбенча. Вот пример разрешающая функция помогла мне иммитировать в I2С ACK --WIRE OR zero library ieee; use ieee.std_logic_1164.all; package wire is function RES_FUNC(DATA:in std_logic_vector) return std_logic; subtype RESOLVED_STD is RES_FUNC std_logic; end; package body wire is function RES_FUNC(DATA:in std_logic_vector) return std_logic is begin for I in DATA'range loop if DATA(I)='0' then return '0'; end if; end loop; return '1'; end; end wire; -------- в коде use work.wire.all; signal xxxx_s : RESOLVED_STD;--wire Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 19 апреля, 2015 Опубликовано 19 апреля, 2015 · Жалоба Монтажное ИЛИ - удобно для развитого тестбенча. Вот пример разрешающая функция помогла мне иммитировать в I2С ACK На VHDL своя разрешающая функция в данном случае не нужна. Тестбенч должен выдавать на шину уровень std_logic.'H', имитируя подтяжку, а все узлы(включая и тестовый) - либо 'Z', либо '0'. В приёмниках преобразовать входной сигнал с помощью TO_X01() сразу после входного пина, чтобы превратить 'H' в '1'. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться