ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 марта
571868 Топик полностью
POV (11.01.2015 18:10, просмотров: 228) ответил Artemius_tv на Если несколько выходов TRI объединить, то да. А если он один, как здесь, то будет WIRE. Но согласен, неправильно написал, что TRI внутри ПЛИС применять нельзя. Можно, но нужно понимать во что Quartus это преобразует. Только непонятно, зачем так
Как это нельяз если это просто ключ? ВОт щас код без ифов накидал - весь на тригерах. Работает как надо... 
VARIABLE
	-- данные и адрес ОЗУ по SPI
	Qspi				: lpm_shiftreg WITH (LPM_WIDTH = 16, LPM_DIRECTION = "LEFT"); 
	Aspi				: lpm_shiftreg WITH (LPM_WIDTH = 18, LPM_DIRECTION = "LEFT"); 

	BankReady		: NODE;  -- готовность банка к переключению

	-- тригер для двунаправленной шины данных
	buf0Q[15..0]		: TRI_STATE_NODE;
	buf1Q[15..0]		: TRI_STATE_NODE;
	
	buf0A[17..0]		: TRI_STATE_NODE;
	buf1A[17..0]		: TRI_STATE_NODE;
	
	buf0fA[17..0]		: TRI_STATE_NODE;
	buf1fA[17..0]		: TRI_STATE_NODE;
	
	buf0fQ[15..0]		: TRI_STATE_NODE;
	buf1fQ[15..0]		: TRI_STATE_NODE;
	
BEGIN
	-- это тригер-разветвитель шина адреса от МК на два банка
	FOR i IN 0 TO 17 GENERATE
		buf0A[i] = TRI(Aspi.q[i], NOT uBank); -- адрес выкидывается на активный банк
		buf1A[i] = TRI(Aspi.q[i], uBank); 
	END GENERATE;
	-- это тригер-разветвитель шина адреса от флехи на два банка
	FOR i IN 0 TO 17 GENERATE
		buf0fA[i] = TRI(fA[i], uBank); -- адрес выкидывается на неактивный банк
		buf1fA[i] = TRI(fA[i], NOT uBank); 
	END GENERATE;
	-- цепляем мультиплицированную шину адреса на банки
	r0A[] = buf0fA[] AND buf0A[];
	r1A[] = buf1fA[] AND buf1A[];
	
	-- это тригер-разветвитель шины данных от МК на банки
	FOR i IN 0 TO 15 GENERATE
		buf0Q[i] = TRI(Qspi.q[i], uRW AND (NOT uBank)); -- пока не читаем память, выход тригера открыт            
		buf1Q[i] = TRI(Qspi.q[i], uRW AND uBank); 
	END GENERATE;
	r0Q[] = buf0Q[];
	r1Q[] = buf1Q[];
	
	-- это тригер-мультиплексор шины данных от банков на флеху
	FOR i IN 0 TO 15 GENERATE
		buf0fQ[i] = TRI(r0Q[i], uBank);
		buf1fQ[i] = TRI(r1Q[i], NOT uBank); 
	END GENERATE;
	fQ[] = buf0fQ[] AND buf1fQ[];
	...