求教vhdl一个语法的问题,希望大家可以进来看看

[复制链接]
 楼主| wangjun403 发表于 2011-3-14 22:36 | 显示全部楼层 |阅读模式
本帖最后由 wangjun403 于 2011-3-14 22:43 编辑
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity test is
port(
clk :in std_logic;
scl :inout std_logic;
sda :inout std_logic
);
end entity;

architecture structural of test is
begin
process(clk)
begin
if clk'event and clk='1' then
scl<='z';
end if;
end process;
end architecture structural;


quartus8.0编译提示的错误为:
Error (10316): VHDL error at test.vhd(21): character ''z'' used but not declared for type "std_logic"

modelsim的提示为:
Enumeration literal 'z' is type std.standard.character; expecting type ieee.std_logic_1164.std_logic.
std_logic类型里已经定了了'Z'的啊,为什么就不行呢?

请问大家这里是那里错了,要怎么修改?

最好可以详细解释下

PS:排除了端口类型设置的问题(inout)和赋值符号的问题(<=)
atua 发表于 2011-3-15 09:09 | 显示全部楼层
高阻态不是由时钟触发的,加上个使能信号即可
 楼主| wangjun403 发表于 2011-3-15 10:51 | 显示全部楼层
我这是测试语法问题,随便写的

对应的硬件问题,编译器不可能知道吧
SuperX-man 发表于 2011-3-15 11:22 | 显示全部楼层
本帖最后由 SuperX-man 于 2011-3-15 11:35 编辑

俄.是这样的,如果你需要写成高阻的话.
那个Z必须是大写的.这个属于特殊标志.

scl<='Z';

补充一下,小版我一开始没有注意到你使用的是atlera的quartus8.0.
小版我说的是在xilinx的ISE下是这样的.不过可能是国际通用的.呵呵,你就试试看吧
08211004kun 发表于 2011-3-15 17:28 | 显示全部楼层
顶楼上
 楼主| wangjun403 发表于 2011-3-15 19:59 | 显示全部楼层
谢谢,果然这式样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

629

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

629

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部