数字逻辑个性课实验报告.docx
《数字逻辑个性课实验报告.docx》由会员分享,可在线阅读,更多相关《数字逻辑个性课实验报告.docx(41页珍藏版)》请在冰豆网上搜索。
数字逻辑个性课实验报告
学生学号
0121410870432
实验成绩
学生实验报告书
实验课程名称
逻辑与计算机设计基础
开课学院
计算机科学与技术学院
指导教师姓名
肖敏
学生姓名
付天纯
学生专业班级
物联网1403
2015
--
2016
学年
第
一
学期
译码器的设计与实现
【实验要求】:
(1)理解译码器的工作原理,设计并实现n-2n译码器,要求能够正确地根据输入信号译码成输出信号。
(2)要求实现2-4译码器、3-8译码器、4-16译码器、8-28译码器、16-216译码器、32-232译码器。
【实验目的】
(1)掌握译码器的工作原理;
(2)掌握n-2n译码器的实现。
【实验环境】
◆Basys3FPGA开发板,69套。
◆Vivado2014集成开发环境。
◆Verilog编程语言。
【实验步骤】
一·功能描述
输入由五个拨码开关控制,利用led灯输出32种显示
二·真值表
三·电路图和表达式
四·源代码
moduledecoder_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的数据选择器的实现。
【实验环境】
◆Basys3FPGA开发板,69套。
◆Vivado2014集成开发环境。
◆Verilog编程语言。
【实验步骤】
一.功能描述
由五个拨码开关控制选择,十一个拨码开关控制输入内部定义二十一位数,输出由一个led灯显示。
二·真值表
表达式
3.函数
moduleselect_32_1(
input[10:
0]in_sgn,
input[4:
0]add_sgn,
outputout_sgn
);
wire[20:
0]in_in_sgn;
wirefor_out_sgn;
wireback_out_sgn;
assignin_in_sgn=21'b0000_0000_0000_0000_00000;
select_16_1sel16_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_1sel16_2(.in_sgn(in_in_sgn[20:
4]),.add_sgn(add_sgn[3:
0]),.out_sgn(back_out_sgn));
select_2_1sel2_1(.in_sgn1(for_out_sgn),.in_sgn2(back_out_sgn),.add_sgn(add_sgn[4]),.out_sgn(out_sgn));
endmodule
moduleselect_16_1(
input[11:
0]in_sgn,
input[3:
0]add_sgn,
outputout_sgn
);
wire[3:
0]in_in_sgn;
wirefor_out_sgn;
wireback_out_sgn;
assignin_in_sgn=4'b0000;
select_8_1sel8_1(.in_sgn(in_sgn[7:
0]),.add_sgn(add_sgn[2:
0]),.out_sgn(for_out_sgn));
select_8_1sel8_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_1sel2_1(.in_sgn1(for_out_sgn),.in_sgn2(back_out_sgn),.add_sgn(add_sgn[3]),.out_sgn(out_sgn));
endmodule
moduleselect_8_1(
input[7:
0]in_sgn,
input[2:
0]add_sgn,
outputout_sgn
);
wirefor_out_sgn;
wireback_out_sgn;
select_4_1sel4_1(.in_sgn(in_sgn[3:
0]),.add_sgn(add_sgn[1:
0]),.out_sgn(for_out_sgn));
select_4_1sel4_2(.in_sgn(in_sgn[7:
4]),.add_sgn(add_sgn[1:
0]),.out_sgn(back_out_sgn));
select_2_1sel2_1(.in_sgn1(for_out_sgn),.in_sgn2(back_out_sgn),.add_sgn(add_sgn[2]),.out_sgn(out_sgn));
endmodule
moduleselect_4_1(
input[3:
0]in_sgn,
input[1:
0]add_sgn,
outputout_sgn
);
wirefor_out_sgn;
wireback_out_sgn;
select_2_1sel2_1(.in_sgn1(in_sgn[0]),.in_sgn2(in_sgn[1]),.add_sgn(add_sgn[0]),.out_sgn(for_out_sgn));
select_2_1sel2_2(.in_sgn1(in_sgn[3]),.in_sgn2(in_sgn[2]),.add_sgn(add_sgn[0]),.out_sgn(back_out_sgn));
select_2_1sel2_3(.in_sgn1(for_out_sgn),.in_sgn2(back_out_sgn),.add_sgn(add_sgn[1]),.out_sgn(out_sgn));
endmodule
moduleselect_2_1(
inputin_sgn1,
inputin_sgn2,
inputadd_sgn,
outputout_sgn
);
regout_sgn;
always@(*)
begin
if(add_sgn==0)out_sgn=in_sgn1;
elseout_sgn=in_sgn2;
end
endmodule
电路图
4.结果检验
选择线从大到小对应从左到右的左边五个拨码开关,输入从大到小对应剩下从左到右十一个拨码开关。
任意选led灯一个对应输出。
只将最右边一个拨码开关打开,led灯亮。
学生学号
0121410870432
实验成绩
学生实验报告书
实验课程名称
逻辑与计算机设计基础
开课学院
计算机科学与技术学院
指导教师姓名
肖敏
学生姓名
付天纯
学生专业班级
物联网1403
2015
--
2016
学年
第
一
学期
ALU的设计与实现
【实验要求】:
(1)理解全加器的工作原理,设计并实现1位,8位,32位全加器,能实现基本的加法运算。
(2)设计并实现1位,8位,32位补码器,能够计算补码,从而实现加法和减法运算。
【实验目的】
实现1位,8位,32位全加器;实现1位,8位,32位补码运算;实现1位,8位,32位的加减法器。
【实验环境】
◆Basys3FPGA开发板,69套。
◆Vivado2014集成开发环境。
◆Verilog编程语言。
【实验步骤】
一.功能描述
输入两个八位二进制数,最高位代表符号位,0代表正1代表负,输出八位led灯,一个代表结果符号,八位代表加减后的结果。
2.真值表
二.表达式
4.Verilog代码描述
modulebumaqi(
input[6:
0]value,
Inputsign,
output[7:
0]comp
);
reg[7:
0]comp;
always@(sign)
if(sign==1)
comp={sign,~value[6:
0]+1};
Else
comp={sign,value[6:
0]};
endmodule
modulefulladd_2(
inputa,
inputb,
inputx,
outputs,
outputc
);
wires1,c1,c2;
xorxor1(s1,a,b);
xorxor2(s,s1,x);
andand1(c1,a,b);
andand2(c2,s1,x);
oror1(c,c1,c2);
endmodule
modulefulljia(
input[7:
0]a,
input[7:
0]b,
output[7:
0]s,
outputc
);
wire[6:
0]c_mid;
full2fu1(.a(a[0]),.b(b[0]),.x(0),.c(c_mid[0]),.s(s[0]));
full2fu2(.a(a[1]),.b(b[1]),.x(c_mid[0]),.c(c_mid[1]),.s(s[1]));
full2fu3(.a(a[2]),.b(b[2]),.x(c_mid[1]),.c(c_mid[2]),.s(s[2]));
full2fu4(.a(a[3]),.b(b[3]),.x(c_mid[2]),.c(c_mid[3]),.s(s[3]));
full2fu5(.a(a[4]),.b(b[4]),.x(c_mid[3]),.c(c_mid[4]),.s(s[4]));
full2fu6(.a(a[5]),.b(b[5]),.x(c_mid[4]),.c(c_mid[5]),.s(s[5]));
full2fu7(.a(a[6]),.b(b[6]),.x(c_mid[5]),.c(c_mid[6]),.s(s[6]));
full2fu8(.a(a[7]),.b(b[7]),.x(c_mid[6]),.c(c),.s(s[7]));
endmodule
modulejiajian(
input[7:
0]a,
input[7:
0]b,
output[7:
0]c,
outputsign
);
wire[7:
0]a_o;
wire[7:
0]b_o;
wire[7:
0]c_o;
bumaqibu1(a[6:
0],a[7],a_o[7:
0]);
bumaqibu2(b[6:
0],b[7],b_o[7:
0]);
fulljiafu(a_o[7:
0],b_o[7:
0],c_o[7:
0],sign);
reg[7:
0]c;
always@(c_o[7])
if(c_o[7])
c={c_o[7],~(c_o[6:
0]-1)};
else
c=c_o[7:
0];
if(c_o[7])
sign=0;
endmodule
五.电路图
六.结果检验
输入a为2,b为3,led灯显示正5.
输入a为2,b为负3,led灯显示负1.
学生学号
0121410870432
实验成绩
学生实验报告书
实验课程名称
逻辑与计算机设计基础
开课学院
计算机科学与技术学院
指导教师姓名
肖敏
学生姓名
付天纯
学生专业班级
物联网1403
2015
--
2016
学年
第
一
学期
计数器的设计与实现
【实验要求】:
(1)利用D触发器设计并实现二进制计数器,要求实现216-1的计数;
(2)利用D触发器设计并实现十进制计数器(BCD码),要求实现105-1的计数;
(3)利用D触发器设计并实现3位纽环计数器。
【实验目的】
1.掌握二进制和十进制计数器的设计与实现;
2.掌握二进制和十进制计数器的集成;
3.掌握纽环计数器的实现。
【实验环境】
◆Basys3FPGA开发板,69套。
◆Vivado2014集成开发环境。
◆Verilog编程语言。
【实验原理】
【实验步骤】包括:
功能描述,真值表,逻辑方程,电路图,Verilog代码实现(硬件映射代码),实验结果或者仿真结果
1)二进制计数器0~22实现
Q1n
Q0n
Q1n+1
Q0n+1
C
0
0
0
1
0
0
1
1
0
0
1
0
1
1
0
1
1
0
0
1
Q1n+1=Q1n
Q0n
C=Q1nQ0n
2十进制计数器
(1)十进制计数器0-9
Q3n
Q2n
Q1n
Q0n
Q3n+1
Q2n+1
Q1n+1
Q0n+1
C
0
0
0
0
0
0
0
1
0
0
0
1
0
0
1
0
0
0
1
0
0
0
1
1
0
0
1
1
0
1
0
0
0
1
0
0
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
1
0
1
1
1
1
0
0
0
1
0
0
0
1
0
0
1
1
0
0
1
0
0
0
0
1
Verilog代码实现
modulejishuqi_60(
inputclk,
inputrst,
outputreg[7:
0]q
);
second_clksecond(clk,clk_1);
wire[3:
0]m;
wirec;
reg[3:
0]n=4'b0000;
jishuqi_10jishuqi2(clk_1,rst,m,c);
always@(posedgeclk_1)
begin
if(c==1)case(n)
4'b0000:
n<=4'b0001;
4'b0001:
n<=4'b0010;
4'b0010:
n<=4'b0011;
4'b0011:
n<=4'b0100;
4'b0100:
n<=4'b0101;
4'b0101:
n<=4'b0110;
4'b0110:
n<=4'b0111;
4'b0111:
n<=4'b1000;
4'b1000:
n<=4'b1001;
endcase
q<={n[3:
0],m[3:
0]};
end
endmodule
modulejishuqi_10(
inputclk_1,
inputrst,
outputreg[3:
0]q,
outputregc
);
always@(posedgeclk_1orposedgerst)
begin
if(rst==1)q<=4'b0000;
case(q)
4'b0000:
q<=4'b0001;
4'b0001:
q<=4'b0010;
4'b0010:
q<=4'b0011;
4'b0011:
q<=4'b0100;
4'b0100:
q<=4'b0101;
4'b0101:
q<=4'b0110;
4'b0110:
q<=4'b0111;
4'b0111:
q<=4'b1000;
4'b1000:
begin
q<=4'b1001;
c<=1;
end
4'b1001:
begin
q<=4'b0000;
c<=0;
end
endcase
end
endmodule
modulesecond_clk(
inputclk,
outputregsecond_clk
);
reg[27:
0]count=0;
parameterM=2;
always@(posedgeclk)
begin
second_clk=0;
count<=count+1;
if(count==M)second_clk<=1;
if(count==2*M)
begin
second_clk<=0;
count<=0;
end
end
endmodule
结果仿真
学生学号
0121410870432
实验成绩