基于VHDL的数字钟设计
1、设计一个能显示1/10秒、秒、分、时的12小时数字钟。2、熟练掌握各种计数器的使用。3、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。4、能用低位的进位...
1、设计一个能显示1/10秒、秒、分、时的12小时数字钟。
2、熟练掌握各种计数器的使用。
3、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。
4、能用低位的进位输出构成高位的计数脉冲。
设计提示:
1、时钟源使用频率为0.1Hz的连续脉冲。
2、设置两个按钮,一个供“开始”及“停止”用,一个供系统“复位”用。
3、时钟显示使用数码管显示。
4、“时显示”部分应注意12点后显示1点。
5、注意各部分的关系,由低位到高位逐级设计、调试。
Q Q:355554746 展开
2、熟练掌握各种计数器的使用。
3、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。
4、能用低位的进位输出构成高位的计数脉冲。
设计提示:
1、时钟源使用频率为0.1Hz的连续脉冲。
2、设置两个按钮,一个供“开始”及“停止”用,一个供系统“复位”用。
3、时钟显示使用数码管显示。
4、“时显示”部分应注意12点后显示1点。
5、注意各部分的关系,由低位到高位逐级设计、调试。
Q Q:355554746 展开
1个回答
2013-07-29
展开全部
-------------------------------------------时间设置小时部分
sethour1:process(clk,seth2)
begin
if clk'event and clk='1' then
if seth1="0010"and seth2="0011" then
seth1<="0000";
elsif seth2="1001" then
seth1<=seth1+1;
end if;
end if;
end process sethour1;
-------------------------------------------
sethour2:process(clk,md1,md2,seth1)
begin
if clk'event and clk='1' then
if (seth1="0010"and seth2="0011")or seth2="1001"then
seth2<="0000";
elsif md1='1' and md2="00" then
seth2<=seth2+1;
end if;
end if;
end process sethour2;
-------------------------------------------时间设置分钟部分
setmin1:process(clk,setm2)
begin
if clk'event and clk='1' then
if setm1="0101"and setm2="1001"then
setm1<="0000";
elsif setm2="1001"then
setm1<=setm1+1;
end if;
end if;
end process setmin1;
----------------------------------------------
setmin2:process(clk,md1,md2)
begin
if clk'event and clk='1'then
if setm2="1001"then
setm2<="0000";
elsif md1='1' and md2="01"then
setm2<=setm2+1;
end if;
end if;
end process setmin2;
--------------------------------------------
--------------------------------------------闹铃
speaker:process(clk1,hou1,hou2,min1,min2)
begin
if clk1'event and clk1='1'then
if seth1=hou1 and seth2=hou2 and setm1=min1 and setm2=min2 then
speak<=clk1;
else speak<='0';
end if;
end if;
end process speaker;
代码太长没发完
sethour1:process(clk,seth2)
begin
if clk'event and clk='1' then
if seth1="0010"and seth2="0011" then
seth1<="0000";
elsif seth2="1001" then
seth1<=seth1+1;
end if;
end if;
end process sethour1;
-------------------------------------------
sethour2:process(clk,md1,md2,seth1)
begin
if clk'event and clk='1' then
if (seth1="0010"and seth2="0011")or seth2="1001"then
seth2<="0000";
elsif md1='1' and md2="00" then
seth2<=seth2+1;
end if;
end if;
end process sethour2;
-------------------------------------------时间设置分钟部分
setmin1:process(clk,setm2)
begin
if clk'event and clk='1' then
if setm1="0101"and setm2="1001"then
setm1<="0000";
elsif setm2="1001"then
setm1<=setm1+1;
end if;
end if;
end process setmin1;
----------------------------------------------
setmin2:process(clk,md1,md2)
begin
if clk'event and clk='1'then
if setm2="1001"then
setm2<="0000";
elsif md1='1' and md2="01"then
setm2<=setm2+1;
end if;
end if;
end process setmin2;
--------------------------------------------
--------------------------------------------闹铃
speaker:process(clk1,hou1,hou2,min1,min2)
begin
if clk1'event and clk1='1'then
if seth1=hou1 and seth2=hou2 and setm1=min1 and setm2=min2 then
speak<=clk1;
else speak<='0';
end if;
end if;
end process speaker;
代码太长没发完
上海矽旭微电子
2024-09-05 广告
2024-09-05 广告
数字IC学习资料丰富多样,涵盖基础知识到高级应用。初学者可从《数字电子技术基础》等教材入手,掌握数电基础、硬件描述语言(如Verilog)及计算机组成原理。进阶学习可探索SoC设计方法、静态时序分析(STA)、SystemVerilog及U...
点击进入详情页
本回答由上海矽旭微电子提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询