实验五 含有控制信号的计数器VHDL设计

简介:

一、实验目的

学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

二、实验仪器与器材

计算机1台,GW48-PK2S实验箱1台,Quartus6.0 1套。

三、实验

1. 基本命题

Quartus上设计一个含计数使能、异步复位和计数值并行预置功能的4位加法计数器,并进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。

1)        实验原理

由数电知识可知,4位加法计数器由clk时钟,rst置位,en使能,cq输出,cout进位输出构成。

2)        程序设计

111111111

 

3)        编译仿真波形

clip_image004

1   4位加法计数器波形

从图1分析可知,在每一个时钟上身沿到来的时候,4位加法计数器计数值加1(图中1),最大计数值为15,并进行进位输出(图中2);当rst为高电平时,输出清零。

2. 扩展命题

在上述设计基础上,设计具有同步复位和计数值并行预置功能的8位加法计数器。并进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。

1)        实验原理

由原来的设计的两个4位加法计数器件组成一个8位加法计数器U0。设有两个4位加法计数器U1U2。我们规定U1U0的低位,U2U0的高位。将U1的进位输出cout连接到U2的时钟输入clkU1U2rst连接在一起作为总置位端brsten也连接在一起,作为总使能端benU2的进位输出cout作为总进位输出bcout

2)        程序设计

clip_image005

3)        编译仿真波形

clip_image007

             图2.1   8位加法计数器从0计数到26

clip_image009

2.2   8位加法计数器从26计数到50

8位加法计数器可以计数到196,但是后面的计数运行正常且与前面相似,不再截图。

4)        分析结果

从图中可以看出,实验的结果与预期相符。

 

 

四、实验设计思路

5-1是一含计数使能、异步复位和计数值并行预置功能的4位加法计数器。如图所示,图中间是4位锁存器;rst是异步清信号,高电平有效;clk是锁存信号;D[30]4位数据输入端。当ENA1时,多路选择器将加1器的输出值加载于锁存器的数据端;当ENA0时将0000加载于锁存器。

clip_image011

附图5-1  4位加法计数器的RTL电路图

设计提示:

若目标器件是EP1C6Q240C8,建议选实验电路模式5,用键8PIO7)控制RST;用键7PIO6)控制ENA;计数溢出COUT接发光管D8PIO15);输出Y是计数输出,接数码1PIO19-PIO16,低位靠右);时钟CLKclock0,通过跳线选择4Hz信号。引脚锁定后进行编译、下载和硬件测试实验。

五、实验思考题

1)是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即 OUTY <= OUTY + 1   为什么?

假设可行,将cnt4中的实验程序修改为直接使用输出端口信号完成加法运算,如图3所示。经分析,程序中的输出cq是不可读的,另外,如果没有一个变量来保存程序的计数值,那么程序就相当于一个组合逻辑电路,不具备计数的功能。

 

111111111

3直接使用输出端口信号完成加法运算

 

六、问题的总结

 1Cnt4中的不准确的进位输出,导致cnt8中的计数出错。 
之前在cnt4判断进位的输出的语句如图所示。该语句检测当计数值为15的时候,就进行输出。当4位加法计数器的数量为一个的时候,可以正常工作。但是复用cnt4的时候,发现8位加法计数器cnt8的计数出现了如图4的错误。经分析,在cnt8中时,当低位cnt4的计数值为15,同时输出一个进位信号到高位cnt4,照成高位cnt4多计数了一次。由于在下一个时钟到来的时候,低位的cnt4才重新从0开始计数,因此会产生仿真结果与预期不符。只要我们将程序修改为如下方程序块1
所示。

111111111

进位输出语句

111111111

3 Cnt8计数输出不准确

LIBRARYieee;

USEieee.std_logic_1164.ALL;

USEieee.std_logic_unsigned.ALL;

ENTITY cnt4 IS

PORT(clk, rst, en :INstd_logic;        --clk时钟,rst置位,en使能

cq :OUTstd_logic_vector(3DOWNTO0);--cq输出

cout :OUTstd_logic);                 --cout进位输出

END cnt4;

ARCHITECTURE behave OF cnt4 IS

BEGIN

    PROCESS(clk,rst,en)

       VARIABLE cqi :std_logic_vector(3DOWNTO0);

       BEGIN

           IF rst = '1THEN  cqi :=(OTHERS=>'0');-- 计算机异步复位

           ELSIF clk='1and clk'eventTHEN        -- 检测时钟上升沿

              IF en='1THEN                        -- 检测是否允许计数(同步使能)

                  IF cqi <15  THEN  cqi := cqi +1;  -- 允许计数,检测是否小于15

                  ELSE cqi :=(OTHERS=>'0');      -- 大于15,计数值清零

                  ENDIF;

              ENDIF;

           ENDIF;

         IF cqi =15THEN

           IF clk='1and clk'eventTHEN 

              cout <= '1';                         -- 计数大于15,输出进位信号

           ENDIF;

           ELSE cout <='0';

         ENDIF;

         cq <= cqi;                                   -- 将计数值送往输出端口

ENDPROCESS;

END behave;

 

代码块修改后的cnt4代码

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/p/3175462.html如需转载请自行联系原作者


kissazi2

相关文章
|
测试技术 uml 容器
UML之包图(Package Diagram)
UML之包图(Package Diagram)
651 1
|
10月前
|
API
如果API调用失败,我应该如何排查问题?
当小红书API调用失败时,可按以下步骤排查:1. 检查请求参数;2. 确认身份验证凭据;3. 控制调用频率;4. 检查网络连接;5. 查看错误码和日志;6. 核实授权范围;7. 联系技术支持;8. 定期更新与测试。这些方法有助于系统地解决问题,确保API调用稳定。
|
存储 监控 关系型数据库
rds迁移与扩展
rds迁移与扩展
224 4
|
11月前
|
NoSQL 关系型数据库 OLAP
如何选择最合适的数据库,帮助企业及个人业务更好的开展
如何选择最合适的数据库,帮助企业及个人业务更好的开展
|
自然语言处理 IDE 开发工具
通义灵码使用安装教程,3 分钟快速上手体验
通义灵码,是阿里云与通义实验室联合出品的一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云的云服务使用场景调优,助力开发者高效、流畅的编码。目前个人版免费使用。
1692 10
|
机器学习/深度学习 人工智能 前端开发
AI计算机视觉笔记三:WEB端部署YOLOv5
本文档介绍了如何将YOLOv5目标检测模型部署到Web端的方法,包括基于Flask和Streamlit两种实现方案。首先创建Python虚拟环境并安装必要的依赖库。接着详细展示了Flask方案下的前端HTML页面与后端Python逻辑代码,该方案利用Flask框架搭建服务器,处理实时视频流,并显示检测结果。随后介绍了Streamlit方案,该方案更简洁直观,适合快速开发交互式的机器学习应用。通过`streamlit run`命令即可启动应用,支持图像、视频及实时摄像头的目标检测演示。两种部署方式各有优势,Flask灵活性高,适用于复杂项目;而Streamlit则易于上手,便于快速原型设计。
1314 0
|
监控 数据可视化 BI
ERP系统中的财务报告与财务分析解析
【7月更文挑战第25天】 ERP系统中的财务报告与财务分析解析
641 4
|
Web App开发
成功解决Chrome浏览器 控制台下看不到接口信息的问题
这篇文章提供了解决Chrome浏览器控制台不显示接口信息问题的方法,包括检查过滤设置和确保“保留日志”开关已打开。
成功解决Chrome浏览器 控制台下看不到接口信息的问题
|
消息中间件 监控 Kafka
蓝绿部署中,如何确保数据一致性?
在蓝绿部署中,确保数据一致性是一个关键问题。以下是一些建议来确保数据一致性: 1. 数据库复制:在蓝绿部署的两个环境中,确保数据库是同步的。这可以通过设置数据库复制或使用数据库集群来实现。这样,在部署过程中,两个环境的数据将保持一致。 2. 数据同步工具:使用数据同步工具(如Apache Kafka、RabbitMQ等)在蓝绿部署的两个环境之间实时同步数据。这样可以确保在部署过程中,两个环境的数据保持一致。 3. 分布式事务:在分布式系统中,使用分布式事务来确保数据一致性。例如,可以使用两阶段提交(2PC)协议或者三阶段提交(3PC)协议来实现分布式事务。 4. 服务幂等性:确保服务具
839 4
|
移动开发 监控 前端开发
基于 HTML5 WebGL 和 VR 技术的 3D 机房数据中心可视化
基于 HTML5 WebGL 和 VR 技术的 3D 机房数据中心可视化