VHDL逻辑电路设计与应用_第1页
VHDL逻辑电路设计与应用_第2页
VHDL逻辑电路设计与应用_第3页
VHDL逻辑电路设计与应用_第4页
VHDL逻辑电路设计与应用_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【Word版本下载可任意编辑】 VHDL逻辑电路设计与应用 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 WATTUNTILclkEVENTANDclk

2、=1; IFe=1THEN IF1=lTHEN 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.A

3、LL; 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

4、,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=l

5、ength)PORTMAP(a,erset,high,low,clk,ga); shiftB:shiftGENERICMAP(n=length)PORTMAP(b,reset,high,low,clk,gb); adderFSM:PROCESS(erset,clk)BEGIN IFerset=lTHEN y=M; ELSIFelkEVENTANDclk=1THEN CASEyIS WHENM=IF(qa(0),1ANDqb(0)=1)THENy=N; ELSE y=M; ENDIF; WHENN= IF(ga(0)=0ANDqb(0)=0)THENy-M; ELSE y=N; ENDIF; E

6、NDCASE; 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(elkEVENTANDclk=1); IFerset=1THEN count=length; E,ISIFrun=lTHEN count=count-1; ENDIF; EN

7、DPROCESS; run=0WHENcount-OELSE1; 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设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论