⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dctslow.vhd

📁 算术处理器的VERILOG hdl的源代码
💻 VHD
📖 第 1 页 / 共 2 页
字号:
USE ieee.std_logic_arith.all;LIBRARY std ;USE std.textio.all;ENTITY dctslowcontroller IS   PORT(       clk          : IN     std_logic  ;      dctselect    : IN     std_logic  ;      mode         : IN     std_logic_vector (1 downto 0) ;      reset        : IN     std_logic  ;      ck           : OUT    std_logic  ;      clk_1        : OUT    std_logic  ;      columns      : OUT    std_logic_vector (2 downto 0) ;      enable_0     : OUT    std_logic  ;      enable_1     : OUT    std_logic  ;      enable_2     : OUT    std_logic  ;      enable_and12 : OUT    std_logic  ;      next_in      : OUT    std_logic  ;      read         : OUT    std_logic  ;      rows         : OUT    std_logic_vector (2 downto 0) ;      rst          : OUT    std_logic  ;      clk_0        : BUFFER std_logic  ;      clk_2        : BUFFER std_logic  ;      compl        : BUFFER std_logic  ;      enable_div   : BUFFER std_logic  ;      first        : BUFFER std_logic    );-- DeclarationsEND dctslowcontroller ;----ARCHITECTURE beh3 OF dctslowcontroller ISsignal next_in_tmp,enable_clk_0,enable_clk_2,clk_2_tmp : std_logic;signal enable_and12_tmp,enable_div_tmp,enable_ck,first_tmp : std_logic;signal read_tmp,read_tmp2 : std_logic;signal address,address_tmp,add_tmp2 : std_logic_vector(5 downto 0);BEGINwith dctselect select	rows <= add_tmp2(5 downto 3) when '1',				add_tmp2(2 downto 0) when others;with dctselect select	columns <= add_tmp2(2 downto 0) when '1',			      add_tmp2(5 downto 3) when others;clk_0 <= clk and enable_clk_0;clk_1 <= clk_0;ck <= clk and enable_ck;rst <= reset;enable_0 <= not reset;enable_1 <= not reset;enable_2 <= not reset;next_in <= next_in_tmp and first_tmp;main : process(clk)variable cyccount : integer range 0 to 63 := 0;variable state : integer range 0 to 12 := 0;variable counter : integer range 0 to 11 := 0;beginaddress_tmp <= conv_std_logic_vector(cyccount,6);if rising_edge(clk) then	if clk_2 = '1' then		if counter = 7 then			read_tmp <= '1';			counter := 0;		else 			counter := counter + 1;			read_tmp <= '0';		end if;	end if;	if (reset = '1')then		first_tmp <= '1';		cyccount := 0;		counter := 0;		state := 0;		address <= "000000";		compl <= '0';		enable_div_tmp <= '1';		next_in_tmp <= '0';		enable_clk_0 <= '0';		enable_clk_2 <= '0';		enable_ck <= '0';		enable_and12_tmp <= '0';		read_tmp <= '0';		read_tmp2 <= '0';		read <= '0';		clk_2_tmp <= '0';		clk_2 <= '0';	else		clk_2 <= clk_2_tmp;		address <= address_tmp;		compl <= next_in_tmp;		enable_div_tmp <= not compl;		clk_2_tmp <= (not enable_div_tmp) and enable_clk_2;		enable_and12_tmp <= '1';		enable_and12 <= enable_and12_tmp;		enable_div <= enable_div_tmp;		add_tmp2 <= address;		first <= first_tmp;		read_tmp2 <= read_tmp;		read <= read_tmp2;		case state is 			when 0 =>				first_tmp <= '1';				cyccount := 0;				next_in_tmp <= '1';				state := 1;			when 1 =>				next_in_tmp <= '0';				enable_ck <= '1';				state := 2;			when 2 =>				if counter = 0 then					enable_and12_tmp <= '0';				else					enable_and12_tmp <= '1';				end if;				state := 3;			when 3 =>				state := 4;				enable_clk_0 <= '1';			when 4 =>				state := 5;				enable_clk_2 <= '1';			when 5 =>				if mode = "00" then					state := 6;				elsif mode = "01" then					state := 12;				elsif mode = "10" then					state := 11;				else					state := 9;				end if;			when 9 =>				state := 10;			when 10 =>				state := 11;			when 11 =>				state := 12;			when 12 =>				state := 6;			when 6 =>				state := 7;			when 7 =>				state := 8;			when 8 =>				if cyccount = 7 then					first_tmp <= '0';					cyccount := cyccount + 1;				elsif cyccount = 63 then					first_tmp <= '1';					cyccount := 0;				else					cyccount := cyccount + 1;				end if;				next_in_tmp <= '1';				state := 1;		end case;	end if;end if;end process main;END beh3;----LIBRARY ieee ;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY DCT8_slow IS   PORT(       clk       : IN     std_logic  ;      dctselect : IN     std_logic  ;      din       : IN     std_logic  ;      mode      : IN     std_logic_vector (1 downto 0) ;      reset     : IN     std_logic  ;      doutput   : OUT    std_logic_vector (15 DOWNTO 0) ;      next_in   : OUT    std_logic  ;      read      : OUT    std_logic    );-- DeclarationsEND DCT8_slow ;----LIBRARY ieee ;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;LIBRARY std ;USE std.textio.ALL;LIBRARY work;ARCHITECTURE struct OF DCT8_slow IS-- Architecture declarations-- Internal signal declarationsSIGNAL ck           : std_logic;SIGNAL clk_0        : std_logic;SIGNAL clk_1        : std_logic;SIGNAL clk_2        : std_logic;SIGNAL columns      : std_logic_vector(2 downto 0);SIGNAL compl        : std_logic;SIGNAL enable_0     : std_logic;SIGNAL enable_1     : std_logic;SIGNAL enable_2     : std_logic;SIGNAL enable_and12 : std_logic;SIGNAL enable_div   : std_logic;SIGNAL enable_rom   : std_logic;SIGNAL first        : std_logic;SIGNAL inadd_1_1    : std_logic_vector(11 downto 0);SIGNAL inadd_1_2    : std_logic_vector(11 downto 0);SIGNAL inadd_2_1    : std_logic_vector(15 downto 0);SIGNAL inadd_2_2    : std_logic_vector(15 downto 0);SIGNAL outadd_1     : std_logic_vector(12 downto 0);SIGNAL outadd_2     : std_logic_vector(15 downto 0);SIGNAL outdct       : std_logic_vector(15 downto 0);SIGNAL register_1   : std_logic_vector(12 DOWNTO 0);SIGNAL rom_output   : std_logic_vector(11 DOWNTO 0);SIGNAL rows         : std_logic_vector(2 downto 0);SIGNAL rst          : std_logic;-- Component DeclarationsCOMPONENT ROM64   PORT (      columns    : IN     std_logic_vector (2 downto 0);      compl      : IN     std_logic ;      enable_rom : IN     std_logic ;      rows       : IN     std_logic_vector (2 downto 0);      output     : OUT    std_logic_vector (11 DOWNTO 0)   );END COMPONENT;COMPONENT add12slow   PORT (      a      : IN     std_logic_vector (11 downto 0);      b      : IN     std_logic_vector (11 downto 0);      output : OUT    std_logic_vector (12 downto 0)   );END COMPONENT;COMPONENT add16bits   PORT (      a      : IN     std_logic_vector (15 downto 0);      b      : IN     std_logic_vector (15 downto 0);      output : OUT    std_logic_vector (15 downto 0)   );END COMPONENT;COMPONENT and15   PORT (      enable : IN     std_logic ;      input  : IN     std_logic_vector (15 downto 0);      output : OUT    std_logic_vector (15 downto 0)   );END COMPONENT;COMPONENT cyclereg   PORT (      ck         : IN     std_logic ;      din        : IN     std_logic ;      first      : IN     std_logic ;      mode       : IN     std_logic_vector (1 downto 0);      rst        : IN     std_logic ;      enable_rom : OUT    std_logic    );END COMPONENT;COMPONENT dctslowcontroller   PORT (      clk          : IN     std_logic ;      dctselect    : IN     std_logic ;      mode         : IN     std_logic_vector (1 downto 0);      reset        : IN     std_logic ;      ck           : OUT    std_logic ;      clk_1        : OUT    std_logic ;      columns      : OUT    std_logic_vector (2 downto 0);      enable_0     : OUT    std_logic ;      enable_1     : OUT    std_logic ;      enable_2     : OUT    std_logic ;      enable_and12 : OUT    std_logic ;      next_in      : OUT    std_logic ;      read         : OUT    std_logic ;      rows         : OUT    std_logic_vector (2 downto 0);      rst          : OUT    std_logic ;      clk_0        : BUFFER std_logic ;      clk_2        : BUFFER std_logic ;      compl        : BUFFER std_logic ;      enable_div   : BUFFER std_logic ;      first        : BUFFER std_logic    );END COMPONENT;COMPONENT div2_9_en   PORT (      ain    : IN     std_logic_vector (12 downto 0);      enable : IN     std_logic ;      aout   : OUT    std_logic_vector (11 downto 0)   );END COMPONENT;COMPONENT reg12bits   PORT (      ain    : IN     std_logic_vector (11 downto 0);      clk    : IN     std_logic ;      enable : IN     std_logic ;      aout   : OUT    std_logic_vector (11 downto 0)   );END COMPONENT;COMPONENT reg13bits   PORT (      ain    : IN     std_logic_vector (12 downto 0);      clk    : IN     std_logic ;      enable : IN     std_logic ;      aout   : OUT    std_logic_vector (12 downto 0)   );END COMPONENT;COMPONENT reg16bits   PORT (      ain    : IN     std_logic_vector (15 downto 0);      clk    : IN     std_logic ;      enable : IN     std_logic ;      aout   : OUT    std_logic_vector (15 downto 0)   );END COMPONENT;-- Optional embedded configurations--synopsys translate_offFOR ALL : ROM64 USE ENTITY work.ROM64;FOR ALL : add12slow USE ENTITY work.add12slow;FOR ALL : add16bits USE ENTITY work.add16bits;FOR ALL : and15 USE ENTITY work.and15;FOR ALL : cyclereg USE ENTITY work.cyclereg;FOR ALL : dctslowcontroller USE ENTITY work.dctslowcontroller;FOR ALL : div2_9_en USE ENTITY work.div2_9_en;FOR ALL : reg12bits USE ENTITY work.reg12bits;FOR ALL : reg13bits USE ENTITY work.reg13bits;FOR ALL : reg16bits USE ENTITY work.reg16bits;--synopsys translate_onBEGIN-- Architecture concurrent statements-- HDL Embedded Text Block 1 eb1inadd_2_1 <= register_1(12)&register_1(12)&register_1(12)&register_1;-- HDL Embedded Text Block 2 eb2--with dctselect select--   doutput <= outdct(9 downto 2) when '1',--        outdct(7 downto 0) when others;-- 14 downto 0 is the useful outputdoutput <= outdct;   -- Instance port mappings.   I10 : ROM64      PORT MAP (         columns    => columns,         compl      => compl,         enable_rom => enable_rom,         rows       => rows,         output     => rom_output      );   I2 : add12slow      PORT MAP (         a      => inadd_1_1,         b      => inadd_1_2,         output => outadd_1      );   I4 : add16bits      PORT MAP (         a      => inadd_2_1,         b      => inadd_2_2,         output => outadd_2      );   I6 : and15      PORT MAP (         enable => enable_and12,         input  => outdct,         output => inadd_2_2      );   I8 : cyclereg      PORT MAP (         ck         => ck,         din        => din,         first      => first,         mode       => mode,         rst        => rst,         enable_rom => enable_rom      );   I1 : dctslowcontroller      PORT MAP (         clk          => clk,         dctselect    => dctselect,         mode         => mode,         reset        => reset,         ck           => ck,         clk_1        => clk_1,         columns      => columns,         enable_0     => enable_0,         enable_1     => enable_1,         enable_2     => enable_2,         enable_and12 => enable_and12,         next_in      => next_in,         read         => read,         rows         => rows,         rst          => rst,         clk_0        => clk_0,         clk_2        => clk_2,         compl        => compl,         enable_div   => enable_div,         first        => first      );   I5 : div2_9_en      PORT MAP (         ain    => register_1,         enable => enable_div,         aout   => inadd_1_2      );   I0 : reg12bits      PORT MAP (         ain    => rom_output,         clk    => clk_0,         enable => enable_0,         aout   => inadd_1_1      );   I7 : reg13bits      PORT MAP (         ain    => outadd_1,         clk    => clk_1,         enable => enable_1,         aout   => register_1      );   I9 : reg16bits      PORT MAP (         ain    => outadd_2,         clk    => clk_2,         enable => enable_2,         aout   => outdct      );END struct;

⌨️ 快捷键说明

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