OpenCores
URL https://opencores.org/ocsvn/mdct/mdct/trunk

Subversion Repositories mdct

[/] [mdct/] [tags/] [MDCT_REL_B1_4/] [source/] [DCT1D.vhd] - Diff between revs 2 and 4

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 2 Rev 4
Line 120... Line 120...
  signal ramdatai_s     : STD_LOGIC_VECTOR(RAMDATA_W-1 downto 0);
  signal ramdatai_s     : STD_LOGIC_VECTOR(RAMDATA_W-1 downto 0);
  signal ramwe_s        : STD_LOGIC;
  signal ramwe_s        : STD_LOGIC;
  signal latch_done_reg : STD_LOGIC;
  signal latch_done_reg : STD_LOGIC;
  signal requestwr_reg  : STD_LOGIC;
  signal requestwr_reg  : STD_LOGIC;
  signal releasewr_reg  : STD_LOGIC;
  signal releasewr_reg  : STD_LOGIC;
  signal ready_prev_reg : STD_LOGIC;
 
  signal completed_reg  : STD_LOGIC;
  signal completed_reg  : STD_LOGIC;
  signal col_tmp_reg    : UNSIGNED(RAMADRR_W/2-1 downto 0);
  signal col_tmp_reg    : UNSIGNED(RAMADRR_W/2-1 downto 0);
begin
begin
 
 
  ready_sg:
  ready_sg:
Line 157... Line 156...
      ready_reg      <= '0';
      ready_reg      <= '0';
      latchbuf_reg   <= (others => (others => '0'));
      latchbuf_reg   <= (others => (others => '0'));
      istate_reg     <= IDLE_I;
      istate_reg     <= IDLE_I;
      latch_done_reg <= '0';
      latch_done_reg <= '0';
      requestwr_reg  <= '0';
      requestwr_reg  <= '0';
      ready_prev_reg <= '0';
 
    elsif clk = '1' and clk'event then
    elsif clk = '1' and clk'event then
 
 
      ready_prev_reg <= ready_reg;
 
 
 
      case istate_reg is
      case istate_reg is
 
 
        when IDLE_I =>
        when IDLE_I =>
          if idv = '1' then
          if idv = '1' then
            requestwr_reg <= '1';
            requestwr_reg <= '1';
Line 231... Line 227...
      col_reg       <= (others => '0');
      col_reg       <= (others => '0');
      row_reg       <= (others => '0');
      row_reg       <= (others => '0');
      state_reg     <= IDLE;
      state_reg     <= IDLE;
      cnt_reg       <= (others => '0');
      cnt_reg       <= (others => '0');
      databuf_reg   <= (others => (others => '0'));
      databuf_reg   <= (others => (others => '0'));
      romeaddro0    <= (others => '0');
 
      romeaddro1    <= (others => '0');
 
      romeaddro2    <= (others => '0');
 
      romeaddro3    <= (others => '0');
 
      romeaddro4    <= (others => '0');
 
      romeaddro5    <= (others => '0');
 
      romeaddro6    <= (others => '0');
 
      romeaddro7    <= (others => '0');
 
      romeaddro8    <= (others => '0');
 
      romoaddro0    <= (others => '0');
 
      romoaddro1    <= (others => '0');
 
      romoaddro2    <= (others => '0');
 
      romoaddro3    <= (others => '0');
 
      romoaddro4    <= (others => '0');
 
      romoaddro5    <= (others => '0');
 
      romoaddro6    <= (others => '0');
 
      romoaddro7    <= (others => '0');
 
      romoaddro8    <= (others => '0');
 
      ramwaddro     <= (others => '0');
      ramwaddro     <= (others => '0');
      ramdatai_s    <= (others => '0');
      ramdatai_s    <= (others => '0');
      ramwe_s       <= '0';
      ramwe_s       <= '0';
      releasewr_reg <= '0';
      releasewr_reg <= '0';
      completed_reg <= '0';
      completed_reg <= '0';
Line 289... Line 267...
        ----------------------
        ----------------------
        when GET_ROM =>
        when GET_ROM =>
 
 
           ramwe_s   <='0';
           ramwe_s   <='0';
 
 
           -- read precomputed MAC results from LUT
 
           romeaddro0 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(0) &
 
                     databuf_reg(1)(0) &
 
                     databuf_reg(2)(0) &
 
                     databuf_reg(3)(0);
 
           romeaddro1 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(1) &
 
                     databuf_reg(1)(1) &
 
                     databuf_reg(2)(1) &
 
                     databuf_reg(3)(1);
 
           romeaddro2 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(2) &
 
                     databuf_reg(1)(2) &
 
                     databuf_reg(2)(2) &
 
                     databuf_reg(3)(2);
 
           romeaddro3 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(3) &
 
                     databuf_reg(1)(3) &
 
                     databuf_reg(2)(3) &
 
                     databuf_reg(3)(3);
 
           romeaddro4  <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(4) &
 
                     databuf_reg(1)(4) &
 
                     databuf_reg(2)(4) &
 
                     databuf_reg(3)(4);
 
           romeaddro5  <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(5) &
 
                     databuf_reg(1)(5) &
 
                     databuf_reg(2)(5) &
 
                     databuf_reg(3)(5);
 
           romeaddro6  <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(6) &
 
                     databuf_reg(1)(6) &
 
                     databuf_reg(2)(6) &
 
                     databuf_reg(3)(6);
 
           romeaddro7  <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(7) &
 
                     databuf_reg(1)(7) &
 
                     databuf_reg(2)(7) &
 
                     databuf_reg(3)(7);
 
           romeaddro8  <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(0)(8) &
 
                     databuf_reg(1)(8) &
 
                     databuf_reg(2)(8) &
 
                     databuf_reg(3)(8);
 
 
 
           state_reg <= SUM;
           state_reg <= SUM;
 
 
        ---------------------
        ---------------------
        -- do distributed arithmetic sum on even part,
        -- do distributed arithmetic sum on even part,
        -- write even part to RAM
        -- write even part to RAM
Line 363... Line 294...
          ramwaddro <= STD_LOGIC_VECTOR(col_reg & row_reg);
          ramwaddro <= STD_LOGIC_VECTOR(col_reg & row_reg);
 
 
          col_reg <= col_reg + 1;
          col_reg <= col_reg + 1;
          col_tmp_reg <= col_reg + 2;
          col_tmp_reg <= col_reg + 2;
 
 
          romoaddro0 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(0) &
 
                     databuf_reg(5)(0) &
 
                     databuf_reg(6)(0) &
 
                     databuf_reg(7)(0);
 
          romoaddro1 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(1) &
 
                     databuf_reg(5)(1) &
 
                     databuf_reg(6)(1) &
 
                     databuf_reg(7)(1);
 
          romoaddro2 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(2) &
 
                     databuf_reg(5)(2) &
 
                     databuf_reg(6)(2) &
 
                     databuf_reg(7)(2);
 
          romoaddro3 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(3) &
 
                     databuf_reg(5)(3) &
 
                     databuf_reg(6)(3) &
 
                     databuf_reg(7)(3);
 
          romoaddro4 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(4) &
 
                     databuf_reg(5)(4) &
 
                     databuf_reg(6)(4) &
 
                     databuf_reg(7)(4);
 
          romoaddro5 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(5) &
 
                     databuf_reg(5)(5) &
 
                     databuf_reg(6)(5) &
 
                     databuf_reg(7)(5);
 
          romoaddro6 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(6) &
 
                     databuf_reg(5)(6) &
 
                     databuf_reg(6)(6) &
 
                     databuf_reg(7)(6);
 
          romoaddro7 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(7) &
 
                     databuf_reg(5)(7) &
 
                     databuf_reg(6)(7) &
 
                     databuf_reg(7)(7);
 
          romoaddro8 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
                     databuf_reg(4)(8) &
 
                     databuf_reg(5)(8) &
 
                     databuf_reg(6)(8) &
 
                     databuf_reg(7)(8);
 
          state_reg <= WRITE_ODD;
          state_reg <= WRITE_ODD;
 
 
        ---------------------
        ---------------------
        -- do distributed arithmetic sum on odd part,
        -- do distributed arithmetic sum on odd part,
        -- write odd part to RAM
        -- write odd part to RAM
Line 437... Line 324...
          -- reverse col/row order for transposition purpose
          -- reverse col/row order for transposition purpose
          ramwaddro <= STD_LOGIC_VECTOR(col_reg & row_reg);
          ramwaddro <= STD_LOGIC_VECTOR(col_reg & row_reg);
 
 
          -- move to next column
          -- move to next column
          col_reg <= col_reg + 1;
          col_reg <= col_reg + 1;
 
          col_tmp_reg <= col_reg + 1;
 
 
          -- finished processing one input row
          -- finished processing one input row
          if col_reg = N - 1 then
          if col_reg = N - 1 then
            row_reg         <= row_reg + 1;
            row_reg         <= row_reg + 1;
            col_reg         <= (others => '0');
            col_reg         <= (others => '0');
 
            col_tmp_reg     <= (others => '0');
            if row_reg = N - 1 then
            if row_reg = N - 1 then
              releasewr_reg <= '1';
              releasewr_reg <= '1';
              completed_reg <= '1';
              completed_reg <= '1';
            end if;
            end if;
            state_reg  <= IDLE;
            state_reg  <= IDLE;
          else
          else
 
 
 
            state_reg <= SUM;
 
 
 
          end if;
 
        --------------------------------
 
        -- OTHERS
 
        --------------------------------
 
        when others =>
 
          state_reg  <= IDLE;
 
      end case;
 
    end if;
 
  end process;
 
 
            -- read precomputed MAC results from LUT
            -- read precomputed MAC results from LUT
            romeaddro0 <= STD_LOGIC_VECTOR(col_tmp_reg(RAMADRR_W/2-1 downto 1)) &
            romeaddro0 <= STD_LOGIC_VECTOR(col_tmp_reg(RAMADRR_W/2-1 downto 1)) &
                     databuf_reg(0)(0) &
                     databuf_reg(0)(0) &
                     databuf_reg(1)(0) &
                     databuf_reg(1)(0) &
                     databuf_reg(2)(0) &
                     databuf_reg(2)(0) &
Line 496... Line 397...
                     databuf_reg(0)(8) &
                     databuf_reg(0)(8) &
                     databuf_reg(1)(8) &
                     databuf_reg(1)(8) &
                     databuf_reg(2)(8) &
                     databuf_reg(2)(8) &
                     databuf_reg(3)(8);
                     databuf_reg(3)(8);
 
 
            state_reg <= SUM;
 
 
 
          end if;
  -- odd
        --------------------------------
  romoaddro0 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
        -- OTHERS
             databuf_reg(4)(0) &
        --------------------------------
             databuf_reg(5)(0) &
        when others =>
             databuf_reg(6)(0) &
          state_reg  <= IDLE;
             databuf_reg(7)(0);
      end case;
  romoaddro1 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
    end if;
             databuf_reg(4)(1) &
  end process;
             databuf_reg(5)(1) &
 
             databuf_reg(6)(1) &
 
             databuf_reg(7)(1);
 
  romoaddro2 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
             databuf_reg(4)(2) &
 
             databuf_reg(5)(2) &
 
             databuf_reg(6)(2) &
 
             databuf_reg(7)(2);
 
  romoaddro3 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
             databuf_reg(4)(3) &
 
             databuf_reg(5)(3) &
 
             databuf_reg(6)(3) &
 
             databuf_reg(7)(3);
 
  romoaddro4 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
             databuf_reg(4)(4) &
 
             databuf_reg(5)(4) &
 
             databuf_reg(6)(4) &
 
             databuf_reg(7)(4);
 
  romoaddro5 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
             databuf_reg(4)(5) &
 
             databuf_reg(5)(5) &
 
             databuf_reg(6)(5) &
 
             databuf_reg(7)(5);
 
  romoaddro6 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
             databuf_reg(4)(6) &
 
             databuf_reg(5)(6) &
 
             databuf_reg(6)(6) &
 
             databuf_reg(7)(6);
 
  romoaddro7 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
             databuf_reg(4)(7) &
 
             databuf_reg(5)(7) &
 
             databuf_reg(6)(7) &
 
             databuf_reg(7)(7);
 
  romoaddro8 <= STD_LOGIC_VECTOR(col_reg(RAMADRR_W/2-1 downto 1)) &
 
             databuf_reg(4)(8) &
 
             databuf_reg(5)(8) &
 
             databuf_reg(6)(8) &
 
             databuf_reg(7)(8);
 
 
end RTL;
end RTL;
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.