基于VHDL逻辑电路设计与应用
摘要:随着集成电路技术的高速发展,VHDL已成为设计数字硬件时常用的一种重要手段。介绍EDA技术及VHDL语言特点,以串行加法器为例,分析串行加法器的工作原理,提出了一种基于VHDL语言的加法器设计思路,给出串行加法器VHDL源代码,并在MAX+PLUSII软件上进行仿真通过。
1、引言
电子产品随着技术的进步,更新换代速度可谓日新月异。EDAI'辉lectronicDesignAutomatic)技术的应用很好地适应了这一特点。通过设计和编程,由可编程逻辑器件CPLD/FPGAn-构成的数字电路,取代了常规的组合和时序逻辑电路,实现了单片化,使体积、重量、功耗减小,提高了可靠性。
目前EDA技术在一般的数字系统、数字信号处理系统等领域获得广泛应用,它将成为今后电子设计的主流。VHDL语言作为可编程逻辑器件的标准语言描述能力强,覆盖面广,抽象能力强,应用越来越广泛。VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路,其高层次的行为描述可以与低层次的RTL描述和结构描述混合使用;设计者可以实现从文本编辑、功能仿真、逻辑综合、布局布线、时序仿真到编程下载整个开发过程,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错的机会。下面介绍如何在美国ALTERA公司的MAX+PLUSH平台上应用VHDL实现串行加法器。
2、串行加法器设计原理
多位串行加法器的工作原理阎是从最低位开始逐位相加并向高位进位,基于这个原理,采用移位加法实现串行加法器。设两个无符号数A=a-tart...ao和B=b.-,b,^...bo,两者相加产生的和SUM=S-lS-:...So,其工作原理如图1所示,由三个移位寄存器和一个加法器有限状态机组成,其中三个寄存器用来存放A,B和Sum数据。其工作原理是,假定输人移位寄存器有并行加载功能,首先把A,B的值加载到寄存器,然后在每一个时钟周期,通过加法器有限状态机将相应的一位相加,在时钟周期的结尾处将这一位相加结果移到Sum寄存器。三个寄存器都采用同步正边沿触发器,所有变化都在时钟正边沿之后很快发生,这时三个寄存器的内容都向右移,将已得到的和位移到Sum,并把两个加数寄存器的下一个位a与b:送给加法器有限状态机。

加法器有限状态机的工作原理:由两个状态M和N分别表示进位值0和10状态图如图2所示,采用有限状态机的Mealy模型。由于每一位相加,都是由全加器构成的,因此根据状态图可写出次态全加器的逻辑表达式:
Y=ab+ay+by
s=a+b+y

其中y为进位输人,a和b为两个输人数据,Y为进位输出,s为全加器的和。串行加法器可以实现任意位数据加法的简单电路。
3、基于VHDL串行加法器的实现
串行加法器的VHDL描述由移位寄存器和加法器有限状态机组成。可以把移位寄存器作为一个子电路,在主程序中可以多次调用。
3.1移位寄存器实现
下面是4位移位寄存器的VHDL代码,采用FOR LOOP结构来实现,源程序如下:
LIBRARYIEEE;
USEIEEE.STD-LOGIC-1164.ALL;
ENTITYshiftIS GENERIC(n:INTEGER:=4);
PORT(r:INSTD-LOGIC-VECTOR(n-1DOWNTO0);
1,e,w:INSTD-LOGIC;
clk:INSTD_LOGIC;
q:BUFFERSTD-LOGIC-VECTOR(n-1DOWNTO0));
ENDshift;
ARCHITECTUREbehaOFshiftIS
BEGIN
PROCESS
BEGIN
WATTUNTILclk'EVENTANDclk='1';
IFe='1'THEN
IF1='l'THEN
q<=r,
ELSE
gebit:FORiIN0TOn-2LOOP
q(i)<=q(i+l);
END LOOP;
q(n-1)<=w;
ENDIF;
ENDIF;
ENDPROCESS;
ENDbeha;
若要实现更多位移位寄存器,则只要修改n值即可。程序中r是输人信号,clk是时钟信号,e是使能端。当1='1’时对移位寄存器并行加载,卜'0’时,寄存器处于右移状态,串行数据从输人端w移人寄存器的最高位。仿真结果如图3所示。


本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
- 上一篇文章:谈SoC设计中的EDA工具
- 下一篇文章:EDA工具最好理念:端到端流程优化
