EDA基础--第7章_CPLDFPGA设计实践--(1)_第1页
EDA基础--第7章_CPLDFPGA设计实践--(1)_第2页
EDA基础--第7章_CPLDFPGA设计实践--(1)_第3页
EDA基础--第7章_CPLDFPGA设计实践--(1)_第4页
EDA基础--第7章_CPLDFPGA设计实践--(1)_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

第7章CPLDFPGA设计实践 1 7 1基本组合逻辑建模7 2基本时序逻辑建模7 3常用算法的实现7 4状态机设计 常用的组合单元电路主要有译码器 编码器 数据选择器 减法器 加法器等 前面我们已经举过许多例子 这里再做一些补充和总结 7 1基本组合逻辑建模 基本门电路VHDL描述 基本门电路用VHDL语言来描述十分方便 为方便起见 在下面的两输入模块中 使用VHDL中定义的逻辑运算符 同时实现一个与门 或门 与非门 或非门 异或门及反相器的逻辑 1 模型布尔代数模型VHDL描述b nota2 程序设计首先确定实体 一个输入信号 一个输出信号 然后确定结构体由于简单可直接写出VHDL文件 例7 1 非 门电路设计 非门电路建模 LIBRARYieee useieee std logic 1164 all entitynotaisport a instd logic b outstd logic end architecturebehvofnotaisbeginb nota end 3 仿真验证步骤 综合编译源文件 波形验证 分析功能的正确性 同样的方法可以将基本门电路的建模做好与门 与非门 或非门 与或非门 异或门 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYGATEISPORT A B INSTD LOGIC YAND YOR OUTSTD LOGIC YNAND YNOR OUTSTD LOGIC YNOT YXOR OUTSTD LOGIC ENDENTITYGATE 例7 2 基本门电路描述 ARCHITECTUREARTOFGATEISBEGINYAND AANDB 与门输出YOR AORB 或门输出YNAND ANANDB 与非门输出YNOR ANORB 或非门输出YNOT ANOTB 反相器输出YXOR AXORB 异或门输出ENDARCHITECTUREART 例7 3 半加器的建模 1 建模2 程序设计 So axorb Co aandb 3 波形仿真 architecturebehvofh adderisbeginso axorb co aandb end LIBRARYieee useieee std logic 1164 all entityh adderisport a b instd logic co so outstd logic end 例7 4 全加器的建模 architecturebehavoff adderiscomponenth adderport a b instd logic so co outstd logic endcomponent signalx y z std logic beginu1 h adderportmap a b so y co x u2 h adderportmap cin y so so co z co xorz end LIBRARYieee useieee std logic 1164 all entityf adderisport cin a b instd logic so co outstd logic end 下面我们分别以四种方法描述一个3 8线译码器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYDECODERISPORT INP INSTD LOGIC VECTOR 2DOWNTO0 OUTP OUTSTD LOGIC VECTOR 7DOWNTO0 ENDENTITYDECODER 例7 5 3 8线译码器 方法1 使用SLL逻辑运算符ARCHITECTUREART1OFDECODERISBEGINOUTP 00000001 SLL CONV INTEGER INP ENDARCHITECTUREART1 方法2 使用PROCESS语句ARCHITECTUREART2OFDECODERISBEGINPROCESS INP ISVARIABLES STD LOGIC VECTOR 7DOWNTO0 BEGINS OTHERS 0 S CONV INTEGER INP 1 OUTP S ENDPROCESS ENDARCHITECTUREART2 方法3 使用WHEN ELSE语句ARCHITECTUREART3OFDECODERISBEGINOUTP 0 1 WHENINP 000 ELSE 0 OUTP 1 1 WHENINP 001 ELSE 0 OUTP 2 1 WHENINP 010 ELSE 0 OUTP 3 1 WHENINP 011 ELSE 0 OUTP 4 1 WHENINP 100 ELSE 0 OUTP 5 1 WHENINP 101 ELSE 0 OUTP 6 1 WHENINP 110 ELSE 0 OUTP 7 1 WHENINP 111 ELSE 0 ENDARCHITECTUREART3 方法4 使用CASE WHEN语句ARCHITECTUREART4OFDECODERISBEGINPROCESS INP BEGINCASEINPISWHEN 000 OUTPOUTPOUTPOUTPOUTPOUTPOUTPOUTPOUTP XXXXXXXX ENDCASE ENDPROCESS ENDARCHITECTUREART4 下面我们用三种方法设计8 3线优先编码器 8 3线优先编码器 输入信号为A B C D E F G和H 输出信号为OUT0 OUT1和OUT2 输入信号中A的优先级别最低 依次类推 H的优先级别最高 例7 6 8 3线优先编码器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYENCODERISPORT A B C D INSTD LOGIC E F G H INSTD LOGIC OUT0 OUT1 OUT2 OUTSTD LOGIC ENDENTITYENCODER 方法1 使用条件赋值语句ARCHITECTUREART1OFENCODERISSIGNALOUTS STD LOGIC VECTOR 2DOWNTO0 BEGINOUTS 2DOWNTO0 111 WHENH 1 ELSE 110 WHENG 1 ELSE 101 WHENF 1 ELSE 100 WHENE 1 ELSE 011 WHEND 1 ELSE 010 WHENC 1 ELSE 001 WHENB 1 ELSE 000 WHENA 1 ELSE XXX OUT0 OUTS 0 OUT1 OUTS 1 OUT2 OUTS 2 ENDARCHITECTUREART1 方法2 使用LOOP语句ARCHITECTUREART2OFENCODERISBEGINPROCESS A B C D E F G H VARIABLEINPUTS STD LOGIC VECTOR 7DOWNTO0 VARIABLEI INTEGER BEGININPUTS H G F E D C B A I 7 WHILEI 0ANDINPUTS I 1 LOOP 此处的 表示不等于I I 1 ENDLOOP OUT2 OUT1 OUT0 CONV STD LOGIC VECTOR I 3 ENDPROCESS ENDARCHITECTUREART2 方法3 使用IF语句LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYENCODERISPORT IN1 INSTD LOGIC VECTOR 7DOWNTO0 OUT1 OUTSTD LOGIC VECTOR 2DOWNTO0 ENDENTITYENCODER ARCHITECTUREART3OFENCODERISBEGINPROCESS INT1 ISBEGINIFIN1 7 1 THENOUT1 111 ELSIFIN1 6 1 THENOUT1 110 ELSIFIN1 5 1 THENOUT1 101 ELSIFIN1 4 1 THENOUT1 100 ELSIFIN1 3 1 THENOUT1 011 ELSIFIN1 2 1 THENOUT1 010 ELSIFIN1 1 1 THENOUT1 001 ELSIFIN1 0 1 THENOUT1 000 ELSEOUT1 XXX ENDIF ENDPROCESS ENDARCHITECTUREART3 比较器可以比较两个二进制是否相等 下面是一个8位比较器的VHDL描述 有两个8位二进制数 分别是A和B 输出为EQ 当A B时 EQ 1 否则EQ 0 例7 7 8位比较器 LIBRARYIEEE USEIEEE STD LOGIC VECTOR 7DOWNTO0 ENTITYCOMPAREISPORT A B INSTD LOGIC VECTOR 7DOWNTO0 EQ OUTSTD LOGIC ENDENTITYCOMPARE ARCHITECTUREARTOFCOMPAREISBEGINEQ 1 WHENA BELSE 0 ENDARCHITECTUREART 选择器常用于信号的切换 四选一选择器可以用于四路信号的切换 四选一选择器有四个信号输入端INP 0 INP 3 两个信号选择端A和B和一个信号输出端Y 当A B输入不同的选择信号时 就可以使INP 0 INP 3 中某个相应的输入信号与输出端Y接通 例7 8 四选一选择器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYMUX41ISPORT INP INSTD LOGIC VECTOR 3DOWNTO0 A B INSTD LOGIC Y OUTSTD LOGIC ENDENTITYMUX41 ARCHITECTUREARTOFMUX41ISSIGNALSEL STD LOGIC VECTOR 1DOWNTO0 BEGIN SEL B A PROCESS INP SEL ISBEGINIF SEL 00 THENY INP 0 ELSIF SEL 01 THENY INP 1 ELSIF SEL 11 THENY INP 2 ELSEY INP 3 ENDIF ENDPROCESS ENDARCHITECTUREART 下面的程序对输入操作数A B作加 减 乘 除运算 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYARITHMETICISPORT A B INSTD LOGIC VECTOR 3DOWNTO0 Q1 OUTSTD LOGIC VECTOR 4DOWNTO0 Q2 Q3 OUTSTD LOGIC VECTOR 3DOWNTO0 Q4 OUTSTD LOGIC VECTOR 7DOWNTO0 ENDENTITYARITHMETIC 例7 9 算术运算 ARCHITECTUREARTOFARITHMETICISBEGINPROCESS A B ISBEGINQ1 0 A 0 B ADDITIONQ2 A B SUBTRACTIONQ3 A B DIVISIONQ4 A B MULTIPLICATIONENDPROCESS ENDARCHITECTUREART 三态门和总线缓冲器是驱动电路经常用到的器件 1 三态门电路LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYTRISTATEISPORT EN DIN INSTD LOGIC DOUT OUTSTD LOGIC ENDENTITYTRISTATE 例7 10 三态门及总线缓冲器 ARCHITECTUREARTOFTRISTATEISBEGINPROCESS EN DIN ISBEGINIFEN 1 THENDOUT DIN ELSEDOUT Z ENDIF ENDPROCESS ENDARCHITECTUREART 2 单向总线驱动器在微型计算机的总线驱动中经常要用单向总线缓冲器 它通常由多个三态门组成 用来驱动地址总线和控制总线 一个8位的单向总线缓冲器如下图所示 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYTRI BUF8ISPORT DIN INSTD LOGIC VECTOR 7DOWNTO0 EN INSTD LOGIC DOUT OUTSTD LOGIC VECTOR 7DOWNTO0 ENDENTITYTRI BUF8 ARCHITECTUREARTOFTRI BUF8ISBEGINPROCESS EN DIN BEGINIF EN 1 THENDOUT DIN ELSEDOUT ZZZZZZZZ ENDIF ENDPROCESS ENDARCHITECTUREART 3 双向总线缓冲器双向总线缓冲器用于数据总线的驱动和缓冲 典型的双向总线缓冲器如下图所示 图中的双向总线缓冲器有两个数据输入 输出端A和B 一个方向控制端DIR和一个选通端EN EN 0时双向缓冲器选通 若DIR 0 则A B 反之则B A LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYBIDIRISPORT A B INOUTSTD LOGIC VECTOR 7DOWNTO0 EN DIR INSTD STD LOGIC ENDENTITYBIDIR ARCHITECTUREARTOFBIDIRISSIGNALAOUT BOUT STD LOGIC VECTOR 7DOWNTO0 BEGINPROCESS A EN DIR A为输入BEGINIF EN 0 AND DIR 1 THENBOUT A ELSEBOUT ZZZZZZZZ ENDIF B BOUT B为输出ENDPROCESS PROCESS B EN DIR IS B为输入BEGINIF EN 0 AND DIR 0 THENAOUT B ELSEAOUT ZZZZZZZZ ENDIF A AOUT A为输出ENDPROCESS ENDARCHITECTUREART 本节的时序电路设计主要有触发器 寄存器 计数器序列信号发生器和序列信号检测器等的设计实例 7 2基本时序逻辑建模 1 模型布尔代数模型2 程序设计首先确定实体然后确定结构体由于简单可直接写出VHDL文件 例7 11 基本D触发器电路 LIBRARYIEEE USEIEEE std logic 1164 all EntityDFF2isport clk d instd logic q outstd logic endDFF2 architecturebodyofDFF2isbeginprocess clk d beginifCLK EVENTANDCLK 1 thenq d endif endprocess endbody LIBRARYIEEE USEIEEE std logic 1164 all EntityDFF1isport clk d instd logic q outstd logic endDFF1 architecturebodyofDFF1isbeginprocess clk d beginifrising edge clk thenq d endif endprocess endbody 例7 12 T触发器 1 模型布尔代数模型 LIBRARYIEEE USEIEEE std logic 1164 all EntityTFFaisport clk T inSTD LOGIC q bufferSTD LOGIC end architecturebodyaofTFFaisbeginprocess clk T beginifCLK EVENTANDCLK 1 thenift 1 thenq notq elseq q endif endif endprocess end q txorq 例7 13 JK触发器 状态方程 LIBRARYIEEE USEIEEE std logic 1164 all EntityJKaisport clk J K inSTD LOGIC q bufferSTD LOGIC end architecturebodyaofJKaisbeginprocess clk J K beginifclk eventandclk 1 thenq Jand notq or notK andq endif endprocess end LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYRSFISPORT R S CLK INSTD LOGIC Q BUFFERSTD LOGIC ENDENTITYRSF 例7 14 RS触发器 ARCHITECTUREARTOFRSCFQISSIGNALQ S STD LOGIC BEGINPROCESS CLK R S ISBEGINIF CLK EVENTANDCLK 1 THENIF S 1 ANDR 0 THENQ S 1 ELSIF S 0 ANDR 1 THENQ S 0 ELSIF S 0 ANDR 0 THENQ S Q S ENDIF ENDIF Q Q S ENDPROCESS ENDARCHITECTUREART 时序电路的初始状态一般由复位 置位信号来设置 有同步复位 置位和异步复位 置位两种工作方式 所谓同步复位 置位 就是在复位 置位信号有效且给定的时钟边沿到来时 时序电路才被复位 置位 而异步复位 置位则与时钟无关 一旦复位 置位信号有效 时序电路就被复位 置位 触发器的同步和非同步复位 在用VHDL语言描述时 同步复位 置位一定在以时钟为敏感信号的进程中定义 且用IF等条件语句来描述必要的复位 置位条件 其典型格式为 PROCESS 时钟信号名 BEGINIF时钟边沿表达式AND复位 置位条件表达式THEN 复位 置位语句 ELSE 正常执行语句 ENDIF ENDPROCESS 1 同步复位 置位的描述 或PROCESSBEGINWAITUNTIL时钟边沿表达式IF复位 置位条件表达式THEN 复位 置位语句 ELSE 正常执行语句 ENDIF ENDPROCESS 描述异步复位 置位时 应将时钟信号和复位 置位信号同时加入到进程的敏感信号表中或WAITON语句后的信号表中 而且在执行时 需识别进程是由时钟激活还是由复位 置位信号激活 并分别执行相应的操作 其常用格式可表示为 PROCESS 时钟信号 复位 置位信号 BEGINIF复位 置位信号有效THEN 复位 置位语句 ELSIF时钟边沿表达式THEN 正常执行语句 ENDIF ENDPROCESS 2 异步复位 置位 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYASDffISPORT CLK D INSTD LOGIC PRESET CLR INSTD LOGIC Q OUTSTD LOGIC ENDENTITYASDff 例7 15 异步复位 置位的D触发器 ARCHITECTUREARTOFASDffISBEGINPROCESS CLK PRESET CLR ISBEGINIF PRESET 1 THEN 置位信号为1 则触发器被置位Q 1 ELSIF CLR 1 THEN 复位信号为1 则触发器被复位Q 0 ELSIF CLK EVENTANDCLK 1 THENQ D ENDIF ENDPROCESS ENDARCHITECTUREART 异步复位D触发器仿真波形 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYSYDffISPORT D CLK INSTD LOGIC RESET INSTD LOGIC Q OUTSTD LOGIC ENDENTITYSYDff 例7 16 同步复位的D触发器 ARCHITECTUREARTOFSYDffISBEGINPROCESS CLK ISBEGINIF CLK EVENTANDCLK 1 THENIF RESET 0 THENQ 0 时钟边沿到来且有复位信号 触发器被复位ELSEQ D ENDIF ENDIF ENDPROCESS ENDARCHITECTUREART 同步复位D触发器仿真波形 例 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYDFF3ISPORT CLK D1 INSTD LOGIC Q1 OUTSTD LOGIC END ARCHITECTUREbhvOFDFF3ISSIGNALA B STD LOGIC BEGINPROCESS CLK BEGINIFCLK EVENTANDCLK 1 THENA D1 B A Q1 B ENDIF ENDPROCESS END 进程中的信号与变量赋值语句 例 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYDFF3ISPORT CLK D1 INSTD LOGIC Q1 OUTSTD LOGIC END ARCHITECTUREbhvOFDFF3ISBEGINPROCESS CLK VARIABLEA B STD LOGIC BEGINIFCLK EVENTANDCLK 1 THENA D1 B A Q1 B ENDIF ENDPROCESS END 进程中的信号与变量赋值语句 进程中的信号与变量赋值语句 信号赋值RTL电路变量赋值RTL电路 第7章CPLDFPGA设计实践 2 1 寄存 锁存 器寄存器用于寄存一组二值代码 广泛用于各类数字系统 因为一个触发器能储存1位二值代码 所以用N个触发器组成的寄存器能储存一组N位的二值代码 下面给出一个8位寄存器的VHDL描述 寄存器和移位寄存器 例7 17 8位寄存器LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYREGISPORT D INSTD LOGIC VECTOR 0TO7 CLK INSTD LOGIC Q OUTSTD LOGIC VECTOR 0TO7 ENDENTITYREG ARCHITECTUREARTOFREGISBEGINPROCESS CLK BEGINIF CLK EVENTANDCLK 1 THENQ D ENDIF ENDPROCESS ENDARCHITECTUREART 移位寄存器除了具有存储代码的功能以外 还具有移位功能 所谓移位功能 是指寄存器里存储的代码能在移位脉冲的作用下依次左移或右移 因此 移位寄存器不但可以用来寄存代码 还可用来实现数据的串 并转换 数值的运算以及数据处理等 移位寄存器可以由多位触发器首尾连接而成 即前一级的输出作为后一级的输入 所有的触发器共用同一时钟和清零 置位信号 2 移位寄存器 例7 18 用VHDL描述一个具有预置数 同步复位 左移和右移功能的8位移位寄存器 输入时钟信号为clk 复位控制信号为reset 控制左移 右移和预置数输入信号为mode 8位输入数据信号为data 左移输入数据信号为shift left 右移输入数据信号为shift right 8位输出数据信号为qout 当mode 01时 实现右移移位功能 当mode 10时 实现左移移位功能 当mode 11时 实现将8位输入数据信号输入到8位移位寄存器 例7 18 具有预置数 同步复位 左移和右移功能的8位移位寄存器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYSHIFTERISPORT DATA INSTD LOGIC VECTOR 7DOWNTO0 SHIFT LEFT INSTD LOGIC SHIFT RIGHT INSTD LOGIC RESET INSTD LOGIC MODE INSTD LOGIC VECTOR 1DOWNTO0 QOUT BUFFERSTD LOGIC VECTOR 7DOWNTO0 ENDENTITYSHIFTER ARCHITECTUREARTOFSHIFTERISBEGINPROCESSBEGINWAITUNTIL RISING EDGE CLK IF RESET 1 THENQOUT 00000000 同步复位功能的实现ELSE CASEMODEISWHEN 01 QOUTQOUTQOUTNULL ENDCASE ENDIF ENDPROCESS ENDARCHITECTUREART 例7 19 具有左移和右移功能的8位串行移位寄存器 其中din为移位数据输入端口 dir移位方向控制端口 op数据输出端口 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYREGISPORT CLK DIN DIR INSTD LOGIC OP BUFFERSTD LOGIC ENDENTITYREG ARCHITECTUREARTOFREGISSIGNALQ STD LOGIC VECTOR 7DOWNTO0 BEGIN PROCESSBEGINWAITUNTIL RISING EDGE CLK IF DIR 0 THENQ 0 DIN 左移FORIIN1TO7LOOPQ I Q I 1 ENDLOOP ELSEQ 7 DIN 右移FORIIN1TO7LOOPQ I 1 Q I ENDLOOP ENDIF ENDPROCESS OP Q 7 WHENDIR 0 ELSEQ 0 ENDART 锁存器在接口电路中用得很多 其构造是多个共用时钟和复位 置位端但数据输入 输出各自独立的D触发器 其描述与移位寄存器相似 3 多位锁存器 例7 20 带输出选通的8位锁存器 oe为选通控制端 低电平有效 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYlatch8ISPORT oe INSTD LOGIC d in INSTD LOGIC VECTOR 7DOWNTO0 q out OUTSTD LOGIC VECTOR 7DOWNTO0 ENDlatch8 ARCHITECTURErtlOFlatch8ISBEGINPROCESS clk BEGINIFoe 0 THENq out d in ENDIF ENDPROCESS ENDrtl 计数器是在数字系统中使用最多的时序电路 它不仅能用于对时钟脉冲计数 还可以用于分频 定时 产生节拍脉冲和脉冲序列以及进行数字运算等 计数器也分同步计数器和异步计数器两大类 所谓同步计数器 就是构成计数器的各触发器使用同一个时钟信号 在时钟脉冲 计数脉冲 的有效边沿上各触发器状态同时发生变化的那一类计数器 除此之外的就是异步计数器 这两类计数器再按计数规律 加法 减法 可逆 码值 二进制 BCD 循环码 可否清零 预置以及计数模值等的不同 而细分为许多种类 计数器 例7 21 通用的4位同步加法计数器描述 带同步清零和进位输出 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYcounters 4bitsISPORT clk clear INBIT co OUTBIT q out OUTINTEGERRANGE0TO15 ENDcounters 4bits ARCHITECTUREbehavOFcounters 4bitsISBEGIN PROCESS clk VARIABLEcnt INTEGERRANGE0TO15 BEGINIF clk EVENTANDclk 1 THENIFclear 0 THENcnt 0 ELSIFcnt 9THENcnt 0 ELSEcnt cnt 1 ENDIF ENDIF q out cnt IFcnt 9THENco 1 ELSEco 0 ENDIF ENDPROCESS ENDbehav 在例7 21中 在进程中定义变量cnt的作用主要是存储计数器的现态用于判断和赋值 因为端口q out 即计数值 只能输出而不能回读 后面的几个例子也都采取了同样的做法 实际上 该描述可推广至任意模值的二进制加法计数器 只需根据要求的模值来修改变量cnt和PORT语句中q out定义的右边界即可 例7 22 修改上例中的程序所得到的异步清零 模60同步二进制可逆计数器描述 up down 1 时执行加法计数 up down 0 时执行减法计数 其中计数输入信号为clk 清零控制信号为clear 低电平有效 计数允许控制信号为enable 高电平有效 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYcounter M60ISPORT clk clear enable up down INBIT q out OUTINTEGERRANGE0TO63 ENDcounter M60 ARCHITECTUREbehavOFcounter M60ISBEGIN PROCESS clk clear VARIABLEcnt INTEGERRANGE0TO63 BEGINIFclear 0 THENcnt 0 ELSIF clk EVENTANDclk 1 THENIFenable 1 THENIF up down 1 THENifcnt 59thencnt 0 elsecnt cnt 1 endif ELSEifcnt 0thencnt 59 elsecnt cnt 1 endif ENDIF ENDIF ENDIF q out cnt ENDPROCESS ENDbehav 例7 23 是一个模为60 具有异步复位 同步置数功能和计数s使能的8421BCD码计数器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYCNTM60ISPORT CI INSTD LOGIC 计数控制NRESET INSTD LOGIC 异步复位控制LOAD INSTD LOGIC 置数控制D INSTD LOGIC VECTOR 7DOWNTO0 CLK INSTD LOGIC CO OUTSTD LOGIC 进位输出QH BUFFERSTD LOGIC VECTOR 3DOWNTO0 输出高4位QL BUFFERSTD LOGIC VECTOR 3DOWNTO0 输出低4位ENDENTITYCNTM60 ARCHITECTUREARTOFCNTM60ISBEGINCO 1 WHEN QH 0101 ANDQL 1001 ANDCI 1 ELSE 0 进位输出的产生PROCESS CLK NRESET ISBEGINIF NRESET 0 THEN 异步复位QH 0000 QL 0000 ELSIF CLK EVENTANDCLK 1 THEN 同步置数IF LOAD 1 THENQH D 7DOWNTO4 QL D 3DOWNTO0 ELSIF CI 1 THEN 模60的实现IF QL 1001 THENQL 0000 IF QH 0101 THENQH 0000 ELSE 计数功能的实现QH QH 1 ENDIF ELSEQL QL 1 ENDIF ENDIF ENDIFLOADENDIF ENDPROCESS ENDARCHITECTUREART 分频器与计数器类似 也是要对时钟脉冲进行计数 但其输出的不是对时钟脉冲个数的计数值 而是其频率与时钟的频率成固定比例关系的脉冲信号 如果不要求分频输出信号的占空比为50 便可以直接利用计数器作为分频器来使用 计数器的进位信号即可作为分频输出信号 分频器的描述 例7 24 输出占空比为50 的10分频器 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYfreq dividerISPORT clk INSTD LOGIC f out OUTSTD LOGIC ENDfreq divider ARCHITECTURErtlOFfreq dividerISBEGIN PROCESS clk VARIABLEcount INTEGERrange0to15 0 BEGINIFclk EVENTANDclk 1 THENIFcount 9THEN count 0 f out 0 ELSEcount count 1 IFcount 5THENf out 0 ELSEf out 1 ENDIF ENDIF ENDIF ENDPROCESS ENDrtl 在数字信号的传输和数字系统的测试中 有时需要用到一组特定的串行数字信号 产生序列信号的电路称为序列信号发生器 序列信号发生器 例7 25 01111110 序列发生器LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC ARITH ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYSENQGENISPORT CLK CLR CLOCK INSTD LOGIC ZO OUTSTD LOGIC ENDENTITYSENQGEN ARCHITECTUREARTOFSENQGENISSIGNALCOUNT STD LOGIC VECTOR 2DOWNTO0 SIGNALZ STD LOGIC 0 BEGINPROCESS CLK CLR IS 注意各进程间的并行性BEGINIF CLR 1 THENCOUNT 000 ELSIF CLK 1 ANDCLK EVENT THENIF COUNT 111 THENCOUNT 000 ELSECOUNT COUNT 1 ENDIF ENDIF ENDPROCESS PROCESS COUNT ISBEGINCASECOUNTISWHEN 000 ZZZZZZZZ 0 ENDCASE ENDPROCESS PROCESS CLOCK Z ISBEGIN 消除毛刺的锁存器IF CLOCK EVENTANDCLOCK 1 THENZO Z ENDIF ENDPROCESS ENDARCHITECTUREART 状态机的VHDL设计 状态机的基本结构和功能状态机是一类很重要的时序电路 是许多数字电路的核心部件 状态机的一般形式如下图所示 状态机的基本操作有两种 1 状态机内部状态转换 状态机的下一状态由状态译码器根据当前状态和输入条件决定 2 产生输出信号序列 输出信号由输出译码器根据当前状态和输入条件决定 在产生输出的过程中 由是否使用输入信号可以确定状态机的类型 两种典型的状态机是摩尔 MOORE 状态机和米立 MEALY 状态机 一般状态机的VHDL设计为了能获得可综

温馨提示

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

评论

0/150

提交评论