今天发现一个很大的问题,我程序中的逻辑和quartus 编译器波形仿真图刚好相反,向老师请教了下,他看了下说偶然有这种情况是正常的,但是我一连编译了很多次,拨行图一直这样反着,难道某种格式她句容易看反了吗?? 我以前用着一直没有问题的,今天郁闷了!! 程序如下,附件为波形图,希望哪位用别的仿真器帮我看看效果是不是一样的?? 主要是 start 和 ram_en 的两个波形有问题(和程序对照看)
P1_data:process(clk,start,Radix_fb) variable wr_count :std_logic_vector(7 downto 0):= (others=>'0'); begin if(start='1') then -- 高电平初始化 ram_en <='1';ram_wr_en<='1';wr_count := (others=>'0'); -- 第一阶段 finish <= '0'; elsif(Radix_fb='1' and ram_en='0') then -- 第二阶段反馈,即进入第三阶段 ram_en <='1';ram_wr_en<='0';wr_count := (others=>'0'); -- 第三阶段 finish <= '1'; -- 高电平时接收到数据为正确的结果 else if(clk'event and clk='1' and ram_en='1') then -- 在一、三阶段 if(wr_count="11111111")then if ram_wr_en='1' then -- 第一阶段 P1_wr_adr <= wr_count; P1_re_in <= re_in;P1_im_in <= re_in;-- 从数据线上接收数据 ram_en <='0'; -- 进入第二阶段 else P1_rd_adr <= wr_count; re_out <= P1_re_out;im_out <= P1_im_out;-- 把结果送回数据线 end if; finish <='0'; else if ram_wr_en='1' then P1_wr_adr <= wr_count; P1_re_in <= re_in;P1_im_in <= re_in; else P1_rd_adr <= wr_count; re_out <= P1_re_out;im_out <= P1_im_out; end if; wr_count := wr_count+'1'; end if; -- wr_count end if; -- clk end if; -- start end process P1_data; |