vhdl语言程序设计中inout端口的使用与实例分析.docVIP

  • 200
  • 0
  • 约9.76千字
  • 约 13页
  • 2017-08-20 发布于重庆
  • 举报

vhdl语言程序设计中inout端口的使用与实例分析.doc

vhdl语言程序设计中inout端口的使用与实例分析

目 录 1、双向电路的基本格式 2 2、控制条件 3 2.1、双向信号作一个信号的输入,作另一信号的输出 3 2.2、双向信号既做输出又做输出 4 3、实例说明-INOUT端口仿真暨三态门仿真 6 3.1、三态门的原理与仿真三态总线 6 3.3、VHDL 的三态门实现与仿真 7 参考文献 12 VHDL语言程序设计中INOUT端口的使用与实例分析 摘要:VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(Very High Speed Integrated Circuit) Hardware Description Language。 与另外一门硬件描述语言Verilog HDL相比,VHDL更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级),而且VHDL具有设计重用、大型设计能力、可读性强、易于编译等优点逐渐受到硬件设计者的青睐。但是,VHDL是一门语法相当严格的语言,易学性差,特别是对于刚开始接触VHDL的设计者而言,经常会因某些小细节处理不当导致综合无法通过。VHDL共定义了5种类型的端口,分别是In, Out,Inout, Buffer及Linkage,实际设计时只会用到前四种。VHDL;INOUT端口;三态门原理 1、双向电路的基本格式工程应用中,双向电路是设计者不得不面对的问题.在实际应用中,数据总线往往是双向的.如何正确处理数据总线是进行时序逻辑电路设计的基础.在程序设计过程中,关键技术在于:实体部分必须对端口属性进行申明,端口属性必须为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); BEGIN PROCESS (clk) BEGIN IF clk = 1 AND clkEVENT THEN a = from_core; to_core = b; END IF; END PROCESS; PROCESS (oe, bidir) BEGIN IF( oe = 0) THEN bidir = ZZZZZZZZ; b = bidir; ELSE bidir = a; b = bidir; END IF; END PROCESS; END logic; 这种设计方式叫做寄存双向信号的方法.本设计中bidir为双向信号,from_core为数据输入端,to_core为数据输出端,oe为三态输出使能,clk为读写数据的时钟.在程序设计中,需要定义两个signal a和b信号.a信号用于输入数据from_core的寄存器,b用于输出数据to_cor

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档