数字逻辑个性课实验报告
学生学号0121410870432实验成绩
学生实验报告书
实验课程名称逻辑与计算机设计基础
开课学院计算机科学与技术学院
指导教师姓名肖敏
学生姓名付天纯
学生专业班级物联网1403
2015--2016学年第一学期
译码器的设计与实现
【实验要求】:
(1)理解译码器的工作原理,设计并实现n-2n译码器,要求能够正确地根据输入信号译码成输出信号。(2)要求实现2-4译码器、3-8译码器、4-16译码器、8-28译码器、16-216译码器、32-232译码器。
【实验目的】
(1)掌握译码器的工作原理;
(2)掌握n-2n译码器的实现。
【实验环境】
◆Basys3 FPGA开发板,69套。
◆Vivado2014 集成开发环境。
◆Verilog编程语言。
【实验步骤】
一·功能描述
输入由五个拨码开关控制,利用led灯输出32种显示
二·真值表
三·电路图和表达式
四·源代码
module decoder_5(
input [4:0] a,
output [15:0] d0
);
reg [15:0] d0;
reg [15:0] d1;
always @(a)
begin
case(a)
5'b00000 :{d1,d0}=32'b1000_0000_0000_0000_0000_0000_0000_0000;
5'b00001 :{d1,d0}=32'b0100_0000_0000_0000_0000_0000_0000_0000;
5'b00010 :{d1,d0}=32'b0010_0000_0000_0000_0000_0000_0000_0000;
5'b00011 :{d1,d0}=32'b0001_0000_0000_0000_0000_0000_0000_0000;
5'b00100 :{d1,d0}=32'b0000_1000_0000_0000_0000_0000_0000_0000;
5'b00101 :{d1,d0}=32'b0000_0100_0000_0000_0000_0000_0000_0000;
5'b00110 :{d1,d0}=32'b0000_0010_0000_0000_0000_0000_0000_0000;
5'b00111 :{d1,d0}=32'b0000_0001_0000_0000_0000_0000_0000_0000;
5'b01000 :{d1,d0}=32'b0000_0000_1000_0000_0000_0000_0000_0000;
5'b01001 :{d1,d0}=32'b0000_0000_0100_0000_0000_0000_0000_0000;
5'b01010 :{d1,d0}=32'b0000_0000_0010_0000_0000_0000_0000_0000;
5'b01011 :{d1,d0}=32'b0000_0000_0001_0000_0000_0000_0000_0000;
5'b01100 :{d1,d0}=32'b0000_0000_0000_1000_0000_0000_0000_0000;
5'b01101 :{d1,d0}=32'b0000_0000_0000_0100_0000_0000_0000_0000;
5'b01110 :{d1,d0}=32'b0000_0000_0000_0010_0000_0000_0000_0000;
5'b01111 :{d1,d0}=32'b0000_0000_0000_0001_0000_0000_0000_0000;
5'b10000 :{d1,d0}=32'b0000_0000_0000_0000_1000_0000_0000_0000;
5'b10001 :{d1,d0}=32'b0000_0000_0000_0000_0100_0000_0000_0000;
5'b10010 :{d1,d0}=32'b0000_0000_0000_0000_0010_0000_0000_0000;
5'b10011 :{d1,d0}=32'b0000_0000_0000_0000_0001_0000_0000_0000;
5'b10100 :{d1,d0}=32'b0000_0000_0000_0000_0000_1000_0000_0000;
5'b10101 :{d1,d0}=32'b0000_0000_0000_0000_0000_0100_0000_0000;
5'b10110 :{d1,d0}=32'b0000_0000_0000_0000_0000_0010_0000_0000;
5'b10111 :{d1,d0}=32'b0000_0000_0000_0000_0000_0001_0000_0000;
5'b11000 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_1000_0000;
5'b11001 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0100_0000;
5'b11010 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0010_0000;
5'b11011 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0001_0000;
5'b11100 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0000_1000;
5'b11101 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0000_0100;
5'b11110 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0000_0010;
5'b11111 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0000_0001;
default {d1,d0}=32'bxxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx;
endcase
end
endmodule
五·测试用例
映射:d0[0]:U16... ...d0[15]:LD15从左向右映射低位数段输入:1111
输出:v16亮
学生学号0121410870432实验成绩
学生实验报告书
实验课程名称逻辑与计算机设计基础
开课学院计算机科学与技术学院
指导教师姓名肖敏
学生姓名付天纯
学生专业班级物联网1403
2015--2016学年第一学期
数据选择器的设计与实现
【实验要求】:
(1)理解数据选择器的工作原理,设计并实现2n选1的数据选择器,要求能够正确地根据输入的控制信号选择合适的输出。
(2)要求实现21选1的数据选择器、22选1 的数据选择器、24选1的数据选择器、25选1的数据选择器,2n选1的数据选择器。
【实验目的】
(1)掌握数据选择器的工作原理;
(2)掌握2n选1的数据选择器的实现。
【实验环境】
◆Basys3 FPGA开发板,69套。
◆Vivado2014 集成开发环境。
◆Verilog编程语言。
【实验步骤】
一.功能描述
由五个拨码开关控制选择,十一个拨码开关控制输入内部定义二十一位数,输出由一个led灯显示。
二·真值表
表
达
式
_sgn _sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[0]_sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[1]_sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[2]_sgn[4]out add add add add add in add add add add add in add add add add add in add ad =+++_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[3]_sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[4]_sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[5]_sgn[4]_sgn[3]_sgn[2]d add add add in add add add add add in add add add add add in add add add ad +++_sgn[1]_sgn[0]_sgn[6]_sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[7]_sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[8]_sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]d add in add add add add add in add add add add add in add add add add add in +++_sgn[9]_sgn[4]_sgn[3]_sgn[2]_sgn[1]_sgn[0]_sgn[10]add add add add add in ++
三.函数
module select_32_1( input [10:0] in_sgn, input [4:0] add_sgn, output out_sgn );
wire [20:0]in_in_sgn; wire for_out_sgn; wire back_out_sgn;
assign in_in_sgn=21'b0000_0000_0000_0000_00000; select_16_1
sel16_1(.in_sgn({in_in_sgn[3:0],in_sgn[10:0]}),.add_sgn(add_sgn[3:0]),.out_sgn(for_out_sgn)); select_16_1 sel16_2(.in_sgn(in_in_sgn[20:4]),.add_sgn(add_sgn[3:0]),.out_sgn(back_out_sgn)); select_2_1
sel2_1(.in_sgn1(for_out_sgn),.in_sgn2(back_out_sgn),.add_sgn(add_sgn[4]),.out_sgn(out_sgn)); endmodule
module select_16_1( input [11:0] in_sgn, input [3:0] add_sgn, output out_sgn );
wire [3:0]in_in_sgn; wire for_out_sgn; wire back_out_sgn;
assign in_in_sgn=4'b0000;
select_8_1 sel8_1(.in_sgn(in_sgn[7:0]),.add_sgn(add_sgn[2:0]),.out_sgn(for_out_sgn)); select_8_1
sel8_2(.in_sgn({in_in_sgn[3:0],in_sgn[11:8]}),.add_sgn(add_sgn[2:0]),.out_sgn(back_out_sgn));
select_2_1
sel2_1(.in_sgn1(for_out_sgn),.in_sgn2(back_out_sgn),.add_sgn(add_sgn[3]),.out_sgn(out_sgn));
endmodule
module select_8_1(
input [7:0] in_sgn,
input [2:0] add_sgn,
output out_sgn
);
wire for_out_sgn;
wire back_out_sgn;
select_4_1 sel4_1(.in_sgn(in_sgn[3:0]),.add_sgn(add_sgn[1:0]),.out_sgn(for_out_sgn));
select_4_1 sel4_2(.in_sgn(in_sgn[7:4]),.add_sgn(add_sgn[1:0]),.out_sgn(back_out_sgn));
select_2_1
sel2_1(.in_sgn1(for_out_sgn),.in_sgn2(back_out_sgn),.add_sgn(add_sgn[2]),.out_sgn(out_sgn)); endmodule
module select_4_1(
input [3:0] in_sgn,
input [1:0] add_sgn,
output out_sgn
);
wire for_out_sgn;
wire back_out_sgn;
select_2_1
sel2_1(.in_sgn1(in_sgn[0]),.in_sgn2(in_sgn[1]),.add_sgn(add_sgn[0]),.out_sgn(for_out_sgn));
select_2_1
sel2_2(.in_sgn1(in_sgn[3]),.in_sgn2(in_sgn[2]),.add_sgn(add_sgn[0]),.out_sgn(back_out_sgn));
select_2_1
sel2_3(.in_sgn1(for_out_sgn),.in_sgn2(back_out_sgn),.add_sgn(add_sgn[1]),.out_sgn(out_sgn)); endmodule
module select_2_1(
input in_sgn1,
input in_sgn2,
input add_sgn,
output out_sgn
);
reg out_sgn;
always@(*)
begin
if(add_sgn==0) out_sgn=in_sgn1;
else out_sgn=in_sgn2;
end
endmodule
电路
图out
四.结果检验
选择线从大到小对应从左到右的左边五个拨码开关,输入从大到小对应剩下从左到右十一个拨码开关。任意选led灯一个对应输出。
只将最右边一个拨码开关打开,led灯亮。
学生学号0121410870432实验成绩
学生实验报告书
实验课程名称逻辑与计算机设计基础
开课学院计算机科学与技术学院
指导教师姓名肖敏
学生姓名付天纯
学生专业班级物联网1403
2015--2016学年第一学期
ALU的设计与实现
【实验要求】:
(1)理解全加器的工作原理,设计并实现1位,8位,32位全加器,能实现基本的加法运算。(2)设计并实现1位,8位,32位补码器,能够计算补码,从而实现加法和减法运算。【实验目的】
实现1位,8位,32位全加器;实现1位,8位,32位补码运算;实现1位,8位,32位的加减法器。
【实验环境】
◆Basys3 FPGA开发板,69套。
◆Vivado2014 集成开发环境。
◆Verilog编程语言。
【实验步骤】
一.功能描述
输入两个八位二进制数,最高位代表符号位,0代表正1代表负,输出八位led灯,一个代表结果符号,八位代表加减后的结果。
二.真值表
二.表达式
([7])
_{[7],~[6:0]1}_[7:0]([7])
_{[7],~[6:0]1}_[7:0]
_0[0][0][0]0[0][0]1[0][0]1[0][0]0;[0][0][0]0[0][0]0[0][0];
_0[1][1][1][0][1][1][0][if a a o a a else
a o a if
b b o b b else b o b
c a b a b a b a b s a b a b a b c a b s a b s a =+==+==+++=++=++1][1][0][1][1][0];[1][1][1][0][1][1][0][1][1];
_0[2][2][2][1][2][2][1][2][2][1][2][2][1];[2][2][2][1][2][2][1][2][2];
_0[3][3][3][2][3][3][2][3]b s a b s s a b s a b s a b c a b s a b s a b s a b s s a b s a b s a b c a b s a b s a +=++=+++=++=++[3][2][3][3][2];[3][3][3][2][3][3][2][3][3];
_0[4][4][4][3][4][4][3][4][4][3][4][4][3];[4][4][4][3][4][4][3][4][4];
_0[5][5][5][4][5][5][4][2][b s a b s s a b s a b s a b c a b s a b s a b s a b s s a b s a b s a b c a b s a b s a b +=++=+++=++=++5][4][5][5][4];[5][5][5][4][5][5][4][5][5];
_0[6][6][6][5][6][6][5][6][6][5][6][6][5];[6][6][6][5][6][6][5][6][6];
_0[7][7][7][6][7][7][6][7][7]s a b s s a b s a b s a b c a b s a b s a b s a b s s a b s a b s a b c a b s a b s a b +=++=+++=++=++[6][7][7][6];[7][7][6][7][7][6][7][7];(_[7])0;
{_[7],~(_[6:0]1)}_[7:0]
s a b s sign a b s a b s a b if c o begin
sign c c o c o end else c c o +=++==-=
四.Verilog 代码描述
module bumaqi( input [6:0] value, Input sign,