数字电路与逻辑设计实验报告
学 院: 班 级: 姓 名: 学 号:
日 期:
一. 实验名称:
实验一:QuartusII 原理图输入法设计与实现
实验二:用 VHDL 设计与实现组合逻辑电路 实验三:用 VHDL 设计与实现时序逻辑电路 实验四:用 VHDL 设计与实现数码管动态扫描控制器
二. 实验所用器件及仪器:
1.计算机 2.直流稳压电源
3.数字系统与逻辑设计实验开发板
三. 实验要求:
实验一:
(1) 用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图
形模块单元。 (2) 用(1)实现的半加器和逻辑门设计实现一个全加器,仿真并验证其功能,
并下载到实验板上测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3) 用3—8线译码器和逻辑门设计实现函数F=/C/B/A+/CB/A+C/B/A+CBA,仿
真验证其功能并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。
注:实验时将三个元器件放在一个new block diagram中实现。
实验二:
(1) 用VHDL语言设计实现一个共阴极7段数码译码器,仿真验证其功能,
并下载到实验板测试。要求用拨码开关设定输入信号,7段数码管显示输出信号。 (2) 用VHDL语言设计实现一个8421码转余三码的代码器,仿真验证其功
能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3) 用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输
出1,否则出0;仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 实验三:
(1) 用VHDL语言设计实现一个带异步复位的8421 十进制计数器,仿真验证其
功能,并下载到实验板测试。要求用按键设定输入信号,发光二极管显示输出信号。
(2) 用VHDL语言设计实现一个分频系数为12,输出信号占空比为50%的分频器,
仿真验证其功能。 注:实验时将(1)、(2)和数码管译码器 3 个电路进行链接,并下载到实验板显示计数结果。
实验四:
(1) 用VHDL语言设计实现六个数码管串行扫描电路,要求同时显示
0,1,2,3,4,5这几个不同的数字图形到数码管上,仿真验证其功能,并下载到实验板测试。 (2)
用VHDL语言设计实现六个数码管滚动显示电路:
A. 循环左循环,左进右出。状态为:
012345->123450->234501->345012->450123->501234->012345
B. 向左滚动,状态为(X表示数码管不显示):
012345->12345X->2345XX->345XXX->45XXXX->5XXXXX->XXXXXX->XXXXX0->XXXX01->XXX012->XX0123->X01234->012345
四. 实验原理及设计思路:
实验一:
(1) 半加器是考虑两位二进制数相加,出来的结果有二者加后的一个低位数,和
一个这两位数相加所得的进位数。所以用异或门和与门即可实现双输入双输出的半加器。 (2) 全加器可以以半加器为基础,在考虑两位二进制数相加时也考虑上地位的进
位信号,输出与半加器类似。
(3) 译码器加逻辑门可以实现相应的逻辑函数,将有相应最小项的输出项或即可。
实验二:
(1) 共阴极7段数码译码器:拨码开关的不同状态对应输入信号的0和1,通过
改变拨码开关的状态改变输入值,此时用VHDL语言描述每个输入值下对应的数在数码管中的显示。 (2) 8421码转余三码的代码器:将8421BCD码加上0011即为对应的余三码,通
过通过改变拨码开关的状态改变输入的84212BCD码,由四个LED灯的亮与灭(亮表示该值为1,灭表示0),来表示余三码的码值。 (3) 奇偶校验电路:同理用拨码开关设定输入信号,发光二极管显示输出信号,
输入奇数个1时,对应的发光二极管亮,反之则为熄灭状态。
实验三:
(1) 异步计数器:由于是异步复位,且yibuclear(清零信号)优先级最高,
当它有效时使状态清零。或者当到达第11个状态(1010)时复位,使状态回归到初始状态(0000)。其余时刻,用cp来计数,每按一次键cp=1,状态加1。因此设计2个输入端,一个输出端数组即可。 (2) 分频器:是使cp经过12个周期,输出的信号正好完成一次完整的翻转,
因此需要计数,该计数器模值为12,每六个状态时翻转一次。 (3) 可以使用分频器为异步计数器提供脉冲信号,异步计数器的输出作为数
码管译码管的输入,由数码管译码管显示当前数据。
实验四:
(1) 六个数码管串行扫描电路:由实验板上18号元件提供时钟,每过一个
周期,亮一个数码管,且该数码管序号也会改变,因此需要两个数组来体现这种改变。设选择一个管亮的数组为xuan(5 downto 0),数码管上控制输出数字形状的数组为guan(6 downto 0),通过输入的时钟改变状态(signal status),由状态定xuan,guan。由于要求“同时显示”,我们知道闪烁发光的二极管闪烁频率较高时,我们将观察到持续点亮的现象,一个数码管要稳定,需要显示频率大于50HZ,现在需要6个数码管同时显示,因而时钟的频率应该大于300HZ。 (2) 六个数码管滚动扫描电路:大致原理同(1),但是需要注意guan
不再只有6个状态,需要用12个状态来配合周期循环使用。需要每轮的管子状态改变一个位移。此时可以把xuan由循环来赋值,实现控制不同时刻数码管的亮与灭。
五. 实验模块端口及连接图:
实验三(3):分频器的时钟信号接外部时钟,异步清零端接外部信号,异步清零信号有效时可以实现分频器内部计数清零。当外部时钟clk=1时,分频器内部计数器的状态加1,每六个状态clk_out实现一次翻转。分频器的输出作为异步计数器的时钟,异步计数器的异步复位端接外部输入,可由实验板上拨码开关实现。这样就将外部时钟12分频后输入给异步计数器,异步计数器将计数输入数码译码器,实现控制数码管的状态,使之显示异步8421十进制计数器的此刻的数。
实验四:
(1) clk是输入信号,接外部时钟信号(location对应实验板18),要求频率
大于300HZ,clear是异步复位信号。guan为输出信号,连接到数码管上对应的7条线,控制这个数码管中每一段线的亮与灭,实现显示数字。xuan是控制6个数码管此时应该亮哪一个。由signal status根据输入信号确定此时对应的状态下的xuan和guan。