[工学]vhdl语言设计静态显示时钟.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

skvdnd51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档