Перейти к содержанию
    

Помогите проредить входной сигнал нулями

Нужно проредить входной сигнал нулями. Вот что первое пришло в голову.

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;

Как правильно это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 сказал:

Как правильно это сделать?

Результат симуляции выложите. И комментарии к коду: что за сигналы, как расставлены.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, venik сказал:

Нужно проредить входной сигнал нулями. Вот что первое пришло в голову.Как правильно это сделать?

А что значит "проредить нулями"? Обычно нули добавляют при интерполяции (повышении частоты дискретизации), но назвать это прореживанием язык не повернётся.

Если нужно проредить с целью децимации то зачем тогда нули??? Цель какая?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 минуты назад, MrGalaxy сказал:

Мне всегда не по себе от таких конструкций.

Это лично ваши трудности. У всех остальных он проблем не вызывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 минут назад, andrew_b сказал:

Это лично ваши трудности. У всех остальных он проблем не вызывает.

Расписываться за всех остальных - моветон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

51 минуту назад, MrGalaxy сказал:

Расписываться за всех остальных - моветон.

Пропагандировать индусский код — тем более.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Одновременное выполнение инверсии и анализ значения того же сигнала. Нет однозначности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, MrGalaxy сказал:

Одновременное выполнение инверсии и анализ значения того же сигнала. Нет однозначности.

Есть однозначность. Никаких проблем с таким кодом нет. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 минуты назад, MrGalaxy сказал:

Одновременное выполнение инверсии и анализ значения того же сигнала. Нет однозначности.

Проштудируйте букварь по VHDL (про календарь событий).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 21.04.2020 в 18:09, _sda сказал:

А что значит "проредить нулями"? Обычно нули добавляют при интерполяции (повышении частоты дискретизации), но назвать это прореживанием язык не повернётся.

Если нужно проредить с целью децимации то зачем тогда нули??? Цель какая?

 

Цели не знаю. Это один из блоков генератора. Задание такое.

Изменено пользователем venik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 21.04.2020 в 17:50, MrGalaxy сказал:

Мне всегда не по себе от таких конструкций.

Я бы записал так:

  Показать контент


			if cnt = '0' then
				dout_tmp <= din;
				cnt <= '1';
			else 
				dout_tmp <= (others => '0');
				cnt <= '0';
			end if;

 

 

Результат симуляции выложите. И комментарии к коду: что за сигналы, как расставлены.

 

Снимок.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TC напишете пожалуйста более подробно что Вы хотите сделать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, Maverick_ сказал:

TC напишете пожалуйста более подробно что Вы хотите сделать?

 

Надо после каждого входного din поставить нули( то есть din приходит единица, а на выходе dout выходит один и ноль и так далее). 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, venik сказал:

 

Снимок.PNG

В 21.04.2020 в 16:08, venik сказал:

 

 

В 21.04.2020 в 16:08, venik сказал:

	port (
		din : in	 std_logic;

 

 

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...