problém ve VHDL-signál přiřazen k jedné pin součásti

A

ahmadagha23

Guest
Hi;
I přidělen signál do jedné pin z komponent v top-modulu.při definování tohoto dílu jsem inicializovány, že pin na '0 '.
Ve výchozím nastavení, že pin je definován jako "InOut" typu.Zatímco simulace v top modul, když hodnota signálu by se měl změnit na "1", se změní na "X".Když jsem se změnit typ, který pin na "in" typu funguje to pravda.Chci používat tento pin také jak ven, tak jsem měla použít jako "InOut".Ve skutečnosti je to strana obousměrný buffer.
Mohl byste mi prosím veď mě?Můj kód je v jazyce VHDL.

Jde o

 
Při psaní v HDL se vždy snaží vizualizovat to, co váš kód bude výnos v syntéze.

Pro obousměrný signál, který může řídit a může být poháněna by měl nějaké jiné řídící signál, který určuje, kdy jednat jako vstup a kdy, jak output.if nemáte takový signál, pak to, co uvidíte jako 'X', protože tam budou dva řidiči na stejný signál. (jedna z vašeho designu a dalších zvenčí.)
Tady je pěkný příklad typického tristate buffer.

Citace:KNIHOVNA IEEE;

USE ieee.std_logic_1164.ALL;ENTITY bidir IS

PORT (

bidir: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);

oe, CLK: IN STD_LOGIC;

INP: IN STD_LOGIC_VECTOR (7 DOWNTO 0);

outp: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));

END bidir;ARCHITEKTURA maxpld OF bidir IS

SIGNAL: STD_LOGIC_VECTOR (7 DOWNTO 0); - DFF, který ukládá

- Hodnota od vstupu.

SIGNAL b: STD_LOGIC_VECTOR (7 DOWNTO 0); - DFF, který ukládá

BEGIN - zpětná vazba hodnotu.

Proces (CLK)

BEGIN

IF CLK = '1 'AND clk'EVENT THEN - Vytvoří flipflops

<= INP;

outp <= b;

END IF;

Ukončit proces;

Proces (OE, bidir) - behaviorální reprezentace

BEGIN - tri-států.

IF (OE = '0 '), pak

bidir <= "ZZZZZZZZ";

b <= bidir;

ELSE

bidir <=;

b <= bidir;

END IF;

Ukončit proces;

END maxpld;

 
I vykládat důvod: pro InOut porty, tam je interní a externí ovladače, které pracují nezávisle na sobě.Takže byste měli determin pro každou z vnitřních a vnějších státy jejich hodnoty a tyto hodnoty by neměly mít konflikt.Například, když jsem přidal přiřazení na 'Z' hodnotu interní kód pro stát, který InOut pin by měl být poháněný vnější hodnotu to fungovalo opravdu.
proces (clk_DIRn, aclk, bclk)
začít
if (clk_DIRn = '1 '), pak
aclk <= bclk po Tbuff Tcable Tbuff;
bclk <= 'Z';
elsif (clk_DIRn = '0 '), pak
bclk <= aclk po Tbkp;
aclk <= 'Z';
end if;
ukončení procesu;

jde o

 
Je váš problém vyřešit?
, která je vaším obousměrný signál?

 
Ano, to vyřešit.jak aclk a bclk jsou obousměrné.U lze považovat pouze jeden z nich.

 

Welcome to EDABoard.com

Sponsor

Back
Top