vhdl代码有点问题,求助

潺月 2014-03-03 09:17:32
其中的一段代码,报错
Error (10500): VHDL syntax error at nlm.vhd(258) near text "PROCESS"; expecting "(", or an identifier ("process" is a reserved keyword), or a sequential statement
Error (10500): VHDL syntax error at nlm.vhd(259) near text "VARIABLE"; expecting ":=", or "<="
Error (10500): VHDL syntax error at nlm.vhd(260) near text "BEGIN"; expecting "end", or "(", or an identifier ("begin" is a reserved keyword), or a sequential statement
Error (10500): VHDL syntax error at nlm.vhd(270) near text "process"; expecting "if"




p3: PROCESS(OUT_tran) -- ourput image data
VARIABLE line_v : LINE;
BEGIN
if (OUT_tran'event and OUT_tran='1') then
for i in 1 to row/w loop
for j in 1 to col/w loop
write( line_v, OUT_data( i,j) );
write( line_v, ' ');
end loop;
writeline( OUTfile, line_v);
end loop;
end if;
end process p3;
...全文
467 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huhubear 2014-03-11
  • 打赏
  • 举报
回复
语法错误,请自查
Falcon7x 2014-03-10
  • 打赏
  • 举报
回复
FUNCTION make_kernel(f: IN INTEGER ) RETURN OUT_data FUNCTION body里面再定义一下OUT_data :OUT matrix3
潺月 2014-03-09
  • 打赏
  • 举报
回复
Package image IS CONSTANT row : INTEGER := 512; CONSTANT col : INTEGER := 512; CONSTANT f : INTEGER := 3; CONSTANT t : INTEGER := 10; CONSTANT h : INTEGER := 25; TYPE matrix1 is array (0 to row-1, 0 to col-1) OF INTEGER; TYPE matrix2 is array (0 to row+5, 0 to col+5) OF INTEGER; TYPE matrix3 is array (0 to 2*f, 0 to 2*f) OF REAl; TYPE matrix4 is array (0 to row+2*f-1, 0 to col+2*f-1) OF INTEGER; END image;
Falcon7x 2014-03-08
  • 打赏
  • 举报
回复
引用 7 楼 u012161844 的回复:
[quote=引用 5 楼 jeremy_jiang 的回复:] 能玩PACKAGE的也算高手了。你东西贴的不全,别人只能猜了。但愿对你有些帮助。 Library WORK的内容是系统编译后才有的,不知你清楚不清楚这点。你的出错信息是OUT_data type没定义。显然是指MATRIX3没定义。你说MATRIX3在image这个包里面定义了,但image是在Library WORK里面的,这就要求你要先编译image到WORK库里,并且image必须是一个PACKAGE BODY。
先编译image到WORK库里,这步怎么做啊?另外,PACKAGE不是可以没有body的吗?引用TEXTIO用的是USE IEEE.TEXTIO.ALL; [/quote] 如果用Modelsim,是可以定义模块文件的编译顺序的。 另MATRIX3在image包里面是如何定义的?
潺月 2014-03-07
  • 打赏
  • 举报
回复
引用 5 楼 jeremy_jiang 的回复:
能玩PACKAGE的也算高手了。你东西贴的不全,别人只能猜了。但愿对你有些帮助。 Library WORK的内容是系统编译后才有的,不知你清楚不清楚这点。你的出错信息是OUT_data type没定义。显然是指MATRIX3没定义。你说MATRIX3在image这个包里面定义了,但image是在Library WORK里面的,这就要求你要先编译image到WORK库里,并且image必须是一个PACKAGE BODY。
先编译image到WORK库里,这步怎么做啊?另外,PACKAGE不是可以没有body的吗?引用TEXTIO用的是USE IEEE.TEXTIO.ALL;
Falcon7x 2014-03-06
  • 打赏
  • 举报
回复
另:TEXTIO库在哪里引用的,write语句是TEXTIO库里的吧?
Falcon7x 2014-03-06
  • 打赏
  • 举报
回复
能玩PACKAGE的也算高手了。你东西贴的不全,别人只能猜了。但愿对你有些帮助。 Library WORK的内容是系统编译后才有的,不知你清楚不清楚这点。你的出错信息是OUT_data type没定义。显然是指MATRIX3没定义。你说MATRIX3在image这个包里面定义了,但image是在Library WORK里面的,这就要求你要先编译image到WORK库里,并且image必须是一个PACKAGE BODY。
Falcon7x 2014-03-05
  • 打赏
  • 举报
回复
你这段应该是仿真的Test bench,if语句用于IMPLEMENTATION(实现)编程。所以要用Wait until 代替 if (OUT_tran'event and OUT_tran='1') then。加上PROCESS(OUT_tran)不要(OUT_tran)只要PROCESS不能有任何变量。 再则你开头引用了包含writeline原型语句的库没有?
潺月 2014-03-05
  • 打赏
  • 举报
回复
改完这个模块又有问题了: Error (10479): VHDL error at nlm.vhd(20): OUT_data type is used but not declared 我明明定义了啊,而且MATRIX3也在image这个包里面定义了 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE WORK.IMAGE.ALL; PACKAGE pack_exam1 IS SIGNAL OUT_data: MATRIX3; FUNCTION make_kernel(f: IN INTEGER ) RETURN OUT_data; END pack_exam1; --函数体声明 PACKAGE BODY pack_exam1 IS VARIABLE v:REAL; FUNCTION make_kernel(f: IN INTEGER ) RETURN OUT_data IS BEGIN for d in 1 to f loop v:=1/((2*d+1)*(2*d+1)); for i in -d to d loop for j in -d to d loop OUT_data(f+1-i,f+1-j)<=OUT_data(f+1-i,f+1-j)+v; end loop; end loop; end loop; for i in 0 to 2*f loop for j in 0 to 2*f loop OUT_data(i,j)<=OUT_data(i,j)/f; end loop; end loop; END FUNCTION make_kernel; END pack_exam1;
潺月 2014-03-05
  • 打赏
  • 举报
回复
我才发现是OUT_tran没有赋值,改了就好了
falloutmx 2014-03-04
  • 打赏
  • 举报
回复
OUT_tran怎么定义的?

6,169

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧