- Inhibit RAM write if FIFO is full
- Inhibit update of output if last word is read git-svn-id: http://moon:8086/svn/vhdl/trunk@38 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
@@ -52,21 +52,25 @@ end fifo_sync;
|
|||||||
|
|
||||||
architecture Behavioral of fifo_sync is
|
architecture Behavioral of fifo_sync is
|
||||||
|
|
||||||
signal mem_we : STD_LOGIC;
|
signal mem_wr_en : STD_LOGIC;
|
||||||
|
signal mem_rd_en : STD_LOGIC;
|
||||||
signal ptr_w : unsigned (addr_width-1 downto 0);
|
signal ptr_w : unsigned (addr_width-1 downto 0);
|
||||||
signal ptr_r : unsigned (addr_width-1 downto 0);
|
signal ptr_r : unsigned (addr_width-1 downto 0);
|
||||||
signal full : STD_LOGIC;
|
signal full : STD_LOGIC;
|
||||||
signal empty : STD_LOGIC;
|
signal empty : STD_LOGIC;
|
||||||
signal almost_full : STD_LOGIC;
|
signal almost_full : STD_LOGIC;
|
||||||
signal almost_empty : STD_LOGIC;
|
signal almost_empty : STD_LOGIC;
|
||||||
|
signal pre_full : STD_LOGIC;
|
||||||
|
signal pre_empty : STD_LOGIC;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
mem_we <= we;
|
mem_wr_en <= not full;
|
||||||
fifo_full <= full;
|
mem_rd_en <= not pre_empty;
|
||||||
fifo_empty <= empty;
|
fifo_full <= full;
|
||||||
fifo_afull <= almost_full;
|
fifo_empty <= empty;
|
||||||
fifo_aempty <= almost_empty;
|
fifo_afull <= almost_full;
|
||||||
|
fifo_aempty <= almost_empty;
|
||||||
|
|
||||||
inst_sync_fifo_ctrl: entity work.sync_fifo_ctrl
|
inst_sync_fifo_ctrl: entity work.sync_fifo_ctrl
|
||||||
GENERIC MAP
|
GENERIC MAP
|
||||||
@@ -77,16 +81,18 @@ begin
|
|||||||
)
|
)
|
||||||
PORT MAP
|
PORT MAP
|
||||||
(
|
(
|
||||||
rst => rst,
|
rst => rst,
|
||||||
clk => clk,
|
clk => clk,
|
||||||
we => we,
|
we => we,
|
||||||
re => re,
|
re => re,
|
||||||
ptr_w => ptr_w,
|
ptr_w => ptr_w,
|
||||||
ptr_r => ptr_r,
|
ptr_r => ptr_r,
|
||||||
fifo_full => full,
|
fifo_full => full,
|
||||||
fifo_empty => empty,
|
fifo_empty => empty,
|
||||||
fifo_afull => almost_full,
|
fifo_pre_full => pre_full,
|
||||||
fifo_aempty => almost_empty
|
fifo_pre_empty => pre_empty,
|
||||||
|
fifo_afull => almost_full,
|
||||||
|
fifo_aempty => almost_empty
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -98,9 +104,9 @@ begin
|
|||||||
PORT MAP(
|
PORT MAP(
|
||||||
clka => clk,
|
clka => clk,
|
||||||
clkb => clk,
|
clkb => clk,
|
||||||
en_a => '1',
|
en_a => mem_wr_en,
|
||||||
en_b => '1',
|
en_b => mem_rd_en,
|
||||||
we_a => mem_we,
|
we_a => we,
|
||||||
addr_a => ptr_w,
|
addr_a => ptr_w,
|
||||||
addr_b => ptr_r,
|
addr_b => ptr_r,
|
||||||
din_a => data_w,
|
din_a => data_w,
|
||||||
|
|||||||
Reference in New Issue
Block a user