1、2009 级数字电路实验报告实验名称: EDA 基础实验学生姓名: 班 级: 班内序号: 学 号: 日 期: 1.实验要求【实验目的】1.熟悉用 QuartusII 原理图输入法进行电路设计和仿真;2.掌握 QuartusII 图形模块单元的生成与调用;3.熟悉用 VHDL 语言设计组合逻辑电路和时序电路的方法;4.熟悉用 QuartusII 文本输入法和图形输入法进行电路设计;5.熟悉不同的编码及其之间的转换;6.掌握触发器的逻辑功能及使用方法;7.熟悉计数器、寄存器、锁存器、分频器、移位寄存器的设计方法8.掌握 VHDL 语言的语法规范,掌握时序电路描述方法;9.掌握多个数码管动态扫描显示
2、的原理及设计方法。【实验所用仪器及元器件】1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板【实验内容】1.用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。2.用实验内容 1 中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信 号。3.用 3 线-8 线译码器(74LS138)和逻辑门设计实现函数 F,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。4.用 VHDL 语言设计实现一个 3 位二进制数值比较器,仿真验证其功能,并下载到实验板测试
3、。要求用拨码开关设定输入信号,发光二极管显示输出信号。5.用 VHDL 语言设计实现一个 4 选 1 的数据选择器;一个 8421 码转换为格雷码的代码转换器;一个举重比赛裁判器;一个带同步置位和同步复位功能的 D 触发器;一个带异步复位的 4 位二进制减计数器;一个带异步复位的 8421 码十进制计数器;一个带异步复位的 4 位自启动环形计数器;一个带控制端的 8 位二进制寄存器,当控制端为1时,电路正常工作,否则输出为高阻态;一个分频系数为 12,分频输出信号占空比为 50%的分频器。仿真验证其功能,并下载到实验板测试。要求用拨码开关和按键开关设定输入信号,发光二极管显示输出信号。 (注:
4、有几个不需要下载到实验板测试)2.程序分析全加器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE a OF h_adder ISBEGINsoain,b=bin,co=d,so=e);u2:h_adder port map(a=e,b=cin,co=f,so=sum);coutB)THENYAYYYYY b b b b b b b b nextcount nextcount ne
5、xtcount nextcountcountcountcountcountcountcountq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempq_tempcountcountcountcountcountcountcountq_tempq_tempq_tempq_tempq_tempq_tempq_tempcountcountcountcountcountcountcount=“111111“;END CASE;END IF;END PROCESS p5;countout=count;END beh
6、ave; 基本思路和串行显示类似,只是需要做到显示数字不断变化,因此先采用分频器得到一个频率稍低的时钟信号,控制另一个计数器技术状态的转换,这样使得数字变换的频率稍微不同于数码管接通的顺序,具体实现两种不同的滚动显示的时候计数器的状态个数也是有点区别的。其他步骤基本和串行显示相同。3.程序运行结果全加器:函数 F:3 位二进制数值比较器:4 选 1 数据选择器:8421 码转换为格雷码:举重比赛裁判器:D 触发器:4 位二进制减计数器:8421 码十进制计数器:4 位环形计数器:分频器:数码管串行扫描电路:数码管滚动显示电路:4.总结 1.实验时出现的问题及解决办法:实验一开始的上手步骤书上罗
7、列的很详细,一步一步来几乎没有问题,一般都是在仿真的时候,有关输入信号的频率设置会出现一些小问题有时候自己调试,有时候询问老师,一般很容易就能解决。第一次尝试直接写的程序是 8421 码转换为格雷码,按照老师和书上的要求是要考察WHEN 语句的应用,但是鉴于 8421 码转换成格雷码的时候每位都有相应的关系式,我采用了后者,节省了不少的语句。仿真的时候出现了第一个比较难的问题,由于需要涵盖输入信号的所有情况,输入信号的设置要很巧妙,先是自己研究,又在老师的稍微帮助下,成功解决了。最后一个小综合实验要求之前编好的程序用到了状态变量,和老师只用 05 六进制计数器的要求不同,于是在课堂上又把程序稍
8、作修改。其中第二个要求是要滚动显示,一开始没有想到分频器,怎么都得不到实验结果,后来参考同学的程序使用了分频器,并适当增加计数器的位数,最终达到了实验的要求。2.心得体会:这学期第一次接触数电实验,感觉和前面电路实验很大的一点不同是:数电实验不需要我们一步一步去搭实验电路,一切都在电路板上完成,相比较电路的结构,我们更需要了解电路的功能,尤其是电路在工作状态下的各项参数。同时接触了一门新的编程语言VHDL 和编程软件 Quartus,感觉还是很新颖、很好奇的。三次实验的程序都是自己独立编写,有些可能参考了老师和同学的建议,所以总的来说收获很大。3.下一步的改进:大三应该还有数电实验,而且会涉及到编程,所以暑假有时间的话,要好好熟悉一下Quartus 这个编程软件,争取大三的 VHDL 全部自己独立编写,尽量不询问老师和同学。