程佳佳,贾俊霞(重庆科创职业学院,重庆 402160)
基于 CPLD的VHDL语言设计优化
程佳佳,贾俊霞
(重庆科创职业学院,重庆402160)
摘要:通过对CPLD器件的介绍以及VHDL语言特点的阐述,本文描述和分析了在逻辑电路编程中常见的毛刺信号电路并给出了相应的消除方法、程序和仿真波形。
关键词:语言;CPLD器件;设计
由于市场产品的需求和市场竞争的促进,新的可编程逻辑器件不断涌现,新器件的主要特点是向超高速、高密度、低功耗和低电压等方向发展,含多种专用端口和附加功能模块的FPGA不断涌现。目前新器件的逻辑规模已达数百万至千万门级,工作频率也越来越高,功耗不断降低,出现了成为零功耗的CPLD器件。随着可编程逻辑器件和开发技术不断发展,EDA技术已经渗透到各行各业的各个领域,而CPLD器件正是集成电路设计者首选。
CPLD是复杂可编程逻辑器件,它和简单PLD都是乘积项结构器件,也就是由可编程的与阵列和或阵列组成的。简单PLD由于阵列规模小、功能弱、编程不便,基本被淘汰。CPLD器件由于进行了扩展,内部结构更加复杂,可提供更多的乘积项,因而构成复杂的逻辑函数。
VHD L全名 Very-H igh-SpeedIntegratedCircuitHardware D esc riptionLanguage,即超高速集成电路的硬件描述语言,在电子工程技术等相关领域,事实上VHD L已成为通用硬件描述语言。1995年我国国家技术监督局指定的CAD通用技术规范推荐VHD L作为我国电子设计自动化硬件描述语言的国家标准。
所谓硬件描述语言,VHDL具有很强的电路描述能力和建模能力,能多个层次对数字系统进行建模和描述。它主要用于描述数字系统的结构、行为、功能和接口,应用VHD L进行工程设计具有自动化设计程度高、与具体硬件电路无关和与设计平台无关的特性,系统移植性强和修改方便等优点。因此VHDL成为了CPLD编程最常用的语言工具。
而正因此,VHDL程序无法精确到电路的门级电路结构,无法精确硬件电路的动作。因而导致出现竞争冒险(具体表现即为毛刺现象),严重者会导致系统的严重故障。本文以下就最易出现毛刺信号的电路作出详细的分析以及给出对应的优化设计方法。
在数字逻辑电路中,当输入信号的状态改变时,输出端可能会出现不正常的干扰信号,是电路产生错误的输出,这种现象称为竞争-冒险现象。产生竞争冒险现象的原因主要是门电路的延迟。在VHDL设计中,电路的行为很容易用各种功能描述语句描述,但是门级电路由软件自动综合布局。因此由于信号在CPLD的内部走线和通过逻辑单元时造成的延迟及竞争冒险现象在CPLD的设计中是不可避免的。
知道了毛刺产生的条件,就可以通过改变设计,破坏其条件来减少毛刺的发生。还可以对电路进行改进,以消除毛刺对系统的影响。滤波法和添加冗余项法在很多数字电子技术的教科书中都有介绍,此处不再赘述。也曾有人提出了采样法和利用格雷码减少同时变化信号数量的方法,都是不错的方法。但是我们也可以通过VHDL程序本身去消除毛刺。
这种方法是从VHDL语言入手,找出毛刺产生的根本原因,改变程序本身,产生满足要求的功能模块,来代替原有的逻辑功能块。如例1中的由于信号的不同步而导致了毛刺,弄清楚了这个原因,则很容易通过同步输入信号的方法而消除毛刺。解决方案如下:
process(clk)
begin
if clk’event and clk=’1’then
y<=(a and b) or (c and d);
end process;
而在VHDL语言中,数据的载体即数据对象包括常量,变量和信号。变量和信号可以实现赋值。但是信号是具有实际物理意义的,可以理解为实际电路连线中的电信号的流动,因此信号的赋值并不是立即的,而是存在一定的延时。而下面的程序则是因为VHDL语言中赋值语句本身的语言特性而导致了延时与毛刺现象。
例2
Entity maoci_1 is
Port(clk: in std_logic;
Co:out std_logic);
End;
Architecture one of maoci_1 is
signals:std_logic;
Signal q:std_logic_vector(3 downto 0):="0000";
Begin
Process(clk)
Begin
If s='1' then q<="0101" ;
Elsif clk'event and clk='1' then q<=q-1;
End if;
End process;
s<=q(3);
co<=q(2);
End one;
例2仿真波形毛刺。分析可知例2程序中是由于s值代入的延时而造成了q的不定状态。因此修改设计,去掉信号s而直接对q预判,消除毛刺。
毛刺信号的出现经常会影响到整个逻辑电路的稳定性,因此判断逻辑电路中判断毛刺是否存在以及如何消除毛刺信号将是设计人员要长期研究的课题。本文中的方法能有效的消除毛刺,可供VHDL编程设计人员参考。
参考文献:
[1]阎石.数字电子技术基础(第五版)[J].高等教育出版社,1983(4).
[2]潘松,王国栋.VHDL实用教程〔M〕.电子科技大学出版社,2000.(1).
[3]崔建明.电工电子EDA仿真技术[M].高等教育出版社, 2004.
[4]李衍编.EDA技术入门与提高王行[M].西安电子科技大学出版社,2005.
[5]王凤英,崔国玮.计数器的VHDL设计与实现 [M]. 现代电子技术,2007(09).