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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机组成原理实验十六位运算器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 == 2b11) 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 == 2b10) 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) 2b01:begin s[2:0] = x[2:0]; M=x[3];Ci=x[4];end//输入 Ci M s 2b11: A= {x[15],x};//输入A A为17位 采用双符号位 2b10: 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 == 2b01) 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) 3b000 :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 3b001: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 3b010:begin if(M) begin F=AB;end // AB 对于逻辑运算不考虑符号进位溢出 else begin F=A|B;end //A|B Z=~|F; end 3b011:begin if(M)begin F=~A;end//#A else begin F=~B;end//#B Z=~|F; end 3b100:begin if(M) begin F={A[bit_width-2:0],1b0};end //A逻辑左移 else begin F={B[bit_width-2:0],1b0};end //B逻辑左移 Z=~|F; end 3b101:begin if(M) begin F={1b0,A[bit_width-1:1]};end //A逻辑右移 else begin F={1b0,B[bit_wid

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档