EDA课程设计八位数码管扫描显示电路的设计 2解读.docx
- 文档编号:25311508
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:11
- 大小:637.74KB
EDA课程设计八位数码管扫描显示电路的设计 2解读.docx
《EDA课程设计八位数码管扫描显示电路的设计 2解读.docx》由会员分享,可在线阅读,更多相关《EDA课程设计八位数码管扫描显示电路的设计 2解读.docx(11页珍藏版)》请在冰豆网上搜索。
EDA课程设计八位数码管扫描显示电路的设计2解读
EDA技术应用期末论文
题目:
八位数码管动态显示
姓名:
班级:
学号:
1.系统总体方案设计................................................1
2.LED的工作原理...................................................2
2.1LED工作原理....................................................3
2.2LED动态扫描显示原理............................................3
3.系统设计.........................................................4
3.1硬件电路设计....................................................9
3.2VHDL代码设计...................................................9
4.运行调试......................................................,,7
4.1时序仿真.......................................................7
5总结..............................................,,,,,,,,,,,,,,,9
6.参考文献.........................................................10
1.系统总体方案设计
设计流程图如下:
首先,我们要对所要设计的八位数码管静态扫描显示电路充分理解,同时在了解了所给的硬件器材的基础上需进行“源程序的编辑和编译”——用一定的逻辑表达手段将设计表达出来;其次要进行“逻辑综合”——将用一定的逻辑表达手段表达出来的设计,经过一系列的操作,分解成一系列的基本逻辑电路及对应关系;然后要进行“目标器件的布线∕适配”——在选定的目标器件中建立这些基本逻辑电路及对应关系;最后,目标器件的编程下载——将前面的软件设计经过编程变成具体的设计系统,同时在设计过程中要进行有关“仿真”——模拟有关设计结果,看是否与设计构想相符。
系统结构框图如下:
硬件资源
元件引脚
EP3C引脚序号
电路使用说明
LED
数码显示
A
133
该部分电路为固定电路。
使用LED数码显示时请按照器件引脚分配表进行引脚分配后再下载到芯片中。
B
135
C
136
D
137
E
138
F
141
G
142
Dp
128
74LS138
S1
125
S2
126
S3
127
2.LED的工作原理
2.1LED工作原理
LED为分段式半导体显示器,通常称为七段发光二极管显示器。
下图为七段发光二极管显示器共阴极和共阳极的电路图。
对共阴极显示器的公共端应接地,给a-g输入相应高电平,对应字段的发光二极管显示十进制数;对共阳极的公共端应接+5V电源,给a-g输入端相应低电平,对应字段的发光二极管也显示十进制数。
2.2LED动态扫描显示原理
LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。
位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。
要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。
虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
3系统设计
3.1硬件电路设计
3.2VHDL程序设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_signed.all;
entityscan_seg8is
port(clk3,clk5:
instd_logic;
rst:
instd_logic;
seg_da:
outstd_logic_vector(7downto0);
seg_sel:
outstd_logic_vector(2downto0)
);
endscan_seg8;
architectureadoofscan_seg8is
signalseg_buf1,seg_buf2,seg_buf3,seg_buf4,seg_buf0:
std_logic_vector(3downto0);
signalseg_buf5,seg_buf6,seg_buf7,seg_buf8:
std_logic_vector(3downto0);
signalseg_cnt:
std_logic_vector(2downto0);
signalseg_temp:
std_logic_vector(3downto0);
signalclk:
std_logic;
begin
process(clk5)
begin
ifclk5'eventandclk5='1'then
clk<=notclk;
endif;
endprocess;
process(clk5,rst)
begin
ifclk5'eventandclk5='1'then
ifclk='1'then
seg_buf1<="0010";
seg_buf2<="0010";
seg_buf3<="1000";
seg_buf4<="0010";
seg_buf5<="0000";
seg_buf6<="0001";
seg_buf7<="0000";
seg_buf8<="0010";
else
seg_buf1<="1111";
seg_buf2<="1111";
seg_buf3<="1111";
seg_buf4<="1111";
seg_buf5<="1111";
seg_buf6<="1000";
seg_buf7<="0001";
seg_buf8<="0000";
endif;
endif;
endprocess;
process(clk3,rst)
begin
ifclk3'eventandclk3='1'then
ifrst='1'then
seg_cnt<="000";
else
seg_cnt<=seg_cnt+1;
endif;
endif;
endprocess;
seg_sel<=seg_cnt;
process(seg_cnt,seg_buf1,seg_buf2,seg_buf3,seg_buf4,seg_buf5,seg_buf6,seg_buf7,seg_buf8)
begin
caseseg_cntis
wheno"0"=>seg_temp<=seg_buf1;
wheno"1"=>seg_temp<=seg_buf2;
wheno"2"=>seg_temp<=seg_buf3;
wheno"3"=>seg_temp<=seg_buf4;
wheno"4"=>seg_temp<=seg_buf5;
wheno"5"=>seg_temp<=seg_buf6;
wheno"6"=>seg_temp<=seg_buf7;
wheno"7"=>seg_temp<=seg_buf8;
whenothers=>seg_temp<="XXXX";
endcase;
endprocess;
process(seg_temp)
begin
caseseg_tempis
when"0000"=>seg_da<="00111111";
when"0001"=>seg_da<="00000110";
when"0010"=>seg_da<="01011011";
when"0011"=>seg_da<="01001111";
when"0100"=>seg_da<="01100110";
when"0101"=>seg_da<="01101101";
when"0110"=>seg_da<="01111101";
when"0111"=>seg_da<="00000111";
when"1000"=>seg_da<="01111111";
when"1001"=>seg_da<="01101111";
when"1010"=>seg_da<="01110111";
when"1011"=>seg_da<="01111100";
when"1100"=>seg_da<="00111001";
when"1101"=>seg_da<="01011110";
when"1110"=>seg_da<="01111001";
when"1111"=>seg_da<="00000000";
whenothers=>null;
endcase;
endprocess;
endarchitectureado;
4运行调试
4.1时序仿真
(1)建立波形文件。
选择File项及其New,再选择New窗中的WaveformEditer..项,打开波形编辑窗。
(2)输入信号节点。
在波形编辑窗的上方选择Node项,在下拉菜单中选择输入信号,在弹出的窗口中首先点击List键,这时左窗口将列出设计所以信号节点。
由于设计者有时只需要观察其中部分信号的波形,因此要利用中间的“=>”键将需要观察的信号选到右栏中,然后点击OK键即可将测试信号。
(3)设置波形参量。
波形编辑窗中已经调入了所有节点信号,在为编辑窗输出信号测试前,首先设定相关的仿真参数。
(4)设定仿真时间宽度。
选择File项及其Endtime选项,在Endtime选择窗中选择适当的仿真时间域,以便有足够长的观察时间。
(5)波形文件存盘。
选择File项及其Saveas选项,按OK键即可。
(6)运行仿真器,观察分析波形。
选中“processing”菜单下的“startsiulation”,直到出现“simulationwassuccessful”对话框。
把所有的参数都设定好了之后,就可以观察相关的波形了。
5总结
通过此次实验我们进一步掌握QUARTUSII的的使用方法以及使用的各种规章流程。
同时,通过此次实验也加强了我对于VHDL这门语言的更深刻的认识,让我从感性上感知到了VHDL语言的独特之处。
以前在课堂上总是听老说VHDL语言与其他语言的不同就是VHDL是面向硬件的语言,它是会占硬件电路大小的,之前我还是没能体会到这句话的含义。
当通过这次试验后,我终于体会到了这句话的含义。
VHDL是EDA技术的重要组成部分,其具有与具体硬件电路无关和与设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化,结构化设计方面,表现了强大的生命力和应用潜力。
通过这次实验不仅让我专业知识得到了提高,同时也让我自身的一些不良习惯,像马虎,没有耐心等得到改善。
在设计时我们共同讨论,互相学习,互相借鉴,让我们同学之间,师生之间关系变得更融洽!
6.参考文献
【1】郑燕,赫建国.基于VHDL与QuartusII软件的可编程逻辑器件应用于开发.北京:
国防工业出版社,2011.
【2】Altera.PinInformationfortheCycloneIIIEP3C10Device.Sanjose:
AlteraCorp,2008.
【3】潘松,黄继业.EDA技术实用教程——VHDL版.北京:
科学出版社,2010.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA课程设计八位数码管扫描显示电路的设计 2解读 EDA 课程设计 八位 数码管 扫描 显示 电路 设计 解读