2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Есть небольшой вопрос по VHDL
Сообщение16.11.2014, 17:47 
Аватара пользователя


01/04/14
227
Санкт-Петербург
Имеется такой код:

commut: process(c)
begin
if (rising_edge(c)) then
for i in 0 to 5 loop
case i is
when 0 =>
commutator0 <= din;
when 1 =>
commutator1 <= din;
when 2 =>
commutator2 <= din;
when 3 =>
commutator3 <= din;
when 4 =>
commutator4 <= din;
when 5 =>
commutator5 <= din;
when others => null;
end case;
end loop;
end if;
end process commut;


Правильно ли я понимаю происходящее: по приходу переднего фронта тактового сигнала запускается счетчик, по которому выполняются некие действия. Счетчик пробегает 6 значений, после чего, по приходу нового переднего фронта,обнуляется и все начинается сначала.

С другой стороны, имеется такая версия:
commut: process(c)
variable i : integer := 0;
begin
if (rising_edge(c)) then
case i is
when 0 =>
commutator0 <= din;
when 1 =>
commutator1 <= din;
when 2 =>
commutator2 <= din;
when 3 =>
commutator3 <= din;
when 4 =>
commutator4 <= din;
when 5 =>
commutator5 <= din;
when others => null;
end case;
if ( i < 6 ) then
i := i + 1;
else i := 0;
end if;
end if;
end process commut;


Предполагается, что в такой интерпретации по приходу переднего фронта тактового сигнала будет выполняться действие из case, соответствующее номером значению i. После чего i будет увеличиваться на 1, а в случае превышения значения i 6, i будет обнуляться и отсчет будет начат заново. Это так?

Кратко о задаче: требуется написать полифазный фильтр - дециматор. Данный блок должен осуществлять коммутацию, то есть, переключение между субфильтрами каждый такт.

 Профиль  
                  
 
 Re: Есть небольшой вопрос по VHDL
Сообщение16.11.2014, 19:45 


01/05/11
79
Первый код эквивалентен

Код:
commut: process(c)
begin
if (rising_edge(c)) then
commutator0 <= din;
commutator1 <= din;
commutator2 <= din;
commutator3 <= din;
commutator4 <= din;
commutator5 <= din;
end if;
end process commut;

Т. е. все сигналы присваиваются по восходящему фронту. Во втором случае по восходящему фронту присваивается только один очередной сигнал в цикле

 Профиль  
                  
 
 Re: Есть небольшой вопрос по VHDL
Сообщение16.11.2014, 19:49 
Аватара пользователя


01/04/14
227
Санкт-Петербург
spctr в сообщении #931950 писал(а):
Т. е. все сигналы присваиваются по восходящему фронту. Во втором случае по восходящему фронту присваивается только один очередной сигнал в цикле

Правильно ли я понимаю,что во втором случае это работает так: приходит восходящий фронт, сигналу commutator0 присваивается значение din, i+1. Затем следует очередной восходящий фронт, сигналу commutator1 присваивается значение din, i+1,и так далее, пока i не станет равным 5. После этого, i обнуляется и отсчет начинается заново.

 Профиль  
                  
 
 Re: Есть небольшой вопрос по VHDL
Сообщение16.11.2014, 20:01 


01/05/11
79
geezer в сообщении #931951 писал(а):
Правильно ли я понимаю,что во втором случае это работает так: приходит восходящий фронт, сигналу commutator0 присваивается значение din, i+1. Затем следует очередной восходящий фронт, сигналу commutator1 присваивается значение din, i+1,и так далее, пока i не станет равным 5. После этого, i обнуляется и отсчет начинается заново.


Да.

 Профиль  
                  
 
 Re: Есть небольшой вопрос по VHDL
Сообщение16.11.2014, 20:02 
Аватара пользователя


01/04/14
227
Санкт-Петербург
spctr в сообщении #931959 писал(а):
Да.

Благодарю, очень выручили.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: photon, profrotter, Парджеттер, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group