VHDL数字时钟完整程序代码(要求要有元件例化,并且有按键消抖),谢谢啦啦啦啦

2023-11-21 11:34

1个回答
图11
程序如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity xuan21 is
Port ( alarm,a,b: in std_logic;
y:out std_logic);
end xuan21 ;

architecture one of xuan21 is
begin
process(alarm,a,b)
begin
if alarm='0' then y<=a;else y<=b;
end if;
end process;
end one;
仿真波形如下图12:

图12
(2)三位二选一:
模块图如图13。用以进行正常计时时间与闹铃时间显示的选择,alarm输入为按键。当alarm按键未曾按下时二选一选择器会选择输出显示正常的计时结果,否则当alarm按键按下时选择器将选择输出显示闹铃时间显示。

图13
程序如下:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity x213 is
Port ( alarm : in std_logic;
y:out std_logic_vector(3 downto 0);
a,b: in std_logic_vector(3 downto 0));

end x213;

architecture one of x213 is
begin
process(alarm,a,b)
begin
if alarm='0' then y<=a;else y<=b;
end if;
end process;
end one;
仿真结果如下图14:

图14
8、整点报时及闹时:
模块图如图15。在59分51秒、53秒、55秒、57秒给扬声器赋以低音512Hz信号,在59分59秒给扬声器赋以高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。闹时时间为一分钟。

图15
程序如下:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity voice is
Port ( hou1,huo0,min1,min0,sec1,sec0,hh,hl,mh,ml: std_logic_vector(3 downto 0);
in_1000,in_500:in std_logic;
q : out std_logic);
end voice;

architecture one of voice is
begin
process(min1,min0,sec1,sec0)
begin
if min1="0101" and min0="1001" and sec1="0101" then
if sec0="0001" or sec0="0011" or sec0="0101" or sec0="0111"
then q<=in_500;
elsif sec1="0101" and sec0="1001" then q<=in_1000;
else q<='0';
end if;
else q<='0';
end if;
if min1=mh and min0=ml and hou1=hh and huo0=hl then
q<=in_1000;
end if;
end process;
end one;
仿真波形如下图16

图16
9、顶层原理图:

三、感想

通过这次设计,既复习了以前所学的知识,也进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在画顶层原理图时,遇到了不少问题,最大的问题就是根本没有把各个模块的VHD文件以及生成的器件都全部放在顶层文件的文件夹内,还有就是程序设计的时候考虑的不够全面,没有联系着各个模式以及实验板的情况来编写程序,以至于多考虑编写了译码电路而浪费了很多时间。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示
:在分频模块中,设定输入的时钟信号后,却只有二分频的结果,其余三个分频始终没反应。后来,在数十次的调试之后,才发现是因为规定的信号量范围太大且信号的初始值随机,从而不能得到所要的结果。还有的仿真图根本就不出波形,怎么调节都不管用,后来才知道原来是路径不正确,路径中不可以有汉字。真是细节决定成败啊!总的来说,这次设计的数字钟还是比较成功的,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。

四、参考资料:
1、潘松,王国栋,VHDL实用教程〔M〕.成都:电子科技大学出版社,2000.(1)
2、崔建明主编,电工电子EDA仿真技术北京:高等教育出版社,2004
3、李衍编著,EDA技术入门与提高王行西安:西安电子科技大学出版社,2005
4、侯继红,李向东主编,EDA实用技术教程北京:中国电力出版社,2004
5、沈明山编著,EDA技术及可编程器件应用实训北京:科学出版社,2004
6、侯伯亨等,VHDL硬件描述语言与数字逻辑电路设计西安: 西安电子科技大学出版社,1997
7、辛春艳编著,VHDL硬件描述语言北京:国防工业出版社,2002 就这些
相关问答
按键精灵程序代码是什么语言?
2个回答2022-08-20 02:25
按键精灵是是新开发的Q语言,是以VBscript为基础的,由按键精灵团队自主研发的新一代脚本语言!
电脑按那几个键退出程序
3个回答2022-06-25 06:52
电脑退出程序的按键有: 1、Alt+F4 关闭当前程序 2、Alt+空格+C 关闭窗口 3、Alt+空格+N 最小化当前窗口 4、Alt+空格+R 恢复最小化窗口 5、...
全文
电脑退出程序按哪个键?
3个回答2022-12-26 14:58
电脑退出程序按键盘左上角的esc键。
电脑退出程序按哪个键
2个回答2022-08-15 11:52
电脑退出程序的按键有如下: 1、Alt+F4 关闭当前程序,如下图所示: 2、Alt+空格+C 关闭窗口,如下图所示: 3、Alt+空格+N 最小化当前窗口,如下图所示: 4、A...
全文
助听器的程序转换键按不动是什么原因
1个回答2024-06-09 00:40
按了没有反应有可能的原因: 1、可能是该功能没有打开, 2、长时间不用,塞了。建议去验配中心查看一下, 助听器是帮助提高听力的仪器,实际上就是一个小型的半导体扩音器,其作用可以使比较弱小的声音,...
全文
请问,我的键盘有一个按键坏了,如何设置程序,可以让另一个按键代替这个坏掉的按键呢
1个回答2023-01-24 22:56
首先看你是什么键盘了 能装官方驱动的就能改键盘按键了
结束电脑中所有程序是按那三个键?
4个回答2022-12-24 10:12
Ctrl+Alt+End是快速结束正在执行的所有进程命令的快捷键也叫快速关机 Ctrl+Alt+Home是快速重新启动电脑命令也叫快速重启动 CTRL+ALT+DEL 是快速查看资源管理器快捷键是用来...
全文
抖推猫的所有小程序都能赚钱吗?
1个回答2024-02-08 09:46
抖推猫的所有小城市,只要有别人去点击进去的话,或者去试玩去观看的话,才会有能赚钱。
怎么用按键精灵定时运行程序?
2个回答2022-11-22 08:02
判断时间获取分秒
《原神》且听下回分解的完整顺序是什么?
1个回答2024-03-07 04:46
1、首先需要进入到服务器中开始游戏,如下图所示。 2、接着我们要去找图中的npc触发任务,如下图所示。 3、接下来需要根据任务指引找到图中的范儿爷npc进行互动,如下图所示。 4...
全文
扫码下载APP
听书听课听播客,随时随地陪伴你
热门问答