第3 章 VHDL语言设计实例.ppt_第1页
第3 章 VHDL语言设计实例.ppt_第2页
第3 章 VHDL语言设计实例.ppt_第3页
第3 章 VHDL语言设计实例.ppt_第4页
第3 章 VHDL语言设计实例.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

第三章VHDL语言设计实例 本章主要讲解VHDL语言设计常用的组合逻辑电路 时序逻辑电路和有限状态机 3 1组合逻辑电路的设计常用的组合逻辑电路有加法器 译码器 编码器 数据选择器等 一 加法器1 用行为描述实现8位全加器设加法器的输入端为a 加数 b 加数 ci 来自低位的进位 输出端口为s 和 co 进位 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYadder8ISPORT ci INSTD LOGIC a b INSTD LOGIC VECTOR 7DOWNTO0 s OUTSTD LOGIC VECTOR 7DOWNTO0 co OUTSTD LOGIC ENDadder8 在任何时刻的输出仅取决于当时的输入信号的逻辑电路 ARCHITECTUREbehaviorOFadder8ISSIGNALss STD LOGIC VECTOR 8DOWNTO0 SIGNALaa bb STD LOGIC VECTOR 8DOWNTO0 BEGINaa 0 a bb 0 b ss aa bb ci s ss 7DOWNTO0 co ss 8 ENDbehavior 2 用结构描述实现1位全加器 1位半加器 底层文件 1位半加器的VHDL源程序LIBRARYIEEE USEIEEE Std Logic 1164 ALL ENTITYhalf adderISPORT x y INStd Logic sum cout OUTStd Logic ENDhalf adder ARCHITECTUREbehav1OFhalf adderISBEGINPROCESS x y BEGINsum xXORy cout xANDy ENDPROCESS ENDbehav1 或门orr2的VHDL源程序LIBRARYIEEE USEIEEE Std Logic 1164 ALL ENTITYoor2ISPORT in1 in2 INStd Logic out1 OUTStd Logic ENDorr2 ARCHITECTUREbehav2OForr2ISBEGINout1 in1ORin2 ENDbehav2 顶层文件LIBRARYIEEE 1位全加器的VHDL源程序USEIEEE Std Logic 1164 ALL ENTITYfull adderISPORT A B cin INStd Logic sum cout OUTStd Logic ENDfull adder ARCHITECTUREstructural viewOFfull adderIS 基于电路结构的结构风格结构体SIGNALe d f Std Logic 与中间节点对应的内部信号COMPONENThalf adder 半加器元件说明 定义PORT A B INStd Logic sum cout OUTStd Logic ENDCOMPONENT COMPONENTorr2 或门加器元件说明 定义PORT in1 in2 INStd Logic out1 OUTStd Logic ENDCOMPONENT BEGINu1 half adderPORTMAP a b e d 位置映射u2 half adderPORTMAP cin e sum f u3 orr2PORTMAP d f cout ENDstructural view 元件例化 3 四位全加器的设计libraryieee useieee std logic 1164 all entityadder4bisport cin instd logic a b instd logic vector 3downto0 s outstd logic vector 3downto0 cout outstd logic endadder4b architecturestructofadder4biscomponentfull adderPORT A B CIN INSTD LOGIC COUT SUM OUTSTD LOGIC endcomponent signalcarry out0 carry out1 carry out2 std logic begin 低三位的进位 u1 full adderportmap cin cin a a 0 b b 0 sum s 0 cout carry out0 u2 full adderportmap cin carry out0 a a 1 b b 1 sum s 1 cout carry out1 u3 full adderportmap cin carry out1 a a 2 b b 2 sum s 2 cout carry out2 u4 add1bitportmap cin carry out2 a a 3 b b 3 sum s 3 cout cout endstruct 两个四位的全加器可以构成一个8为的全加器 名称映射 关联 二 译码器练习IF语句 CASE语句 条件信号赋值语句和选择信号赋值语句的使用 1 3 8译码器libraryIEEE useIEEE std logic 1164 all entitydecoder3 8isport A inSTD LOGIC VECTOR 2DOWNTO0 数据输入端S inSTD LOGIC 使能控制端Y outSTD LOGIC VECTOR 7DOWNTO0 输出端enddecoder3 8 architecturebehaviorofdecoder3 8isBEGINIFS 0 THEN 低电平有效IFA 000 THENY 11111110 输出低电平有效ELSIFA 001 THENY 11111101 ELSIFA 010 THENY 11111011 ELSIFA 011 THENY 11110111 ELSIFA 100 THENY 11101111 ELSIFA 101 THENY 11011111 ELSIFA 110 THENY 10111111 ELSIFA 111 THENY 01111111 ELSEY 11111111 ENDIF ENDIF ENDbehave 以上是用IF语句写的结构体 下面分别用CASE语句 条件信号赋值语句和选择信号赋值语句来完成结构体的功能描述 CASE语句ARCHITECTUREbehaviorOFdecoder3 8ISSIGNALSA STD LOGIC VECTOR 3DOWNTO0 BEGINSAYYYYYYYYY 00000000 ENDCASE ENDPROCESS ENDBEHAVIOR 选择信号赋值语句ARCHITECTUREbehaviorOFdecoder3 8ISSIGNALSA STD LOGIC VECTOR 3DOWNTO0 BEGINSA S 条件信号赋值语句ARCHITECTUREbehaviorOFdecoder3 8ISSIGNALSA STD LOGIC VECTOR 3DOWNTO0 BEGINSA S 2 七段显示译码器将四位二进制代码所表示的十进制数翻译成对应的七段显示码 七段数码管见下图 它包含有七个笔划 通过控制各笔划的亮暗显示出数字 它的输入信号端 a b c d e f g 与显示数码 十进制数字 的对应关系下表所示 对应的七段译码器电路图如下图所示 其输入为代表显示数字的二进制数 BCD码x4 x3 x2 x1 输出为数码管的输入信号 七段数码管 共阴即高电平亮 的输入代码与显示数码的对应关系 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYDECL7SISPORT X INSTD LOGIC VECTOR 4DOWNTO1 LED7S OUTSTD LOGIC VECTOR 6DOWNTO0 END ARCHITECTUREONEOFDECL7SISBEGINPROCESS X BEGINCASEXISWHEN 0000 LED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7S 1101111 WHENOTHERS LED7S 0000000 其他情况数码管都不亮ENDCASE ENDPROCESS END 三 编码器编码器分为普通编码器和优先编码器 常用的编码器有8 3优先编码器 10 4编码器和16 4编码器 1 8 3优先编码器八路输入信号为I7 I0 三位输出信号为Y2Y1Y0 输入信号I7的优先级别最高 依次类推 I0的优先级别最低 libraryieee useieee std logic 1164 all entityencoder8 3isport I instd logic vector 7downto0 Y outstd logic vector 2downto0 endencoder8 3 architecturebehaveofencoder3isbeginprocess I beginifI 7 1 thenY 111 elsifI 6 1 thenY 110 elsifI 5 1 thenY 101 将一组输入信号翻译成对应的二进制代码 elsifI 4 1 thenY 100 elsifI 3 1 thenY 011 elsifI 2 1 thenY 010 elsifI 1 1 thenY 001 elsifI 0 1 thenY 000 elseY ZZZ 注意此处的特点及用法 endif endprocess endbehave 四 数据选择器和数据分配器通常用来实现信号的串行通信和并行通信的转换 1 数据选择器从多路输入数据中选择一路输出 可用来实现并行通信和串行通信的转换 8选1数据选择器libraryieee useieee std logic 1164 all entitymux8 1isport input instd logic vector 7downto0 a b c instd logic y outstd logic endmux8 1 architecturertlofmux8 1issignalsel std logic vector 2downto0 beginsel a 数据选择器可以用CASE语句 条件和选择 信号赋值语句来实现 下面是用CASE语句写的结构体architecturertlofmux8 1issignalsel std logic vector 2downto0 beginselyyyyyyyyy Z endcase endprocess endrtl 2 数据分配器 将一路输入数据从多个通道中选择一个通道输出 3 2时序逻辑电路的设计时序逻辑电路具有记忆功能 任意时刻的输出信号不仅与当时的输入信号有关 而且还与电路原来的状态有关 或者说 还与以前的输入有关 时序逻辑电路由组合逻辑电路和存储电路两部分组成 存储电路有触发器构成 时序逻辑电路分为同步时序电路和异步时序电路 常用的时序电路主要有触发器 锁存器 寄存器 计数器和序列信号发生器等 一 触发器D触发器的源程序 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYDFF4 1ISPORT CLK D CLR PSET INSTD LOGIC Q QB OUTSTD LOGIC ENDDFF4 1 ARCHITECTURERT1OFDFF4 1ISBEGIN PROCESS CLK PSET CLR BEGINIF PSET 0 THENQ 1 QB 0 ELSIF CLR 0 THENQ 0 QB 1 ELSIF CLK EVENTANDCLK 1 THENQ D QB NOTD ENDIF ENDPROCESS ENDRT1 异步置位 异步复位 PROCESS CLK PSET CLR BEGINIF CLK EVENTANDCLK 1 THENIF PSET 0 THEN 同步置位Q 1 QB 0 ELSIF CLR 0 THEN 同步复位Q 0 QB 1 ELSEQ D QB NOTD ENDIF ENDIF ENDPROCESS ENDRT1 二 锁存器LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYLATCHISPORT D EN RST INSTD LOGIC Q QB OUTSTD LOGIC ENDLATCH ARCHITECTUREBEHVOFLATCHISBEGINPROCESS CLK D RST BEGINIF RST 1 THENQ 0 QB 1 ELSEIF EN 1 THENQ D QB NOTD ENDIF ENDIF ENDPROCESS ENDBEHV 设计时 尽可能不使用锁存器 因为锁存器是异步器件 三 移位寄存器八位串入串出移位寄存器libraryieee useieee std logic 1164 all entityshift8isport a clk instd logic b outstd logic endshift8 architecturertlofshift8issignaldfo 0 dfo 1 dfo 2 dfo 3 dfo 4 dfo 5 dfo 6 dfo 7 std logic beginprocess clk beginif clk eventandclk 1 thendfo 0 a dfo 1 dfo 0 dfo 2 dfo 1 dfo 3 dfo 2 dfo 4 dfo 3 dfo 5 dfo 4 dfo 6 dfo 5 dfo 7 dfo 6 endif b dfo 7 endprocess endrtl 四 计数器四位计数器LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC unsigned ALL ENTITYcnt4b 1ISPORT clk INSTD LOGIC q BUFFERSTD LOGIC VECTOR 3DOWNTO0 ENDcnt4b 1 ARCHITECTUREbehvOFcnt4b 1ISBEGINPROCESS clk BEGINIFclk 1 ANDclk EVENTTHENq q 1 ENDIF ENDPROCESS ENDbehv libraryieee 十进制加法计数器useieee std logic 1164 all useieee std logic ARITH all useieee std logic UNSIGNED all entitycounter 10isport clk clr instd logic co outstd logic dout outstd logic vector 3downto0 endcounter 10 architecturebehavofcounter 10ISsignald std logic vector 3downto0 beginprocess clk clr beginIFclr 1 THENd 0000 ELSIFclk 1 andclk eventthenif d 9 thend 0000 elsed d 1 endif endif if d 9 thenco 1 elseco 0 endif endprocess dout d endbehav LIBRARYIEEE 十进制加法计数器USEIEEE STD LOGIC 1164 ALL ENTITYCOUNTER10ISPORT CLK CLM INSTD LOGIC DOUT OUTINTEGERRANGE0TO9 ENDCOUNTER10 ARCHITECTUREBEHAVEOFCOUNTER10ISBEGINProcess CLK VARIABLECNT INTEGERRANGE0TO9 BEGINIFCLM 0 THENCNT 0 ELSIFCLK 1 ANDCLK EVENTTHENIFCNT 9THENCNT 0 ELSECNT CNT 1 ENDIF E

温馨提示

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

评论

0/150

提交评论