AHDL, помогите с реализацией

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
de_mezon_ruj
Родился
Сообщения: 3
Зарегистрирован: Пн июл 02, 2012 13:01:53

AHDL, помогите с реализацией

Сообщение de_mezon_ruj »

Имея 2 регистра (>>1 бита), задать соединения входов и выходов одного в зависимости от значения второго (значения второго регистра берутся группами по несколько бит).
Заранее благодарен.
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: AHDL, помогите с реализацией

Сообщение Ser60 »

Посадите все входы второго регистра на землю. Таким образом, будет реализована зависимость типа f(x)=0. Если не устраивает, перечитайте свой пост на предмет можно-ли его понять без телепатии.
Реклама
de_mezon_ruj
Родился
Сообщения: 3
Зарегистрирован: Пн июл 02, 2012 13:01:53

Re: AHDL, помогите с реализацией

Сообщение de_mezon_ruj »

Имея первый регистр на 16 бит и второй на 64, нужно чтоб входы и выходы первого коммутировались в зависимости от состояния групп второго (по 4 бита).
Если: состояние второго :B'xxxx xxxx 1111 xxxx ...' , то 3-й вход первого соединить с 15-м выходом первого.
Будте добры, как реализовать? :shock:
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: AHDL, помогите с реализацией

Сообщение avreal »

Я так полагаю, что имелось ввиду нечто такое:

Код: Выделить всё

INCLUDE "mux.inc";

SUBDESIGN ahd (
	selector[63..0] : INPUT;
	dat_i[15..0]    : INPUT;
	dat_o[15..0]  	: OUTPUT;
)

BEGIN

FOR I IN 0 TO 15 GENERATE
    dat_o[I] = mux( .data = dat_i[], .sel = selector[ I*4+3 .. I*4 ])
               WITH( WIDTH=16, WIDTHS=4);
END GENERATE;

END;
Только сигналы коммутируются не со внешних входов входов на выходы, а выходы брошены назад на входы через регистр:

Код: Выделить всё

INCLUDE "mux.inc";

SUBDESIGN ahd (
	clk             : INPUT;
	selector[63..0] : INPUT;
	dat_o[15..0]  	: OUTPUT;
)

VARIABLE
    rg[15..0] : DFF;

BEGIN
    dat_o[] = rg[];
    rg[].clk = clk;

FOR I IN 0 TO 15 GENERATE
    rg[I].d = mux( .data = dat_o[], .sel = selector[ I*4+3 .. I*4 ])
               WITH( WIDTH=16, WIDTHS=4);
END GENERATE;

END;
Само оно смысл еще имеет («crossbar switch»), а вот выходы на входы замыкать как-то странно, получается вещь, состояние которой не зависит ни от каких входов. Обратных связей, как в генераторе псевдослучайного числа, -- нет. У альтеры при включении все триггера сброшены, так что тут на все входы будут поступать нули.
Можно, конечно, таким образом пофантазировать на тему случайного состояния триггеров при включении и генерации таким образом какого-то шума, но всё равно странно.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Реклама
Эиком - электронные компоненты и радиодетали
de_mezon_ruj
Родился
Сообщения: 3
Зарегистрирован: Пн июл 02, 2012 13:01:53

Re: AHDL, помогите с реализацией

Сообщение de_mezon_ruj »

Подразумевается, что этакая коммутация будет зависеть от некоего значения, заранее хранящегося в другом месте.

Благодарю за помощь!)
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»