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

📄 alu.v

📁 altera epxa1的例子程序
💻 V
字号:
// Copyright (C) 1991-2001 Altera Corporation
// Any megafunction design, and related net list (encrypted or decrypted),
// support information, device programming or simulation file, and any other
// associated documentation or information provided by Altera or a partner
// under Altera's Megafunction Partnership Program may be used only to
// program PLD devices (but not masked PLD devices) from Altera.  Any other
// use of such megafunction design, net list, support information, device
// programming or simulation file, or any other related documentation or
// information is prohibited for any other purpose, including, but not
// limited to modification, reverse engineering, de-compiling, or use with
// any other silicon devices, unless such use is explicitly licensed under
// a separate agreement with Altera or a megafunction partner.  Title to
// the intellectual property, including patents, copyrights, trademarks,
// trade secrets, or maskworks, embodied in any such megafunction design,
// net list, support information, device programming or simulation file, or
// any other related documentation or information provided by Altera or a
// megafunction partner, remains with Altera, the megafunction partner, or
// their respective licensors.  No other licenses, including any licenses
// needed under any third party's intellectual property, are provided herein.
`include ".\rtl\ahb_slave_include.v"


//TOP MODULE

module alu ( operand1, 
			 operand2,
			 operation, 
			 result_low,
			 result_high);
			
// INPUTS
	
input [31:0] operand1, operand2;     //ALU operands
input [1:0] operation;				 //Selects which results appear on the output

// OUTPUTS	
output [31:0] result_low, result_high;  //Result from computation


//Internal Declarations
reg [31:0]	result_low, result_high, add_result_high, add_result_low, sub_result_high, sub_result_low, mult_result_low , mult_result_high ;


//Main Code
    
    //Used to perform calculations
    always @(operand1 or operand2)
	begin
	     
		 {add_result_high, add_result_low} = operand1 + operand2;
		 {sub_result_high, sub_result_low} = operand1 - operand2;
	     {mult_result_high, mult_result_low} = operand1 * operand2;

	end
	//Mux to select the correct results 
	always @(operation)
	begin
		case (operation)
		`ADD  : begin
			  result_low = add_result_low;
			  result_high = add_result_high;
			  end
		`SUB  : begin
			  result_low = sub_result_low;
			  result_high = sub_result_high;
			  end
		`MULT :begin 
			result_low = mult_result_low;
			result_high = mult_result_high;
			end
		default :begin
			 result_low = 0;
			 result_high = 0;
			 end
		endcase
	end

endmodule

⌨️ 快捷键说明

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