在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: vikingg

[求助] inout三态处理能放在内层模块吗

[复制链接]
发表于 2010-5-19 09:44:04 | 显示全部楼层
最好不要,否则会报错
发表于 2010-5-19 10:08:28 | 显示全部楼层
内部输入输出分开,多点连线罢了。
为什么非要双向呢!
发表于 2010-5-19 15:23:46 | 显示全部楼层
有点不明白,放在内层模块的话在顶层不是也要引出吗?《= 菜鸟的说。。
发表于 2010-5-24 10:57:04 | 显示全部楼层
1# vikingg

用FPGA做的时候放里面还是放外面都没有问题的。
只要你采用的是TOP-down的综合策略,工具会识别INOUT,自动分配至IOB上面。

但是强烈建议不要写在内部,多数时候引起麻烦,例如,你哪天心血来潮想要用Bottom-UP的综合策略的时候,例如,你想做Partiton的时候,或者,你换了个NB又正直的综合工具的的时候。。。

而且,我不觉得INOUT写在内部会增强理解可阅读性。
发表于 2010-5-24 15:08:24 | 显示全部楼层
这个我试过,你可以放在内层,然后一路inout地引出来,但是你不能在这个信号出来的过程中再做逻辑处理,即你的信号要直接连到IOB上去,而不能中间经过LUT等。
 楼主| 发表于 2010-5-25 14:05:36 | 显示全部楼层
对,是直接出来,不经过任何逻辑
15# eaglelsb
发表于 2010-5-25 16:27:02 | 显示全部楼层
由于FPGA芯片内部信号一般不具备 ’Z’ state,
内层信号做成inout时,合成工具会自动以多任务器取代。
不过,其输出入选择与地址译码电路等有一定的要求,
俾合成工具能自动检出进行转换。
发表于 2011-1-4 23:13:44 | 显示全部楼层
规范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;
发表于 2011-1-5 02:08:57 | 显示全部楼层
可以的 但是不太好 还是在顶层好约束些
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-29 16:39 , Processed in 0.022357 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表