实验三 乘、除法运算器实验报告
姓名:阿迪兰 13053004
马光明 13052046
班级:计算机2班
实验三 乘、除法运算器实验报告
一、实验目的
1、掌握移位加算法设计乘法运算单元的基本思想
2、掌握阵列算法乘法运算单元的设计方法
3、掌握基于状态机的乘法运算单元的设计方法
4、掌握基于宏模块的乘除法运算器的设计方法
二、实验任务
1、完成一个基于阵列的4位无符号乘法运算器的设计; 实现代码为:
module c01(x, y, out);
input [7:0]x, y;
output [15:0]out;
genvar i, j, k, l;
wire [8:0]tmp_sun[7:0], tmp_out[7:0]; wire [8:0]tmp_x;
assign tmp_x = {1'b0,x};
assign out[0] = tmp_x[0] & y[0];
generate
assign tmp_out[0][0] = 1'b0;
for(i=0;i<8;i=i+1)
begin:add_bt
top_m tm (tmp_x[i+1], y[0], tmp_x[i], y[1], tmp_out[0][i],
tmp_sun[0][i], tmp_out[0][i+1]);
end
assign out[1] = tmp_sun[0][0];
assign tmp_sun[0][8] = tmp_out[0][8];
for(j=2;j<8;j=j+1)
begin:ftf
for(k=0;k<8;k=k+1)
begin:add_bb
btm_m bm (tmp_sun[j-2][k+1], tmp_x[k], tmp_out[j-1][k], tmp_sun[j-1][k], tmp_out[j-1][k+1]); end
assign out[j] = tmp_sun[j-1][0]
assign tmp_sun[j-1][8] = tmp_out[j-1][8]; End
for(l=8;l<16;l=l+1)
begin:add_o
assign out[l] = tmp_sun[6][8]; end
endgenerate
endmodule
module top_m(m0, q0, m1, q1, cin, sun, cout); input m0, m1, q0, q1; y[j],
input cin;
output sun, cout;
wire x, y;
assign x = m0 & q0;
assign y = m1 & q1;
full_add fa (x, y, cin, sun, cout); endmodule
module btm_m(sunin, m, q, cin, sun, cout); input sunin, m, q, cin;
output sun, cout;
wire y;
assign y = m & q;
full_add fa (sunin, y, cin, sun, cout); endmodule
module full_add(x, y, cin, sun, cout); input x, y, cin;
output reg sun, cout;
always@(x, y, cin)
begin
sun <= x^y^cin;
cout <= x&y | x&cin | y&cin; end
endmodule
2、完成一个基于移位加原理,用状态机实现的4位无符号乘法运算器的设计;
实现代码为:
module c02
input[1:0] x;
input[1:0] y;
output[3:0] p;
wire [3:0] temp;
assign temp = {x , y};
always @(temp)
case temp
4'b 0101:p =4'b 0001;
4'b 0110: p = 4'b 0010;
4'b 0111: p = 4'b 0011;
4'b 1001: p = 4'b 0010;
4'b 1010: p = 4'b 0100;
4'b 1011: p = 4'b 0110;
4'b 1101:p = 4'b 0011;
4'b 1110: p = 4'b 0110;
4'b 1111: p = 4'b 1001;
default: p = 4'b 0000; endcase;
endmodule;
第二篇:运算器实验报告
2.2 运算器实验
实验要求:利用CPTH 实验仪的K16..K23 开关做为DBUS 数据,其它开关做为控制信号,将数据写累加器A和工作寄存器W,并用开关控制ALU的运算方式,实现运算器的功能。
实验目的:了解模型机中算术、逻辑运算单元的控制方法。
实验电路:CPTH 中的运算器由一片CPLD实现,有8 种运算,通过S2,S1,S0 来选择,运算数据由寄存器A及寄存器W 给出,运算结果输出到直通门D。
连接线表
将55H写入A寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据55H
置控制信号为:
按住STEP脉冲键,CK由高变低,这时寄存器A的黄色选择指示灯亮,表明选择A寄存器。放开STEP键,CK由低变高,产生一个上升沿,数据55H被写入A寄存器。
将33H写入W寄存器
二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据33H
置控制信号为:
按住STEP脉冲键,CK由高变低,这时寄存器W 的黄色选择指示灯亮,表明选择W寄存器。放开STEP 键,CK 由低变高,产生一个上升沿,数据33H 被写入W 寄存器。
置下表的控制信号,检验运算器的运算结果
注意观察:
运算器在加上控制信号及数据(A,W)后,立刻给出结果,不须时钟。