董小琼
摘要:VHDL 是一种标准的硬件描述语言,是当今电子设计自动化( EDA) 的核心技术,越来越多的硬件设计者使用VHDL描述数字系统。本文通过四路抢答器的设计实例,介绍了利用VHDL设计电路的流程和方法,突出了它与传统的电子电路设计方法相比较而表现出的优越性。
关键词:EDA技术;数字系统;VHDL语言;抢答器;设计
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)09-0093-03
Abstract: VHDL is a standard hardware description language, is the core of the modern electronic design automation (EDA) technology, more and more designers using VHDL hardware description number system. In this paper, by the example of the design of four way responder, introduces the process and method of VHDL circuit design, highlighting its advantages and electronic circuit design method of the traditional comparison shows.
Key words: EDA technology; Digital system; VHDL language; Responder; Design
EDA是电子设计自动化(Electronic Design Automation)的缩写,如今EDA技术已成为电子设计领域里一种重要的电子系统设计手段,通过EDA技术能够实现利用软件的方式来设计硬件系统。而传统的电子系统设计方案一般是选择具有固定功能的标准集成电路和分立元器件,构建单元电路,最后将各单元电路连接在一起进行整机调试,从而实现系统功能。这种设计方法因其手工设计占有很大比重,调试工作也较复杂,故不便于进行复杂电路的设计与调试,例外,查找和修改电路中的错误也不方便,可移植性差,且只能在生产出样机后才能进行实测。而以EDA软件为平台,以VHDL硬件描述语言来编程设计数字系统,只需要经过设计输入、项目编译、项目校验、项目编程配置四步,在这四步中只有设计输入过程由设计者完成,其他三步则采用EDA软件平台自动完成,且在设计的各个阶段均可用计算机仿真验证,这样极大地简化了设计的工作量,缩短了系统开发周期,提高了工作效率。
目前,硬件描述语言以VHDL、Verilog HDL最为流行,它们都是IEEE的标准语言。我国以VHDL作为电子设计自动化硬件描述语言的国家标准。VHDL进行复杂电路设计时,往往采用自顶向下结构化的设计方法,先对整个系统进行方案设计, 按功能划分成若干单元模块, 然后对每个单元模块进一步细分编程。在程序结构上,VHDL包含实体和结构体两个基本部分,完整的VHDL结构还包括配置、程序包和库。下面介绍基于VHDL的简易四路抢答器的设计过程。
1 系统功能与要求
抢答器可容纳四组参赛者同时抢答,每组设置一个按钮供抢答者使用。抢答器设置使能端(即主持人发出抢答开始指令端),当此信号有效时,如参赛者按下抢答开关,抢答器判断第一抢答者并指示该组抢答成功,其他组抢答开关失效,若提前抢答,发出警报。系统具有清零功能。当清零端有效时,抢答器对前一轮抢答的判断清零,恢复为初始状态。
2 系统的设计分析
根据系统要求,我们需要设置四个按钮分别为a,b,c,d作为抢答器的四组输入信号,当按钮按下时其值对应为“1”表示有抢答信号,否则无抢答信号, a,b,c,d为标准逻辑类型,抢答成功者用数码管显示其编号,同时对应的指示灯亮。
根据系统要求我们还需要设置主持人抢答开始指令按钮G,当按钮按下其值为“1”,表明可以开始抢答,提前抢答则报警信号False为“1”发出报警。清零按钮K,按下时其值为“1”,系统清零。
3 系统的设计与实现
我们在MAX+plussII的环境中进行本任务的设计,MAX+plussII是美国ALtera公司提供的FPGA、CPLD开发集成环境,其界面友好,使用便捷,被誉为业界最易用易学的EDA软件。其对电子系统进行设计的第一步就是设计输入,这里我们采用VHDL硬件描述语言输入。硬件描述语言逻辑描述能力强,在描述复杂设计时,非常简洁,具有很强的逻辑描述和仿真功能。
3.1 VHDL的实体设计
一个VHDL程序必须包括实体(ENTITY)和结构体(ARCHITECTURE),设计实体是用来定义电路模块或系统的外部输入输出端口,描述它与其他部分(模块)之间的连接关系,这一部分如同是一个“黑匣子”,描述时并不需要考虑电路内部的性能和具体工作。根据本设计的要求及分析,本设计的实体部分定义输入端口为:一个清零输入端口、一个主持人抢答指令输入端口,另外还有四个抢答者抢答按钮的输入端口。输出端口为:一个提前抢答报警信号输出端口、抢答成功对应的指示灯信号输出端口4个,抢答成功者编号的七段数码管显示的对应输出端口。
实体部分的VHDL代码如下:
entity qiangda is
port(K: in std_logic; --清零端口
G : in std_logic; --抢答指令端
a,b,c,d: in std_logic; --抢答按钮
false: out std_logic_; --提前抢答警报
q: out std_logic_vector(3 downto 0));
Dout:out std_logic_vector(6 downto 0); --抢答成功显示
end qiangda;
3.2 VHDL的结构体设计
VHDL的结构体主要用来描述电路模块或系统的逻辑功能,是程序设计的核心部分。在利用VHDL 语言进行编程时只需要描述清楚各信号或变量之间的逻辑关系, 而不需要受到实际信号流向的约束。因此在对四路抢答器进行编程时, 我们只需要判断几个特殊的状态, 并给出结果, 不符合特殊状态则正常显示抢答者编号。这里特殊状态是:主持人有清零信号时,结果是均无显示。在主持人没发抢答指令前,如有抢答信号,其结果是发出报警。否则,正常抢答时,哪组先抢答,对应指示灯亮,并且数码管显示其编号,其他组抢答无效。在结构体里,我们只需将上述的逻辑关系描述清楚就可以了。
结构体部分的VHDL代码如下:
architecture ab of qiangda is
signal tmp :std_logic_vector(3 downto 0);
signal tag: std_logic; --设置锁存信号
signal D :std_logic_vector(3 downto 0);
begin
tmp<=a&b&c&d;
process(K, G, a,b,c,d)
begin
if K=‘1 then -- 清零
D<="0000";
false<='0';
tag<='0';
elsif G=‘0 then --提前抢答警报
if (tmp/=“0000”) then
false<='1'; end if;
Else --开始抢答
false<=‘0; --警报信号清零
if tag=‘0 then --判断是否有人抢答成功
if tmp=“1000” then --A抢答成功
D<=“1000”; --显示抢答成功
tag<=‘1; --抢答成功,锁存此状态
elsif tmp="0100" then
D<="0100";
tag<='1';
elsif tmp="0010" then
D<="0010";
tag<='1';
elsif tmp="0001" then
D<="0001";
tag<='1';
end if;
end if;
end if;
q<= D;
end process;
process(D) --显示抢答成功者号码
begin
case D is
when “0000” =>Dout<= “0111111”;
when “0001” =>Dout<= “0000110”;
when “0010” =>Dout<= “1011011”;
when “0100” =>Dout<= “1001111”;
when “1000” =>Dout<= “1100110”;
when others =>Dout<= “0000000”;
end case;
end process;
end ab;
3.3 项目的编译
完成程序输入后,可开始对其进行编译。在“MAX+plus II”菜单中选择“Compiler”,即可打开编译器。选择“Start” 就可开始编译。编译的目的是验证设计结果是否符合规则, 若有错误,编译器将停止编译,并在下面的信息框中给出错误信息,双击错误信息条,一般可给出错误之处。将错误排除后再编译。编译成功后可生成时序模拟文件及器件编程文件。
3.4 项目的校验
编辑的程序文件编译成功后即可进行时序仿真和定时分析,定时分析是利用项目管理窗口下的定时分析器分析当前设计项目的性能。时序仿真通过建立波形文件观察仿真波形是否符合要求以检验设计项目的逻辑是否正确,是进一步对设计功能实现状况的检验,仿真过程不涉及具体的硬件特性,但它是接近真实器件运行特性的仿真,仿真精度非常高。
3.5 器件的编程或配置
通过仿真和定时分析后,如符合系统要求则可以通过编程器或下载电缆将设计下载到PLD器件中。对CPLD结构的器件下载称为编程,对FPGA结构的器件下载常称为配置。下载结束后,PLD器件即是一个符合逻辑要求的四路抢答器,就可以进行硬件测试和验证了。
4 结束语
本文通过简易四路抢答器的设计实例, 说明了利用VHDL 语言设计数字系统的基本方法和流程。这是一个以软件设计为主, 可以将整个数字系统实现在一个可编程芯片上的设计, 并且在多个步骤中都可以进行检测排除错误,相对于传统的数字系统设计方法而言,其优越性已经越来越明显,而且这种技术已渗透到各行各业,对于复杂的数字系统设计,我们应优先考虑此种设计方法。
参考文献:
[1] 万春迎. 基于VHDL的数字时钟设计[J]. 科技信息,2008(12).
[2] 詹仙宁.VHDL开发精解与实例剖析[M].北京:电子工业出版社,2009.
[3] 于润伟.EDA基础与应用[M].北京:机械工业出版社,2010.
[4] 关吉.基于VHDL 语言的交通控制器设计[J]. 电脑知识与技术,2014(10).
[5] 郭勇.EDA技术基础[M] .2版.北京.机械工业出版社,2012.9.