北理工数电仿真实验.docx
- 文档编号:23650488
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:19
- 大小:1.75MB
北理工数电仿真实验.docx
《北理工数电仿真实验.docx》由会员分享,可在线阅读,更多相关《北理工数电仿真实验.docx(19页珍藏版)》请在冰豆网上搜索。
北理工数电仿真实验
本科实验报告
实验名称:
一、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进行全编译。
运行没有问题后
点击File中New,弹出对话框后选择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
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
1
1
0
0
0
0
1
0
0
0
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语言编程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北理工 仿真 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)