venik 0 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба Нужно проредить входной сигнал нулями. Вот что первое пришло в голову. library ieee; use ieee.std_logic_1164.all; entity maper is port ( din : in std_logic; clk : in std_logic; res : in std_logic; en : in std_logic; en_out : out std_logic; dout : out std_logic_vector (15 downto 0) ); end maper; architecture behavioral of maper is signal dout_tmp : std_logic_vector(15 downto 0); signal cnt : std_logic := '0'; begin process (clk) begin if clk='1' and clk'event then if res='1' then dout_tmp <= (others => '0'); cnt <= '0'; elsif en='1' then cnt <= not cnt; if cnt = '0' then dout_tmp <= din; else dout_tmp <= (others => '0'); end if; end if; end if; end process; en_out <= en; dout <= dout_tmp; end behavioral; Как правильно это сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба 1 час назад, venik сказал: cnt <= not cnt; if cnt = '0' then dout_tmp <= din; else dout_tmp <= (others => '0'); end if; Мне всегда не по себе от таких конструкций. Я бы записал так: Спойлер if cnt = '0' then dout_tmp <= din; cnt <= '1'; else dout_tmp <= (others => '0'); cnt <= '0'; end if; 1 час назад, venik сказал: Как правильно это сделать? Результат симуляции выложите. И комментарии к коду: что за сигналы, как расставлены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба 2 часа назад, venik сказал: Нужно проредить входной сигнал нулями. Вот что первое пришло в голову.Как правильно это сделать? А что значит "проредить нулями"? Обычно нули добавляют при интерполяции (повышении частоты дискретизации), но назвать это прореживанием язык не повернётся. Если нужно проредить с целью децимации то зачем тогда нули??? Цель какая? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба 53 минуты назад, MrGalaxy сказал: Мне всегда не по себе от таких конструкций. Это лично ваши трудности. У всех остальных он проблем не вызывает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба 12 минут назад, andrew_b сказал: Это лично ваши трудности. У всех остальных он проблем не вызывает. Расписываться за всех остальных - моветон. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба 51 минуту назад, MrGalaxy сказал: Расписываться за всех остальных - моветон. Пропагандировать индусский код — тем более. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба Одновременное выполнение инверсии и анализ значения того же сигнала. Нет однозначности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба 1 минуту назад, MrGalaxy сказал: Одновременное выполнение инверсии и анализ значения того же сигнала. Нет однозначности. Есть однозначность. Никаких проблем с таким кодом нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 45 21 апреля, 2020 Опубликовано 21 апреля, 2020 · Жалоба 23 минуты назад, MrGalaxy сказал: Одновременное выполнение инверсии и анализ значения того же сигнала. Нет однозначности. Проштудируйте букварь по VHDL (про календарь событий). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
venik 0 23 апреля, 2020 Опубликовано 23 апреля, 2020 (изменено) · Жалоба В 21.04.2020 в 18:09, _sda сказал: А что значит "проредить нулями"? Обычно нули добавляют при интерполяции (повышении частоты дискретизации), но назвать это прореживанием язык не повернётся. Если нужно проредить с целью децимации то зачем тогда нули??? Цель какая? Цели не знаю. Это один из блоков генератора. Задание такое. Изменено 23 апреля, 2020 пользователем venik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
venik 0 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба В 21.04.2020 в 17:50, MrGalaxy сказал: Мне всегда не по себе от таких конструкций. Я бы записал так: Показать контент if cnt = '0' then dout_tmp <= din; cnt <= '1'; else dout_tmp <= (others => '0'); cnt <= '0'; end if; Результат симуляции выложите. И комментарии к коду: что за сигналы, как расставлены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба TC напишете пожалуйста более подробно что Вы хотите сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
venik 0 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба 1 минуту назад, Maverick_ сказал: TC напишете пожалуйста более подробно что Вы хотите сделать? Надо после каждого входного din поставить нули( то есть din приходит единица, а на выходе dout выходит один и ноль и так далее). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба 2 часа назад, venik сказал: В 21.04.2020 в 16:08, venik сказал: В 21.04.2020 в 16:08, venik сказал: port ( din : in std_logic; ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
venik 0 23 апреля, 2020 Опубликовано 23 апреля, 2020 · Жалоба 2 часа назад, MrGalaxy сказал: ? опечатка din : in std_logic_vector(15 downto 0) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться