justontime 0 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба Стыдно даже такое спрашивать, но уже пол часа пытаюсь понять, и не могу ! Как в VHDL подключить std_logic к std_logic_vector, чтобы на каждом элементе vector'a оказалось то, что приходит с std_logic ??? Решил собраться с силами и перейти со схемного дизайна на VHDL, но мой мозг никак под это не заточен... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба Стыдно даже такое спрашивать, но уже пол часа пытаюсь понять, и не могу ! Как в VHDL подключить std_logic к std_logic_vector, чтобы на каждом элементе vector'a оказалось то, что приходит с std_logic ??? Решил собраться с силами и перейти со схемного дизайна на VHDL, но мой мозг никак под это не заточен... ЕМНИП : можно воспользоваться агрегатами либо функцию сделать. И шли бы вы со схемного ввода в другое место (SV) ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 29 декабря, 2014 Опубликовано 29 декабря, 2014 (изменено) · Жалоба Как-то сложно звучит... Неужели нельзя просто присвоить одно значение целой группе сигналов (ну как к одному проводу десяток подключить) ??? Мне вообще кажется, что я такое видел, причем в крайне простом варианте (вроде там others использовалось)... Кстати, а что такое SV - SystemVerilog ? Изменено 29 декабря, 2014 пользователем justontime Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба в крайне простом варианте (вроде там others использовалось)... дык это и есть агрегаты :) Кстати, а что такое SV - SystemVerilog ? да Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба ... Как в VHDL подключить std_logic к std_logic_vector, чтобы на каждом элементе vector'a оказалось то, что приходит с std_logic ???... Делал так ... Q:out std_logic_vector(7 downto 0) ... signal data:std_logic; .... D1:for i in 0 to 7 generate Q(i)<=data; end generate; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба дык это и есть агрегаты :) Ага ! Узнал нужное слово, дальше было дело техники - посмотреть в нужном месте в книжке, спасибо ! Но от меня так просто не отделаться :) Итак, есть компонент, у которого есть выход Х std_logic. И есть top level entity с портом Y std_logic_vector. Мне нужно присоединить X к Y. Пока сделал просто - ввел промежуточный сигнал Z и написал: Y <= (others => Z) а в instantiation компонента в port map указал X => Z Вроде должно работать(как минимум, компилятор не ругался), но ведь не красиво ! Вопрос - можно ли обойтись без промежуточного сигнала, и сразу так связать в port map ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба сделали проводок, и им соединили 2 компонента, что не красивого то? только не называйте его Z , а то 'Z' - это битик 3 состояния, кто-то код будет читать, подумает ковычки збыли, поправит и начнется ад и израиль Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба но ведь не красиво ! Вопрос - можно ли обойтись без промежуточного сигнала, и сразу так связать в port map ?Можно. Ответ уже давали:(SV) ;)Ну или хотя бы просто V. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба сделали проводок, и им соединили 2 компонента, что не красивого то? только не называйте его Z , а то 'Z' - это битик 3 состояния, кто-то код будет читать, подумает ковычки збыли, поправит и начнется ад и израиль Просто не нравится промежуточный проводок, ведь его может и не быть... А насчет Z - это для примера, в проекте, естественно, другие имена. Можно. Ответ уже давали:Ну или хотя бы просто V. Не хотелось бы начинать очередную войну - что лучше или хуже. Просто хочу оставаться в рамках заложенного ограничения - уже немножко знаю VHDL, и бросаться с нуля изучать новый язык руки не поднимутся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба Ну меня буквы не жмут. Иногда если из модуля выходит шина, и расходиться в другие модули. Я для понятности делаю проводки с правильными названиями, собираю их в шину и шину пихаю в первый модуль. А проводки по отдельности в другие. Мне кажется что так читаемость и понятность кода выше, чем раздирать шину по номерам в другие модули, или формировать на входе шину из кучи проводков. А синтезатор это ни к чему не обязывает. Он все равно потом даже модули разберет и пересоединит все как посчитает лучше для оптимизации, эти прокинутые сигналы (проводки) не имеют физического воплощения, это просто языковые конструкции.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 29 декабря, 2014 Опубликовано 29 декабря, 2014 · Жалоба Ну меня буквы не жмут. Иногда если из модуля выходит шина, и расходиться в другие модули. Я для понятности делаю проводки с правильными названиями, собираю их в шину и шину пихаю в первый модуль. А проводки по отдельности в другие. Мне кажется что так читаемость и понятность кода выше, чем раздирать шину по номерам в другие модули, или формировать на входе шину из кучи проводков. +1! Лучше напечатать 15 символов, но знать и иметь возможность быстро вспомнить о чем речь, чем обезличить шину/сигнал и спустя полгода долго чесать свою "тыковку" вспоминая откуда росли ноги :bb-offtopic: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 2 января, 2015 Опубликовано 2 января, 2015 (изменено) · Жалоба Очередной чайниковский вопрос... Перевожу свой схемный дизайн в VHDL, сейчас нужен двухнаправленный буфер с третьим состоянием. Написал следующее: process (ENn, EnAn, EnBn) begin if ((ENn = '1') or (EnAn = EnBn)) then A <= "ZZZZZZZZ"; B <= "ZZZZZZZZ"; elsif EnAn = '0' then A <= B; else B <= A; end if; end process; Надеюсь, что смысл желаемого вроде понятен - высокий уровень на ENn или одинаковые уровни на EnAn или EnBn переводят A и B в третье состояние, в остальных (двух) случаях данные проходят либо от A к B, либо наоборот. Quartus компилирует, но сильно ругается на latch'и и на то, что A и B отсутствуют в списке чувствительности процесса. Вопроса, собственно, два: 1. Ругань на latch - это общего плана, или же даже в данном конкретном случае я что-то неправильно сделал ? 2. Нужно ли включать A и B в список чувствительности ? Посмотрел RTL Viewer'ом оба варианта (с включением A и B, и без) - вроде индентичны... Изменено 2 января, 2015 пользователем justontime Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 2 января, 2015 Опубликовано 2 января, 2015 · Жалоба Очередной чайниковский вопрос... Перевожу свой схемный дизайн в VHDL, сейчас нужен двухнаправленный буфер с третьим состоянием. Написал следующее: process (ENn, EnAn, EnBn) begin if ((ENn = '1') or (EnAn = EnBn)) then A <= "ZZZZZZZZ"; B <= "ZZZZZZZZ"; elsif EnAn = '0' then A <= B; else B <= A; end if; end process; Надеюсь, что смысл желаемого вроде понятен - высокий уровень на ENn или одинаковые уровни на EnAn или EnBn переводят A и B в третье состояние, в остальных (двух) случаях данные проходят либо от A к B, либо наоборот. Quartus компилирует, но сильно ругается на latch'и и на то, что A и B отсутствуют в списке чувствительности процесса. Вопроса, собственно, два: 1. Ругань на latch - это общего плана, или же даже в данном конкретном случае я что-то неправильно сделал ? 2. Нужно ли включать A и B в список чувствительности ? Посмотрел RTL Viewer'ом оба варианта (с включением A и B, и без) - вроде индентичны... если не секрет - буфер с третьим состоянием будет использоваться в IO порте? Пояснение: Внутри ПЛИС использование логики с третьим состоянием не желателен, лучше использовать мультиплексоры. Логику с третьим состоянием можно использовать на входе/выходе ПЛИС пример ниже library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity tri_state_buffer_top is Port ( A : in STD_LOGIC; -- single buffer input EN : in STD_LOGIC; -- single buffer enable Y : out STD_LOGIC; -- single buffer output -- 4 input / output buffer with one enable IN4 : in STD_LOGIC_VECTOR (3 downto 0); EN4 : in STD_LOGIC; OUT4 : out STD_LOGIC_VECTOR (3 downto 0)); end tri_state_buffer_top; architecture Behavioral of tri_state_buffer_top is begin -- single active low enabled tri-state buffer Y <= A when (EN = '0') else 'Z'; -- 4 input/output active low enabled tri-state buffer OUT4 <= IN4 when (EN4 = '0') else "ZZZZ"; end Behavioral; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
justontime 0 2 января, 2015 Опубликовано 2 января, 2015 · Жалоба если не секрет - буфер с третьим состоянием будет использоваться в IO порте? К FPGA подключена SRAM, у которой входы и выходы данных объединены, плюс на эту же шину данных, возможно, еще и другие источники/потребители будут подключаться (в т.ч. работающие со SRAM). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 3 января, 2015 Опубликовано 3 января, 2015 · Жалоба elsif EnAn = '0' then A <= B; else B <= A; вы же хотите чтобы А менялось в след за изменениями В и наоборот в случае елсе, так? Тогда логично предположить что процесс должен быть чувствителен к их изменению, и следовательно они должны быть в списке, да? Но в целом странная конструкция А на Б, или Б на А, или оба в 3 состоянии... Что подключено к А, что к Б? Когда А идет на Б, в каком состоянии находиться выход А? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться