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

📄 math_logic.vhd

📁 for FPGA IMPLEMENTATION,OUR DATAPATH CREATED FOR TWO BIRS MULTIPLICATION
💻 VHD
字号:
-- ============================================================
-- File Name: math_logic.vhd
-- ============================================================

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY math_logic IS 
	PORT
	(
		aludr	: IN STD_LOGIC;
		funct	: IN STD_LOGIC_VECTOR (2 DOWNTO 0);
		xdin	: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
		ydin	: IN STD_LOGIC_VECTOR (7 DOWNTO 0);
		dout	: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)
	);
END math_logic;

ARCHITECTURE behavior OF math_logic IS

	SIGNAL xdin_int, ydin_int, dout_int	: INTEGER;
	
BEGIN

	PROCESS (aludr, funct, xdin, ydin)
	BEGIN
		IF (aludr = '0') THEN
				dout <= "ZZZZZZZZ";
		ELSE
			CASE funct IS
				WHEN "000" =>	xdin_int <= CONV_INTEGER(xdin);
								ydin_int <= CONV_INTEGER(ydin);
								dout_int <= xdin_int + ydin_int;
								dout <= CONV_STD_LOGIC_VECTOR(dout_int, 8);
					
				WHEN "001" => 	xdin_int <= CONV_INTEGER(xdin);
								ydin_int <= CONV_INTEGER(ydin);
								dout_int <= xdin_int - ydin_int;
								dout <= CONV_STD_LOGIC_VECTOR(dout_int, 8);
					
				WHEN "010" => 	xdin_int <= CONV_INTEGER(xdin);
								ydin_int <= CONV_INTEGER(ydin);
								dout_int <= xdin_int * ydin_int;
								dout <= CONV_STD_LOGIC_VECTOR(dout_int, 8);
					
				WHEN "011" => 	xdin_int <= CONV_INTEGER(xdin);
								ydin_int <= CONV_INTEGER(ydin);
								dout_int <= xdin_int / ydin_int;
								dout <= CONV_STD_LOGIC_VECTOR(dout_int, 8);
					
				WHEN "100" => 	dout <= xdin AND ydin;
				WHEN "101" => 	dout <= xdin OR ydin;
				WHEN "110" => 	dout <= xdin XOR ydin;
				WHEN "111" => 	dout <= xdin XNOR ydin;
					
				WHEN OTHERS =>	dout <= "XXXXXXXX";
			END CASE;
		END IF;	
	END PROCESS;

END behavior;

⌨️ 快捷键说明

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