打印

vhdl inout 端口元件例化?

[复制链接]
5421|5
手机看帖
扫描二维码
随时随地手机跟帖
沙发
yanggsh|  楼主 | 2010-5-19 22:07 | 只看该作者
本人初学VHDL,希望高手帮忙

使用特权

评论回复
板凳
hucy6064| | 2010-7-23 11:38 | 只看该作者
我也遇到这个问题。请高手帮帮忙!

使用特权

评论回复
地板
ar_dong| | 2010-7-23 13:59 | 只看该作者
连控制信号都没有你怎么避免总线冲突
总线是在控制信号无效的时候输出Z的
模块之间调用少用inout
和外部打交道再用

使用特权

评论回复
5
barryyan| | 2010-7-26 15:41 | 只看该作者
恩,楼上说的对,模块之间少调用inout为好。

使用特权

评论回复
6
drentsi| | 2010-7-26 19:11 | 只看该作者
规范2-只有顶层端口才可以使用inout类型
u        在设计中只有最顶层和ucf引脚分配的相关的代码中才可以使用inout类型,其他任何层中禁止使用inout类型;
u        最后编译的top_layer层的代码不可复用,不可作为别的工程的中间层使用;
u        禁止使用内部inout端口;
u        在top_layer层之外只可使用’0’,’1’这2个状态;
u        内层要传递三态端口信号到顶层,须通过三个信号传递,这三个信号为
xxx_i,xxx_o,xxx_t,其它非三态端口不允许使用_i,_o,_t这三个后缀

关于inout端口的使用,可参照以下代码
entity top_layer_code is
port( A         :        inout           std_logic ;   
……);  
end top_layer_code;
architecture Behavioral of top_layer_code  is
component  mid_layer_code is
port( M_A_i         :        in           std_logic ;  
M_A_o         :        out           std_logic ;
M_A_t         :        out           std_logic ;
……);  
end component;
signal  A_input : std_logic ;  
signal  A_output : std_logic ;  
signal  A_tristate : std_logic ;  

begin

        mid_layer_code_imp: mid_layer_code
        port map(M_A_i         =>  A_input ,
M_A_o        =>  A_output ,
M_A_t   =>  A_tristate ,
……);  
--sample code for tristate imp
A_input<=A;
A<= A_output  when  A_tristate =’0’  else  ‘Z’;
--another sample code for tristate imp
A_IOBUF_IMP : IOBUF
port map ( I => A_output ,
O=> A_input,
T=> A_tristate ,
IO=> A);
end Behavioral;

推荐使用IOBUF来实现inout端口,如果要使用IOBUF则需要在VHDL代码的引用库里加入以下2行代码。
library UNISIM;
use UNISIM.VComponents.all;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:只要努力,就有希望

6

主题

9

帖子

0

粉丝