03-Verilog学习-C_always模块构成简易ALU运算器

always模块构成简易ALU运算器

此模块属于组合逻辑电路,其输入、输出信号如下:

input opcode, //操作码
input a, //操作数
input b,
output out //数值输出

并且利用case语句,结合parameter定义,构建简易ALU运算器如下:

module C_Alu(
	input [1:0] opcode,	//操作码
	input [3:0] a,			//操作数
	input [3:0] b,
	
	output reg [7:0]out	//数值输出
	);

parameter add = 2'b00;
parameter sub = 2'b01;
parameter mul = 2'b10;
parameter div = 2'b11;

always@(opcode or a or b )		//电平触发
begin
	case(opcode)
		add: out <= a+b;
		sub: out <= a-b;
		mul: out <= a*b;
		div: out <= a/b;
		default: out <= 8'bz;
	endcase
end

endmodule

利用modelsim软件进行仿真,其测试代码如下:

module C_Alu_tb;
	reg [1:0] opcode;	//操作码
	reg [3:0] a;			//操作数
	reg [3:0] b;
	
	wire  [7:0]out;			//数值输出

C_Alu i1 (
	.a(a),
	.b(b),
	.opcode(opcode),
	.out(out)
);

initial                                                
begin                                                  
	#50 
	#50 opcode = 2'b01;
	#50 a=3;b=1;	
end 
                                                  
endmodule

在仿真的时间设置上,设置1s停止,时间间隔为1ps,得到的时序图如下:

仿真图

由此可验证always搭键建议ALU运算器成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值