FPGA双向电路设计经验双向电路设计经验
在工程应用中,双向电路是设计者不得不面对的问题.在实际应用中,数据总线往往是双向的.如何正确处理数据总
线是进行时序逻辑电路设计的基础.在程序设计过程中,关键技术在于:实体部分必须对端口属性进行申明,端口属
性必须为Inout类型,在构造体需要对输出信号进行有条件的高阻控制。
在工程应用中,双向电路是设计者不得不面对的问题.在实际应用中,数据总线往往是双向的.如何正确处理数据总线是进行时序逻
辑电路设计的基础.在程序设计过程中,关键技术在于:实体部分必须对端口属性进行申明,端口属性必须为Inout类型,在构造体需
要对输出信号进行有条件的高阻控制.在双向电路的处理问题上,常用的处理方式有两种,在介绍双向电路的处理方式之前,先看看
双向电路的基本格式:
ENTITY Bidir_pin IS
(
Bidir : INOUT Std_logic;
Oe, Clk, From_core : IN Std_logic;
To_core : OUT Std_logic;
……
END Bidir_pin;
ARCHITECTURE Behavior OF Bidir_pin IS
BEGIN
Bidir <= From_core WHEN Oe=‘1’ ELSE “ZZZZ”;
To_core <= Bidir;
_
_
_
END Behavior;
该程序揭示了双向电路的处理技巧,首先在实体部分Bidir属于双向信号,在端口定义时,端口属性为Inout类型,即把Bidir信号作为
输入三态输出. 语句“Bidir <= From_core WHEN Oe=‘1’ ELSE “ZZZZ”;”表示Bidir信号三态输出,语句”To_core <= Bidir;”把Bidir
信号作为输入信号.
由此可见,双向电路在程序设计中,Didir输入当着普通的In类型,而在输出时,需要加一定的控制条件,三态输出.问题的关键在于:如
何确定这个条件?
1)双向信号作一个信号的输入,作另一信号的输出
ENTITY Bidir IS
PORT(
Bidir : INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
Oe, Clk : IN STD_LOGIC;
From_core : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
To_core : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
);
END Bidir;
ARCHITECTURE Logic OF Bidir IS
SIGNAL A : STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL B : STD_LOGIC_VECTOR (7 DOWNTO 0);