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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3797|回复: 10

[求助] VHDL三态总线的疑问

[复制链接]
发表于 2010-8-5 17:38:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY tri2 IS
PORT(ct1:in std_logic_vector(1 downto 0);
datain1,datain2,datain3,datain4: in std_logic_vector(7 downto 0);
qout: out std_logic_vector(7 downto 0)
);
END tri2;
ARCHITECTURE body_tri OF tri2 IS
BEGIN
qout <=datain1 when ct1="00" else (others=>'Z');
qout <=datain2 when ct1="01" else (others=>'Z');
qout <=datain3 when ct1="10" else (others=>'Z');
qout <=datain4 when ct1="11" else (others=>'Z');
END body_tri;

这个是书中的程序,在结构体中,并行对qout赋值,是不允许的啊,为什么这里能用呢,大家帮忙解释一下啊,多谢!
发表于 2010-8-6 11:35:27 | 显示全部楼层
bad coding style,要看综合器能不能解释。上面那个应该等效于
qout <=datain1 when ct1="00" else
             datain2 when ct1="01" else
             datain3 when ct1="10" else
             datain4 when ct1="11";
发表于 2010-8-6 13:51:55 | 显示全部楼层
如果赋值的条件没有重叠,应该是能综合的,但不推荐这样来写代码 1# hipie
 楼主| 发表于 2010-8-6 17:43:40 | 显示全部楼层
用ISE 综合后没错,没有仿真
发表于 2010-8-6 21:47:47 | 显示全部楼层
三态门用IO上,内部不要用
 楼主| 发表于 2010-8-7 15:13:05 | 显示全部楼层
2# falloutmx
又看了看书,else 后的 这句很有用,(others=>'Z'); 换成别的再综合就提示多驱动的错误了,看来程序没问题,这里赋成高阻,不知是什么作用
发表于 2010-8-9 16:37:03 | 显示全部楼层
赋成高阻就是表示三态
 楼主| 发表于 2010-8-10 08:16:03 | 显示全部楼层
但是这个程序中应该是不可能出现三态的,赋成高阻有什么用呢,很是不解
发表于 2010-8-10 09:47:37 | 显示全部楼层
可以把总线交出来,让别的模块控制.
发表于 2010-8-10 11:15:26 | 显示全部楼层
扩展用的吧

不然真没用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-1-4 01:38 , Processed in 0.023657 second(s), 8 queries , Gzip On, Redis On.

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