计算机组成原理引脚锁定,计算机组成原理实验十六位运算器ALU16完整代码引脚锁定.doc...

计算机组成原理实验十六位运算器ALU16完整代码引脚锁定

Verilog HDL代码

input A

module inputA(p,x,A);

input [1:0]p;

input [15:0]x;

output reg [16:0]A;

always @ (x,p)

begin

if(p == 2'b11) A={x[15],x[15:0]};

end

endmodule

input B

module inputB(p,x,B);

input [1:0]p;

input [15:0]x;

output reg [16:0]B;//17位

always @ (x,p)

begin

if(p == 2'b10) B={x[15],x[15:0]};

end

endmodule

input ABs

module inputABs(p,x,A,B,s,M,Ci);//输入A B

parameter bit_width=16;

input [1:0]p;

output M;

input [bit_width-1:0]x;//输入16位的x

output [bit_width:0]A,B;//定义17位的A,B 用来输入A,B

output [2:0]s;

output Ci;

reg [bit_width:0]A,B;

reg [2:0]s;

reg M,Ci;

always @ (p,x,A,B,s,Ci)

case (p)

2'b01:begin s[2:0] = x[2:0]; M=x[3];Ci=x[4];end//输入 Ci M s

2'b11: A= {x[15],x};//输入A A为17位 采用双符号位

2'b10: B = {x[15],x};//输入B

endcase

endmodule

input Ms

module inputMs(p,x,M,s,Ci);

input [1:0]p;

input [15:0]x;

output reg [2:0]s;

output reg M,Ci;

always @ (x,p)

begin

if(p == 2'b01) begin s<=x[2:0];M=x[3];Ci=x[4];end

end

endmodule

alu_18

module alu_16(S,A,B,F,M,CO,OV,Z,Ci,N);

//Cn Co进位 Ci来自低位的进位 OV溢出 N符号位 Z:0标志

parameter bit_width=16; //定义bit_width为16

input M,Ci;

input [2:0] S;//s是三位的

input [bit_width:0]A,B;//A,B为17位;双符号位判断是否溢出

output N,Z;

output [bit_width:0]F;//F输出17位;双符号位判断是否溢出

output CO,OV; // CO进位;OV判溢出

reg [bit_width:0]F;

reg CO,OV;

reg N,Z;

always @(S)

begin

case(S)

3'b000 :begin

if(M){CO,F}=A+B+Ci; //A B相加;Ci低位向高位的进位

else {CO,F}=A-B+Ci; // A B相减

OV=F[bit_width-1]^F[bit_width];//双符号位 第16位与第17位异或 判断是否溢出

N=F[16];// N为符号位

Z=~|F;// 判断F是否为0

end

3'b001:begin

if(M){CO,F}=A+1; //A+1

else {CO,F}=B+1; //B+1

OV=F[bit_width-1]^F[bit_width];

N=F[bit_width];

Z=~|F;

end

3'b010:begin

if(M) begin F=A&B;end // A&B 对于逻辑运算不考虑符号进位溢出

else begin F=A|B;end //A|B

Z=~|F;

end

3'b011:begin

if(M)begin F=~A;end//#A

else begin F=~B;end//#B

Z=~|F;

end

3'b100:begin

if(M) begin F={A[bit_width-2:0],1'b0};end//A逻辑左移

else begin F={B[bit_width-2:0],1'b0};end //B逻辑左移

Z=~|F;

end

3'b101:begin

if(M) begin F={1'b0,A[bit_width-1:1]};end //A逻辑右移

else begi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值