mdct.vhd

来自「Pure hardware JPEG Encoder design. Packa」· VHDL 代码 · 共 220 行

VHD
220
字号
----------------------------------------------------------------------------------                                                                            ----                          V H D L    F I L E                                ----                          COPYRIGHT (C) 2006-2009                           ----                                                                            -------------------------------------------------------------------------------------- Title       : DCT-- Design      : MDCT Core-- Author      : Michal Krepa-- Company     : None-------------------------------------------------------------------------------------- File        : MDCT.VHD-- Created     : Sat Feb 25 16:12 2006--------------------------------------------------------------------------------------  Description : Discrete Cosine Transform - chip top level (w/ memories)----------------------------------------------------------------------------------library IEEE;  use IEEE.STD_LOGIC_1164.all;library WORK;  use WORK.MDCT_PKG.all;entity MDCT is		port(	  		clk          : in STD_LOGIC;  		rst          : in std_logic;    dcti         : in std_logic_vector(IP_W-1 downto 0);    idv          : in STD_LOGIC;    odv          : out STD_LOGIC;    dcto         : out std_logic_vector(COE_W-1 downto 0);    -- debug    odv1         : out STD_LOGIC;    dcto1        : out std_logic_vector(OP_W-1 downto 0)  				);end MDCT;architecture RTL of MDCT is     signal ramdatao_s           : STD_LOGIC_VECTOR(RAMDATA_W-1 downto 0);  signal ramraddro_s          : STD_LOGIC_VECTOR(RAMADRR_W-1 downto 0);  signal ramwaddro_s          : STD_LOGIC_VECTOR(RAMADRR_W-1 downto 0);  signal ramdatai_s           : STD_LOGIC_VECTOR(RAMDATA_W-1 downto 0);  signal ramwe_s              : STD_LOGIC;    signal romedatao_s          : T_ROM1DATAO;  signal romodatao_s          : T_ROM1DATAO;  signal romeaddro_s          : T_ROM1ADDRO;  signal romoaddro_s          : T_ROM1ADDRO;    signal rome2datao_s         : T_ROM2DATAO;  signal romo2datao_s         : T_ROM2DATAO;  signal rome2addro_s         : T_ROM2ADDRO;  signal romo2addro_s         : T_ROM2ADDRO;    signal odv2_s                : STD_LOGIC;  signal dcto2_s               : STD_LOGIC_VECTOR(OP_W-1 downto 0);    signal trigger2_s            : STD_LOGIC;  signal trigger1_s            : STD_LOGIC;  signal ramdatao1_s           : STD_LOGIC_VECTOR(RAMDATA_W-1 downto 0);  signal ramdatao2_s           : STD_LOGIC_VECTOR(RAMDATA_W-1 downto 0);  signal ramwe1_s              : STD_LOGIC;  signal ramwe2_s              : STD_LOGIC;   signal memswitchrd_s         : STD_LOGIC;  signal memswitchwr_s         : STD_LOGIC;  signal wmemsel_s             : STD_LOGIC;   signal rmemsel_s             : STD_LOGIC;  signal dataready_s           : STD_LOGIC;  signal datareadyack_s        : STD_LOGIC;begin-------------------------------- 1D DCT port map------------------------------U_DCT1D : entity work.DCT1D  port map(	        clk          => clk,               rst          => rst,            dcti         => dcti,         idv          => idv,      romedatao    => romedatao_s,      romodatao    => romodatao_s,        odv          => odv1,      dcto         => dcto1,      romeaddro    => romeaddro_s,      romoaddro    => romoaddro_s,      ramwaddro    => ramwaddro_s,      ramdatai     => ramdatai_s,      ramwe        => ramwe_s,      wmemsel      => wmemsel_s		);-------------------------------- 1D DCT port map------------------------------U_DCT2D : entity work.DCT2D  port map(	        clk          => clk,               rst          => rst,            romedatao    => rome2datao_s,      romodatao    => romo2datao_s,      ramdatao     => ramdatao_s,      dataready    => dataready_s,            odv          => odv,      dcto         => dcto,      romeaddro    => rome2addro_s,      romoaddro    => romo2addro_s,      ramraddro    => ramraddro_s,      rmemsel      => rmemsel_s,      datareadyack => datareadyack_s		);-------------------------------- RAM1 port map------------------------------U1_RAM : entity work.RAM     port map (              d          => ramdatai_s,                       waddr      => ramwaddro_s,             raddr      => ramraddro_s,             we         => ramwe1_s,             clk        => clk,                      q          => ramdatao1_s        );-------------------------------- RAM2 port map------------------------------U2_RAM : entity work.RAM     port map (              d          => ramdatai_s,                       waddr      => ramwaddro_s,             raddr      => ramraddro_s,             we         => ramwe2_s,             clk        => clk,                      q          => ramdatao2_s        );-- double buffer switchramwe1_s     <= ramwe_s when memswitchwr_s = '0' else '0';ramwe2_s     <= ramwe_s when memswitchwr_s = '1' else '0';ramdatao_s   <= ramdatao1_s when memswitchrd_s = '0' else ramdatao2_s;-------------------------------- DBUFCTL------------------------------U_DBUFCTL : entity work.DBUFCTL 		port map(	  		clk            => clk,		rst            => rst,    wmemsel        => wmemsel_s,    rmemsel        => rmemsel_s,    datareadyack   => datareadyack_s,          memswitchwr    => memswitchwr_s,    memswitchrd    => memswitchrd_s,    dataready      => dataready_s		);  -------------------------------- 1st stage ROMs------------------------------  G_ROM_ST1 : for i in 0 to 8 generate  U1_ROME : entity work.ROME   port map(        addr        => romeaddro_s(i),        clk         => clk,                 datao       => romedatao_s(i)  );    U1_ROMO : entity work.ROMO   port map(        addr        => romoaddro_s(i),        clk         => clk,                 datao       => romodatao_s(i)  );end generate G_ROM_ST1;-------------------------------- 2nd stage ROMs------------------------------G_ROM_ST2 : for i in 0 to 10 generate  U2_ROME : entity work.ROME   port map(        addr        => rome2addro_s(i),        clk         => clk,                 datao       => rome2datao_s(i)  );    U2_ROMO : entity work.ROMO   port map(        addr        => romo2addro_s(i),        clk         => clk,                 datao       => romo2datao_s(i)  );end generate G_ROM_ST2;  	end RTL;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?