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

📄 alu.vhd.bak

📁 It is the code for implementing the project titled "The Reconfigurable Instruction Cell Array(IEEE 2
💻 BAK
字号:
LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.numeric_std.ALL;-- use packageUSE work.procmem_definitions.ALL;ENTITY alu ISPORT (a, b : IN STD_ULOGIC_VECTOR(width-1 DOWNTO 0);opcode : IN STD_ULOGIC_VECTOR(2 DOWNTO 0);result : OUT STD_ULOGIC_VECTOR(width-1 DOWNTO 0);zero : OUT STD_ULOGIC);END alu;ARCHITECTURE behave OF alu ISBEGINPROCESS(a, b, opcode)-- declaration of variablesVARIABLE a_uns : UNSIGNED(width-1 DOWNTO 0);VARIABLE b_uns : UNSIGNED(width-1 DOWNTO 0);VARIABLE r_uns : UNSIGNED(width-1 DOWNTO 0);VARIABLE z_uns : UNSIGNED(0 DOWNTO 0);VARIABLE r_uns1,d : UNSIGNED(2*width-1 DOWNTO 0);--variable  t:UNSIGNED(width-1 downto 0);variable  t,d1:unsigned(63 downto 0);variable a1,b1:integer;BEGIN-- initialize valuesa_uns := UNSIGNED(a);b_uns := UNSIGNED(b);r_uns := (OTHERS => '0');z_uns(0) := '0';-- select desired operationCASE opcode IS--multWHEN "011" =>--variable  t,d:std_logic_vector(7 downto 0);d1:=(OTHERS => '0');t:=(OTHERS => '0');while t < b_uns loop   d1:=d1 + a_uns;   t:=t+1;   end loop;   --m<=d(8) or d(7);   r_uns:=d1(63 downto 32) ;--r_uns1 :=a_uns * b_uns;--r_uns:=r_uns1(2*width-1 downto width);--divWHEN "100" =>a1:=(to_integer( unsigned(a)));b1:=(to_integer( unsigned(b)));   while b1 < a1 loop   a1:=a1-b1;   end loop; r_uns:=a1;--std_ulogic_vector(to_unsigned(a1, 32));--r_uns :=a_uns / b_uns;-- addWHEN "010" =>r_uns := a_uns + b_uns;-- subWHEN "110" =>r_uns := a_uns - b_uns;-- andWHEN "000" =>r_uns := a_uns AND b_uns;-- orWHEN "001" =>r_uns := a_uns OR b_uns;-- sltWHEN "111" =>r_uns := a_uns - b_uns;IF SIGNED(r_uns) < 0 THENr_uns := TO_UNSIGNED(1, r_uns'LENGTH);ELSEr_uns := (OTHERS => '0');END IF;-- othersWHEN OTHERS => r_uns := (OTHERS => 'X');END CASE;-- set zero bit if result equals zeroIF TO_INTEGER(r_uns) = 0 THENz_uns(0) := '1';ELSEz_uns(0) := '0';END IF;-- assign variables to output signalsresult <= STD_ULOGIC_VECTOR(r_uns);zero <= z_uns(0);END PROCESS;END behave;

⌨️ 快捷键说明

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