北京理工大学数字系统与设计实验报告.docx
- 文档编号:3542149
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:12
- 大小:1.26MB
北京理工大学数字系统与设计实验报告.docx
《北京理工大学数字系统与设计实验报告.docx》由会员分享,可在线阅读,更多相关《北京理工大学数字系统与设计实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
北京理工大学数字系统与设计实验报告
本科实验报告
实验名称:
数字系统设计与实验(软件部分)
课程名称:
数字系统设计与实验(软件部分)
实验时间:
任课教师:
实验地点:
实验教师:
实验类型:
□原理验证
□综合设计
□自主创新
学生姓名:
学号/班级:
组号:
学院:
同组搭档:
专业:
成绩:
实验一QuartusII9.1软件的使用
一、实验目的
1、通过实现简单组合逻辑电路,掌握QUARTUSII9.1软件的使用;
2、编程实现3-8译码电路以掌握VHDL组合逻辑的设计以及QUARTUSII9.1软件的使用。
;
二、实验内容
1、3-8译码电路VHDL组合逻辑的设计
A、3-8译码电路真值表
输入
输出
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
B、功能仿真波形图:
C、时序仿真波形图:
D、VHDL代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitydecoder3_8is
port(en:
instd_logic;
sel:
instd_logic_vector(2downto0);
qout:
outstd_logic_vector(7downto0));
enddecoder3_8;
architecturebehaofdecoder3_8is
signalsina_in:
std_logic_vector(2downto0);
signalsina_out:
std_logic_vector(7downto0);
begin
sina_in<=sel;
process(sina_in,en)
begin
if(en='0')then
casesina_inis
when"000"=>sina_out<="00000001";
when"001"=>sina_out<="00000010";
when"010"=>sina_out<="00000100";
when"011"=>sina_out<="00001000";
when"100"=>sina_out<="00010000";
when"101"=>sina_out<="00100000";
when"110"=>sina_out<="01000000";
when"111"=>sina_out<="10000000";
whenothers=>sina_out<="00000000";
endcase;
endif;
qout<=sina_out;
endprocess;
endbeha;
2、共阳极七段译码器VHDL组合逻辑的设计
A、共阳极七段译码器管脚分布及电路结构
如下如所示:
显示0时,a,b,c,d,e,f管脚接低电平,g管脚接高电平点亮的二极管会显示数字0。
如图所示:
B功能仿真波形图:
C时序仿真波形图:
D、VHDL代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityseg7is
port(clk,load,en:
instd_logic;
data_in:
instd_logic_vector(3downto0);
seg:
outstd_logic_vector(6downto0));
endseg7;
architecturebehaofseg7is
signalqout:
std_logic_vector(3downto0);
signalq_temp:
std_logic_vector(3downto0);
begin
process(clk,load)
begin
if(load='1')then
q_temp<=data_in;
elsif(clk'eventandclk='1')then
if(en='0')then
qout<=qout;
elsif(qout="1001")then
qout<="0000";
else
qout<=qout+1;
endif;
q_temp<=qout;
endif;
endprocess;
process(q_temp)
begin
caseq_tempis
when"0000"=>seg<="1000000";
when"0001"=>seg<="1111001";
when"0010"=>seg<="0100100";
when"0011"=>seg<="0110000";
when"0100"=>seg<="0011001";
when"0101"=>seg<="0010010";
when"0110"=>seg<="0000010";
when"0111"=>seg<="1111000";
when"1000"=>seg<="0000000";
when"1001"=>seg<="0010000";
whenothers=>seg<="0001000";
endcase;
endprocess;
endbeha;
实验二模十状态机与7段译码器显示
一、实验目的
通过设计频率可选的模十状态机以及7段译码电路以进一步掌握VHDL硬件描述语言。
二、实验内容
此设计包括分频器、多路选择器、状态机和译码器。
时钟输入作为分频器的输入,输出时钟分别为2分频、4分频、8分频和16分频;
四个频率的时钟信号由4选1的多路选择器选择其中之一作为状态机的时钟输入;
使用选中的时钟频率作为输入驱动状态机按照以下的次序输出:
0->2->5->6->1->9->4->8->7->3->0的顺序输出;
使用此输出作为驱动输入到7段译码器的显示逻辑。
功能仿真结果:
图1总体仿真结果
图2二分频结果
图3四分频结果
图4八分频结果
图5十六分频结果
实验三数字钟的设计与仿真
一、实验目的
通过设计实现四种频率可选的数字钟的设计与仿真,以熟悉VHDL语言编程。
二、实验内容
系统整体由分频器、多路选择器和计数器三个模块组成。
输入引脚有5根,分别为时钟(提供整个系统的时钟信号)、选择器输入Sel1、Sel0(选择不同的频率输入)、复位信号,以及置位信号。
输出引脚有24根,分别为时个位hour_low(3downto0)和十位hour_high(3downto0)、分钟个位min_low(3downto0)和十位min_high(3downto0)、秒个位second_low(3downto0)和十位secondr_high(3downto0)。
功能仿真结果如下图所示:
图1总体功能仿真
图259秒跳变
图39分59秒跳变
图459分59秒跳变
图59时59分59秒跳变
图623时59分59秒跳变
【实验心得】
本次实验比较难,设计的知识点比较多,开始的时候感觉难以下手,最初并不知道因为线路重叠要采取一些特殊的方法,把代码打上去结果程序不能运行成功,在仔细阅读使用手册后才发现这个问题,所以前面浪费了一些时间,总体来说,本次的所用到的模块基本在以前的试验中都有使用,问题的难点就在于,如何把这些代码结合起来而不出差错,在此,我又能体会到规范编程的重要性,实验中还有一个需要解决的问题就是数码管显示不稳定,会有闪烁的现象,请教了同学也查阅了资料才得以解决。
最后能够把程序运行成功,自己也很开心,学到了很多知识,也锻炼了自己的综合编程能力。
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京理工大学 数字 系统 设计 实验 报告