北理工数电仿真实验 2.docx

上传人:b****6 文档编号:13519234 上传时间:2023-06-14 格式:DOCX 页数:19 大小:917.01KB
下载 相关 举报
北理工数电仿真实验 2.docx_第1页
第1页 / 共19页
北理工数电仿真实验 2.docx_第2页
第2页 / 共19页
北理工数电仿真实验 2.docx_第3页
第3页 / 共19页
北理工数电仿真实验 2.docx_第4页
第4页 / 共19页
北理工数电仿真实验 2.docx_第5页
第5页 / 共19页
北理工数电仿真实验 2.docx_第6页
第6页 / 共19页
北理工数电仿真实验 2.docx_第7页
第7页 / 共19页
北理工数电仿真实验 2.docx_第8页
第8页 / 共19页
北理工数电仿真实验 2.docx_第9页
第9页 / 共19页
北理工数电仿真实验 2.docx_第10页
第10页 / 共19页
北理工数电仿真实验 2.docx_第11页
第11页 / 共19页
北理工数电仿真实验 2.docx_第12页
第12页 / 共19页
北理工数电仿真实验 2.docx_第13页
第13页 / 共19页
北理工数电仿真实验 2.docx_第14页
第14页 / 共19页
北理工数电仿真实验 2.docx_第15页
第15页 / 共19页
北理工数电仿真实验 2.docx_第16页
第16页 / 共19页
北理工数电仿真实验 2.docx_第17页
第17页 / 共19页
北理工数电仿真实验 2.docx_第18页
第18页 / 共19页
北理工数电仿真实验 2.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

北理工数电仿真实验 2.docx

《北理工数电仿真实验 2.docx》由会员分享,可在线阅读,更多相关《北理工数电仿真实验 2.docx(19页珍藏版)》请在冰点文库上搜索。

北理工数电仿真实验 2.docx

北理工数电仿真实验2

 

本科实验报告

 

实验名称:

一、QuartusII9、1软件的使用

二、模十状态机与7段译码器显示

三、数字钟的设计与仿真

\

课程名称:

数电仿真实验

实验时间:

任课教师:

实验地点:

实验教师:

√原理验证

实验类型:

□综合设计

学生姓名:

□自主创新

学号/班级:

组号:

院:

同组搭档:

业:

成绩:

 

实验一QuartusII9、1软件的使用

一、实验目的:

一、通过实现书上的例子,掌握QUARTUSII9、1软件的使用;

二、编程实现3-8译码电路以掌握VerilogHDL语言组合逻辑的设计以及QUARTUSII9、1软件的使用。

二、实验步骤:

1、程序;

moduleex4

inputclk,load,en,

input[3:

0]qin,

outputreg[7:

0]seg

);

reg[3:

0]qout;

always@(posedgeclkorposedgeload)begin

if(load)

qout<=qin;

else

if(en)

if(qout==4'b1001)

qout<=4'b0000;

else

qout<=qout+1;

else

qout<=qout;

end

always@(qout)begin

case(qout)

0:

seg<=7'b1000000;

1:

seg<=7'b1111001;

2:

seg<=7'b0100100;

3:

seg<=7'b0110000;

4:

seg<=7'b0011001;

5:

seg<=7'b0010010;

6:

seg<=7'b0000010;

7:

seg<=7'b1111000;

8:

seg<=7'b0000000;

9:

seg<=7'b0010000;

default:

seg<=7'b0001000;

endcase

end

endmodule

2、功能图

 

3、操作步骤

(1)、建立VerilogHDL文件

先建立一个工作目录文件,创建一个新项目并对项目命名:

对参数设置

点击Finish完成创建:

 

 

(2)、新建文件:

点击File—>New,弹出对话框后选择VerilogHDLFile,然后进行编写代码。

对VerilogHDLFile编译:

从菜单栏中选择Processing-Start-StartAnalysis&Synthesis,选取菜单中Processing-StartCompilation进行全编译。

运行没有问题后

点击,弹出对话框后选择VectorWaveformFile,

在空白处右键选择Insert选择InsertNodeorbus…

点击NodeFinder在Filter中选择如下选项,点击List,点击》全选

点击ok即可。

设置时钟并在Qin中设置16进制,起始为7

(3)、仿真

点击Processing中的SimulatorTool,在mode中选择Functional进行功能仿真或者选择Timing进行时序仿真

功能仿真:

时序仿真:

功能仿真结果:

时序仿真结果:

选做:

3-8译码器

(1)设计思路

随着时钟信号clk上升沿的到来,输入D2D1D0从000加到111,每个输入D2D1D0对应着一个输出Q7Q6Q5Q4Q3Q2Q1Q0,对应关系如真值表所示:

输入

输出

D2

D1

D0

Q7

Q6

Q5

Q4

Q3

Q2

Q1

Q0

1

0

0

0

0

0

1

0

0

0

0

1

0

1

0

0

1

0

0

0

0

0

1

1

0

0

1

0

0

0

0

0

0

1

1

1

1

0

0

0

0

0

0

0

3-8译码器真值表

如果输入错误,则输出Q7Q6Q5Q4Q3Q2Q1Q0=11111111。

(2)、程序

moduleex38

inputclk,outputreg[7:

0]Q

);

reg[2:

0]D;

always@(posedgeclk)beginD<=D+1;

end

always@(D)begincase(D)

0:

Q<=8'b00000001;

1:

Q<=8'b00000010;

2:

Q<=8'b00000100;

3:

Q<=8'b00001000;

4:

Q<=8'b00010000;

5:

Q<=8'b00100000;

6:

Q<=8'b01000000;

7:

Q<=8'b10000000;default:

Q<=8'b11111111;

endcase

end

endmodule

(3)实验步骤:

建立新项目ex38,如以上实验操作,进行功能仿真与时序仿真

功能仿真

仿真结果

时序仿真

仿真结果

三、实验心得

通过实验一的学习,我初步掌握了QUARTUSII9、1软件的使用方法,并尝试编程实现3-8译码电路以掌握VerilogHDL语言组合逻辑的设计,对QUARTUSII9、1软件的使用更加熟练。

第一天的学习为后两次实验的进行奠定基础。

 

实验二模十状态机与7段译码器显示

一、实验目的:

通过设计频率可选的模十状态机以及7段译码电路以进一步掌握VerilogHDL硬件描述语言。

二、实验步骤:

本设计有分频器、多路选择器、状态机与译码器。

时钟输入作为分频器的输入,输出时钟分别为2分频、4分频、8分频与16分频;四个频率的时钟信号由4选1的多路选择器选择其中之一作为状态机的时钟输入;使用选中的时钟频率作为输入驱动状态机按照以下的次序输出:

0->2->5->6->1->9->4->8->7->3->0的顺序输出;使用此输出作为驱动输入到7段译码器的显示逻辑。

1、设计思路

(1)、时钟信号clk作为分频器的输入,分频器的设计思路为设计一个模十六计数器,cp0(Q0)输出即为二分频信号,cp1(Q1)输出即为四分频信号,cp2(Q2)输出即为八分频信号,cp3(Q3)输出即为十六分频信号。

分频器的输出由4选1多路选择器的选择输入端select选择2分频、4分频、8分频与16分频其中之一作为状态机的时钟输入,当select为0时,输出为二分频信号;为1时,输出为四分频信号;为2时,输出为八分频信号;为3时,输出为十六分频信号。

(2)、reset为高有效,则若reset信号为1时,qout置为0,则now_state为0。

若reset信号为0时,qout自加,并作为状态机的输入驱动,让状态机按照0->2->5->6->1->9->4->8->7->3->0的顺序输出。

(3)、状态机按照0->2->5->6->1->9->4->8->7->3->0的顺序输出,并使用此输出作为驱动输入到7段译码器的显示逻辑。

 

2、实验代码:

moduleex5

input[1:

0]select,inputclk,reset,outputreg[3:

0]cp,outputreg[6:

0]seg,outputregfp,

outputreg[9:

0]now_state);

reg[3:

0]qout;

always@(posedgeclkorposedgereset)beginif(reset)

cp<=0;else

cp<=cp+1;end

always@(select)case(select)

0:

fp<=cp[0];

1:

fp<=cp[1];

2:

fp<=cp[2];

3:

fp<=cp[3];

default:

fp<=0;endcase

always@(posedgefporposedgereset)beginif(reset)

qout<=0;else

if(qout==4'b1001)qout<=4'b0000;

elseqout<=qout+1;end

always@(qout)case(qout)

0:

now_state<=10'b0000000001;

1:

now_state<=10'b0000000100;

2:

now_state<=10'b0000100000;

3:

now_state<=10'b0001000000;

4:

now_state<=10'b0000000010;

5:

now_state<=10'b1000000000;

6:

now_state<=10'b0000010000;

7:

now_state<=10'b0100000000;

8:

now_state<=10'b0010000000;

9:

now_state<=10'b0000001000;default:

now_state<=10'b1111111111;

endcase

always@(qout)

case(qout)

0:

seg<=7'b1000000;

1:

seg<=7'b0100100;

2:

seg<=7'b0010010;

3:

seg<=7'b0000010;

4:

seg<=7'b1111001;

5:

seg<=7'b0010000;

6:

seg<=7'b0011001;

7:

seg<=7'b0000000;

8:

seg<=7'b1111000;

9:

seg<=7'b0110000;default:

seg<=7'b1111111;endcase

Endmodule

(1)总体仿真结果:

(2)rest高有效及二分频结果

(3)四分频结果

(4)八分频仿真结果

 

(5)十六分频仿真结果

三、实验心得

通过本次实验,设计频率可选的模十状态机以及7段译码电路,学会了以代码形式实现频率多路选择器的功能,巩固了模十状态机的实现方式,进一步掌握VerilogHDL硬件描述语言。

 

实验三数字钟的设计与仿真

一、实验目的:

通过设计实现的数字钟的设计与仿真,以熟悉VerilogHDL语言编程。

二、实验流程:

输入引脚有3+16根,其中三位分别为时钟(提供整个系统的时钟信号)、复位(系统复位信号)与置位信号(用于将时间设置到需要观察的位置)。

十六位分别为分钟个位与十位、秒个位与十位。

输出引脚有16根,分别位分钟个位与十位、秒个位与十位。

三、设计与实验步骤:

1、设计思路与分析:

本实验设计数字钟的实质为设计60*60的计数器。

数字钟为上升沿触发,三个输入管脚为提供整个系统的时钟信号clk,系统复位信号clr(高有效)与置位信号load(高有效),复位信号clr用于将输出的分钟个位min_l、十位min_h与秒个位sec_l、

十位sec_h清0,置位信号load将输出的分钟个位min_l、十位min_h与秒个位sec_l、

十位sec_h设置到需要观察的位置。

十六位分别为分钟个位min_l0、十位min_h0与秒个位sec_l0、十位sec_h0,为load信号变为高电平时的预置信号,此时输出结果为预置信号。

在load=0,clr=0时,随着clk的上升沿到来,秒个位sec_l进行自加,加到9时下一个clk上升沿到来时秒个位sec_l变为0,sec_h加1。

当时钟为59秒就是,下一个clk上升沿到来时,秒清0,分钟低位min_l加1。

当时钟为9分59秒时,下一个clk上升沿到来时,分钟低位min_l,秒高位sec_h,秒低位sec_l清0,分钟高位min_h加1。

当时钟为59分59秒就是,下一个clk上升沿到来时,分钟个位min_l、

十位min_h与秒个位sec_l、十位sec_h均清0。

2、实验代码:

moduleex6

inputclk,clr,load,input[3:

0]min_h0,input[3:

0]min_l0,input[3:

0]sec_h0,input[3:

0]sec_l0,outputreg[3:

0]min_h,outputreg[3:

0]min_l,outputreg[3:

0]sec_h,outputreg[3:

0]sec_l

);

always@(posedgeclrorposedgeclk)beginif(clr)begin

min_h<=0;min_l<=0;sec_h<=0;sec_l<=0;end

elseif(load)beginmin_h<=min_h0;min_l<=min_l0;sec_h<=sec_h0;sec_l<=sec_l0;

end

elsebegin

if(sec_l==9)beginsec_l<=0;

if(sec_h==5)beginsec_h<=0;

if(min_l==9)beginmin_l<=0;

if(min_h==5)beginmin_h<=0;

end

elsebeginmin_h<=min_h+1;end

end

elsebeginmin_l<=min_l+1;

end

endelsebegin

sec_h<=sec_h+1;end

endelsebegin

sec_l<=sec_l+1;end

endend

endmodule

四、实验结果:

功能仿真结果:

59秒load的置位功能与进位结果

9分59秒load的置位功能与进位结果

59分59秒load的置位功能与进位结果

五、实验心得

本次实验,以代码的形式设计实现的数字钟的功能仿真,通过本次实验对C语言与VerilogHDL语言的相同之处与不同之处有了更深刻的了解与认识,更加熟悉VerilogHDL语言编程。

 

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2