开关控制数码管的VHDL程序的设计与实现

合集下载

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)
信号源模块的时钟选择为 1KHZ,第一个实验则有一位数码管重重复显示 0-9 的数,第二个实验则八位数码管显示了学号后8 位。其部分结果如下所示:
(1)一位数码管显示0-9:
(2)八位数码管显示学号后八位: 七、心得体会
七段码管位选输入信号 七段码管位选输入信号 七段码管位选输入信号
五、 实验步骤
1、打开 QUARTUSII 软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL 编辑器对话框。 3、按照实验原理和自己的想法,在VHDL 编辑窗口编写VHDL 程序。其 程序如下所示:
(1)一位数码管显示0-9:
电子科技大学成都学院学院
标准实验报告
(实验)课程名称 数字电路 EDA 设计与应用
姓名 乱弹的枇杷 学号 专业 指导教师
一、 实验名称 数码管显示(一位数码管显示 0-9,八位数码管显示学号
后八位)
二、 实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、掌握 VHDL 的 CASE 语句及多层次设计方法。
信号名称对应fpga管脚名说明7segaf13七段码管段输入信号7segbf14七段码管段输入信号7segcf15七段码管段输入信号7segde15七段码管段输入信号7segef16七段码管段输入信号7segff17七段码管段输入信号7segge18七段码管段输入信号7segdpf18七段码管dp段输入信号7segsel0g18七段码管位选输入信号7segsel1g17七段码管位选输入信号7segsel2g16七段码管位选输入信号实验步骤1打开quartusii软件新建一个工程
信号名称 7SEG-A 7SEG-B 7SEG-C 7SEG-D 7SEG-E 7SEG-F 7SEG-G 7SEG-DP 7SEG-SEL0 7SEG-SEL1 7SEG-SEL2

vhdl设计实验报告

vhdl设计实验报告

vhdl设计实验报告VHDL设计实验报告引言VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和验证。

本实验旨在通过设计一个简单的电路来熟悉VHDL语言的基本语法和设计流程。

一、实验背景数字电路是现代电子系统的基础,而VHDL则是描述和设计数字电路的重要工具。

VHDL可以帮助工程师们以一种形式化的语言来描述电路的功能和结构,从而实现电路的模拟和验证。

二、实验目的本实验的目的是通过使用VHDL语言设计一个简单的电路,加深对VHDL语言的理解,并掌握基本的电路设计流程。

三、实验步骤1. 确定电路功能在设计电路之前,首先需要明确电路的功能。

本实验中,我们选择设计一个4位加法器电路。

2. 设计电路结构根据电路功能的要求,设计电路的结构。

在本实验中,我们需要设计一个4位加法器,因此需要使用4个输入端口和一个输出端口。

3. 编写VHDL代码使用VHDL语言编写电路的描述代码。

在代码中,需要定义输入和输出端口的类型和位宽,并实现电路的功能。

4. 进行仿真使用仿真工具对设计的电路进行仿真,以验证电路的功能是否符合预期。

通过输入不同的测试数据,观察输出是否正确。

5. 下载到FPGA开发板将设计好的电路代码下载到FPGA开发板上进行验证。

通过连接输入信号和观察输出信号,验证电路在实际硬件上的运行情况。

四、实验结果与分析经过仿真和实际验证,我们设计的4位加法器电路在功能上符合预期。

输入不同的数据进行加法运算时,输出结果都正确。

五、实验总结通过本次实验,我们深入了解了VHDL语言的基本语法和设计流程。

通过设计一个简单的电路,我们掌握了VHDL的应用方法,并通过仿真和实际验证,加深了对电路设计的理解。

六、实验心得本实验让我对VHDL语言有了更深入的认识。

通过实际操作,我更加熟悉了VHDL的编写和仿真流程。

vhdl按键控制数码管显示

vhdl按键控制数码管显示

vhdl按键控制数码管显示
 在传统的硬件电路设计中,主要的设计文件是电路原理图,而采用HDL 设计系统硬件电路时主要使用HDL编写源程序。

 VHDL的主要优点有:
 (1)VHDL支持自顶至下的和基于库的设计方法,而且支持同步电路、异步电路、现场可编程门阵列器件FPGA(field programmable gate array)以及其他随机电路的设计。

 (2)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计再利用的功能,它支持系统的数学模型直到门级电路的描述,并且高层次的行为描述与低层次的门级电路描述、结构描述可以混合使用。

(3)VHDL的硬件描述与具体的工艺技术和硬件结构无关,当门级或门级以上的描述通过仿真检验后,再利用相应的工具将设计映射成不同的工艺,因此电路的设计与工艺的改变是相互独立的。

彼此的改变不会产生不良影响,并且VHDL硬件描述语言的实现目标器件的选择范围广泛,可使用各系列的CPLD、FPGA及各种门阵列器件。

VHDL与数字电路设计实验报告

VHDL与数字电路设计实验报告

VHDL与数字电路设计实验报告引言本实验旨在通过使用VHDL编程语言和数字电路设计技术,实现特定功能的电路设计。

本文档将对实验的步骤、设计原理和结果进行详细描述。

实验步骤1. 步骤一:熟悉VHDL编程语言在实验开始之前,团队成员对VHDL编程语言进行了研究和熟悉。

我们了解了VHDL的基本语法、数据类型和结构,并获得了对VHDL设计原理的初步理解。

2. 步骤二:设计功能电路在本实验中,我们选择了一个特定的功能电路进行设计。

我们首先进行了功能需求分析,并根据需求确定了电路的输入输出信号以及主要的逻辑运算。

然后,我们使用VHDL编程语言将电路的逻辑运算实现为代码,并进行了仿真和测试。

3. 步骤三:电路仿真和验证为了验证我们设计的电路功能的正确性,我们使用了VHDL仿真工具进行了电路的仿真和验证。

我们根据输入信号的不同组合,观察输出信号的变化,并与我们预期的结果进行比较。

通过这一步骤,我们确认了我们设计的电路能够按照预期工作。

4. 步骤四:电路实现和测试在确认电路的设计和仿真结果无误之后,我们进一步将电路实现到实际的数字电路平台上,并进行了硬件测试。

我们使用实际的输入信号来测试电路的性能和稳定性,并对输出信号进行观察和分析。

通过这一步骤,我们验证了电路在实际环境中的可行性。

设计原理我们设计的电路基于特定的功能需求,采用了经典的数字电路设计原理。

通过使用VHDL编程语言,我们将电路的逻辑运算实现为逻辑门和触发器的组合。

通过将输入信号连接到适当的逻辑门和触发器,我们实现了所需的功能。

结果与分析经过实验步骤的完成,我们成功地设计和实现了一个具有特定功能的数字电路。

在仿真测试和实际测试中,电路都表现出了良好的性能和稳定性。

根据结果的分析,我们验证了电路的设计原理和逻辑的正确性。

结论本实验通过使用VHDL编程语言和数字电路设计技术,成功地实现了一个具有特定功能的电路设计。

我们的实验结果表明,VHDL和数字电路设计技术在电路设计领域具有重要的应用价值。

VHDL语言实现数字电路设计

VHDL语言实现数字电路设计

VHDL语言实现数字电路设计数字电路是由逻辑门、寄存器以及其他数字组件组成的电子系统,用于处理和传输数字信号。

VHDL(Very High-Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。

通过使用VHDL语言,我们可以实现数字电路的设计,从而满足各种需求。

VHDL语言提供了一种结构化的设计方法,允许设计者描述硬件电路的结构、功能以及时序行为。

以下是一些常见的数字电路设计任务,以及如何使用VHDL语言来实现它们。

1. 门电路设计门电路是最简单的数字电路之一,由逻辑门组成。

使用VHDL语言,我们可以通过描述逻辑门的输入和输出来实现门电路的设计。

例如,我们可以使用VHDL语言描述一个与门:```vhdlentity AND_gate isport (A, B : in bit;Y : out bit);end entity AND_gate;architecture dataflow of AND_gate isbeginY <= A and B;end architecture dataflow;```在这个例子中,我们定义了一个输入端口A和B,以及一个输出端口Y。

在architecture部分,我们使用VHDL语言描述了Y的逻辑值为A和B的逻辑与。

2. 时序逻辑电路设计时序逻辑电路是根据时钟信号进行操作和状态转换的电路。

使用VHDL语言,我们可以描述时序逻辑电路的行为和状态变化。

例如,我们可以使用VHDL语言描述一个触发器:```vhdlentity D_flip_flop isport (D, CLK : in bit;Q : out bit);end entity D_flip_flop;architecture behavior of D_flip_flop issignal Q_temp : bit;beginprocess(CLK)beginif CLK'event and CLK = '1' thenQ_temp <= D;end if;end process;Q <= Q_temp;end architecture behavior;```在这个例子中,我们定义了一个输入端口D和CLK,以及一个输出端口Q。

基于VHDL语言的数码管闪烁控制的实现

基于VHDL语言的数码管闪烁控制的实现

在上位机调试时 , 最重要 的是顺序的处理数据 , 因为
不 同的数据在转化 时会乘 以不同的权 ,所 以如果数据顺
序不正确 , 将得不到预期的效果。当输入一个方波时 , 现
象如 图 7 示 。 所
[ 刘皖, 4 ] 何道君’ 谭明. G F A设计与应用[ ] P M. 北京: 清华大学
出版社, 0 , . 2 66 0 0
[赵宇 玲. 于 F G 5 ] 基 P A的信号采集 与处理 系统设计 与实
现[】 D. 南京: 京理工大学, 0 ,: — 3 南 2 8 2 2. 0 62
1 4
_
w e ” 1” > au =h m ( ; h n 0 = do t su g ) 1 < 3
w e ”0 ” > au< su g ) h n 10= do t=h m ( ; 4 w e ”0 ” > au =h m ( ; h n 1 1= do t su g ) < 5 w e ” ” > au =h m ( ; h n 10= do t su g ) 1 < 6
基 于 V D 语 言的数码管闪烁控制的实现 HL
电子 质 量 ( 1第 0 期) 22 7 0
为数码管闪烁的基准时钟 , 用于控制数字 闪烁 的快慢 , 从
而达到调速的 目的。
S 4:
W HEN 3 >F S = LOW ER2 = 3CURRENT S < FF ; TAT : E<
的 显示 。
END CAS E; END I F;
2各模块设计
21分频模块 。 该模块主要用 V D H L语言实现四分频 和八分频。设
计时主要用 到计数器。主要代码如下 :
I I I GE C K I )HEN FR SNG ED fL NT

基于VHDL语言的数码管闪烁控制的实现

基于VHDL语言的数码管闪烁控制的实现王芸【期刊名称】《电子质量》【年(卷),期】2012(000)007【摘要】介绍了在MAX+PLUSⅡ开发环境下,用VHDL语言设计一种用于控制8路数码管闪烁的电路。

该电路具有4种花型,且可以变换速度。

通过MAX+PLUSⅡ软件进行波形仿真后,利用实验板提供的资源,下载到芯片中实现预定功能。

%A design of the eighty LED digital display flicker circuit based on VHDL is introduced with the MAX+PLUS II.The system can demonstrate four kinds of flowers cyclically with different speeds.After the simulation is correct with the MAX+PLUS II software,the resources provided by experimental board is download to chip for achieving the function.【总页数】3页(P12-14)【作者】王芸【作者单位】安徽师范大学,安徽芜湖241000【正文语种】中文【中图分类】TN949.16【相关文献】1.VHDL语言实现FIFO存储控制 [J], 郑波祥;陈笑;齐晋2.控制系统中用数码管显示实时数据的实现方法 [J], 宋洪柱3.基于VHDL语言的交通信号控制器的设计与实现 [J], 林涛4.基于S7-200 smart型PLC的彩灯闪烁控制系统实现 [J], 张松宇;胡春芳5.汽车车灯控制系统的VHDL语言实现 [J], 郑应民因版权原因,仅展示原文概要,查看原文内容请购买。

vhdl共阴极数码显示电路

VHDL共阴极数码显示电路一、引言数字显示电路是现代电子设备中常见的基础电路之一,它能将数字信号转换为人们可以直观理解的数字显示形式。

在数字显示电路中,共阴极数码显示电路是一种常见且重要的设计方式。

本文将深入探讨VHDL共阴极数码显示电路的设计原理及实现过程。

二、设计原理1. 共阴极数码管共阴极数码管是一种常见的数字显示器件,它由多个发光二极管(LED)组成。

每个数码管有7个LED芯片,用于显示0-9的数字。

共阴极数码管在数码显示电路中通过编码器和驱动器来驱动。

2. VHDL编程语言VHDL(VHSIC Hardware Description Language)是一种用于描述数字电路和系统设计的硬件描述语言。

VHDL具有强大的描述能力,可以将电路的结构和功能以类似代码的方式进行描述。

在设计共阴极数码显示电路时,可以使用VHDL语言进行编程。

三、设计过程1. 数码管驱动器设计数码管驱动器是实现数码管显示的关键组件,它通过有效的时间分配控制数码管的亮灭。

数码管驱动器可以使用有限状态机来实现,通过组合电路和时钟信号进行运行控制。

2. VHDL编程实现利用VHDL编程语言,可以将数码管驱动器的功能进行描述和实现。

首先需要定义数码管的输入和输出信号,包括时钟信号、使能信号和数据输入信号。

然后利用VHDL语言的结构体和组合逻辑运算符来实现数码管驱动器的状态转换和输出控制。

3. 时序约束设计在VHDL编程中,由于电路的运行速度和时钟频率的要求,需要进行时序约束设计。

通过设置时序约束,可以保证电路在不同条件下的稳定工作。

时序约束包括时钟延迟、数据传输延迟和时钟周期等方面的约束。

4. 仿真和验证在进行VHDL编程后,需要利用仿真工具进行电路的仿真和验证。

通过对电路进行不同输入条件和时钟频率下的仿真,可以验证电路的正确性和稳定性。

如果仿真结果符合预期,则可以进入下一阶段的电路实现。

四、实例应用共阴极数码显示电路在实际应用中有广泛的应用场景。

数码管动态扫描VHDL程序设计


END IF; END PROCESS; END a;
仿真结果:
三、同步时钟CLK频率计算
CLK频率计算: 根据人的视觉暂留现象,一个数码管 所要显示的字符只要在一秒内点亮24次以 上,则感觉上该数码管没有熄灭一样。若8 只数码管要出现这种效果,要求在一秒内 每只数码管要闪亮24次以上。 则CLK频率应为24X8=192Hz以上, 为了减少闪烁现象,达到较好的显示效果, 取CLK频率为1024Hz,每秒内每个数码管 显示次数为128次。 CLK1=CLK; CLK2= CLK;
ARCHITECTURE a OF disp_data2 IS SIGNAL NUM1: INTEGER RANGE 7 DOWNTO 0; SIGNAL num2: INTEGER RANGE 8 DOWNTO 0; SIGNAL q0,q1,q2,q3,q4,q5,q6,q7:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN WR<='1'; process(clk) begin if clk'event and clk='1' then if num1<=7 then num1<=num1+1; else num1<=0; end if; end if; end process;
(2)自左至右点亮数码管,每次只点亮一个,最后全息灭,再 重复以上动作,每次变化时间间隔为1秒。 (3) 先中间两个点亮,再依次向外点亮;全亮后,再依次向中 间熄灭;重复上述步骤,每次变化时间间隔为1秒。
一、七段显示器动态扫描电路设计框图
双口RAM A00 地 址 线 数据线 WR A0 A1 A2 a b c d e f g c1 RD读 clk1 clk2 CLK 扫描控制器 c2 c3 c4 c5 c6 c7 c8

EDA实验二_VHDL七段数码管显示译码

EDA实验二七段数码管显示译码的设计一、实验目的1、掌握七段数码管译码器的工作原理;2、学会运用波形仿真测试检验程序的正确性;3、学会运用波形仿真测试检验程序的正确性。

二、实验设备ZYE1502C型实验箱三、内容要求1、用拨位开关输入8421BCD码,七段数码管显示“0-F”16个16进制的数字。

2、观察字符亮度和显示刷新的效果:(1)在8个七段数码管上同时显示某一数字;(2)在8个七段数码管上动态显示某一数字。

3、扩展内容:(1)动态显示时,能即时改变显示的顺序;(2)动态显示时,实现显示数字从0~F的循环显示。

四、实验步骤1、输入:设计部分采用VHDL语言完成;2、编译;3、仿真;4、下载;5、连线。

(1)四个拨位开关(在P1、P2处选择)连接D3、D2、D1、D0信号所对应的管脚。

时钟CLK所对应的管脚同实验箱上的时钟源相连。

(2)扫描片选信号DIG(0 TO 3)的管脚同七段数码管(共阴)相连;(3)七段数码管驱动信号A,B,C,D,E,F,G的管脚分别同扫描数码管的段输入PCLK处的连接线孔A,B,C,D,E,F,G相连。

五、实验报告1、论述实验过程和步骤;2、填写正确的实验结果。

(1)通过两种显示效果分析:字符显示亮度同扫描频率的关系,且让人眼感觉不出光闪烁现象的最低扫描频率是多少?答:扫描频率越高,显示亮度越低。

人眼看是否闪烁与所用的时钟和分频方式有关,在频率稳定和分频均匀的情况下,最低扫描频率为256Hz,若分频不均匀或频率不稳定,则需更高频率。

(2)字形编码的种类,即一个7段数码管可产生多少种字符,产生所有字符需要多少根被译码信号线?答:一个7段数码管可产生2^7=128种字符,产生所有字符至少需要7根被译码信号线。

但假如只编译0-F,16个字符,则至少只需要4根被译码信号线。

六、实验小结。

答:1、不同控制端需要预先分配控制优先级,否则编写的时候会出现很多问题。

优先级分为普通和特殊,一般错误情况可以跨越权限显示出来。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开关控制数码管的VHDL程序的设计与实现摘要本设计是利用所学过的电子线路课程知识,利用Quartus II软件,结合所学知识设计一个,具有使用开关控制数码管功能。

文章分析了整个电路的工作原理,还说明了各程序模块的功能,并对最终结果就行了总结。

通过此次设计加深了对课程的理解,掌握了一些基本逻辑器件的功能和使用方法。

本设计通过软件设计电路,方便快捷,避免了硬件布线的繁琐,提高了效率。

关键词开关;数码管; VHDL程序Abstract Th is design is to use the learned electronic circuit course knowledge, use Quartus II software, combined with the design of a knowledge, which has the function of digital switch control tube. This paper analyzes the whole electric circuit principle of work, also that the apps modules of the system, and the final results will do summary. Through this design deepened to the understanding of the course and master the basic logic devices of some function and use. This design convenient and quick, avoid the hardware wiring trival, improve efficiency through the software design circuit.Keyword Switch;Digital tube;VHDL program1 前言VHDL是一种应用广泛的硬件描述语言,设计者可以通过它编写代码,通过模拟器仿真验证其功能,完成逻辑综合与逻辑优化,最后通过下载到相应的可编程逻辑器件(如FPGA)中来实现设计。

本设计是利用Quartus II软件,采用VHDL语言设计一个用8个开关对应8个数字显示。

按sw0到sw7可以显示1到8的数值,并在选择开关时发出声响。

完成后下载到实验箱,实现设计功能。

1.1 Quartus II简介Max+plus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对Max+plus II 的更新支持。

Quartus II 是Altera公司继Max+plus II之后开发的一种针对其公司生产的系列CPLD/PGFA器件的综合性开发软件,它的版本不断升级,从4.0版到10.0版,该软件有如下几个显著的特点:1、Quartus II 的优点该软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。

该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

2、Quartus II对器件的支持Quartus II支持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘积项器件。

支持MAX II CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。

支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera 的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

3、Quartus II对第三方EDA工具的支持对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。

Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。

该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。

Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。

改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

1.2 VHDL简介在传统的硬件电路设计中,主要的设计文件是电路原理图,而采用HDL设计系统硬件电路时主要使用HDL编写源程序。

所谓硬件描述语言HDL(HardwareDes cription Language),就是该语言可以描述硬件电路的功能,信号连接关系及定时关系。

许多公司开发了自己专有的HDL,包括Zycad公司的ISP,Gateway DesignAutomation公司的Verilog 以及Mentor Graphics公司的BLM。

其中,Silicon Compiler公司的M及Gateway公司的Verilog以C语言为基础。

UDL/I在日本以标准HDL的形式出现。

多年来设计者一直使用这些专用的HDL。

1982年,各ASIC芯片厂商相继开发了用于各自目的的HDL。

1987年底,IEEE 确认美国国防部开发的VHDL为标准硬件描述语言(IEEE.1076)。

之后,各EDA公司研制的硬件电路设计工具逐渐向VHDL靠拢,VHDL在电子设计领域得到广泛的接受,1993年,IEEE 对VHDL进行了修订,公布了新版本的VHDL(即IEEE.1076.1993)。

现在,VHDL和Verilog 作为IEEE的工业标准硬件描述语言,在电子工程领域,从各公司的设计人员到各大学的教授、学生,都极其重视对其的学习研究,VHDL已成为事实上的通用硬件描述语言。

有专家认为,在21世纪中,几乎全部的数字系统设计任务将由VHDL与Verilog语言承担,VHDL将是电子工程设计人员的必备知识。

VHDL和其他语言相比,最大的区别在于设计方法上的差别。

VHDL的主要优点有:(1)VHDL支持自顶至下的和基于库的设计方法,而且支持同步电路、异步电路、现场可编程门阵列器件FPGA(field programmable gate array)以及其他随机电路的设计。

VHDL 具有比其他硬件描述语言更强的行为描述能力,基于抽象的行为描述风格避开了具体的器件结构,使设计人员能从逻辑行为上描述和设计大规模电子系统。

目前流行的EDA工具和VHDL综合器大都能实现行为描述到RTL(Register Transfer Level)描述的转换。

(2)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计再利用的功能,它支持系统的数学模型直到门级电路的描述,并且高层次的行为描述与低层次的门级电路描述、结构描述可以混合使用。

这些特点符合IC设计的市场要求。

VHDL 支持系统级描述,这是它优于其他VHDL的最重要的特点。

例如,Verilog语言是一种门级电路描述语言,其风格接近于电路原理图,设计者需要搞清楚具体的电路结构的细节,因此工作量通常较大。

VHDL语言却最适合于描述电路的行为,即描述电路的功能,然后由综合器来生成符合要求的电路网络。

设计者在熟悉基本单元电路的描述风格,积累一定的设计经验后,就会为用VHDL设计同等性能电路的高效率所鼓舞。

(3)VHDL的硬件描述与具体的工艺技术和硬件结构无关,当门级或门级以上的描述通过仿真检验后,再利用相应的工具将设计映射成不同的工艺,因此电路的设计与工艺的改变是相互独立的。

彼此的改变不会产生不良影响,并且VHDL硬件描述语言的实现目标器件的选择范围广泛,可使用各系列的CPLD、FPGA及各种门阵列器件。

(4)VHDL具有类属描述语句和子程序调用等功能,对于己完成的设计源程序,可以通过修改类属参数表和函数的办法来改变设计的规模和结构。

VHDL具有丰富的仿真语句和库函数,使得门电路级的功能仿真、检查成为可能,使设计者对整个工程设计的结构和功能的可行性做出决策。

(5)VHDL作为一种IEEE的工业标准,使VHDL的设计成果便于重复利用和交流。

这就更进一步推动了VHDL语言的推广及完善。

另外,由于其语法严格,给阅读和使用带来极大的便利。

2 硬件设计本设计硬件平台采用武汉理工大学EDA实验箱,如下图所示。

所用到的部分有LED数码管、开关、蜂鸣器等,具体连接如下。

data_o[0] PIN_103 key[0] PIN_49data_o[1] PIN_100 key[1] PIN_50data_o[2] PIN_99 key[2] PIN_51data_o[3] PIN_98 key[3] PIN_52data_o[4] PIN_97 key[4] PIN_53data_o[5] PIN_96 key[5] PIN_54data_o[6] PIN_94 key[6] PIN_55data_o[7] PIN_91 key[7] PIN_56l[0] PIN_83 clk PIN_16l[1] PIN_84 bell PIN_78l[2] PIN_85其中data_o[0]—data_o[7]为每个LED数码管0-7的段选,key[0]—key[7]为控制开关0-7,l[0]—l[3]控制8个LED数码管,clk为时钟输入,bell为蜂鸣器3 软件设计3.1 设计方案本设计的VHDL程序主要有共有3个部分:分频、数码管扫描进程、显示控制进程。

方案原理图如下。

3.2 完整程序library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY key ISPORT(clk : IN STD_LOGIC;key : in std_logic_vector(7 downto 0);l : out STD_LOGIC_VECTOR(2 downto 0);data_o : out STD_LOGIC_VECTOR(7 downto 0);bell : out STD_LOGIC:='0');END key;ARCHITECTURE an OF key ISsignal clk_1k : std_logic;signal p : integer range 0 to 7;beginprocess(clk)variable cnt1 : integer range 0 to 200;variable cnt2 : integer range 0 to 125;beginif clk'event and clk='1' thenif cnt1=200 thencnt1:=0;if cnt2=125 thencnt2:=0;clk_1k<=not clk_1k;elsecnt2:=cnt2+1;end if;elsecnt1:=cnt1+1;end if;end if;end process;process(p,clk_1k)beginif clk_1k='1' and clk_1k'event thenif p=7 thenp<=0;elsep<=p+1;end if;end if;case p iswhen 0 => l<="000";when 1 => l<="001";when 2 => l<="010";when 3 => l<="011";when 4 => l<="100";when 5 => l<="101";when 6 => l<="110";when 7 => l<="111";when others=>end case;end process;process(clk_1k)FUNCTION b_to_s7(bcd8421:INTEGER RANGE 0 TO 9) RETURN STD_LOGIC_VECTOR IS VARIABLE smg7: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINCASE bcd8421 ISWHEN 0 => smg7:="11111100";WHEN 1 => smg7:="01100000";WHEN 2 => smg7:="11011010";WHEN 3 => smg7:="11110010";WHEN 4 => smg7:="01100110";WHEN 5 => smg7:="10110110";WHEN 6 => smg7:="10111110";WHEN 7 => smg7:="11100000";WHEN 8 => smg7:="11111110";WHEN 9 => smg7:="11110110";END CASE;RETURN smg7;END b_to_s7;beginif clk_1k='1' thencase key iswhen "11111111"=>bell<='0';when "11111110"=> data_o<=b_to_s7(1);bell<='1';when "11111101"=>data_o<=b_to_s7(2);bell<='1';when "11111011"=>data_o<=b_to_s7(3);bell<='1';when "11110111"=>data_o<=b_to_s7(4);bell<='1';when "11101111"=>data_o<=b_to_s7(5);bell<='1';when "11011111"=>data_o<=b_to_s7(6);bell<='1';when "10111111"=>data_o<=b_to_s7(7);bell<='1';when "01111111"=>data_o<=b_to_s7(8);bell<='1';when others=>data_o<="10001111";bell<='1';end case;end if;end process;end an;4 实验结果所编写程序经过下载到所用实验箱后,当分别拨动开关sw0—sw7时,在LED数码管上分别显示数字1—8,并且蜂鸣器发出声响,有关部分运行结果的如下图所示。

相关文档
最新文档