在调试我的代码之后,我已经达到了编译器接受它的程度,但是它抛出了一个模拟器异常。
我遇到的主要问题是初始化临时数组并在最后添加向量。
用于添加的方法是我在一个引用中找到的方法,因为您不能添加STD_LOGIC_VECTORs
谢谢,巴斯基
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.numeric_std.all;
entity signedmult is
port (cand, lier: in std_logic_vector (4 downto 0);
pro: out std_logic_vector (9 downto 0));
end signedmult;
architecture synth of signedmult is
--temp arrays
signal a,b,c,d,e: std_logic_vector(9 downto 0);
begin
process (a,b,c,d,e)
variable j:integer;
begin
for j in 0 to 9 loop
a(j) <= '0';
b(j) <= '0';
c(j) <= '0';
d(j) <= '0';
e(j) <= '0';
end loop;
end process;
process (cand, lier,a,b,c,d,e)
variable i:integer;
begin
for i in 0 to 4 loop
a(i) <= cand(0) and lier(i);
b(i+1) <= cand(1) and lier(i);
c(i+2) <= cand(2) and lier(i);
d(i+3) <= cand(3) and lier(i);
e(i+4) <= cand(4) and lier(i);
end loop;
end process;
a(5) <= a(4); a(6) <= a(4); a(7) <= a(4); a(8) <= a(4);
b(6) <= b(5); b(7) <= b(5); b(8) <= b(5);
c(7) <= c(6); c(8) <= c(6);
d(8) <= d(7);
pro <= std_logic_vector(unsigned(a) + unsigned(b)); -- + c + d + e;
end synth;发布于 2009-03-11 20:01:21
首先,您应该删除std_logic_arith以避免与numeric_std冲突。
一旦完成了,我就不明白为什么你的添加不能工作了。
运行时会出现什么错误?
此外,您还会从多个进程中驱动信号,这很可能会在a和b中产生垃圾。这是导致错误的原因吗?尝试将对临时数组的所有赋值放在一个进程中。
发布于 2009-09-30 18:38:08
快速、简单的方法:
a(9 downto 0) <= (others=>'0');
b(9 downto 0) <= (others=>'0');https://stackoverflow.com/questions/633081
复制相似问题