- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]vhdl语言设计静态显示时钟
Digital Clock: part 1
18:59:59
电子表
三个按钮
设置功能按钮,set
调整数值按钮,adj
显示闹钟时刻,dis
电子元件
时钟信号,如1Hz或4Hz
7段数码显示管
按键
核心处理芯片——我们使用FPGA实现
18:59:59
数字时钟结构
18:59:59
数字时钟
级联的BCD码计数器
秒:60BCD码计数器,计数改变间隔1s
分:60BCD码计数器,计数改变间隔60s
时:24BCD码计数器,计数改变间隔3600s
4-7七段数码显示译码器
18:59:59
60BCD计数器
输入时钟clk:4Hz
输入使能en:四个周期出现1周期高电平
个位4bit计数器cntl:en有效时,计数0~9
十位4bit计数器cnth:en有效时,cntl为9时,计数0~5
进位输出cout:判断cnth为5,cntl为9时
18:59:59
60BCD计数器设计方法
cntl寄存器:en有效时:cntl小于9,则+1,否则赋0
cnth寄存器:en有效,且cntl为9时:cnth小于5,则+1,否则赋0
cout:cnth为5,且cntl为9时为1,其他时刻为0,比较器,组合电路
en:时钟为4Hz时,外部增加4计数器,en连接4计数器cout输出;若时钟为1Hz,en直接连接VCC。
18:59:59
BCD输出
BCD可使用4bit来表示
时、分、秒都含十位和各位,都是BCD输出
OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
或 OUT INTEGER RANGE 0 TO 9;
利用package定义新的数据类型:digital
USE WORK.MYPACK.ALL;--MYPACK.vhd放在项目文件夹中cnth : OUT digital;
18:59:59
MYPACK.vhd
-- 定义叫做mypack的包
package mypack is
-- 重定义数据类型digital
-- digital代表 integer range 0 t0 9
type digital is range 0 to 9;
-- 或者:
-- type digital is std_logic_vector( 3 downto 0)
end mypack;
18:59:59
cnt60.vhd
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.mypack.all;
entity cnt60 is
port ( clk : in std_logic; --时钟
--使能信号,时钟上升沿时为高,则计数器工作,否则计数器值保持不变
en : in std_logic;
cout : out std_logic;--输出进位,计数值达到最大值
cnth : out digital; --十位输出
cntl : out digital --个位输出
);
end entity;
architecture rtl of cnt60 is
signal cnth_int : digital := 0;
signal cntl_int : digital := 0;
begin
18:59:59
cnt60.vhd
cnth = cnth_int; cntl = cntl_int; -- Output the current count
cout = 1 when (cnth_int = 5 and cntl_int = 9) else 0;
process (clk) begin
if (rising_edge(clk)) then
if en = 1 then
if cntl_int 9 then cntl_int = cntl_int + 1;
else
if cnth_int 5 then cnth_int = cnth_int + 1;
else cnth_int = 0; end if;
cntl_int = 0;
end if;
end if;
end if;
end process;
end rtl;
18:59:59
i2
i0
d
c
b
a
4-7 segment
decoder
a
e
f
g
i3
i1
i3i2i1i0
abcdefg
LED
0000
1111110
0001
0110000
0010
1101101
您可能关注的文档
最近下载
- Linux网络操作系统配置与管理 第四版 项目3 文件和目录的管理.ppt VIP
- 医学课件-肝功能衰竭.pptx VIP
- 《保教政策法规与职业道德》中职幼儿保育专业全套教学课件.pptx
- 肝功能衰竭医学科普.pptx
- 2024-2025学年广东省深圳中学九年级(上)开学数学试卷(含详解).pdf VIP
- 《肝功能衰竭》课件课件-2024鲜版.ppt VIP
- 通桥(2014)2132-Ⅳ(跨度31.5m) (附条文及目录 ).pdf VIP
- 儿科学麻疹病例分析,病例导入法.docx VIP
- 燃煤锅炉超低排放治理工程项目实施方案(参考).docx
- 24012NDS00 NDS试验测试标准.doc VIP
文档评论(0)