linux实验报告ALU,八位运算器实验报告.doc

八位运算器实验报告

《组成原理》实验报告

姓名:赵帅____________

专业:网络工程________

学号:0121121394______

日期:2014年11月25日

实验一:8位运算器的设计

1,设计目的:

学习并练习verilog语言

了解8位加法器实现原理

2,设计目标:

使用verilog语言编写8为运算器并进行仿真模拟

3,模块设计规格及输入输出端变量说明

1)3模块设计规格及输入输出端变量说明:

输入:[2:0]s(操作指令), LDA,LDB(输入控制),

[7:0]IN(输入数);

输出:[7:0]A,B(操作数), ALU(结果寄存器),

FZ(判零), FC(进位);

操作指令表:

运算类型 S2 S1 S0功能逻辑运算 000ALU=A 001ALU=A&B 010ALU=A|B 011ALU=~A移位运算 100ALU=A逻辑左移一位算术运算 101ALU=A+B 110ALU=A+1 111ALU=A-1

4,程序原理连接图

5,程序代码

Moduletest (T4,s,A,B,LDA,LDB,FZ,FC,IN,ALU);

input [2:0] s;

input LDA,LDB,T4;

input [7:0] IN;

output [7:0] A,B,ALU;

output FZ,FC;

reg [7:0] A,B,ALU;

reg FZ,FC;

/*

*输入模块,当clk上升沿时,如果LDA为1,则把IN的值给A,否则赋给B

*/

always @ (posedge CLK)

begin

if(LDA==1'b1)

begin

A<=IN;

end

else if(LDB==1'b1)

begin

B<=IN;

end

end

/*

*计算模块,根据操作数s的不同值为A和B进行八种不同的计算,其中当A+B

*进行加法计算时,把进位值赋给FC

*/

always @ (s[2] or s[1] or s[0])

begin

case ({s[2],s[1],s[0]})

3'b000:ALU<=A;//直接赋值

3'b001:ALU<=A&B;//A与B按位与

3'b010:ALU<=A|B;//A与B按位或

3'b011:ALU<=~A;//非A

3'b100:ALU<=(A<<1);//A左移一位

3'b101:{FC,ALU}<=A+B;//ALU=A+B,FC为A+B的进位

3'b110:ALU<=A+1;//加一操作

3'b111:ALU<=A-1;//减一操作

endcase

end

/*

*该模块的作用是判断ALU是否为,若是FZ赋为1

*/

always @ (negedge T4)

begin

if(ALU==8'

FZ<=1'b1;

else

FZ<=1'b0;

end

endmodule

6时序仿真图:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值