我正在编写一个VHDL代码来阻塞具有累加器的8位串行加法器。 当我做模拟时,输出总是为零!有时它会给我相同的数字,但有一个转变! 我不知道是什么问题,我试图把A,B作为inout但是也没有工作。请有人帮忙吗。
这是代码:
entity SA is
Port ( st : in std_logic;
A,B: inout std_logic_vector ( 7 downto 0);
clk : in std_logic;
acc : out bit_vector(7 downto 0)); end SA;
architecture Behavioral of SA is
signal ps,ns: integer range 0 to 7;
signal C,D: bit_vector (7 downto 0);
signal ci,ciplus,si,sh:bit;
begin
si<=A(0) xor B(0) xor ci ;
ciplus <=(A(0) and B(0)) or (A(0) and ci ) or ( B(0) and ci );
process(ps,st)
begin
case ps is
when 0=> if(st='0')then
ns<=0;
else
ns<=1;
sh<='1';
end if;
when 1 to 6 => sh<='1';
ns<= ps+1;
when 7=> sh<='1';
ns <=0;
end case;
end process;
process(clk)
begin
if(clk 'event and clk ='1')then
ps <= ns;
ci<= ciplus;
end if;
if(sh='1') then
C<=si & A(7 downto 1) ;
D<=B(0) & B(7 downto 1);
end if;
end process;
acc<= C;
end Behavioral;
`
答案 0 :(得分:1)
您的第二个流程写错了。在编写流程之前,您应始终确定流程是顺序流程还是组合流程,然后相应地编写流程。
为了帮助您编写代码,特别是在开始使用硬件描述语言时,请始终首先绘制一个框图,然后使用VHDL描述该框图。
实际上,你的第二个过程是:
你的第一个过程有类似的问题。
答案 1 :(得分:0)
尝试初始化ps和ns看看我是不是现在在我的手机上的技巧所以我无法模拟帮助但是通常我在VHDL设计中的问题是形式未经整数的整数
signal ps,ns: integer range 0 to 7:=0;
您可能需要查看警告列表,看看是否有帮助