(完整word版)八位七段数码管动态显示电路设计
八位七段数码管动态显示电路设计

八位七段数码管动态显示电路的设计一七段显示器介绍七段显示器,在许多产品或场合上经常可见。
其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、b、C、d、E、F。
目前常用的七段显示器通常附有小数点,如此使其得以显示阿拉伯数之小数点部份。
七段显示器的脚位和线路图如下图4.1所示( 其第一支接脚位于俯视图之左上角)。
图4.1、七段显示器俯视图由于发光二极管只有在顺向偏压的时候才会发光。
因此,七段显示器依其结构不同的应用需求,区分为低电位动作与高电位动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作)与共阴极( 高电位动作)七段显示器,如下图4.2所示。
( 共阳极) ( 共阴极)图4.2、共阳极(低电位动作)与共阴极(高电位动作)要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ Sink Current ”方式,亦即是共同接脚COM为VCC,并由Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5所示。
此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM接脚,均接连至VCC电源。
而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。
四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
图4.5、七段显示器模块接线图七段显示器之常见应用如下➢可作为与数值显示相关之设计。
⏹电子时钟应用显示⏹倒数定时器⏹秒表⏹计数器、定时器⏹算数运算之数值显示器二七段显示器显示原理七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极管依位置不同而赋予不同的名称,请参见图4.1 ) 。
(完整word版)数码管动态显示实验报告

实验四数码管动向显示实验一一、实验要求1.在 Proteus 软件中画好 51 单片机最小核心电路,包括复位电路和晶振电路2.在电路中增加四个7 段数码管 ( 共阳 / 共阴自选 ), 将 P1 口作数据输出口与 7 段数码管数据引脚相连, P2.0~P2.3 引脚输出选控制信号3.在 Keil 软件中编写程序 , 采用动向显示法 , 实现数码管分别显示数字1,2, 3, 4二、实验目的1.坚固 Proteus 软件和 Keil 软件的使用方法2.学习端口输入输出的高级应用3.掌握 7 段数码管的连接方式和动向显示法4.掌握查表程序和延时等子程序的设计三.实验说明本实验是将单片机的P1 口做为输出口,将四个数码管的七段引脚分别接到至P1.7 。
由于电路中采用共阳极的数码管,因此当P1 端口相应的引脚为0 时,对应的数码管段点亮。
程序中预设了数字0-9 的段码。
由于是让四个数码管显示不同样的数值,因此要用扫描的方式来实现。
因此定义了scan 函数,接到单片机的p2.0 至在实验中,预设的数字段码表存放在数组TAB中,由于段码表是固定的,因此储藏种类可设为 code。
在 Proteus 软件中依照要求画出电路,再利用Keil软件按需要实现的功能编写 c 程序,生成 Hex 文件,把Hex 文件导到Proteus 软件中进行仿真。
为了可以更好的考据明验要求,在编写程序时需要延时0.5s ,能让人眼更好的分辨;89C51 的一个机器周期包括12 个时钟脉冲,而我们采用的是12MHz晶振,每一个时钟脉冲的时间是1/12us ,因此一个机器周期为 1us。
在 keil程序中,子函数的实现是用void delay_ms(int x),其中x为1时是代表1ms。
四、硬件原理图及程序设计〔一〕硬件原理图设计电路中 P1.0 到 P1.7 为数码管七段端口的控制口,排阻 RP1阻值为 220Ω,到为数码管的扫描信号。
编写程序使实验板上八段数码管循环显示0 到9 字符

编写程序使实验板上八段数码管循环显示0 到9 字符1.八段数码管嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
结构八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母。
见图1。
图1 八段数码管的结构类型八段数码管有两种不同的形式:一种是八个发光二极管的阳极都连在一起的,称之为共阳极八段数码管;另一种是八个发光二极管的阴极都连在一起的,称之为共阴极八段数码管。
工作原理以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。
电平信号按照dp,g,e…a 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表如下:表1 常用字符的段码表显示方式八段数码管的显示方式有两种,分别是静态显示和动态显示。
静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。
动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。
基础知识地址0x10000004为数码管的数据寄存器,控制数码管的段码输出.数码管扫描控制地址为0x10000006,8位访问Bit0 –控制数码管0 –低电平有效Bit1 –控制数码管1 –低电平有效Bit2 –控制数码管2 –低电平有效Bit3 –控制数码管3 –低电平有效Bit4 –控制数码管4 –低电平有效Bit5 –控制数码管5 –低电平有效实验说明1、制作LED字符与码段对应表unsigned char seg7table[16] = {/* 0 1 2 3 4 5 6 7*/0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e };2、扫描控制*((U8*) 0x02000006) = 0x3E; /* 使能第一个数码管 */段码输出*((U8*) 0x02000004) = seg7table[0]; /* 输出数据 0 */思考:简述LED的显示原理以及LED的显示办法静态显示和动态显示各有什么优缺点设计"HELLO"的码表,编写程序循环显示"HELLO"。
七段数码管动态显示控制

实验二七段数码管动态显示控制一、实验目的利用AT89S52和使用两位数码管显示器,循环显示两位数00-99。
其中P2.0和P2.1端口分别控制数码管的个位和十位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过驱动三极管给数码管相应的位供电,这时只要P3口送出数字的显示代码,数码管就能正常显示数字。
二、实验要求1、使用两位数码管显示器,循环显示两位数00-99;2、具有电源开关和指示灯,有复位键;3、数码管动态显示,即扫描方式,每一位每间隔一段时间扫描一次。
字符的亮度及清晰度与每位点亮的停留时间和每位显示的时间内轮换导通次数有关。
三、实验电路四、实验器材AT89S52;动态扫描显示;共阳极数码管;电阻五、实验原理说明图1 AT89S52引脚图图2 共阳极七段数码管引脚图1AT89S52引脚图,说明如下:按照功能,AT89S52的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O 口、控制和复位等。
1.多功能I/O口AT89S52共有四个8位的并行I/O口:P0、P1、P2、P3端口,对应的引脚分别是P0.0 ~ P0.7,P1.0 ~ P1.7,P2.0 ~ P2.7,P3.0 ~ P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
①P0端口,该口是一个8位漏极开路的双向I/O口。
在作为输出口时,每根引脚可以带动8个TTL输入负载。
当把“1”写入P0时,则它的引脚可用作高阻抗输入。
当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。
在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。
②P1端口,该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
8位LED数码管动态显示电路的仿真测试

数字电子技术仿真实验实验题目:8位LED数码管动态显示电路院系:电子与信息工程学院专业:电子信息工程班级:2010级X班老师:XXX姓名:XXX学号:XXXXXXXXXX8位LED数码管动态显示电路的仿真测试一,实验目的:(1)掌握LED数码管动态显示的工作原理。
(2)掌握BCD—七段显示译码器74LS48,3—8线译码器74LS138的应用。
(3)掌握MultiSIM中LED数码管的应用。
二,实验原理:LED数码管有静态显示和动态显示2种显示方式。
LED数码管工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地,且使用一片译码驱动芯片驱动一位七段LED数码管进行数码显示。
LED数码管工作于动态显示方式时,使用一片译码驱动芯片驱动多位七段LED数码管,有控制电路控制各位显示器分别进行数码显示,即每个显示器按照不同的时间轮流使用这片译码驱动芯片,从而是电路更加简单。
三,实验设配及元器件:四,仿真结果:1,显示相同数码电路的仿真测试:2,显示不同数码电路的仿真实验:(1)当频率为100HZ时:LED数码管显示的数码及显示的顺序:(2)当频率为100KHZ时:LED数码管显示的数码及显示的顺序:五,实验总结:通过此次实验,不仅让我对仿真更加熟悉,也加深了我对数字电子电路的理解。
在仿真过程中,我遇到了很多困难,经过思考和尝试,终于将实验做成功了。
例如刚开始我不知道字符信号发生器再那里,于是就在原件中一个一个的试,很快就在工具栏上的图标中找到了。
还有数码管,在元件库中找了很久,终于在Indicators下面的HEX_DISPLAY中才找到。
电路图连接完后,因为字符信号发生器没有接地,数码管始终不能显示。
改正后,刚开始又始终只有一位数码管显示,经过思考,原来是频率低了,当我把频率变大后,循环扫描的速度变得足够快,就可以看到8位LED数码管的持续发光。
电子设计自动化实验指导书_六个实验2015

目录实验一半加器和全加器的设计实验二多路选择器设计实验三基本触发器的设计实验四十进制加法计数器的设计实验五八位七段数码管动态显示电路的设计实验六基于VHDL的表决器的设计附表一核心板载资源与FPGA EP2C35 I/O接口对照表附表二EP2C35与开发平台硬件资源I/O接口对照表实验一 半加器和全加器的设计一、 实验目的1、掌握图形的设计方式;2、掌握自建元件及调用自建元件的方法;3、熟练掌握QUARTUS II 的使用。
二、实验内容1、熟练软件基本操作,完成半加器和全加器的设计;2、正确设置仿真激励信号,全面检测设计逻辑;3、综合下载,进行硬件电路测试。
三、实验原理1、半加器的设计半加器只考虑了两个加数本身,没有考虑由低位来的进位。
半加器逻辑表达式:B A B A B A S ⊕=+=;AB C =2.全加器的设计全加器除考虑两个加数外,还考虑了低位的进位。
0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1111全加器逻辑表达式:1-⊕⊕=i i i i C B A S ;AB C B A C i i i i +⊕=-1)( 3、利用半加器元件完成全加器的设计 (1)图形方式其中HADDER 为半加器元件。
四、实验步骤1、完成图形半加器设计。
2、完成VHDL 半加器设计与仿真(记录仿真波形)。
3、完成VHDL 全加器设计与仿真(记录仿真波形)。
4、利用半加器元件进行图形的全加器设计。
五、思考题:1、怎样自建元件?自建元件的调用要注意什么?实验二 多路选择器的设计一、实验目的1.熟练掌握多路选择器的设计方法;2.用VHDL语言中不同的语句来描述。
二、实验原理四选一多路选择器的原理如下图及下表,由Sl,S0来选择d0 ,dl ,d2 ,d3的信号,并使其能在Q上输出。
三、实验内容1、用VHDL语言的不同语句分别描述任务选择器,并通过编译仿真比较不同语句描述的区别。
实验四 七段数码管显示实验报告

实验四七段数码管显示实验一、实验目的掌握数码管显示数字的原理。
二、实验内容1.静态显示:数码管为共阴极,通过BCD码译码驱动器CD4511驱动,其输入端A~D输入4位BCD码,位码输入低电平选中。
按图4-1连接好电路,将8255的A口PA0~PA3与七段数码管LED1的BCD码驱动输入端A1~D1相连,8255的A口PA4~PA7与七段数码管LED2的BCD码驱动输入端A2~D2相连,8255的B口PB0~PB3与七段数码管LED3的BCD码驱动输入端A3~D3相连,8255的B口PB4~PB7与七段数码管LED4的BCD码驱动输入端A4~D4相连,8255的C口PC0~PC3分别与七段数码管LED4~LED4的位驱动输入端DG1~DG4相连。
编程从键盘上每输入4个0~9数字,在七段数码管LED4~LED4上依次显示出来。
图4-12.动态显示:数码管为共阴极,段码采用相同驱动,输入端加高电平,选中的数码管对应段点亮,位码采用同相驱动,位码输入端低电平选中,按图4-2连接好电路,图中只画了2个数码管,实际是8个数码管,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~g相连(32TCI0模块上的J1连32LED8模块J2),8255的C口的PC0~PC7接七段数码管的段码驱动输入(32TCI0模块上的J3连32LED8模块J1),跳线器K1连2和3。
编程在8个数码管上显示“12345678”。
按任意键推出运行。
图4-2三、编程提示1.由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不用,编程时需要了解当前的微机使用那段IO地址并进行处理。
2.对实验内容1,七段数码管字型代码与输入的关系如下表:四、参考流程图1.实验内容一的参考流程图图4-3 2.实验内容二的参考流程图图4-4五、参考程序1.内容一的参考程序源程序清单如下:data segmentioport equ 0c400h-0280hio8255a equ ioport+288hio8255b equ ioport+289hio8255c equ ioport+28ahio8255k equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$'bz db ?cz db 04hdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;使8255的A口为输出方式mov ax,80hout dx,alsss0: mov si,offset bzmov cx,04hsss1: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30h ;将所得字符的ASCII码减30Hmov [si],al ;存入显示缓冲区inc si ;显示缓冲区指针加1dec cx ;判断输入满4个数字吗?jnz sss1 ;不满继续mov si,offset bz ;从显示缓冲区取第一个数字的BCD 码mov al,[si]and al,0fh ;屏蔽高四位暂存ALinc si ;显示缓冲区指针加1mov ah,[si] ;取第二个数字的BCD码到AHsal ah,4h ;右移4次到高四位add al,ah ;两个BCD码合并成一个字节mov bl,al ;暂存入BLinc simov al,[si] ;取第三个数字的BCD码and al,0fhinc simov ah,[si] ;取第四个数字的BCD码到AHsal ah,4hadd ah,almov al,ahmov dx,io8255a ;从8255的A口输出(后两个数字)out dx,almov al,blmov dx,io8255b ;从8255的B口输出(前两个数字)out dx,almov al,0f0hmov dx,io8255c ;从8255的C口输出位码out dx,almov dl,0ffhmov ah,06int 21hje sss0 ;有键按下则退出exit: mov ah,4ch ;返回int 21hcode endsend start2.内容二的参考程序源程序清单如下:data segmentioport equ 0C400h-0280hio8255c equ ioport+28ahio8255k equ ioport+28bhio8255a equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 01h,02h,03h,04h,05h,06h,07h,08h ;存放要显示的十位和个位con db ? ;位码data endscode segmentassume cs:code, ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;将8255设为A口C口输出mov al,80hout dx,alloop2: mov al,08h ;设置数码管位计数器初值到CON mov byte ptr con,almov si,offset buffer1 ;置显示缓冲器指针SImov ah,7fh ;置位码初值disp0: mov cx,0ffffhmov bl,ds:[si] ;取显示缓冲区显示值存BXmov bh,0hpush simov dx,io8255c ;位码从C口输出mov al,ahout dx,almov dx,io8255amov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]out dx,al ;段码从A口输出disp1: loop disp1 ;延时mov cx,0ffffhdisp2: loop disp2ror ah,01h ;位码右移1位pop siinc si ;显示缓冲区指针加1mov al,byte ptr condec almov byte ptr con,aljnz disp0 ;数码管位计数器减1为0吗?,不为0继续mov dx,io8255a ;为0,关数码管显示mov al,0out dx,almov dl,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov ah,4ch ;返回int 21hcode endsend start实验总结:通过这次试验,我了解到自定义数据类型可以根据自己的需要方便设定,有很大的灵活性。
实验七 八段数码管显示

实验七八段数码管显示
1.实验目的:
了解数码管动态显示的原理。
2.实验要求:
利用实验仪提供的显示电路,动态显示一行数据.
3.实验说明:
本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H,位码输出地址为 0X002H。
此处X是由CS40 决定,参见地址译码。
做键盘和LED实验时,需将CS40孔接到相应的地址译码上。
以便用相应的地址来访问。
例如,将CS40孔接到CS0上,则段码地址为08004H,位码地址为08002H。
4.实验器材:
(1)G2100 实验平台 1 台(2)LabMON51 仿真器 1 台
(3)计算机 1 台(4)实验连线若干
5.程序框图:
6.实验电路:
七段数码管的字型代码表如下表:
7.实验步骤:
(1)把第“40”号模块“键盘显示”的片选信号CS40孔接第“36”号模块“片选信
号”YS0(08000-08FFFH )孔。
(2)编程并调
试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
八位七段数码管动态显示电路的设计一七段显示器介绍七段显示器,在许多产品或场合上经常可见。
其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、b、C、d、E、F。
目前常用的七段显示器通常附有小数点,如此使其得以显示阿拉伯数之小数点部份。
七段显示器的脚位和线路图如下图4.1所示( 其第一支接脚位于俯视图之左上角)。
图4.1、七段显示器俯视图由于发光二极管只有在顺向偏压的时候才会发光。
因此,七段显示器依其结构不同的应用需求,区分为低电位动作与高电位动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作)与共阴极( 高电位动作)七段显示器,如下图4.2所示。
( 共阳极) ( 共阴极)图4.2、共阳极(低电位动作)与共阴极(高电位动作)要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ Sink Current ”方式,亦即是共同接脚COM为VCC,并由Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5所示。
此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM接脚,均接连至VCC电源。
而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。
四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。
八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。
图4.5、七段显示器模块接线图七段显示器之常见应用如下可作为与数值显示相关之设计。
⏹电子时钟应用显示⏹倒数定时器⏹秒表⏹计数器、定时器⏹算数运算之数值显示器二七段显示器显示原理七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极管依位置不同而赋予不同的名称,请参见图4.1 ) 。
我们可以简单的说,要产生数字,便是点亮特定数据的发光二极管。
例如要产生数字「0」,须只点亮A、B、C、D、E、F等节段的发光二极管;要产生数字「5」,则须点亮A、C、D、F、G等节段发光二极管,以此类推,参见图4.6。
因此,以共阳极七段显示器而言,要产生数字「0」,必须控制Cyclone II FPGA芯片接连至A、B、C、D、E、F 等接脚呈现“低电位”,使电路形成通路状态。
表4.1则为共阳极七段显示器显示之数字编码。
图4.6、七段显示器显示阿拉伯数字表4.1、共阳极七段显示器显示数字编码本实验要求完成的任务是在时钟信号的作用下,通过输入的键值在数码管上显示相应的键值。
在实验中时,数字时钟选择1KHZ作为扫描时钟,用四个拨动开关做为输入,当四个拨动开关置为一个二进制数时,在数码管上显示其十六进制的值。
实验箱中的拨动开关与FPGA的接口电路,以及拨动开关FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。
数码管显示模块的电路原理如图4-2所示,图4-2 数字时钟信号模块电路原理三实验步骤(本实验用VHDL文本语言实现八位七段数码管动态显示,当然也可用Quartus的图形输入法实现八位七段数码管动态显示)1. 下面我们建立一个八位七段数码管动态显示的VHDL工程1)选择开始> 程序> Altera > QuartusII5.1,运行QUARTUSII软件。
或者双击桌面上的QUARTUSII的图标运行QUARTUSII软件,出现如图1-3所示。
图1-3 QUARTUSII软件运行界面2)选择软件中的菜单File > New Project Wizard,新建一个工程。
如图1-4所示。
图1-4 新建工程对话框3)点击图1-4中的NEXT进入工作目录,工程名的设定对话框如图1-5所示。
第一个输入框为工程目录输入框,用户可以输入如e:/eda等工作路径来设定工程的目录,设定好后,所有的生成文件将放入这个工作目录。
第二个输入框为工程名称输入框,第三个输入框为顶层实体名称输入框。
用户可以设定如EXP1,一般情况下工程名称与实体名称相同。
使用者也可以根据自已的实际情况来设定工程名和顶层文件名。
注:本处的顶层文件名必须和程序的实体名一致,否则编译会出错。
图1-5 指定工程名称及工作目录4)点击NEXT,进入下一个设定对话框,按默认选项直接点击NEXT进行器件选择对话框。
如图1-6所示。
这里我们以选用CycloneII系列芯片EP2C35F672C8为例进行介绍。
用户可以根据使用的不同芯片来进行设定。
图1-6 器件选择界面首先在对话框的左上方的Family下拉菜单中选取CycloneII,在中间右边的Speed grade下拉菜单中选取8,在左下方的Available devices框中选取EP2C35F672C8,点击NEXT 完成器件的选取,进入EDA TOOL设定界面如图1-7所示。
图1-7 EDA TOOL对话框5)按默认选项,点击Next出现新建工程以前所有的设定信息,如图1-8所示,点击Finish完成新建工程的建立。
图1-8 新建工程信息2、建立VHDL设计文件1)在创建好设计工程后,选择File > NEW…菜单,出现图1-9所示的新建设计文件类型选择窗口。
这里我们以建立VHDL设计文件为例进行说明。
图1-9 新建设计文件选择窗口2)在New对话框(图1-9)中选择Device Design Files页下的VHDL File,点击OK 按钮,打开图形编辑器对话框,如图1-10所示。
图中标明了常用的每个按钮的功能3)在文本编辑器中输入如下VHDL程序:ledag : out std_logic_vector(6 downto 0); --定义七位输出信号del : out std_logic_vector(2 downto 0) --定义八位数码管位置显示信号);end exp4; --结束实体-------------------------------------------------------------------- architecture whbkrc of exp4 is --whbkrc为结构体名begin --以begin为标志开始结构体的描述process(clk) --进程,clk变化时启动进程variable dount : std_logic_vector(2 downto 0); --变量,计数beginif clk'event and clk='1' then--检测时钟上升沿dount:=dount+1;--计数器dount累加end if;del<=dount; --片选信号end process;--结束进程process(key) --进程,key变化时启动进程begincase key iswhen "0000" => ledag <="0111111";--七段数码管显示 0when "0001" => ledag <="0000110";--1when "0010" => ledag <="1011011";--2when "0011" => ledag <="1001111";--3when "0100" => ledag <="1100110";--4when "0101" => ledag <="1101101";--5when "0110" => ledag <="1111101";--6when "0111" => ledag <="0000111";--7when "1000" => ledag <="1111111";--8when "1001" => ledag <="1101111";--9when "1010" => ledag <="1110111";-- Rwhen "1011" => ledag <="1111100";--bwhen "1100" => ledag <="0111001";--Cwhen "1101" => ledag <="1011110";--dwhen "1110" => ledag <="1111001";--Ewhen "1111" => ledag <="1110001";--Fwhen others => null;end case;end process; --结束进程end whbkrc; --结束结构体关于VHDL,我们以上面八位七段数码管显示程序为例来解释VHDL的语法构成,以使大家对VHDL有个整体的把握。
一个VHDL程序有三部分构成,其为 :1.库和包 library(设计资源);2. 实体 entity(外部端口)3. 结构体 architecture(内部结构)①库和包 library(设计资源)的介绍本程序中用到3个库函数包:如下:1.1 use ieee.std_logic_1164.all;--定义了std_logic数据类型及相应运算1.2 use ieee.std_logic_arith.all;--定义了signed和unsigned数据类型、相应运算--和相关类型转换函数1.3 use ieee.std_logic_unsigned.all;--定义了一些函数,可以使std_logic_vector--类型被当作符号数或无符号数一样进行运算补充:当使用库时,需要说明使用的库名称,同时需要说明库中包集合的名称及范围;每个实体都应独立进行库的说明;库的说明应该在实体之前;经过说明后,实体和结构体就可以自动调用库中的资源;②实体 entity(外部端口)entity exp4 is --exp4为实体名port( clk : in std_logic; --定义动态扫描时钟信号key : in std_logic_vector(3 downto 0); --定义四位输入信号ledag : out std_logic_vector(6 downto 0); --定义七位输出信号del : out std_logic_vector(2 downto 0) --定义八位数码管位置显示信);end exp4; --结束实体实体说明主要描述对象的外貌,即对象的输入和输出(I/O)的端口信息,它并不描述器件的具体功能。