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

📄 alu.v

📁 CLK 为其时钟脉冲 M 控制工作模式 CO 为允许带进位移位输入 S 控制移位模式0-3 D[7..0]是移位数据输入 QB[7..0]是移位数据输出 CN是移位数
💻 V
字号:
module ALU(A, B, S, M, CN, F, CO);
	input[7:0] A;
	input[7:0] B;
	input[3:0] S;
	input M;
	input CN;
	output[7:0] F;
	output CO;
	reg[7:0] F;
	reg[8:0] MEDI;
	reg CO;
	always @(A, B, S, M, CN)
		begin
			//Logic Function
			if(M)
				case(S)
					4'b0000: MEDI=~A;
					4'b0001: MEDI=~(A|B);
					4'b0010: MEDI=(~A)&B;
					4'b0011: MEDI=9'b0;
					4'b0100: MEDI=~(A&B);
					4'b0101: MEDI=~B;
					4'b0110: MEDI=A^B;
					4'b0111: MEDI=A&~B;
					4'b1000: MEDI=(~A)|B;
					4'b1001: MEDI=~(A^B);
					4'b1010: MEDI=B;
					4'b1011: MEDI=A&B;
					4'b1100: MEDI=9'b1;
					4'b1101: MEDI=A|~B;
					4'b1110: MEDI=A|B;
					4'b1111: MEDI=A;
				endcase
			//arithmetic function
			else if(~CN)
				case(S)
					4'b0000: MEDI=A;
					4'b0001: MEDI=A|B;
					4'b0010: MEDI=A|(~B);
					4'b0011: MEDI=9'b0;
					4'b0100: MEDI=A+(A&~B);
					4'b0101: MEDI=(A|B)+(A&(~B));
					4'b0110: MEDI=A-B;
					4'b0111: MEDI=A|(~B);
					4'b1000: MEDI=A+(A&B);
					4'b1001: MEDI=A+B;
					4'b1010: MEDI=(A|~B)+(A&B);
					4'b1011: MEDI=A&B;
					4'b1100: MEDI=A+A;
					4'b1101: MEDI=(A|B)+A;
					4'b1110: MEDI=(A|~B)+A;
					4'b1111: MEDI=A;
				endcase
			else if(CN)
				case(S)
					4'b0000: MEDI=A+9'b1;
					4'b0001: MEDI=(A|B)+9'b1;
					4'b0010: MEDI=(A|B)+9'b1;
					4'b0011: MEDI=9'b0;
					4'b0100: MEDI=A+(A&~B)+9'b1;
					4'b0101: MEDI=(A|B)+(A&~B)+9'b1;
					4'b0110: MEDI=A-B-9'b1;
					4'b0111: MEDI=(A|~B)-9'b1;
					4'b1000: MEDI=A+(A&B)+9'b1;
					4'b1001: MEDI=A+B+9'b1;
					4'b1010: MEDI=(A|~B)+(A&B)+9'b1;
					4'b1011: MEDI=(A&B)-9'b1;
					4'b1100: MEDI=A+A;
					4'b1101: MEDI=(A|B)+A+9'b1;
					4'b1110: MEDI=(A|~B)+A+9'b1;
					4'b1111: MEDI=A-9'b1;
				endcase
			{CO, F}=MEDI;
		end
endmodule

⌨️ 快捷键说明

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