调用quartusII下的异步fifo后单独进行时序仿真不正确的原因 10
我调用了quartusII下的异步fifo,然后编写了简单的fifo控制器,进行功能仿真正确但进行时序仿真的时候在输出的数据之间总会有那么0.几纳秒会输出奇怪的数,貌似是...
我调用了quartusII下的异步fifo, 然后编写了简单的fifo控制器 ,进行功能仿真正确但进行时序仿真的时候在输出的数据之间总会有那么0.几纳秒会输出奇怪的数,貌似是因为datatout中的某一位提前变化了。 问如何去解决这个问题呢?我的clk给的是30ns,wrclk是20ns,rdclk是10ns,datain为30ns。控制程序只用到了wrusedw和rdusedw来判断。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity fifoctrl is
port(
clk: in std_logic;
rst: in std_logic;
wren:buffer std_logic;
rden: buffer std_logic;
wrusedw: in std_logic_vector(7 downto 0);
rdusedw: in std_logic_vector(7 downto 0)
-- wrfull:in std_logic;
-- rdempty:in std_logic
);
end entity;
architecture behav of fifoctrl is
begin
process(rst,clk)
begin
if rst='1' then
wren<='0';
rden<='0';
elsif clk'event and clk='1' then
wren<='1';
if(wrusedw> 200) then
wren<='0';
rden<='1';
elsif(rdusedw>200)then
wren<='1';
rden<='0';
end if;
end if;
end process;
end behav;
希望高手给予指点 展开
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity fifoctrl is
port(
clk: in std_logic;
rst: in std_logic;
wren:buffer std_logic;
rden: buffer std_logic;
wrusedw: in std_logic_vector(7 downto 0);
rdusedw: in std_logic_vector(7 downto 0)
-- wrfull:in std_logic;
-- rdempty:in std_logic
);
end entity;
architecture behav of fifoctrl is
begin
process(rst,clk)
begin
if rst='1' then
wren<='0';
rden<='0';
elsif clk'event and clk='1' then
wren<='1';
if(wrusedw> 200) then
wren<='0';
rden<='1';
elsif(rdusedw>200)then
wren<='1';
rden<='0';
end if;
end if;
end process;
end behav;
希望高手给予指点 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询