1、1电工电子实验报告2学生姓名:贾学岷学生学号:05120320系别班级:物理系 0503 班课程名称:现代电子技术实验(EDA)报告性质:设计报告实验地点:现代电子技术实验室开课学期:20071成绩评定:A教师签名:田开坤2 位 16 进制数转换 3 位 10 进制数显示一、任务解析;该实验实现二进制和十进制之间的转换,输入一个八位二进制数会在数码管上显示出它所对应的十进制和十六进制数。显示如下图:输入 0101 0011,显示 53H=083d输入 1111 1111,显示 FFH=255d二、实验步骤:实验电路用了三个模块:二进制到十进制转换模块(shijinzhi) ,循环扫描模块(se
2、l_clock) ,数码管显示模块(deled)。实验原理图及各模块的 AHDL 语言如下:3(一) 二进制到十进制转换模块(shijinzhi)此模块运用分段的思想,将 000 到 255 分为 26 段分别描述,每十个数为一段,比如elsif q7.0b“00101000“then e3.0=h“0“;d3.0=h“3“;a7.0=q7.0-b“00011110“;将百位和十位直接赋值,而个位为输入的数减去其百位和十位,直观的描述为“如果输入的数值小于 40,则百位=0,十位=3 ,个位=输入的数值30” 。再比如elsif q7.0b“10100000“then e3.0=h“1“;d3
3、.0=h“5“;a7.0=q7.0-b“10010110“;可描述为“如果输入的数值小于 160,则百位=1,十位=5,个位= 输入的数值150” 。其 AHDL 语言如下:4(二) 循环扫描模块(sel_clock)模块内含一个八进制计数器,当时钟脉冲信号 CKDSP 来临时,开始计数。同时计数器数值又作为位选信号输出,以此选中第几个数码管显示。当计数器为 0 时,第 0 个数码管显示,将 H“d”输出;当计数器为 1 时,第 1 个数码管显示,将 C 信号输出;当计数器为2 时,第 2 个数码管显示,将 D 信号输出;当计数器为 3 时,第 3 个数码管显示,将 E 信号输出;当计数器为
4、4 时,第 4 个数码管显示,将 H”1”信号(在此并非是 1,而是和DELED 的编写有关,下 H”0”同) 输出;当计数器为 5 时,第 5 个数码管显示,将 H”0”信号输出;当计数器为 6 时,第 6 个数码管显示,将 A 信号输出;当计数器为 7 时,第 7 个数码管显示,将 B 输出。其 AHDL 语言如下:5(三 )数码管显示模块(deled)由于十六进制的十六个数都用到了,所以对于“”和“h”必须重新定义。因为这两个符号出现的位置是固定的,所以可以通过控制位选信号而对它们进行重新定义。当位选为0,1,2,3,6,7 时按正常的十六进制输出,位选信号为 4,5 时按下面的定义输出,即输出“”和“h” 。比较其他同学对该模块的处理,她们直接定义 NUM4.0,写法简单但是却多占用了空间。而我这种方法在定义时有些复杂,却可节省空间。6三、实验分析:本实验实现了将八位二进制转换为十进制和十六进制输出, 输入 B“00010001”,输出输入 B“01110001”,输出结果符合二进制与十进制以及十六进制的转换,完成了该实验的设计目的。四、实验总结:通过这次实验,我较为熟练地掌握了扫描时钟模块和数码管显示模块的原理,可根据不同的需要对它们进行修改设计,以实现所要求的设计目的。并且写出了二进制转十进制的设计方案,虽然有些繁琐,但却还有些成就感,毕竟是第一次编出了自己的东西。