首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | 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

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

过程 PROCEDURE 内部不能定义信号类型,而只能定义变量variable !!
那进程中如果遇到多次 组合逻辑的描述,难道你不想使用过程来“封装”这个组合逻辑描述,使程序易于理解吗 ?
返回列表