数字逻辑个性课实验报告.docx

上传人:b****6 文档编号:4966890 上传时间:2022-12-12 格式:DOCX 页数:35 大小:825.82KB
下载 相关 举报
数字逻辑个性课实验报告.docx_第1页
第1页 / 共35页
数字逻辑个性课实验报告.docx_第2页
第2页 / 共35页
数字逻辑个性课实验报告.docx_第3页
第3页 / 共35页
数字逻辑个性课实验报告.docx_第4页
第4页 / 共35页
数字逻辑个性课实验报告.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

数字逻辑个性课实验报告.docx

《数字逻辑个性课实验报告.docx》由会员分享,可在线阅读,更多相关《数字逻辑个性课实验报告.docx(35页珍藏版)》请在冰豆网上搜索。

数字逻辑个性课实验报告.docx

数字逻辑个性课实验报告

学生学号

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.表达式

4.函数

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.电路图

5.结果检验

选择线从大到小对应从左到右的左边五个拨码开关,输入从大到小对应剩下从左到右十一个拨码开关。

任意选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

实验成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1