预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

EDA实验报告  班级: 学号: 姓名: 实验一组合逻辑设计 一、实验目的: 通过一个简单的3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。 二、实验的硬件要求: 1、输入:DIP拨码开关3位 2、输出:LED灯 3、主芯片:EP2C8Q208C8 三、实验原理: 三八译码器三输入,八输出。当输入信号按二进制方式的表示为N时,输出端从零标记到八。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位有效的情况下,能表示所有的输入组合。 3-8译码器真值表 输入输出CBAD7D6D5D4D3D2D1D0000 001 010 011 100 101 110 11100000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 四、实验程序图: 建立工程后,新建Blockdiagram/schematicfile程序,在编辑窗口中选择相应原件用鼠标拖入文件中编辑,绘制完成后保存原理图,对程序进行编译,编译无误后,进行管脚配置,下图为程序图。 文本程序: libraryieee; useieee.std_logic_1164.all; entityprogram1is port(A,B,C:instd_logic; D0,D1,D2,D3,D4,D5,D6,D7:outstd_logic); endentityprogram1; architectureoneofprogram1is signalabc:std_logic_vector(2downto0); signalD:std_logic_vector(7downto0); begin abc<=A&B&C; process(abc) begin caseabcis when"000"=>D<="10000000"; when"100"=>D<="01000000"; when"010"=>D<="00100000"; when"110"=>D<="00010000"; when"001"=>D<="00001000"; when"101"=>D<="00000100"; when"011"=>D<="00000010"; when"111"=>D<="00000001"; whenothers=>null; endcase; endprocess; D0<=D(7);D1<=D(6);D2<=D(5);D3<=D(4); D4<=D(3);D5<=D(2);D6<=D(1);D7<=D(0); endarchitectureone; 五、实验仿真结果: 仿真波形图如下: 进行波形仿真完成后,用拨码开关的低三位代表译码器输入,将之与配置好的管脚相连;用led灯代表译码器的输出,将之与配置好的管脚相连。完成连接后,将程序下载到实验箱,拨动拨档开关,观察led的发光状态与输入状态的对应关系是否与真值表中的情况相同。经观察,led的发光状态符合真值表的描述。 实验二扫描显示电路的驱动 一、实验目的: 实现7段数码管扫描显示的工作模块。 二、实现硬件要求: 1输入:按键一个 2输出:八位7段数码管 3主芯片:EP2C8Q208C8,四位拨码开关 三、实验内容: 1、用拨码开关产生8421BCD码,用CPLD产生字形编码电路和扫描驱动电路,然后进行仿真,观察波形,正确后进行设计实现。调节时钟频率,感受“扫描”的过程,并观察字符亮度和显示刷新的效果。 2、编制一个简单的从0~F轮换显示十六进制的电路。 四、实验原理: 四位拨码开关提供8421BCD码,经译码电路后成为七段数码管的字形显示驱动信号。扫描电路通过可调时钟输出片选地址SEL[3..0]。由SEL[3..0]和A~G决定了8位中的哪一位显示和显示什么字形,SEL[3..0]变化的快慢决定了扫描频率的快慢。 五、实验步骤: 编写实验代码并封装: 数码管译码模块: libraryieee; useieee.std_logic_1164.all; entitydecl7sis port(a:instd_logic_vector(3downto0); led7s:outstd_logic_vector(6downto0)); end; architectureoneofdecl7sis begin process(a) begin caseais when"0000"=>led7s<="0111111"; when"0001"=>led7s<="0000110"; when"0010"=>led7s<="1011011"; when"0011"=>led7s<="1001111"; when"0100"=>