首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

变量声明有效性问题

变量声明有效性问题

我对一个过程做如下定义的时候,出来个错误提示 Error (10482): VHDL error at fft_mult.vhd(38): object "a_ext" is used but not declared,显然是因为使用了a_ext ,而a_ext 却在PROCEDURE后定义引起的

PROCEDURE signed_add (signal A,B:IN std_logic_vector;
  signal C:OUT std_logic_vector) is
 BEGIN
  a_ext <= a(WIDTH-1) & a;
     b_ext <= b(WIDTH-1) & b; 
     sum <= a_ext + b_ext;

     c <= sum(WIDTH downto 1);
 END PROCEDURE signed_add;
 signal a_ext        :std_logic_vector(A'high+1 downto 0);
    signal b_ext        :std_logic_vector(A'high+1 downto 0);
    signal sum          :std_logic_vector(A'high+1 downto 0);

为了克服这个问题,我把变量的声明放到PROCEDURE的前面,如下:

signal a_ext        :std_logic_vector(A'high+1 downto 0);
    signal b_ext        :std_logic_vector(A'high+1 downto 0);
    signal sum          :std_logic_vector(A'high+1 downto 0);
 ROCEDURE signed_add (signal A,B:IN std_logic_vector;
  signal C:OUT std_logic_vector) is
 BEGIN
  a_ext <= a(WIDTH-1) & a;
     b_ext <= b(WIDTH-1) & b; 
     sum <= a_ext + b_ext;

     c <= sum(WIDTH downto 1);
 END PROCEDURE signed_add;

却又出来个错误提示:Error (10482): VHDL error at fft_mult.vhd(35): object "A" is used but not declared

天哪,这不是一个先有鸡还是先有蛋的问题吗?请问兄弟们怎么解决?

你把

signal a_ext        :std_logic_vector(A'high+1 downto 0);
    signal b_ext        :std_logic_vector(A'high+1 downto 0);
    signal sum          :std_logic_vector(A'high+1 downto 0);

放到

PROCEDURE signed_add

里面去,而后将信号引出来,试试。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
过程 PROCEDURE 内部不能定义信号类型,而只能定义变量variable !!

哦,对不起

那就定义变量吧,平时基本不用过程!!

那就不用过程吧,在综合器综合时,用进程来表示更好。

过程只是便于书写方便,因为可以调用。

但真正的电路实现更接近于进程。

[此贴子已经被作者于2007-10-7 21:24:03编辑过]

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
那进程中如果遇到多次 组合逻辑的描述,难道你不想使用过程来“封装”这个组合逻辑描述,使程序易于理解吗 ?

“那进程中如果遇到多次 组合逻辑的描述,难道你不想使用过程来“封装”这个组合逻辑描述,使程序易于理解吗 ?”

当然可以,不过也仅限于“易于理解”。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm
返回列表