Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Программируемая логика

Программируемая логика FPGA, CPLD

Ответ
 
Опции темы Опции просмотра
Старый 14.03.2011, 20:33   #1
EugenOS
Senior Member
 
Регистрация: 31.12.2007
Адрес: Kazakhstan, Karaganda
Возраст: 37
Сообщений: 125
Вес репутации: 100/44
EugenOS will become famous soon enoughEugenOS will become famous soon enough
По умолчанию VHDL и "конкурнтное" присвоение сигналов.

В общем, вопрос следующий.
Будет ли мне мешать в нижеприведенном коде конкуренция уровней присваиваемых sendByte или нет? Или вернее наверное так: как сделать, чтобы она не мешала?

Суть в том что в нескольких процессах, присутствует по несколько раз подряд код выделенный мною в процесс i2c_sendbyte.
Потому я сначала решил сделать флаг и задавая ему значение 1, активировать этот процесс, а потом дожидаться пока процесс не сбросит его в 0.
Код:
	process i2c_sendbyte;
		wait until sendByte = '1';
		for I in 0 to 7 loop
			if wrAddr = '0' then 
				exit;
			end if;
			wait until Clk = '1'; SDA <= data(7);
			wait until Clk = '1'; SCL <= '1';
			wait until Clk = '1'; SCL <= '1';
			wait until Clk = '1'; SCL <= '0';
			data <= data(6 downto 0) & "0";
		end loop;
		wait until Clk = '1'; SDA <= 'H';		-- ACK check
		wait until Clk = '1'; SCL <= '1';		-- ACK check
		wait until SDA = '0' or wrAddr = '0';	-- ACK check
		wait until Clk = '1'; SCL <= '0';		-- ACK check	
		sendByte <= '0';
	end process i2c_sendbyte;
вызывать хочу его так:

Код:
	process i2c_wraddr
	variable
		data : std_logic_vector (7 downto 0);
	begin
		wait until wrAddr = '1';
		wait until Clk = '1'; SDA<='1'; -- START
		wait until Clk = '1'; SCL<='1'; -- START
		wait until Clk = '1'; SDA<='0'; -- START
		wait until Clk = '1'; SCL<='0'; -- START
		data <= "1010" & addr(10 downto 8 ) & "1" when ictype = '0'
			else "10100001";
		sendByte <= '1';
		wait until sendByte = '0';
		data <= addr(7 downto 0 ) when ictype = '0'
			else addr(15 downto 8 );
		sendByte <= '1';
		wait until sendByte = '0';
		if ictype = '1' then
			data <= addr(7 downto 0 );
			sendByte <= '1';
			wait until sendByte = '0';					
		end if;		
	end process i2c_wraddr;

P.S. В коде возможны и другие ошибки, на них прошу не обращать внимания, я пока только изучаю VHDL, просто в процессе написания возникли большие сомнения, а пока не допишу, и не "подключу" к остальной части, нормально проверить возможности нет...по крайней мере для меня, на моем уровне знаний предмета...
__________________
Хм...факир был пьян, и фокус не удался...
EugenOS вне форума   Ответить с цитированием
Старый 15.03.2011, 21:14   #2
EugenOS
Senior Member
 
Регистрация: 31.12.2007
Адрес: Kazakhstan, Karaganda
Возраст: 37
Сообщений: 125
Вес репутации: 100/44
EugenOS will become famous soon enoughEugenOS will become famous soon enough
По умолчанию Re: VHDL и "конкурнтное" присвоение сигналов.

вопрос закрыт. разобрался.
__________________
Хм...факир был пьян, и фокус не удался...
EugenOS вне форума   Ответить с цитированием
Старый 15.03.2011, 23:30   #3
gontharov
Senior Member
 
Аватар для gontharov
 
Регистрация: 29.06.2007
Возраст: 38
Сообщений: 320
Вес репутации: 218/48
gontharov has a spectacular aura aboutgontharov has a spectacular aura aboutgontharov has a spectacular aura about
По умолчанию Re: VHDL и "конкурнтное" присвоение сигналов.

Как обычно, забыли отписать как решили
А в чем моделируете? Вообще то присваивать значение одному и тому же сигналу в разных процессах так просто нельзя!
gontharov вне форума   Ответить с цитированием
Старый 16.03.2011, 21:36   #4
EugenOS
Senior Member
 
Регистрация: 31.12.2007
Адрес: Kazakhstan, Karaganda
Возраст: 37
Сообщений: 125
Вес репутации: 100/44
EugenOS will become famous soon enoughEugenOS will become famous soon enough
По умолчанию Re: VHDL и "конкурнтное" присвоение сигналов.

на данный момент "решил" заплаткой...сейчас соберу все, чтоб работало...а потом попробую сделать так как хотелось...

на счет нежелательно присваивать значения из разных процессов...я все таки думаю в этом случае все должно получиться....на верилоге, я уже вроде понял как надо делать, то что хочу. Но у меня весь проект на VHDL, и не хотелось бы из-за одной проблемы делать проект на "винигрете".

как решу проблему по-нормальному, так отпишу.
__________________
Хм...факир был пьян, и фокус не удался...
EugenOS вне форума   Ответить с цитированием
Старый 17.03.2011, 21:47   #5
gontharov
Senior Member
 
Аватар для gontharov
 
Регистрация: 29.06.2007
Возраст: 38
Сообщений: 320
Вес репутации: 218/48
gontharov has a spectacular aura aboutgontharov has a spectacular aura aboutgontharov has a spectacular aura about
По умолчанию Re: VHDL и "конкурнтное" присвоение сигналов.

Когда попробуете синтезировать в железе - отпишитесь
gontharov вне форума   Ответить с цитированием
Старый 29.12.2011, 10:56   #6
EugenOS
Senior Member
 
Регистрация: 31.12.2007
Адрес: Kazakhstan, Karaganda
Возраст: 37
Сообщений: 125
Вес репутации: 100/44
EugenOS will become famous soon enoughEugenOS will become famous soon enough
По умолчанию Re: VHDL и "конкурнтное" присвоение сигналов.

Цитата:
Сообщение от gontharov Посмотреть сообщение
Когда попробуете синтезировать в железе - отпишитесь
Раньше лета - не попробую. А пока, просто "прокинул" сигналы через плиску (на будущее) и реализовал программно в процессоре.
__________________
Хм...факир был пьян, и фокус не удался...
EugenOS вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 10:53.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot