阅读:2794回复:22
那位高手可以帮我分析一下下面的代码有什么错误?
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; |
|
沙发#
发布于:2003-03-20 17:12
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2003-03-21 01:50
addr_b : out std_logic_vector(20 downto 0)
少了分号 clock没用到,不过问题不大,编译时会自动优化。 |
|
地板#
发布于:2003-03-21 09:03
用户被禁言,该主题自动屏蔽! |
|
地下室#
发布于: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的,我想不明白。
|
|
5楼#
发布于:2003-03-21 09:25
用户被禁言,该主题自动屏蔽! |
|
6楼#
发布于:2003-03-21 09:53
谢谢楼上的大哥,通过了。我会给分的。可否帮我解释一下以下的报错什么意思:
TRI or OPNDRN buffer \':557\' can only drive logic (\':250\') if connected to a BIDIR pin 我开始的程序就是报的上面的错,总共42个。除了数字变一下,其他的报错信息都一样。 |
|
7楼#
发布于:2003-03-21 09:56
请问如何用VHDL语言实现双向口的三态控制。我目前是用两个74LS244做的,读写信号分别控制244的使能端。
|
|
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; |
|
9楼#
发布于:2003-03-21 10:31
用户被禁言,该主题自动屏蔽! |
|
10楼#
发布于:2003-03-21 10:38
用户被禁言,该主题自动屏蔽! |
|
11楼#
发布于:2003-03-21 13:24
第一段程序编译不通过,报同样的错误。我怀疑是不是MAXPLUSII有问题呀。第二段双向口的程序我没有看明白,我觉得你写的不对呀。另外,process后跟的敏感信号表里假如有很多的信号,那么是只有一个信号变化就回触发,还是要求全部满足呢?
|
|
12楼#
发布于:2003-03-22 01:45
不好意思,前面没看清给了错误信息。
这个地方好象不对: addr_b : out std_logic_vector(20 downto 0) ); 既然你定义OUT,怎么在程序内又用到Z态呢? |
|
13楼#
发布于:2003-03-24 12:39
难道不能输出高阻吗?
|
|
14楼#
发布于:2003-03-25 03:29
只有INOUT支持高祖态。
|
|
15楼#
发布于:2003-03-25 21:05
请问如何用VHDL语言实现双向口的三态控制。我目前是用两个74LS244做的,读写信号分别控制244的使能端。 仔细体会一下,这就是个例子。 |
|
16楼#
发布于:2003-03-25 21:58
只有INOUT支持高祖态。 正确 |
|
17楼#
发布于:2003-03-26 10:06
to huttu:
我是参照原理图的思路写了代码,但是maxplusII编译不通过呀。还有为什么我在仿真的时候,总是有许多的报警呀?是不是我的输入端送入的参数的时序不好呀。 |
|
18楼#
发布于:2003-03-29 21:00
时序这东西就像个影子,你不注意的时候它又在那里,当你好心去找的时候它又不知道在哪里了。
对于这个东东的认识我也是最近一段时间才重视的(是没办法而为之),说实话我也没有什么蛮多实战经验,只是作个抛砖引玉罢了,当你在仿真的时候就更应注意了,有些时候可能就因为这个的原因。 有关这方面的东西我也渴望能和高手多多交流交流的。 |
|
19楼#
发布于:2003-03-30 14:59
仿真时的激励文件不对,注意双向总线时总线数据冲突,如果你能确定设计没问题,警告可以不管他
|
|
上一页
下一页