我对一个过程做如下定义的时候,出来个错误提示 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
里面去,而后将信号引出来,试试。
哦,对不起
那就定义变量吧,平时基本不用过程!!
那就不用过程吧,在综合器综合时,用进程来表示更好。
过程只是便于书写方便,因为可以调用。
但真正的电路实现更接近于进程。
[此贴子已经被作者于2007-10-7 21:24:03编辑过]
“那进程中如果遇到多次 组合逻辑的描述,难道你不想使用过程来“封装”这个组合逻辑描述,使程序易于理解吗 ?”
当然可以,不过也仅限于“易于理解”。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |