dct8_medium.vhd
来自「算术处理器的VERILOG hdl的源代码」· VHDL 代码 · 共 2,683 行 · 第 1/5 页
VHD
2,683 行
LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY ROM1C IS PORT( addr2 : IN unsigned (1 DOWNTO 0) ; compl : IN std_ulogic ; enable_rom : IN std_ulogic ; coeff_out : OUT unsigned (11 downto 0) );-- DeclarationsEND ROM1C ;---- ROM coefficients for calculating X00ARCHITECTURE behave_rom OF ROM1C IStype ROM_array is array (7 downto 0) of unsigned(11 downto 0);signal coeff: ROM_array;signal addr : integer range 0 to 7;--signal comptemp : unsigned(1 downto 0);BEGINcoeff(0) <= "010110101000"; -- Acoeff(1) <= "011101100100"; -- Bcoeff(2) <= "010110101000"; -- Acoeff(3) <= "001100010000"; -- C-- Complementary valuescoeff(4) <= "101001011000"; -- -Acoeff(5) <= "100010011100"; -- -Bcoeff(6) <= "101001011000"; -- -Acoeff(7) <= "110011110000"; -- -C--comptemp <= CONV_UNSIGNED(compl,2);--addr <= CONV_INTEGER(comptemp&addr2);addr <= CONV_INTEGER(compl&addr2);--with enable_rom select-- coeff_out <= "000000000000" when '0',-- coeff(addr) when '1',-- "000000000000" when others; coeff_out <= coeff(addr) when enable_rom = '1' else "000000000000"; END behave_rom;----LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY ROMC_01 IS PORT( addr2 : IN unsigned (1 downto 0) ; compl : IN std_ulogic ; enable_rom : IN std_ulogic ; coeff_out : OUT unsigned (11 DOWNTO 0) );-- DeclarationsEND ROMC_01 ;----ARCHITECTURE beh OF ROMC_01 IStype ROM_array is array (7 downto 0) of unsigned(11 downto 0);signal coeff: ROM_array;signal addr : integer range 0 to 7;--signal comptemp : unsigned(1 downto 0);signal ap : unsigned(11 downto 0) := "010110101000";signal bp : unsigned(11 downto 0) := "011101100100";signal cp : unsigned(11 downto 0) := "001100010000";signal dp : unsigned(11 downto 0) := "011111011001";signal ep : unsigned(11 downto 0) := "011010100111";signal fp : unsigned(11 downto 0) := "010001110010";signal gp : unsigned(11 downto 0) := "000110010000";signal am : unsigned(11 downto 0) := "101001011000";signal bm : unsigned(11 downto 0) := "100010011100";signal cm : unsigned(11 downto 0) := "110011110000";signal dm : unsigned(11 downto 0) := "100000100111";-- signal em : unsigned(11 downto 0) := "100101011001"; -- NOT usedsignal fm : unsigned(11 downto 0) := "101110001110";signal gm : unsigned(11 downto 0) := "111001110000";BEGINcoeff(0) <= ap; -- Acoeff(1) <= cp; -- Ccoeff(2) <= am; -- -Acoeff(3) <= bm; -- -B-- Complementary valuescoeff(4) <= am; -- -Acoeff(5) <= cm; -- -Ccoeff(6) <= ap; -- Acoeff(7) <= bp; -- B--comptemp <= CONV_UNSIGNED(compl,2);--addr <= CONV_INTEGER(comptemp&addr2);addr <= CONV_INTEGER(compl&addr2);--with enable_rom select-- coeff_out <= "000000000000" when '0',-- coeff(addr) when '1',-- "000000000000" when others; with enable_rom selectcoeff_out <= coeff(addr) when '1', "000000000000" when others; END beh;----LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY ROMC_02 IS PORT( addr2 : IN unsigned (1 DOWNTO 0) ; compl : IN std_ulogic ; enable_rom : IN std_ulogic ; coeff_out : OUT unsigned (11 DOWNTO 0) );-- DeclarationsEND ROMC_02 ;----ARCHITECTURE beh OF ROMC_02 IStype ROM_array is array (7 downto 0) of unsigned(11 downto 0);signal coeff: ROM_array;signal addr : integer range 0 to 7;--signal comptemp : unsigned(1 downto 0);signal ap : unsigned(11 downto 0) := "010110101000";signal bp : unsigned(11 downto 0) := "011101100100";signal cp : unsigned(11 downto 0) := "001100010000";signal dp : unsigned(11 downto 0) := "011111011001";signal ep : unsigned(11 downto 0) := "011010100111";signal fp : unsigned(11 downto 0) := "010001110010";signal gp : unsigned(11 downto 0) := "000110010000";signal am : unsigned(11 downto 0) := "101001011000";signal bm : unsigned(11 downto 0) := "100010011100";signal cm : unsigned(11 downto 0) := "110011110000";signal dm : unsigned(11 downto 0) := "100000100111";-- signal em : unsigned(11 downto 0) := "100101011001"; -- NOT usedsignal fm : unsigned(11 downto 0) := "101110001110";signal gm : unsigned(11 downto 0) := "111001110000";BEGINcoeff(0) <= ap; -- Acoeff(1) <= cm; -- -Ccoeff(2) <= am; -- -Acoeff(3) <= bp; -- B-- Complementary valuescoeff(4) <= am; -- -Acoeff(5) <= cp; -- Ccoeff(6) <= ap; -- Acoeff(7) <= bm; -- -B--comptemp <= CONV_UNSIGNED(compl,2);--addr <= CONV_INTEGER(comptemp&addr2);addr <= CONV_INTEGER(compl&addr2);--with enable_rom select-- coeff_out <= "000000000000" when '0',-- coeff(addr) when '1',-- "000000000000" when others; with enable_rom selectcoeff_out <= coeff(addr) when '1', "000000000000" when others; END beh;----LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY ROMC_03 IS PORT( addr2 : IN unsigned (1 DOWNTO 0) ; compl : IN std_ulogic ; enable_rom : IN std_ulogic ; coeff_out : OUT unsigned (11 DOWNTO 0) );-- DeclarationsEND ROMC_03 ;----ARCHITECTURE beh OF ROMC_03 IStype ROM_array is array (7 downto 0) of unsigned(11 downto 0);signal coeff: ROM_array;signal addr : integer range 0 to 7;--signal comptemp : unsigned(1 downto 0);signal ap : unsigned(11 downto 0) := "010110101000";signal bp : unsigned(11 downto 0) := "011101100100";signal cp : unsigned(11 downto 0) := "001100010000";signal dp : unsigned(11 downto 0) := "011111011001";signal ep : unsigned(11 downto 0) := "011010100111";signal fp : unsigned(11 downto 0) := "010001110010";signal gp : unsigned(11 downto 0) := "000110010000";signal am : unsigned(11 downto 0) := "101001011000";signal bm : unsigned(11 downto 0) := "100010011100";signal cm : unsigned(11 downto 0) := "110011110000";signal dm : unsigned(11 downto 0) := "100000100111";-- signal em : unsigned(11 downto 0) := "100101011001"; -- NOT usedsignal fm : unsigned(11 downto 0) := "101110001110";signal gm : unsigned(11 downto 0) := "111001110000";BEGINcoeff(0) <= ap; -- Acoeff(1) <= bm; -- -Bcoeff(2) <= ap; -- Acoeff(3) <= cm; -- -C-- Complementary valuescoeff(4) <= am; -- -Acoeff(5) <= bp; -- Bcoeff(6) <= am; -- -Acoeff(7) <= cp; -- C--comptemp <= CONV_UNSIGNED(compl,2);--addr <= CONV_INTEGER(comptemp&addr2);addr <= CONV_INTEGER(compl&addr2);--with enable_rom select-- coeff_out <= "000000000000" when '0',-- coeff(addr) when '1',-- "000000000000" when others; with enable_rom selectcoeff_out <= coeff(addr) when '1', "000000000000" when others; END beh;----LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY ROMC_e0 IS PORT( addr2 : IN unsigned (1 DOWNTO 0) ; compl : IN std_ulogic ; enable_rom : IN std_ulogic ; coeff_out : OUT unsigned (11 DOWNTO 0) );-- DeclarationsEND ROMC_e0 ;----ARCHITECTURE beh OF ROMC_e0 IStype ROM_array is array (7 downto 0) of unsigned(11 downto 0);signal coeff: ROM_array;signal addr : integer range 0 to 7;--signal comptemp : unsigned(1 downto 0);signal ap : unsigned(11 downto 0) := "010110101000";signal bp : unsigned(11 downto 0) := "011101100100";signal cp : unsigned(11 downto 0) := "001100010000";signal dp : unsigned(11 downto 0) := "011111011001";signal ep : unsigned(11 downto 0) := "011010100111";signal fp : unsigned(11 downto 0) := "010001110010";signal gp : unsigned(11 downto 0) := "000110010000";signal am : unsigned(11 downto 0) := "101001011000";signal bm : unsigned(11 downto 0) := "100010011100";signal cm : unsigned(11 downto 0) := "110011110000";signal dm : unsigned(11 downto 0) := "100000100111";signal em : unsigned(11 downto 0) := "100101011001"; -- NOT usedsignal fm : unsigned(11 downto 0) := "101110001110";signal gm : unsigned(11 downto 0) := "111001110000";BEGINcoeff(0) <= dp; -- Dcoeff(1) <= ep; -- Ecoeff(2) <= fp; -- Fcoeff(3) <= gp; -- G-- Complementary valuescoeff(4) <= dm; -- -Dcoeff(5) <= em; -- -Ecoeff(6) <= fm; -- -Fcoeff(7) <= gm; -- -G--comptemp <= CONV_UNSIGNED(compl,2);--addr <= CONV_INTEGER(comptemp&addr2);addr <= CONV_INTEGER(compl&addr2);--with enable_rom select-- coeff_out <= "000000000000" when '0',-- coeff(addr) when '1',-- "000000000000" when others; with enable_rom selectcoeff_out <= coeff(addr) when '1', "000000000000" when others; END beh;----LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY ROMC_e1 IS PORT( addr2 : IN unsigned (1 DOWNTO 0) ; compl : IN std_ulogic ; enable_rom : IN std_ulogic ; coeff_out : OUT unsigned (11 DOWNTO 0) );-- DeclarationsEND ROMC_e1 ;----ARCHITECTURE beh OF ROMC_e1 IStype ROM_array is array (7 downto 0) of unsigned(11 downto 0);signal coeff: ROM_array;signal addr : integer range 0 to 7;--signal comptemp : unsigned(1 downto 0);signal ap : unsigned(11 downto 0) := "010110101000";signal bp : unsigned(11 downto 0) := "011101100100";signal cp : unsigned(11 downto 0) := "001100010000";signal dp : unsigned(11 downto 0) := "011111011001";signal ep : unsigned(11 downto 0) := "011010100111";signal fp : unsigned(11 downto 0) := "010001110010";signal gp : unsigned(11 downto 0) := "000110010000";signal am : unsigned(11 downto 0) := "101001011000";signal bm : unsigned(11 downto 0) := "100010011100";signal cm : unsigned(11 downto 0) := "110011110000";signal dm : unsigned(11 downto 0) := "100000100111";signal em : unsigned(11 downto 0) := "100101011001"; -- NOT usedsignal fm : unsigned(11 downto 0) := "101110001110";signal gm : unsigned(11 downto 0) := "111001110000";BEGINcoeff(0) <= ep; -- Ecoeff(1) <= gm; -- -Gcoeff(2) <= dm; -- -Dcoeff(3) <= fm; -- -F-- Complementary valuescoeff(4) <= em; -- -Ecoeff(5) <= gp; -- Gcoeff(6) <= dp; -- Dcoeff(7) <= fp; -- F--comptemp <= CONV_UNSIGNED(compl,2);--addr <= CONV_INTEGER(comptemp&addr2);addr <= CONV_INTEGER(compl&addr2);--with enable_rom select-- coeff_out <= "000000000000" when '0',-- coeff(addr) when '1',-- "000000000000" when others; with enable_rom selectcoeff_out <= coeff(addr) when '1', "000000000000" when others; END beh;----LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY ROMC_e2 IS PORT( addr2 : IN unsigned (1 DOWNTO 0) ; compl : IN std_ulogic ; enable_rom : IN std_ulogic ; coeff_out : OUT unsigned (11 DOWNTO 0) );-- DeclarationsEND ROMC_e2 ;----ARCHITECTURE beh OF ROMC_e2 IStype ROM_array is array (7 downto 0) of unsigned(11 downto 0);signal coeff: ROM_array;signal addr : integer range 0 to 7;--signal comptemp : unsigned(1 downto 0);signal ap : unsigned(11 downto 0) := "010110101000";signal bp : unsigned(11 downto 0) := "011101100100";signal cp : unsigned(11 downto 0) := "001100010000";signal dp : unsigned(11 downto 0) := "011111011001";signal ep : unsigned(11 downto 0) := "011010100111";signal fp : unsigned(11 downto 0) := "010001110010";signal gp : unsigned(11 downto 0) := "000110010000";signal am : unsigned(11 downto 0) := "101001011000";signal bm : unsigned(11 downto 0) := "100010011100";signal cm : unsigned(11 downto 0) := "110011110000";signal dm : unsigned(11 downto 0) := "100000100111";signal em : unsigned(11 downto 0) := "100101011001"; -- NOT usedsignal fm : unsigned(11 downto 0) := "101110001110";signal gm : unsigned(11 downto 0) := "111001110000";BEGINcoeff(0) <= fp; -- Fcoeff(1) <= dm; -- -Dcoeff(2) <= gp; -- Gcoeff(3) <= ep; -- E-- Complementary valuescoeff(4) <= fm; -- -Fcoeff(5) <= dp; -- Dcoeff(6) <= gm; -- -Gcoeff(7) <= em; -- -E--comptemp <= CONV_UNSIGNED(compl,2);--addr <= CONV_INTEGER(comptemp&addr2);addr <= CONV_INTEGER(compl&addr2);--with enable_rom select-- coeff_out <= "000000000000" when '0',-- coeff(addr) when '1',-- "000000000000" when others; with enable_rom selectcoeff_out <= coeff(addr) when '1', "000000000000" when others; END beh;----LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY ROMC_e3 IS PORT( addr2 : IN unsigned (1 DOWNTO 0) ; compl : IN std_ulogic ; enable_rom : IN std_ulogic ; coeff_out : OUT unsigned (11 DOWNTO 0) );-- DeclarationsEND ROMC_e3 ;----ARCHITECTURE beh OF ROMC_e3 IStype ROM_array is array (7 downto 0) of unsigned(11 downto 0);signal coeff: ROM_array;signal addr : integer range 0 to 7;--signal comptemp : unsigned(1 downto 0);signal ap : unsigned(11 downto 0) := "010110101000";signal bp : unsigned(11 downto 0) := "011101100100";signal cp : unsigned(11 downto 0) := "001100010000";signal dp : unsigned(11 downto 0) := "011111011001";signal ep : unsigned(11 downto 0) := "011010100111";signal fp : unsigned(11 downto 0) := "010001110010";signal gp : unsigned(11 downto 0) := "000110010000";signal am : unsigned(11 downto 0) := "101001011000";signal bm : unsigned(11 downto 0) := "100010011100";signal cm : unsigned(11 downto 0) := "110011110000";signal dm : unsigned(11 downto 0) := "100000100111";signal em : unsigned(11 downto 0) := "100101011001"; -- NOT usedsignal fm : unsigned(11 downto 0) := "101110001110";signal gm : unsigned(11 downto 0) := "111001110000";BEGINcoeff(0) <= gp; -- Gcoeff(1) <= fm; -- -Fcoeff(2) <= ep; -- Ecoeff(3) <= dm; -- -D-- Complementary valuescoeff(4) <= gm; -- -Gcoeff(5) <= fp; -- Fcoeff(6) <= em; -- -Ecoeff(7) <= dp; -- D
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?