版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 时序电路的VHDL设计主讲教师:秦晓飞秦晓飞上海理工大学光电学院上海理工大学光电学院第5章 时序电路的VHDL设计 本章沿用第本章沿用第3 3章的章的倒叙倒叙方式,先给出一些简单电路的方式,先给出一些简单电路的VHDLVHDL例程,再学习例程,再学习其中涉及到的语法。其中涉及到的语法。5.1 5.1 基本时序元件的基本时序元件的VHDLVHDL表述表述5.2 5.2 计数器的计数器的VHDLVHDL设计设计5.3 5.3 移位寄存器的移位寄存器的VHDLVHDL设计设计5.4 5.4 属性描述与定义语句属性描述与定义语句5.1 基本时序元件的VHDL表述5.1 基本时序元件的VHDL表
2、述 5.1.1 D5.1.1 D触发器的触发器的VHDLVHDL描述描述5.1.2 5.1.2 含有异步复位和时钟使能的含有异步复位和时钟使能的D D触发器及其触发器及其VHDLVHDL表述表述5.1.3 5.1.3 含有同步复位控制的含有同步复位控制的D D触发器及其触发器及其VHDLVHDL表述表述5.1.45.1.4 基本锁存器及其基本锁存器及其VHDLVHDL表述表述5.1.55.1.5 含清含清0 0控制的锁存器及其控制的锁存器及其VHDLVHDL表述表述5.1.6 VHDL5.1.6 VHDL实现时序电路的不同表述实现时序电路的不同表述5.1.7 5.1.7 双边沿触发时序电路设计
3、讨论双边沿触发时序电路设计讨论5.1 基本时序元件的VHDL表述 5.1.1 D5.1.1 D触发器的触发器的VHDLVHDL描述描述锁存器锁存器触发器触发器D触发器JK触发器T触发器基本时序元件基本时序元件注:注:Q1可不用,这只是编程惯例5.1 基本时序元件的VHDL表述 5.1.1 D5.1.1 D触发器的触发器的VHDLVHDL描述描述1.1.上升沿检测表达式和信号属性函数上升沿检测表达式和信号属性函数EVENTEVENT 关键词EVENT是信号属性函数,CLKEVENT表示:信号CLK在一个极小的时间段内发生信号变化是为TRUE,否则为FALSE。因此CLKEVENT AND CLK
4、=1 为TRUE就可以表示上升沿。2.2.不完整条件语句与时序电路不完整条件语句与时序电路 例5-1之所以成为时序电路而不是组合电路,它的关键并不是含有语句CLKEVENT AND CLK=1 ,而是PROCESS中的IF语句是不完整的条件语句。不完整的条件语句,造成条件不满足时需要信号状态保持现状,即需要存储,从而构成时序电路。 实际上, CLKEVENT AND CLK=1 语句语句,和不完整条件语句不完整条件语句是两种常用的构成时序电路常用的语句结构。 注意注意,是否是时序电路,关键还是要看电路是否有存储功能,而不是看是否有上面两种语句。比如例3-12虽然包含不完整条件语句,但还是纯组合
5、电路;而例5-1如果把不完整条件语句补充完整,即使它含有clkevent语句也是组合电路。5.1 基本时序元件的VHDL表述 5.1.1 D5.1.1 D触发器的触发器的VHDLVHDL描述描述2.2.不完整条件语句与时序电路不完整条件语句与时序电路 例5-2给出了一个本意想设计纯组合电路,结果由于疏忽包含了不完整条件语句而成了时序电路。例5-3给出了正确的组合电路表述。5.1 基本时序元件的VHDL表述 5.1.2 5.1.2 含有异步复位和时钟使能的含有异步复位和时钟使能的D D触发器及其触发器及其VHDLVHDL表述表述 “异步”指独立于时钟控制,“同步”指有时钟信号有效时才生效。例5-
6、4中,异步复位指任何时刻(不管时钟信号有没有到来),只要RST=1,Q就被清0。而时钟使能信号EN,指EN有效时CLK才有效,从功能上(就本例而言)也可以看作是CLK的同步信号,因此例5-4的代码中将其放在clkevent里进行处理。这里画错了,波形是/RST5.1 基本时序元件的VHDL表述 5.1.2 5.1.2 含有异步复位和时钟使能的含有异步复位和时钟使能的D D触发器及其触发器及其VHDLVHDL表述表述注意:注意:一般的,凡是异步信号都放在clkevent以外或以上,凡是同步信号则放在clkevent以内或以下。5.1 基本时序元件的VHDL表述 5.1.3 5.1.3 含有同步复
7、位控制的含有同步复位控制的D D触发器及其触发器及其VHDLVHDL表述表述不完整条件语句构成时序逻辑D触发器完整条件语句构成纯组合逻辑多路选择器5.1 基本时序元件的VHDL表述 5.1.4 5.1.4 基本锁存器及其基本锁存器及其VHDLVHDL表述表述注意:注意:由于电平触发电路通常由组合逻辑+反馈的结构构成,而不是由基本时序模块(触发器、寄存器)组成,因此电平触发电路通常比沿触发电路耗费更多的逻辑资源。边沿敏感型(如边沿敏感型(如D D触发器)触发器)电平敏感型(如锁存器)电平敏感型(如锁存器)时序电路时序电路常用常用clkevent或不完整条件语句构建或不完整条件语句构建常用不完整条
8、件语句构建常用不完整条件语句构建5.1 基本时序元件的VHDL表述 5.1.4 5.1.4 基本锁存器及其基本锁存器及其VHDLVHDL表述表述注意:注意:通过更改敏感信号列表,可以更改电路结构,如例5-7就将5-6改成了边沿触发型时序电路(D触发器)。但不建议这样做,因为只有部分综合器(如Quartus)支持更改敏感信号列表,而很多综合器默认进程的敏感信号列表必须列出所有本进程的输入信号。对于构建边沿触发型时序逻辑,推荐使用例5-1的形式(含clkevent的形式)。敏感信号列表包含CLK和D。分析CLK和D变化时的执行过程5.1 基本时序元件的VHDL表述 5.1.5 5.1.5 含清含清
9、0 0控制的锁存器及其控制的锁存器及其VHDLVHDL表述表述这里画错了,波形是/RST5.1 基本时序元件的VHDL表述 5.1.6 VHDL5.1.6 VHDL实现时序电路的不同表述实现时序电路的不同表述 上面各例中使用clkevent and clk=1来检测clk的上升沿,严格来讲严格来讲是不对的,因为clk的数据类型std_logic可由9种取值。应使用clkevent and clk=1 and clklast_value=0或者std_logic_1164程序包中的rising_edge()函数。 但多数综合器并不care边沿检测语句中的信号的std_logic数据类型,因此常用
10、和通用的边沿检测表达式还是clkevent and clk=1或rising_edge()函数(下降沿有clkevent and clk=0或falling_edge()函数)。5.1 基本时序元件的VHDL表述 5.1.6 VHDL5.1.6 VHDL实现时序电路的不同表述实现时序电路的不同表述 还可以使用wait until语句和卫士块语句进行边沿检测。进程中使用wait until语句时可不列出敏感信号列表。5.1 基本时序元件的VHDL表述 5.1.7 5.1.7 双边沿触发时序电路设计讨论双边沿触发时序电路设计讨论 VHDL不允许对同一信号在时钟的两个边沿进行数据赋值处理,无论是在同
11、一进程中还是在不同进程中都不允许。下面两例都是错误的: 上面第二个例子更加错误,因为在不同进程中(进程之间是并行的)对同一信号进行赋值本身就是错误的,这会造成“线与”或者说“短路”。 但实用电路中确实有双边沿器件,比如双边沿控制的存储器,在时钟的上升沿将数据写入,利用下降沿读出数据。但实际上,时钟的上升沿和下降沿所控制的对象并非是同一硬件端口(信号变量),因此本质上扔属于单边沿操作。5.2 计数器的VHDL设计5.2 计数器的VHDL设计 5.2.1 45.2.1 4位二进制加法计数器设计位二进制加法计数器设计综合的结果是4位位宽的矢量Q出现在赋值语句的左右两侧,具有输入和输出两种属性,且输入
12、属性体现了反馈方式,复合BUFFER类型端口模式。注:注:与INOUT模式不同,BUFFER模式的输入功能是不完整的,只能能反馈自己的输出信号。5.2 计数器的VHDL设计 5.2.1 45.2.1 4位二进制加法计数器设计位二进制加法计数器设计 参见图5-13,Q=Q+1是由带反馈的D触发器构成,左右两端的Q代表了不同的值。硬件上是由传输延时实现的,软件上是VHDL语法规定的。VHDL规定,加、减等算数操作符对应的操作数必须是INTEGER型5.2 计数器的VHDL设计 5.2.2 5.2.2 计数器更常用的计数器更常用的VHDLVHDL表达方式表达方式 例5-13端口信号使用BIT和INT
13、EGER类型,不利于与其他电路接口。5.2 计数器的VHDL设计 5.2.2 5.2.2 计数器更常用的计数器更常用的VHDLVHDL表达方式表达方式 Q的模式为OUT,不能作为输入,因此不能用Q=Q+1这样的表达式。程序中定义了内部信号Q1,内部信号没有端口模式,数据流动不受方向限制。5.2 计数器的VHDL设计 5.2.2 5.2.2 计数器更常用的计数器更常用的VHDLVHDL表达方式表达方式 Q1是std_logic_vector类型,而+操作只能对integer型进行操作;另外Q1+1是两个不同类型信号进行相加,不符合VHDL规范。因此本例中使用std_logic_unsigned程
14、序包中对+进行的重载函数。5.2 计数器的VHDL设计 5.2.2 5.2.2 计数器更常用的计数器更常用的VHDLVHDL表达方式表达方式 例5-13和例5-14综合后的RTL电路都是图5-13,包括纯组合的加1电路、纯时序的4位边沿触发寄存器、反馈通道三大部分。从图中可知,虽然例5-13的输出用了BUFFER模式,例5-14用了OUT模式,但综合的效果是一样的。实际上,BUFFER并非某种特定的端口结构,它只是对端口具有某种特定工作方式的描述。为了描述实际电路,BUFFER模式并非必须有的,verilog中就没有此类端口模式。此RTL电路用的D触发器是FPGA或CPLD的最底层电路结构,可
15、优化的潜力不大,因此本电路中的组合加法电路性能好坏决定了整个电路性能的好坏。(大部分的优化工作由综合器完成)5.2 计数器的VHDL设计 5.2.3 5.2.3 实用计数器的实用计数器的VHDLVHDL设计设计 例5-15给出一个带有异步复位和同步加载功能的十进制加法计数器。同一进程中两个独立的if第一个if嵌套多层,并含有非完整条件语句,形成时序电路第二个if是完整条件语句,形成纯组合的多路选择器Q的数据对象定义成变量,变量通常作为进程内部的数据暂存单元,在非完整条件语句中一般不构成时序电路。但本例中却构成了时序电路,关键在于变量Q赋值给了信号DOUT5.2 计数器的VHDL设计 5.2.3
16、 5.2.3 实用计数器的实用计数器的VHDLVHDL设计设计 例5-15综合后产生的RTL电路如下所示,包含小于比较器、等于比较器、加1器、4位锁存器各一个,2选1多路选择器两个。5.2 计数器的VHDL设计 5.2.3 5.2.3 实用计数器的实用计数器的VHDLVHDL设计设计构成小于比较器构成锁存器的异步清0端构成多路选择器不完整条件语句和Q:=Q+1构成加1器和寄存器构成另一路多路选择器构成纯组合电路等于比较器5.2 计数器的VHDL设计 5.2.3 5.2.3 实用计数器的实用计数器的VHDLVHDL设计设计 例5-15时序仿真波形如下(1)当EN为高时允许计数,RST为低时计数器
17、清0(2)第1,3,4个LOAD信号处于CLK上升沿处,进行加载(3)COUT的毛刺在由7变8时产生,0111变1000变化最大,有中间状态1001。如果用快速器件可能就没有这个毛刺。5.2 计数器的VHDL设计 5.2.3 5.2.3 实用计数器的实用计数器的VHDLVHDL设计设计 与例5-4相同,凡是放在时钟边沿测试条件语句以外的控制信号都是异步控制信号,如RST;凡是放在时钟边沿测试条件语句以内的控制信号都是同步控制信号,如EN。此外从RTL可看出,例5-15的表述方式比较节省资源,因为综合出的D触发器的RST和EN时序恰好与FPGA底层的基本时序元件D触发器的控制信号的时序性质相吻合
18、。5.2 计数器的VHDL设计 5.2.3 5.2.3 实用计数器的实用计数器的VHDLVHDL设计设计 例5-15在一个进程里使用两个if分别构建时序电路和组合电路,实际中更常用的是用两个进程分别构建时序电路和组合电阻,称为时序进程和组合进程。如例5-16所示。这里Q必须定义为信号,因为要在两个进程间交换信息,而变量只能在进程内部交换信息。5.3 移位寄存器的VHDL设计5.3 移位寄存器的VHDL设计 例5-17给出一个带同步预置功能的8位右移移位寄存器。低7位由高7位代替,右移空的最高位始终由原最高位填补这两句与进程是并行的,实现最低位的输出和移位后的并行输出5.3 移位寄存器的VHDL设计 第一个LOAD信号不在CLK的上升沿,无效;第二、三个LOAD信号在CLK的上升沿,有效。5.4 属性描述与定义语句5.4 属性描述与定义语句 前面用到的EVENT和LAST_VALUE都是属性函数,具有属性的项目有很多种,主要有:类型、子类型、过程、函数、信号、变量、常量、实体、结构体、配置、程序包、元件、语句标号等。属性是这些项目的特性,属性的值和项目的值是两个不同的概念。比如数据对象(信号、变量和常量)的值和数据对象属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 漳州卫生职业学院《当代教育心理学》2025-2026学年期末试卷
- 南昌航空大学《波谱解析》2025-2026学年期末试卷
- 黄山健康职业学院《投资组合管理》2025-2026学年期末试卷
- 仰恩大学《知识产权法》2025-2026学年期末试卷
- 泉州轻工职业学院《全新大学英语》2025-2026学年期末试卷
- 中国矿业大学徐海学院《工程结构抗震》2025-2026学年期末试卷
- 九江学院《安全系统工程》2025-2026学年期末试卷
- 长春建筑学院《西方经济学题库》2025-2026学年期末试卷
- 天虹超市积分运营策略
- 地质勘查公司样品采集与送检管理制度
- 企业负责人安全管理人员安全培训教案
- GB/T 5780-2025紧固件六角头螺栓C级
- 2025年及未来5年市场数据中国贯通轴市场全面调研及行业投资潜力预测报告
- 玉米种植讲解课件
- 京东方高端显示材料研究院项目环境影响报告表
- 公开课抄课件
- 2025小学生AI知识竞赛试卷及答案
- 2025至2030智慧公路行业项目调研及市场前景预测评估报告
- 2024潍坊职业学院辅导员招聘笔试真题及答案
- DB21∕T 3654-2022 研学旅行基(营)地服务与管理规范
- 医生顾问协议书
评论
0/150
提交评论