mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2794回复:22

那位高手可以帮我分析一下下面的代码有什么错误?

楼主#
更多 发布于:2003-03-20 16:09
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity question is
port (
cs0 : in std_logic;
cs1 : in std_logic;
clock : in std_logic;
addr_a : in std_logic_vector(20 downto 0);
addr_b : out std_logic_vector(20 downto 0)
);
end question;

architecture a of question is
begin
process(clock)
begin
if (cs0=\'1\' and cs1=\'1\') then
addr_b<=\"ZZZZZZZZZZZZZZZZZZZZZ\";
elsif (cs0=\'1\' and cs1=\'0\') then
addr_b<=addr_a;
end if;
end process;
end a;
petz
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2015-12-19
  • 粉丝0
  • 关注0
  • 积分-22276分
  • 威望15点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-20 17:12
用户被禁言,该主题自动屏蔽!
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-21 01:50
addr_b : out std_logic_vector(20 downto 0)
少了分号
clock没用到,不过问题不大,编译时会自动优化。
petz
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2015-12-19
  • 粉丝0
  • 关注0
  • 积分-22276分
  • 威望15点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-21 09:03
用户被禁言,该主题自动屏蔽!
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-21 09:13
我想实现的就是当cs0=\'1\' and cs1=\'1\'时,addr_b高阻;当cs0=\'1\' and cs1=\'0\'时addr_b<=addr_a。但是maxplusII怎么也编译不通过,报了42个错,都是同样的错误,都是有关TRI和BIDIR的,我想不明白。
petz
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2015-12-19
  • 粉丝0
  • 关注0
  • 积分-22276分
  • 威望15点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-21 09:25
用户被禁言,该主题自动屏蔽!
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-21 09:53
谢谢楼上的大哥,通过了。我会给分的。可否帮我解释一下以下的报错什么意思:
TRI or OPNDRN buffer \':557\' can only drive logic (\':250\') if connected to a BIDIR pin
我开始的程序就是报的上面的错,总共42个。除了数字变一下,其他的报错信息都一样。
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-03-21 09:56
请问如何用VHDL语言实现双向口的三态控制。我目前是用两个74LS244做的,读写信号分别控制244的使能端。
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-03-21 10:23
to zoujie:
当代码改为如下,编译不通过。我只是加上CLOCK的功能而已,让原来的代码在clock上升沿起作用,不知什么原因。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity question is
port (
cs0 : in std_logic;
cs1 : in std_logic;
clock : in std_logic;
addr_a : in std_logic_vector(20 downto 0);
addr_b : out std_logic_vector(20 downto 0)
);
end question;

architecture a of question is
begin
process(clock)
begin
if clock\'event and clock=\'1\' then
  if( cs1=\'1\' and cs0=\'0\')then
    addr_b <= addr_a;
  else
    addr_b <= (others=>\'Z\') ;
  end if;
end if;
end process;
end a;
petz
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2015-12-19
  • 粉丝0
  • 关注0
  • 积分-22276分
  • 威望15点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-03-21 10:31
用户被禁言,该主题自动屏蔽!
petz
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2015-12-19
  • 粉丝0
  • 关注0
  • 积分-22276分
  • 威望15点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-03-21 10:38
用户被禁言,该主题自动屏蔽!
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-03-21 13:24
第一段程序编译不通过,报同样的错误。我怀疑是不是MAXPLUSII有问题呀。第二段双向口的程序我没有看明白,我觉得你写的不对呀。另外,process后跟的敏感信号表里假如有很多的信号,那么是只有一个信号变化就回触发,还是要求全部满足呢?
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-03-22 01:45
不好意思,前面没看清给了错误信息。

这个地方好象不对:
addr_b : out std_logic_vector(20 downto 0)
);
既然你定义OUT,怎么在程序内又用到Z态呢?
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-03-24 12:39
难道不能输出高阻吗?
X_ray
驱动中牛
驱动中牛
  • 注册日期2003-02-03
  • 最后登录2004-07-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-03-25 03:29
只有INOUT支持高祖态。
huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-03-25 21:05
请问如何用VHDL语言实现双向口的三态控制。我目前是用两个74LS244做的,读写信号分别控制244的使能端。


仔细体会一下,这就是个例子。

rocklet
驱动牛犊
驱动牛犊
  • 注册日期2003-01-22
  • 最后登录2004-05-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-03-25 21:58
只有INOUT支持高祖态。


正确
mustang
驱动小牛
驱动小牛
  • 注册日期2002-05-17
  • 最后登录2005-12-06
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-03-26 10:06
to huttu:
我是参照原理图的思路写了代码,但是maxplusII编译不通过呀。还有为什么我在仿真的时候,总是有许多的报警呀?是不是我的输入端送入的参数的时序不好呀。
huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-03-29 21:00
时序这东西就像个影子,你不注意的时候它又在那里,当你好心去找的时候它又不知道在哪里了。
对于这个东东的认识我也是最近一段时间才重视的(是没办法而为之),说实话我也没有什么蛮多实战经验,只是作个抛砖引玉罢了,当你在仿真的时候就更应注意了,有些时候可能就因为这个的原因。
有关这方面的东西我也渴望能和高手多多交流交流的。
rookie
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2005-05-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-03-30 14:59
仿真时的激励文件不对,注意双向总线时总线数据冲突,如果你能确定设计没问题,警告可以不管他
上一页
游客

返回顶部