开关控制数码管的VHDL程序的设计与实现
(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)
(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(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按键控制数码管显示
在传统的硬件电路设计中,主要的设计文件是电路原理图,而采用HDL 设计系统硬件电路时主要使用HDL编写源程序。
VHDL的主要优点有:
(1)VHDL支持自顶至下的和基于库的设计方法,而且支持同步电路、异步电路、现场可编程门阵列器件FPGA(field programmable gate array)以及其他随机电路的设计。
(2)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计再利用的功能,它支持系统的数学模型直到门级电路的描述,并且高层次的行为描述与低层次的门级电路描述、结构描述可以混合使用。
(3)VHDL的硬件描述与具体的工艺技术和硬件结构无关,当门级或门级以上的描述通过仿真检验后,再利用相应的工具将设计映射成不同的工艺,因此电路的设计与工艺的改变是相互独立的。
彼此的改变不会产生不良影响,并且VHDL硬件描述语言的实现目标器件的选择范围广泛,可使用各系列的CPLD、FPGA及各种门阵列器件。
VHDL与数字电路设计实验报告
VHDL与数字电路设计实验报告引言本实验旨在通过使用VHDL编程语言和数字电路设计技术,实现特定功能的电路设计。
本文档将对实验的步骤、设计原理和结果进行详细描述。
实验步骤1. 步骤一:熟悉VHDL编程语言在实验开始之前,团队成员对VHDL编程语言进行了研究和熟悉。
我们了解了VHDL的基本语法、数据类型和结构,并获得了对VHDL设计原理的初步理解。
2. 步骤二:设计功能电路在本实验中,我们选择了一个特定的功能电路进行设计。
我们首先进行了功能需求分析,并根据需求确定了电路的输入输出信号以及主要的逻辑运算。
然后,我们使用VHDL编程语言将电路的逻辑运算实现为代码,并进行了仿真和测试。
3. 步骤三:电路仿真和验证为了验证我们设计的电路功能的正确性,我们使用了VHDL仿真工具进行了电路的仿真和验证。
我们根据输入信号的不同组合,观察输出信号的变化,并与我们预期的结果进行比较。
通过这一步骤,我们确认了我们设计的电路能够按照预期工作。
4. 步骤四:电路实现和测试在确认电路的设计和仿真结果无误之后,我们进一步将电路实现到实际的数字电路平台上,并进行了硬件测试。
我们使用实际的输入信号来测试电路的性能和稳定性,并对输出信号进行观察和分析。
通过这一步骤,我们验证了电路在实际环境中的可行性。
设计原理我们设计的电路基于特定的功能需求,采用了经典的数字电路设计原理。
通过使用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语言的数码管闪烁控制的实现
在上位机调试时 , 最重要 的是顺序的处理数据 , 因为
不 同的数据在转化 时会乘 以不同的权 ,所 以如果数据顺
序不正确 , 将得不到预期的效果。当输入一个方波时 , 现
象如 图 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、不同控制端需要预先分配控制优先级,否则编写的时候会出现很多问题。
优先级分为普通和特殊,一般错误情况可以跨越权限显示出来。
数码管vhdl设计
实验:数码管静态和动态显示1.静态:1-1.原理静态显示时,较小的电流能得到较高的亮度且字符不闪烁。
在单片机系统设计时,静态显示通常利用单片机的串行口实现。
当显示器位数较少时,采用静态显示的方法比较适合。
N位静态显示器要求有N*8根I/O口线,占用I/O口线较多。
故在位数较多时往往采用动态显示方式。
1-2 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dtxs isport(clk:in std_logic;wel:out std_logic_vector(2 downto 0);duan:out std_logic_vector(7 downto 0));end dtxs;architecture one of dtxs issignal fp,tmp:std_logic;signal count:std_logic_vector(9 downto 0);signal sl:std_logic_vector(2 downto 0); beginprocess(clk)beginif(clk'event and clk='1')thenif(count="1111100111")thencount<=(others=>'0');tmp<=not tmp;elsecount<=count+1;end if;end if;fp<=tmp;end process;process(fp)beginif(fp'event and fp='1')thenif(sl="111")thensl<="000";elsesl<=sl+1;end if;end if;end process;wel<=sl;process(sl)begincase sl iswhen"111"=>duan<="00111111";when"110"=>duan<="01100110";when"101"=>duan<="01011011";when"100"=>duan<="01111101";when"011"=>duan<="00000110";when"010"=>duan<="01101101";when"001"=>duan<="01001111";when"000"=>duan<="00000111";when others=>null;end case;end process;end one;1-3.仿真图注意事项:注意分频模块,同时,位选由三个位选择控制;2.动态:1-1.原理所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描〕,对于显示器的每一位来说,每隔一段时间点亮一次。
开关控制数码管的VHDL程序的设计与实现
开关控制数码管的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)中来实现设计。
VHDl 语言实现动态数码管扫描
电子综合技术实验报告实验名称: 3位十进制循环计数器的设计系(科):信息系电子信息工程班级: 180932 学号: 18093238 姓名:夏良飞完成时间: 2012-4-20南京师范大学中北学院3位十进制循环计数器的设计一、实验内容1.设计一个3位十进制循环计数器,从0加到999,再恢复到0,循环往复。
每秒计数器加1。
2.有复位功能,当复位端reset为高时,计数器清零,停止计数。
3.以控制计数的开始start和停止stop。
当计数开始start信号有效时,计数器开始计数;当计数停止stop信号有效时,计数停止;当start信号再次有效时,继续计数。
4.计数器的计数值采用动态显示方式在数码管上显示出来。
5.进行设计,仿真并下载程序到实验箱的CPLD模块板进行验证。
二、实验原理1.按键去抖动模块设计原理(1)、抖动原因通常使用的按键都是机械弹性开关,按下时闭合,松开后自动断开。
在键盘操作时,在触点闭合和开启的瞬间会出现电压抖动,如图所示。
为了保证按键识别的准确性,必须进行去抖动处理,消除抖动部分的信号。
(2)设计原理滤除前沿和后延抖动毛刺,提取稳定的按键信息2.按键扫描模块设计原理CPLD检测按键端的电平,当按键按下时按键端的电平为低电平,相应触发相关的操作。
反之,则不进行相应的操作。
3.三位循环计数器的设计原理当时钟的上升沿到来之时,计数器的计数值就加一,直到加到计数值为999然后计数器的计数值重新置零。
4.动态显示计数器的设计原理当时钟的上升沿到来之时,计数器的计数值就加一,直到加到计数值为2然后计数器的计数值重新置零。
5.分为电路的设计原理将计数器计数所得到的值分别进行相应的取余和取整操作得到最后分位结果。
如下所示:得到543的分位操作。
X = 543 mod 10 = 3;temp = 543 / 10,Y = temp mod 10 = 4;Z = 543 / 100 = 5X、Y、Z分别就是个位、十位和百位。
vhdl按键控制数码管显示
vhdl按键控制数码管显示
vhdl按键控制数码管显示
在传统的硬件电路设计中,主要的设计文件是电路原理图,而采用HDL 设计系统硬件电路时主要使用HDL编写源程序。
VHDL的主要优点有:
(1)VHDL支持自顶至下的和基于库的设计方法,而且支持同步电路、异步电路、现场可编程门阵列器件FPGA(field programmable gate array)以及其他随机电路的设计。
(2)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计再利用的功能,它支持系统的数学模型直到门级电路的描述,并且高层次的行为描述与低层次的门级电路描述、结构描述可以混合使用。
(3)VHDL的硬件描述与具体的工艺技术和硬件结构无关,当门级或门级以上的描述通过仿真检验后,再利用相应的工具将设计映射成不同的工艺,因此电路的设计与工艺的改变是相互独立的。
彼此的改变不会产生不良影响,并且VHDL硬件描述语言的实现目标器件的选择范围广泛,可使用各系列的CPLD、FPGA及各种门阵列器件。
使用VHDL进行数字电路设计
使用VHDL进行数字电路设计VHDL(Very High Speed Integrated Circuit Hardware Description Language,高速集成电路硬件描述语言)是一种用于电子设计的编程语言,常用于数字电路设计。
它具备高层次抽象和结构化描述等特点,可以有效地对数字电路进行建模和仿真。
本文将介绍使用VHDL进行数字电路设计的基本步骤和方法。
一、VHDL简介VHDL是一种硬件描述语言,是一种基于事件驱动和并发处理的语言。
它具有面向对象的特点,可以对电子系统进行高层次、结构化的描述。
二、数字电路设计基本流程1. 确定需求:明确数字电路设计的功能、性能和接口要求。
2. 设计规格:根据需求定义数字电路设计的规格和功能。
3. 构建设计:使用VHDL语言描述数字电路的结构和行为。
4. 仿真验证:通过仿真工具对设计进行验证,确保其符合规格要求。
5. 综合:将VHDL代码转化为门级电路,获取门级电路的性能和面积等信息。
6. 时序分析:对门级电路进行时序分析,确保其满足时序要求。
7. 布局布线:对门级电路进行布局布线,生成物理布图。
8. 验证测试:对物理布图进行验证测试,并进行修复和调整。
9. 出版物:生成最终的数字电路设计文档和相关资料。
三、VHDL语言基础VHDL语言具有丰富的语法和语义,可以用于描述数字电路的结构和行为。
以下是一些常用的VHDL语法元素:1. 实体(Entity):描述数字电路的接口和输入输出信号。
2. 架构(Architecture):描述数字电路的内部结构和行为。
3. 进程(Process):描述数字电路的并发行为和逻辑关系。
4. 信号(Signal):描述数字电路的内部和外部信号。
5. 时钟信号(Clock):描述数字电路的时序行为。
6. 模块化设计(Modular Design):将数字电路分为多个模块进行设计和组合。
四、使用VHDL进行数字电路设计的步骤1. 确定需求:明确设计的功能需求和性能要求。
数码显示VHDL
实验五数码显示电路的VHDL设计一、实验目的通过数码显示电路的设计,学习VHDL的CASE语句应用及多层次设计方法。
二、实验内容1. 基本命题设计一个如图5-1所示计数和7段数码显示译码电路,其中CNT4B为4输出二进制计数器,DECL7S为7段数码显示译码电路。
图5-1 计数器和译码器连接电路的顶层文件原理图2. 扩展命题设计一个8位数码显示器的扫描控制电路,控制如图5-2所示8个数码显示器逐一显示,以降低显示电路的功耗。
图5-2 8位数码显示器扫描控制电路三、实验仪器与器材计算机1台,GW48-PK2S实验箱1台,QuartusⅡ6.0 1套。
四、实验设计思路1. 计数与7段数码显示电路(1)4位二进制计数器CNT4B参考实验一,将“10进制计数器”的VHDL程序改为“4位二进制计数器”。
(2)7段数码显示7段数码显示是纯组合电路,通用的小规模专用IC,如74或4000系列的器件只能实现十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。
但为了简化过程,首先完成7段BCD码译码器的设计。
作为7段BCD码译码器,输出信号LED7S的7位分别接如图5-3数码管的7个段,高位在上,低位在下。
例如当LED7S输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段点亮,于是数码管显示“5”。
7段数码显示电路的参考程序如下:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DECL7S ISPORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ;END ;ARCHITECTURE one OF DECL7S ISBEGINPROCESS( A )BEGINCASE A ISWHEN "0000" => LED7S <= "0111111" ;WHEN "0001" => LED7S <= "0000110" ;WHEN "0010" => LED7S <= "1011011" ;WHEN "0011" => LED7S <= "1001111" ;WHEN "0100" => LED7S <= "1100110" ;WHEN "0101" => LED7S <= "1101101" ;WHEN "0110" => LED7S <= "1111101" ;WHEN "0111" => LED7S <= "0000111" ;WHEN "1000" => LED7S <= "1111111" ;WHEN "1001" => LED7S <= "1101111" ;WHEN "1010" => LED7S <= "1110111" ;WHEN "1011" => LED7S <= "1111100" ;WHEN "1100" => LED7S <= "0111001" ;WHEN "1101" => LED7S <= "1011110" ;图5-3 共阴数码管及其电路WHEN "1110" => LED7S <= "1111001" ;WHEN "1111" => LED7S <= "1110001" ;WHEN OTHERS => NULL ;END CASE ;END PROCESS ;END ;(3)设计提示分别设计4位计数器CNT4B和7段数码显示译码器DECL7S,确认满足逻辑设计要求后,应用例化语句实现图5-1所示电路CNT_DECL的VHDL设计。
数字电子锁报告及VHDL源程序
一、系统功能概述数字密码锁实现:1、了不需要带钥匙,只要记住开锁密码即可开锁的功能。
2、在输入密码正确后,还可以修改密码。
3、在输入密码的过程中,不显示密码,只显示无规律的提示某位密码是否输入完毕,防止了密码的泄漏,大大加强了密码锁的保密性。
本演示系统实现了:1、输入密码正确后,正确小灯(led)亮,错误小灯(led1)不亮;2、正确修改密码后,正确小灯(led)不亮,错误小灯(led1)不亮;3、输入错误密码,正确小灯(led)不亮,错误小灯(led1)亮,并有1KHz闹铃声产生;4、按下reset后,密码归为初始密码。
开锁代码为8位二进制数,当输入代码的位数和位值与锁内给定的密码一致,且按规定程序开锁时,方可开锁,并点亮开锁指示灯D3。
否则系统进入“错误”状态,并发出报警信号。
开锁程序由设计者确定,并锁内给定的密码是可调的,且预置方便,保密性好。
串行数字锁的报警方式是点亮指示灯D6,并使喇叭鸣叫来报警,报警动作直到按下复位开关,报警才停止。
此时,数字锁自动进入等待下一次开锁的状态。
二、系统组成以及系统各部分的设计1、系统结构描述要求:系统(或顶层文件)结构描述,各个模块(或子程序)的功能描述;(1)源代码;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity code isport( c lk: in std_logic;--电路工作时的时钟信号clk1:in std_logic;--闹铃产生需要的时钟信号k: in std_logic;--高电平表示输入1led: out std_logic;--输入正确时亮led1:out std_logic;--输入错误时亮reset: in std_logic;-- 按下时复位want: in std_logic;--是否修改密码alarm: out std_logic;--输出闹铃声show: out std_logic_vector(3 downto 0));--提示作用end;architecture a of code issignal temp: std_logic_vector(3 downto 0);--输入一位加1signal code: std_logic_vector(7 downto 0);--储存密码signal getcode: std_logic_vector(7 downto 0);--储存修改后的密码signal counter: std_logic_vector(3 downto 0);--计数signal allow: std_logic;--是否允许修改密码signal ring:std_logic;--是否接通闹铃beginprocess(clk)beginif ring='1' thenalarm<=clk1;--闹铃接通elsealarm<='0';--闹铃截至end if;if reset='1' then--按下reset后,密码归为初始密码getcode<="00000000";--初始密码counter<="0000";--内部计数code<="11001000";--密码led<='0';led1<='0';allow<='0';elsif clk'event and clk='1' then--输入clk脉冲,则接收1位密码getcode<=getcode(6 downto 0)&k;--将这1位密码并入getcode中的最后一位if counter="1000" then--输入为8位数码时比较if code=getcode thenled<='1';--正确灯亮led1<='0';ring<='0';allow<='1';--允许修改密码elsif allow='1' and want='1' then--如果允许输入且想输入code<=getcode;--输入新密码led<='0';led1<='0';elseallow<='0';led<='0';led1<='1';--错误灯亮ring<='1';--闹铃响end if;counter<="0000";--重新计数elsecounter<=counter+1; --累加temp<=temp+1;--为防止泄露密码,特别设置end if;end if;show <= temp;end process;end;2、系统以及各个模块的仿真波形(1)错误输入密码时的仿真波形(2)输入正确密码时的仿真波形3、下载时选择的开发系统模式以及管脚定义表1 GW48-CK开发系统工作模式:5我设计的数字密码锁简单、实用,基本满足课程设计的要求,并且在单个模块运行状态下,可以实现所有的要求。
实验二 开关控制LED数码管 李英阁
图2-5 动态电路配置、显示引脚逻辑状态
图2-2 共阳数码管引脚布局及测试
注释:
共阳极数码管为低电平输入时对应的段亮,且读数顺序为 1gfedcba,其引脚布局及测试如图2-2、2-3所示。在实例中, 当引脚a、b、c、d、e、f为低电平时,对应段亮,引脚g为高 电平则不亮。 此时 p2=11110000 与后 A=0000 0000 调用子程序后 A=0000 0001 P1=1100 0000 即C0 显示数字0
2.放置元器件、放置电源和地线、元器件属故不详述。 图2-1中的元器件RN1、RN2是8电阻的排阻其中每个电 阻的阻值都设置为200,如图2-4所示:
图2-4 RN1属 性设置
三.源程序设计、生成目标代码文件
1.流程图
本例源程序流程图如图2-5所示。设 P2 口为开关状态 输入口,P1口为输出显示口。
图2-1 开关控制数码管电路原理图
1.从PROTEUS库中选取元器件
①AT89C51:单片机。 ②RES、RX8:电阻(resistor)、8排阻。 ③7SEG-COM-AN-GRN:带公共端的共阳7段绿色数码管(从 optoelectronics 光电子器件里选择)。 ④SW-SPST:带所存的单刀单掷开关,开关的合或断可单击 向下或向上的知识箭头实现。 ⑤CAP、CAP-ELEC:电容,电解电容。 ⑥CRYSTAL:晶振。
3.生成目标代码文件
通过菜单”Source” / “Build All” , 在”Program File ”栏中添加上面编译好的目标代码文 件DZC32.HEX。若编译失败,对程序修改调试至编译成功。
四.POTEUS仿真
1.加载目标代码文件
打开单片机属性窗口,在”Program File” 栏中添 加上面编译好的目标代码文件DZC32.HEX;在”Clock Frequency” 栏中输入晶振频率12MHZ。注意:时钟发生 器中的晶振要设置频率,单片机的晶振频率也要设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,并且蜂鸣器发出声响,有关部分运行结果的如下图所示。