技术标签: fpga开发
在被数电无情折磨了两个日夜之后,我终于使用 Quartus II 以及 FPGA 学习板 V1.4(重邮 光电学院实验中心)做出了 24 小时数字钟,该数字钟拥有如下功能:
基本功能:24 小时计时
拓展功能:时间加速、时间暂停、秒钟滴答声、计时清零
首先是基础功能的实现,基础功能包含 60/24 进制计数模块、译码模块、位选模块、显示模块、分频模块,这些模块均为基础模块,可在《数字电路与逻辑设计 第二版》人民邮电出版社 邹虹 这本书上找到相应的设计方法。其中模 60/24 我是使用的 74161 芯片实现,这里放一下大致的电路图设计情况:
以上的就是这些基础模块的设计电路图,接下来让我们看一下最重要的模 60 以及模 24 的仿真情况。
通过波形仿真图可以看到,我是将个位和十位分开做的清零和进位,count 60 部分,个位为 10 进制,十位部分为 6 进制,count 24 部分个位为 5 进制,十位为 3 进制,均使用 74161 芯片实现,这两个模块均有一个 carry 输出,carry 输出为进位信号(59 秒进 1 分,59 分进 1 小时),这样便可以将时、分、秒结合起来,实现数字钟的功能。
以下为 FPGA 数字钟顶层文件设计电路图:
可以看到数字钟基本实现功能的思路为先将晶振 50MHz 的频率进行分频,分为 1Hz、1kHz 以及 500Hz 的频率,其中 1Hz 时钟信号用来驱动 count 60 模块进行数字钟计数,而 1kHz 和 500Hz 均可以用来驱动显像管显示,只要刷新率高于 1Hz 便可以正常实现显示功能。然后将时、分、秒计数信号输入 display 显示模块进行解码、显示等操作后(display 显示模块的设计电路图在上文中有介绍)最终输出,输出口连接 FPGA 开发板上的阴极管,即可在 FPGA 开发板上实现数字钟基础功能。
基础功能实现完之后我们再来看看拓展功能:
1. 计时滴答声:
将 1Hz 的时钟信号接入到蜂鸣器中,即可实现每秒钟一次“嘀嗒”响声。
2. 时间加速:
我们在分频 50MHz 的时候分出了 1Hz 以及 1kHz 的频率,我们新增一个 input 输入信号绑定一个开关,然后将这个输入信号与 1Hz 信号相与,再将该输入信号的反信号与 1kHz 信号相与,然后将两个信号相或,最终作为时钟信号输入到 count 60 的时钟信号 clk 中来驱动 count 60 模块的工作。如此,便实现了拨动开关控制时间加速的功能。
3. 时间暂停:
我们在 count 60 模块中新增一个输入信号“start or stop”,将该输入信号绑定一个开关,然后将该信号与输入的 1Hz 信号相与输入到 60 进制计数器中,这样我们便成功实现了拨动开关开始/停止计时的功能。
4. 计时清零:
这里用到了 74161 芯片的 CLRN 引脚清零功能,在 count 60、count 24 模块中增加一个输入信号“clear key”,将该信号与 FPGA 开发板上的一个按钮绑定,当按下按钮的时候,该输入信号为 1 ,经过一个非门之后接入到 74161 芯片的 CLRN 引脚上(CLRN 引脚为低电频有效,故需要接一个非门),这样我们便实现了按下按钮清零计时的功能。
Android颜色全解析 颜色对照表:https://blog.csdn.net/lm_zp/article/details/51381355颜色表示方法 Android颜色由16进制表示,颜色范围为0~FFFFFF。 颜色值:#AARRGGBB。透明度(A,alpha);红色(R,red);绿色(G,green);蓝色(B,blue颜色值透明度百分比和十六进制对应关系//变化为...
Linux 运行jar包命令如下:方式一:java -jar shareniu.jar特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出那如何让窗口不锁定?方式二java -jar shareniu.jar &&代表在后台运行。特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。继续改
使用时 要#include ConstructionCListConstructs an empty ordered list.建立一个链表example:CList myList;//建立一个int链表CList myList(16);//建立一个cstring的链表,后面的16表示链表里面数据的个数,如果不写的话,可能是不限个数?CLi
在中国国内填报志愿的时候,很多学生会提前看学校的排名以及自己所要报考的专业排名情况。而出国留学的时候同样如此,有的学生在高中毕业后申请去加拿大留学,加拿大著名院校有很多,部分学生特别关注达尔豪斯大学,而大家在报考达尔豪斯大学的时候,也有必要关注达尔豪斯大学专业排名情况,一起来看一下下面的内容吧。达尔豪斯大学(DalhousieUniversity)又译作达尔豪西、达尔豪斯大学。为世界学术名校,加拿...
首先在本机通过regsvr32命令注册ActiveX控件,然后确保ActiveX控件能正确在IE中加载,IE7、IE8对安全控制得比较严。JavaScript调用ActiveX控件的示例代码:ActiveX控件的classid需要通过查找注册表获得,然后通过getElementById()方法获取对象后,就可以像调用普通的JS函数一样使用了<!DOCTYPE html PUBLIC ...
自华为发布鸿蒙操作系统以来,它一直备受外界瞩目。是重压之下的应急,还是瞄准新赛道布局?是做原有软件的“影子”,还是担负起产业牵引的新使命?“在别人的墙基上砌房子,再大再漂亮也经不起风雨”。新华社记者专访华为鸿蒙负责人王成录,谈“换道超车”,论“逆周期创新”,展望中国下一代移动互联网产业的自主之“根”。换赛道:建“万物互联”的操作系统对习惯使用安卓或iOS操作系统的手机用户而言,鸿蒙到底是什么?“个...
python应用GUI开发系列:python利用PyQt5和QTDesginer开发GUI应用(一)、环境准备及demopython利用PyQt5和QTDesginer开发GUI应用(二)、股票查询工具---------------------------------------------------------------------------------------------...
传统组织如何转型敏捷组织 前几天有人问: 如何设计组织? 有两个潜在的答案,实际上并不像它们在第一个站点上那样矛盾。 第一个很简单:不要。 也就是说,不要设计您的组织,不要制定组织结构图,不要制定计划,并且要根据该计划重组您的组织。 而是创造条件让结构出现。 我想这是“设计”(意思是“为您希望的事物的方式制定计划”)和“设计”(意思是“事物的排列方式”)之间的区别。 为了...
importjava.io.IOException;importjava.util.HashMap;importjava.util.Map;importjava.util.Set;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.HBa...
二维平面上判断点是否在三角形内算法1利用面积法,如上图所示,如果点P在三角形ABC的内部,则三个小三角形PAB, PBC, PAC的面积之和 = ABC的面积,反之则不相等。已知三角形的三个顶点坐标求其面积,可以根据向量的叉乘,参考here。该算法详见后面代码中的函数:IsPointInTriangle1算法2首先看一下这个问题,如何判断某两个点在某条直线的同一侧(代码中函数:IsPointAtSameSideOfLine)?根据向量的叉乘以及右手螺旋定则,AB^AM (表示叉乘,这里向量
Is there a way to use constants in JavaScript? 有没有办法在JavaScript中使用常量? If not, what's the common p
2020年10月 TIOBE 排行榜超过了 Java,历史上首次 Python 超越了 Java,再次让许多朋友对 Python 产生了兴趣,今天我们来梳理下学习 Python 几个阶段或者级别,期望对持续进化的你有所帮助本文缘起于知乎上的一个提问:怎么自学python,大概要多久?,当时做了一个回答,这次重新整理了一遍,全文如下:看了回答区的很多回答,感觉很专业也很详尽,觉得要回答多久的问题,需要先回答学习的目标是什么这个问题,这里将目标分为 入门、进阶、深入和终极四个部分来说明很多人学习..