Как это нельяз если это просто ключ? ВОт щас код без ифов накидал - весь на тригерах. Работает как надо... 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[];
	...