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所示。
3.2串行加法器的VHDL规划
八位串行加法器VHDL代码如下:
LIBRARYIEEE;
USEIEEE.STDLOGIC-1164.ALL;
ENTITY adderIS
GENERIC(length:INTEGER:=8);
PORT(erset:INSTDLOGIC;
clk:INSTD-LOGIC;
a,b:INSTD-LOGIC-VECTOR(length-1DOWNTO0);
co:outSTD-LOGIC;
sum:BUFFERSTD-LOGIC-VECTOR(length一1DOWNTO0));
ENDadder;
ARCHITECTUREbehaOFadderIS COMPONENTshift
GENERIC(n:INTEGER:=4);
PORT(r:INSTD-LOGIC-VECTOR(n-1DOWNTO1,e,w:INSTD-LOGIC;
elk:INSTD-LOGIC;
q:BUFFERSTD-LOGIC-VECTOR(n-1DOWNTO0));
ENDCOMPONENT;
SIGNALga,gb,null-in:STD_LOGIC-VECTOR(length-1DOWNTO0);
SIGNALs,low,high,run:STD-LOGIC;
SIGNALcount:INTEGERRANGE0TOlength;
TYPEstate-typeIS(M,N);
SIGNALy:state-type;
BEGIN
low=’0′;
high二,1′;
shiftA:shiftGENERICMAP(n=>length)PORTMAP(a,erset,high,low,clk,ga);
shiftB:shiftGENERICMAP(n=>length)PORTMAP(b,reset,high,low,clk,gb);
adderFSM:PROCESS(erset,clk)BEGIN
IFerset=’l’THEN
y=M;
ELSIFelk’EVENTANDclk=’1’THEN
CASEyIS
WHENM=>IF(qa(0),1’ANDqb(0)=’1′)THENy=N;
ELSE
y=M;
ENDIF;
WHENN=>
IF(ga(0)=’0’ANDqb(0)=’0′)THENy-M;
ELSE
y=N;
ENDIF;
ENDCASE;
ENDIF;
ENDPROCESSadderFSM;
WITHySELECT
s-ga(0)XORqb(0)WHENM,
NOT(ga(0)XORqb(0))WHENN;
Null_in二(OTHERS=>’0′);
shiftsum:shiftGENERICMAP(n=>length)
PORTMAP(nulin,erset,run,s,clk,sum);
stop:PROCESS
BEGIN
WAITUNTIL(elk’EVENTANDclk=’1′);
IFerset=’1’THEN
count=length;
E,ISIFrun=’l’THEN
count=count-1;
ENDIF;
ENDPROCESS;
run=’0’WHENcount-OELSE’1′;
co一out:PROCESS
BEGIN
WAITUNTIL(clk-EVENTANDclk=’1′);
IFy=MTHEN
co=,0′;
EISE
co=,1′;
ENDIF;
ENDPROCESScoout;
ENDbeha;
程序中选用三个进程描绘:adderFSM进程描绘加法器有限状况机;stop进程描绘减法计数器,用来决议加法器什么时候因为n位所要求的和出现在输出移位寄存器而中止;co-out描绘进位co输出。
程序经Max+PlusII中的Compiler编译,再经过Simulator和Timinganalyzer东西别离进行功用仿真和时序仿真,仿真成果如图4所示,其间reset是输人操控端,clk是时钟信号,a和b是输人数据,sum是和数,co是进位,y标明有限状况机的状况。仿真正确后,可经过计算机并口上的Byteblaster下载电缆将生成的配置文件直接下载到芯片MAXEPM7128SLC84-15进行验证,测验成果与实践相符。
4、结束语
本文经过串行加法器VHDL规划标明,VHDL在逻辑电路的规划中具有以下长处:
(1)VHDL言语硬件描绘才能强、规划办法灵敏;(2)规划者只需把握VHDL言语及相关EDA规划软件的运用,而不需考虑较多的硬件结构就能够规划所需求的数字体系;(3)随时可对规划内容进行仿真,查验体系功用;(4)程序可移植性强、易于修正;因而,跟着集成电路技能的高速开展,作为今世电子规划人员,HDL已成为规划数字硬件时常用的一种重要手法。