‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

VHDL

Может, я чего-то не понимаю, но вот практическая задачка: влепить в схему несколько дешифраторов, эдакая иерархическая ветвистая структура.
Чтобы не заморачиваться описанием логики всех ветвей, поступил проще: написал модельку для старого доброго чипа 74hc138. Всё очень просто - три адресных входа, 8 расходящихся сигналов, три сигнала выбора (два инверсных, один прямой), что весьма удобно как раз для древовидных структур.

Но мне не везде нужно задействовать все 8 выходов: иногда некоторые из них не нужны и, соотв, не подключаются. В реальной железной схеме всё просто: не нужен выход? Ну так и не подключай его никуда! Исключения бывают, но очень и очень редко.

А здесь же.. вот пробовал так:
	Decode_Compares: hc138 PORT MAP (
		A(2) => INSTR(6),
		A(1) => INSTR(5),
		A(0) => INSTR(2),
		nE1 => N_GR_ALU,
		nE2 => inv_instr3,
		E3 => INSTR(4),
		Q(0) => N_CEQ, -- 000
		Q(1) => N_CNE, -- 001
		Q(2) => N_CLT, -- 010
		Q(3) => N_CGE, -- 011
		Q(4) => N_CLU, --100
		Q(5) => N_CGU --101
		-- 110 not used
		-- 111 not used
	);

Оказалось - низя-низя!!!!!!1111 АБИЗАТЕЛЬНО надо описать выводы Q(6) и Q(7). Ладно, попробовал так:
	Decode_Compares: hc138 PORT MAP (
		A(2) => INSTR(6),
		A(1) => INSTR(5),
		A(0) => INSTR(2),
		nE1 => N_GR_ALU,
		nE2 => inv_instr3,
		E3 => INSTR(4),
		Q(0) => N_CEQ, -- 000
		Q(1) => N_CNE, -- 001
		Q(2) => N_CLT, -- 010
		Q(3) => N_CGE, -- 011
		Q(4) => N_CLU, --100
		Q(5) => N_CGU, --101
		Q(6) => open, -- 110
		Q(7) => open -- 111
	);

НИЗЯ-НИЗЯ!!! НИ-НИ-НИ!! Ладно, попробовал так (предварительно добавив два сигнала-пустышки - dummy0 и dummy1):
	Decode_Compares: hc138 PORT MAP (
		A(2) => INSTR(6),
		A(1) => INSTR(5),
		A(0) => INSTR(2),
		nE1 => N_GR_ALU,
		nE2 => inv_instr3,
		E3 => INSTR(4),
		Q(0) => N_CEQ, -- 000
		Q(1) => N_CNE, -- 001
		Q(2) => N_CLT, -- 010
		Q(3) => N_CGE, -- 011
		Q(4) => N_CLU, --100
		Q(5) => N_CGU, --101
		Q(6) => dummy0, -- 110
		Q(7) => dummy1 -- 111
	);

Так прожевало и не ругается ни на что.
В задаче спрашивается: это я чего-то не понимаю или прекрасный строгий VHDL какой-то уж очень строгий в этом случае?
Ещё бесит, что отдельно пришлось сделать отдельный сигнал inv_instr3 вместо того, чтобы просто
		nE2 => NOT INSTR(3),

НИЗЯ-НИЗЯ!!!!!1111
Tags: worklog
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments