基于BASYS2的VHDL程序——数字钟
在编电子表时发现FPGA求余,取模只能针对2的次方。毕竟是数字的嘛!
时钟用到了动态刷新数码管。以一个大于50Hz的速度刷新每一个数码管。
因为数码管只有四个,只写了分针和秒针。
代码如下:
- library IEEE;
- use IEEE.STD_LOGIC_1164.ALL;
- use IEEE.STD_LOGIC_ARITH.ALL;
- use IEEE.STD_LOGIC_UNSIGNED.ALL;
- entity clock is
- Port ( clk : in STD_LOGIC;
- seg : out STD_LOGIC_VECTOR ( downto );
- an : out STD_LOGIC_VECTOR ( downto ));
- end clock;
- architecture Behavioral of clock is
- signal num:STD_LOGIC_VECTOR ( downto );
- signal min_h:STD_LOGIC_VECTOR ( downto );
- signal min_l:STD_LOGIC_VECTOR ( downto );
- signal second_h:STD_LOGIC_VECTOR ( downto );
- signal second_l:STD_LOGIC_VECTOR ( downto );
- signal an_sel:STD_LOGIC_VECTOR ( downto );
- signal cnt: INTEGER;
- signal cnt2: INTEGER;
- signal sclk: STD_LOGIC;
- constant a:integer :=;
- begin
- process(clk)
- begin
- if(clk'event and clk='') then
- if(cnt=) then
- cnt<=;
- sclk<=not sclk;
- else
- cnt<=cnt+;
- end if;
- end if;
- end process;
- process(clk)
- begin
- if(clk'event and clk='') then
- if(cnt2=) then
- cnt2<=;
- if(an_sel="") then
- an_sel<="";
- else
- an_sel<=an_sel+'';
- end if;
- else
- cnt2<=cnt2+;
- end if;
- end if;
- end process;
- process(sclk)
- begin
- if(sclk'event and sclk='') then
- if(second_h="" and second_l="") then
- second_h<="";
- second_l<="";
- min_l<=min_l+'';
- if(min_h="" and min_l="") then
- min_h<="";
- min_l<="";
- elsif(min_l="") then
- min_h<=min_h+'';
- min_l<="";
- end if;
- elsif(second_l="") then
- second_h<=second_h+'';
- second_l<="";
- else
- second_l<=second_l+'';
- end if;
- end if;
- end process;
- process(an_sel,second_l,second_h,min_l,min_h)
- begin
- case an_sel is
- when ""=>an<="";num<=second_l;
- when ""=>an<="";num<=second_h;
- when ""=>an<="";num<=min_l;
- when ""=>an<="";num<=min_h;
- when others=>null;
- end case;
- case num is
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when x""=>seg<=b"";
- when others=>null;
- end case;
- end process;
- end Behavioral;
约束文件如下:
- NET "clk" LOC = "B8";
- NET "an<0>" LOC="K14";
- NET "an<1>" LOC="M13";
- NET "an<2>" LOC="J12";
- NET "an<3>" LOC="F12";
- NET "seg<6>" LOC="L14";
- NET "seg<5>" LOC="H12";
- NET "seg<4>" LOC="N14";
- NET "seg<3>" LOC="N11";
- NET "seg<2>" LOC="P12";
- NET "seg<1>" LOC="L13";
- NET "seg<0>" LOC="M12";
基于BASYS2的VHDL程序——数字钟的更多相关文章
- 基于BASYS2的VHDL程序——数字钟(最终版)
转载请注明原地址:http://www.cnblogs.com/connorzx/p/3674178.html 调时电路正常工作.一切正常.发现做FPGA还是得从数电的思路思考,设置一个预置使能端,预 ...
- 基于BASYS2的VHDL程序——数字钟(改进版)
扩展到时分秒.加了入调时电路,但不知道为什么有两个按键不好使.而且不知道以何种方式假如按键消抖电路,因为加入后会多个时钟控制一个信号,物理不可实现.调试电路待解决.还有,四个数目管中间的那两个圆点怎么 ...
- 基于BASYS2的VHDL程序——交通灯
请尊重作者版权,转载请注明原地址: http://www.cnblogs.com/connorzx/p/3676746.html 数电实验交通灯VHDL版,程序写的扩展性很差,待以后有时间进行优化. ...
- 基于BASYS2的VHDL程序——分频和数码管静态显示程序
转载请注明出处:http://www.cnblogs.com/connorzx/p/3633860.html 分频是基于计数器程序.由于FPGA的并行处理能力,根本不需要单片机式的中断指令,用起来很方 ...
- 基于BASYS2的VHDL程序与烧写——按键消抖程序
请尊重作者版权,转载请注明源地址http://www.cnblogs.com/connorzx/p/3548364.html 按键在按下的过程中通常会产生一段时间的抖动,为了消除这种抖动,一般采取两种 ...
- 基于BASYS2的VHDL程序与仿真——50%占空比8分频器
转帖请注明转自http://www.cnblogs.com/connorzx/p/3547673.html 一.新建工程 1.点击File->New Project, 2.点击Next 注:此处 ...
- 基于BASYS2的VHDL程序——交通灯(状态机版)
请尊重作者版权,转载注明源地址:http://www.cnblogs.com/connorzx/p/3694618.html 使用了状态机,增加了可读性和用户体验. library IEEE; use ...
- 基于串口校时的数字钟设计(verilog实现)
任务: 电路图设计: 设计: 模块1:1.先设计一个计数时钟,为了仿真方便,这里把1000ns当作1s. 创建一个计数器second_lim,当计数到1000/20时清零,即1s. 秒显示器secon ...
- 基于basys2用verilog设计多功能数字钟(重写)
话不多说先上图 前言 自从学习FPGA以来,唯一做过的完整系统就是基于basys2得多功能数字表.记得当时做的时候也没少头疼,最后用时间磨出来了一个不是很完整的小系统,当时还是产生了满 ...
随机推荐
- 【linux】CentOS编译程序报错 修复 ./Modules/_ssl.c:64:25: 致命错误:openssl/rsa.h:没有那个文件或目录
如果你在编译时遇到这个错误,这可能是下面的原因:你尝试编译的程序使用OpenSSL,但是需要和OpenSSL链接的文件(库和头文件)在你Linux平台上缺少. 所以在CentOS下, 退到根路径,[需 ...
- VirtualApp技术黑产利用研究报告
一. 前言 VirtualApp(以下称VA)是一个App虚拟化引擎(简称VA).VirtualApp创建了一个虚拟空间,你可以在虚拟空间内任意的安装.启动和卸载APK,这一切都与外部隔离,如同一个沙 ...
- fast-cgi & php-fpm 等的理解
原文地址:https://segmentfault.com/q/1010000000256516 网上有的说,fastcgi是一个协议,php-fpm实现了这个协议: 有的说,php-fpm是fast ...
- Ubuntu切换至root错误:su:Authentication failure解决
当前用户切换到root出现这个错误的原因是没有创建root用户,解决如下: 1.打开终端,输入命令sudo passwd root 会提示输入新的用户密码,输入后会再确认一次,成功后会显示:passw ...
- Linux 软件大全
应用 音频 Airtime - Airtime 是一款用于调度和远程站点管理的开放广播软件 Ardour - 在 Linux 上录音,编辑,和混音 Audacious - 开源音频播放器,按你想 ...
- Linux mm相关的问题
[S]为什么High MEM是从896M開始的? As the running kernel needs these functions, a region of at least VMALLOC_R ...
- HTML5、CSS3等新特性:
HTML5:1/绘画 canvas 元素;2/用于媒介回放的 video 和 audio 元素;3/本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;4/sessionSt ...
- C语言判断回文数
#include<stdio.h> #include<stdlib.h> int main() { //1.得到这个数字 2.翻转 3.进行比较 4.如果相同 就输出 是 否则 ...
- 安卓UI适配限定符
引言 对于程序在不同尺寸的Android机器上执行,对UI的适用性造成了额外的开销,只是限定符的出现,非常方便的攻克了这个问题.通过创建限定符相关的文件夹来解决资源的载入. 限定符用处 限定符(mdp ...
- kubernetes对象之deployment
系列目录 简述 Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用.典型的应 ...