eda,verilog数字钟设计报告

合集下载

Verilog数字钟数电实验报告

Verilog数字钟数电实验报告

专业:电子信息工程班级:电信1305班日期:2015.5.5 第3次实验姓名:康健组别: 6 指导教师:成绩:实验课题:EDA多功能数字钟1、已知条件Quartus II软件、FPGA实验开发装置。

2、主要技术指标以数字形式显示时、分、秒的时间;小时计数器为同步24进制;要求手动校时、校分。

3、实验用仪器PC、FPGA开发板、示波器、稳压电源等4、电路工作原理所谓的时钟,其实本质上就是计数器。

以开发板上的晶振时钟作为时间基准。

然后通过分频模块(计数器)进行分频,得到1Hz的脉冲信号作为秒的信号脉冲,然后用模60的计数器构成秒的计数单元。

每记60下就自动清零且产生进位信号。

将这个进位信号作为分的计数器的使能信号,其中,分计数器也是模为60的计数器。

这里的计数器都是由模10和模6 组成的BCD码的计数器。

个位和十位分别是一个四位的数字。

同理,每记满60,分计数器就会产生一个进位信号,这个进位信号作为小时的使能信号。

小时的计数器就是模24的BCD计数器。

注意,这里的整个电路都是用1HZ的频率作为时间脉冲的,也就是说,这个电路是同步时序的电路。

通过使能,来控制各个部分的时序逻辑。

将小时和分的使能信号在总是为有效电平和下一级进位信号做选择,就是时钟调时状态和正常计时状态的切换。

当在调时状态的时候,时钟每完成一个周期,无论是分钟还是小时,就向前加1,。

最后,将分钟和小时通过译码器连接到数码管。

将秒直接连接到LED灯,完成整个工程的基本功能(扩展功能见选作的实验报告)。

5、电路设计与调试1、模10计数器的设计2、模6计数器的设计3、模60计数器设计(分、秒计数)4、模24计数器设计(小时计数)5、译码器设计6、分频器设计7、时钟整体结构设计6、电路的仿真:1、小时进位的验证:2、分钟进位的验证:3、秒进位的验证:4、testbench的源代码:7、主要技术指标的测量:板子上电以后,将程序下载到板子里面,按复位(rst),时钟开始从零点正常计时。

(2023)EDA课程数字钟设计报告(一)

(2023)EDA课程数字钟设计报告(一)

(2023)EDA课程数字钟设计报告(一)EDA课程数字钟设计报告设计目的本次设计的目的是通过使用EDA software,设计一个能够正常运行的数字钟,使其能够满足一定的时间显示功能。

设计思路本设计主要使用Verilog HDL编程语言,利用EDA software提供的仿真功能,模拟数字钟的运行过程。

具体实现过程如下:1.首先,设置时钟频率,并利用counter计数器进行计数,产生时间基准信号。

2.利用BCD编码对时间进行编码,分别将时、分、秒的数据传至显示器。

3.设计逻辑电路计算秒钟、分针、时钟转动角度。

4.在EDA software上进行仿真,观察数字钟是否正常工作。

设计图样以下为数字钟方案的部分设计图样。

image textimage text实现结果通过复杂的编程训练和模拟,数字钟设计的功能已经被确认。

数字钟电路能够准确地显示当前时间。

同时,数字钟的设计也具有较高的可靠性、稳定性和精度。

并且,数字钟的主板设计紧凑、易于集成。

这些优点使得本次设计非常适合应用于智能仪器、家庭用品和其他数字显示电子设备中。

总结数字钟设计是一项有挑战性的工程,需要设计人员具有充分的编程功底和深入的EDA工具熟练度。

本设计的成功,体现了设计团队的技术实力和团队协作能力,为未来的科技产品发展提供了有力的技术支撑。

改进方案虽然本设计实现了数字钟正常工作的功能,但是我们仍然可以从以下几个方面进行改进:1.在原有电路基础上增加闹钟功能,方便用户定时提醒。

2.增加显示背光,使数字钟更方便在夜间环境下使用。

3.将数字钟设计进行微小的改动使其更小巧便携,方便携带和使用。

参考文献1.微机原理与接口技术(第四版) 教材2.EDA Software (Xilinx ISE) 许可证书致谢在本次数字钟的设计过程中,我们向来自各地的优秀工程师团队表示感谢,感谢他们在繁忙的工作中,准确地指导我们的设计工作。

同时也感谢电子设计自动化(EDA) company提供的软件支持,使得我们能够顺利完成该设计。

verilog实验报告时钟设计

verilog实验报告时钟设计

课程名称:Verilog数字系统设计实验实验项目:时钟姓名:专业:计算机科学与技术班级:学号:计算机科学与技术学院201年月日哈尔滨理工大学计算机科学与技术学院实验报告实验项目名称:时钟设计一、实验目的1. 掌握 Verilog HDL 语言的基本运用;2. 熟悉 QuartusⅡ的简单操作;3. 掌握一个基本 EDA 工程设计流程;4. 掌握时钟的设计基本原理。

二、实验内容计数器部分中包含有三个主要计数部分,分别是十进制、六进制以及二十四进制,其中六进制和十进制共同组成六十进制,即实现分和秒的计数,之所以将其分开是便于分别显示个位和十位,通过编写计数器,来计数信号的数量,从而实现时分秒按各自的进制正常计数,同时,将前一时钟单位的进位信号作为下一时钟单位的clk,即从后向前驱动,这样便实现了时钟的正常运转。

三、实验要点及说明1.编写各个模块的 VHDL 代码并进行编译与波形仿真, 仿真无误后生成元件符号。

2.设计数字钟电路的顶层文件,在顶层文件中调入第一步中生成的元件符号,并根据连接关系将它们连接在一起。

3.引脚分配,为顶层设计文件中的各个输入输出端口分配芯片相应的引脚。

4.下载程序到芯片,观看实验现象是否为预想的那样。

同时使用清零按键看能否实现清零,时间正常走动情况下通过按键能否实现校时。

四、实验结果下载成功后,拨动开关 DP4至髙电平,使六个数码管复位淸零;拨动开关 DP4 至低电平,数字钟开始自动计,此过程中可以通过 1键设置小时数,2 键设置分钟数。

当秒数满 60 则进一位, 分钟数满60 进一位,当显示为 23:59:59 时,秒数在加一则显示 00:00:00,同时指示一天结束的 LED 灯亮 10 秒,之后从新计时。

五、程序代码module clock(clk,rst,load,data,lamp,de, led_g,st_stop,ledcom);// clk-时钟10M,rst-复位,load-初始值设置,st_stop-启动暂停input clk,rst,load,st_stop;input [7:0] data; //初始值output lamp; //倒计时结束指示灯output [2:0]de; //数码管位选output [7:0]led_g; //数码管段码output ledcom; //指示灯公共端reg clk_g; // ..... LED扫描时钟信号......reg clk_s;// 秒时钟reg[15:0] cnt1; // 10ms 分频计数器reg[23:0] cnt2; // 1s 分频器计数器reg[3:0] bcd1; // 个位bcd码reg[3:0] bcd2; // 十位bcd码reg lamp; // 指示灯reg[1:0]state1; // 2位数码管扫描位置寄存器reg[3:0]led_g_bcd; // bcd转段码寄存器parameterLED1=3'b000,//数码管1LED2=3'b001;//数码管2assign ledcom=1;//// 10Mhz 晶振用2个分频器分别产生数码管扫描时钟和秒时钟// 10ms方波时钟clk_galways @(posedge clk)beginif (cnt1 >=50000)begincnt1 <= 0;clk_g <= ~clk_g;endelsecnt1 <= cnt1 +1'b1;end// 1s方波时钟clk_salways @(posedge clk)beginif (cnt2 >=5000000)begincnt2 <= 0;clk_s <= ~clk_s;endelsecnt2 <= cnt2 +1'b1;endalways@(posedge clk_s or negedge rst or posedge load ) beginif(!rst) //复位初始状态beginlamp<=0; //灭灯bcd1<=0; //数码管输出0bcd2<=0; //endelseif (load)beginbcd1<=data[3:0];//设置初值bcd2<=data[7:4];//endelseif (st_stop) // 启动暂停切换//BCD倒计时计算,到0时亮灯beginif(bcd1==9) //个位/*******/beginif(bcd2==5) lamp<=1;elsebeginbcd1<=0;bcd2<=bcd2+1;endend/******/elsebeginbcd1<=bcd1+1;lamp<=0;endendend//数码管对应位置扫描输出always @(posedge clk_g or negedge rst)beginif(!rst)beginstate1<=LED1;led_g_bcd<= 0;endelsecase(state1)LED1:beginled_g_bcd<=bcd1;state1<=LED2;endLED2:beginled_g_bcd<=bcd2;state1<=LED1;endendcaseendassign de=state1; //位置//数码管段码表译码assign led_g=(led_g_bcd==0)? 8'h3F:(led_g_bcd==1)? 8'h06:(led_g_bcd==2)? 8'h5b:(led_g_bcd==3)? 8'h4f:(led_g_bcd==4)? 8'h66:(led_g_bcd==5)? 8'h6d:(led_g_bcd==6)? 8'h7d:(led_g_bcd==7)? 8'h07:(led_g_bcd==8)? 8'h7f:(led_g_bcd==9)? 8'h6f:8'h00; endmodule。

EDA Verilog HDL简易数字钟设计报告

EDA Verilog HDL简易数字钟设计报告

4'd1;
+ 1'b1;
if(hour[7:4] == 4'h6) begin
hour[7:4] = 4'h0; hour[11:8] = hour[11:8]
if(hour[11:8] == 4'ha) begin
hour[11:8] = 4'h0; hour[15:12] = hour[15:12] + 1'b1; if(hour[15:12] == 4'h6) begin
开始
时钟/校准


是否校时?
位选
时钟信号
秒+1
秒计数+1
秒>59?

分计数+1 秒置零
分+1
分>59?

时计数+1 分置零
时+1
时>23?

时置零
图4-2-3 校时模块
4
(3)动态显示模块:由于实验箱的 8 个数码管共用七段输入线,位选也是由 4 位二进制接 线控制,所以动态显示在代码部分会稍有难度。图 4-2-4 是动态显示模块的接线实物图
4 位位选控制
4-2-4 动态显示模块
3、总体设计流程
简易数字钟电路的核心部分就是 EPF10K10LC84-4 芯片,外围接入了分频部分电路、按 键电路和七段动态显示短路。程序部分,先通过模式控制变量判断是正常模式还是校时模式, 如果是校时模式,则手动对时间数据进行置数,同时显示到数码管;如果是正常模式则直将 分频模块的时钟信号接入计数器开始计时,校时与正常时间运行的时间数据都遵循时、分、 秒的进制原则。实验箱的按键模块公共端每 1 秒发出一个低电平信号,其他时候都是高电平, 也就是说按下按键后,只有扫描到了低电平信号,按键才会起作用,否则按键动作将因为无 法扫描到低电平而失灵。所以按键每次按下大约 1 秒的时间才会生效。任何情况下,时间数 据都通过动态显示模块同步显示到数码管。动态显示模块的 8 位(实际上只用了 6 位)数码 管以每 10ms 切换点亮一位数码管,依次循环,达到动态显示的效果。图 4-3-1 是总设计流 程图。

数字钟EDA实验报告

数字钟EDA实验报告

EDA实验报告书题目数字钟学生姓名学号系别物理与信息工程系专业电子信息科学与技术指导教师讲师2014年10月26日摘要数字钟是人们日常生活中经常使用的计时工具,本次的课程设计是基于Verilog HDL的多功能数字钟,完成时、分、秒的显示功能。

设计利用Verilog HDL语言自顶向下的设计理念,突出其作为硬件描述语言的良好的可读性、可移植性以及易于理解等优点。

程序下载到FPGA芯片后,可用于实际的数字钟显示中。

此次设计的逻辑结构主要由分频器、计数器和译码显示器三个模块构成。

分频模块将40Mhz系统基准时钟分频产生两路时钟信号,一路是1HZ的数字钟计时工作频率,一路是数码管动态显示的扫描频率;计时模块对1HZ的时钟信号进行计时,分为时、分、秒三个部分;与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。

数字钟的设计方法有许多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

译码显示模块采用动态扫描的方式完成数码管的显示。

最后通过主模块调用三个子模块函数完成整个设计。

1)数字钟电路的基本结构框图如下,它是由两个60进制计数器和一个24进制计数器组成,分别对秒,分,小时进行计时,当计时到23时59分59秒时,再来一个时钟脉冲,则计数器清零,重新开始计时。

clkco 秒分时1、20分频器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is --实体定义为fenpin即本程序实现20分频的功能port(clk:in std_logic;--输入clk接外部晶振clk1:out std_logic;--输出clk1为20分频后的时钟shu:out std_logic_vector(4 downto 0)--shu没有实际意义,用于对外部时钟计数,目的是判断是否为20分频);end fenpin;architecture one of fenpin issignal c1,c2:std_logic_vector(4 downto 0);--c1、c2用于内部计数的信号signal m1:std_logic;--m1用于传递输出clk1的信号beginprocess(clk,c1)beginif clk'event and clk='1' then--时钟上升沿有效if(c1=9) then c1<="00000";m1<=not m1;c2<="00000";--记满10次后复位else c1<=c1+1;c2<=c2+1;--计数少于10次加1end if;end if;end process;clk1<=m1;shu<=c2;--将信号的结果传递给输出end one;2、24进制计数器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt24 is --定义实体时钟的时port(clk:in std_logic;--定义时钟、复位、输入使能、置输控制端ge:out std_logic_vector(3 downto 0 );--定义时表的个位shi:out std_logic_vector(3 downto 0 );--定义时表的十位c0:out std_logic --定义进位输出end cnt24;architecture two of cnt24 isbeginprocess(clk)variable Q:std_logic_vector(4 downto 0);--Q用于内部计数的变量variable t:std_logic_vector(4 downto 0);--t用于过度的变量,应为输出量与计数量数组的位数不同beginif clk'event and clk='1' then --时钟上升沿有效if(Q>=23) then Q:="00000";c0<='1'; shi<="0000"; ge<="0000";--Q实现0--23的计数else Q:=Q+1;c0<='0';if(Q>19 and Q<24) thenshi<="0010";t:=(Q-"10100");ge<=t(3 downto 0);else if(Q>9 and Q<20) thenshi<="0001";t:=(Q-"01010");ge<=t(3 downto 0);--Q位于10--19之间十位和个位的情况elseshi<="0000";t:=(Q-"00000");ge<=t(3 downto 0);--Q位于20--23之间十位和个位的情况end if;end if;end if;end if;end process;end two;3、60进制计数器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 is --定义实体时钟的时port(clk:in std_logic;--定义时钟、复位、输入使能、置输控制端ge:out std_logic_vector(3 downto 0 );--定义时表的个位shi:out std_logic_vector(3 downto 0 );--定义时表的十位c0:out std_logic --定义进位输出);end cnt60;architecture two of cnt60 isbeginprocess(clk)variable Q:std_logic_vector(5 downto 0);--Q为内部计数变量variable t:std_logic_vector(5 downto 0);--t为内部变量与输出间的过度变beginif clk'event and clk='1' then --时钟上升沿有效if(Q>=59) then Q:="000000";c0<='1'; shi<="0000"; ge<="0000";--Q实现0--23的计数else Q:=Q+1;c0<='0';if(Q>49 and Q<60) thenshi<="0101";t:=(Q-50);ge<=t(3 downto 0);else if(Q>39 and Q<50) thenshi<="0100";t:=(Q-40);ge<=t(3 downto 0);--Q位于10--19之间十位和个位的情况else if(Q>29 and Q<40) thenshi<="0011";t:=(Q-30);ge<=t(3 downto 0);else if(Q>19 and Q<30)then shi<="0010";t:=(Q-20);ge<=t(3 downto 0);else if(Q>9 andQ<20) then shi<="0001";t:=(Q-10);ge<=t(3 downto 0);elseshi<="0000";t:=(Q-0);ge<=t(3 downto 0);--Q位于20--23之间十位和个位的情况end if;end if;end if;end if;end if;end if;end if;end process;end two;4、结合后的模型:仿真1、分频器波形仿真图2、60进制计数器波形仿真图3、24进制计数器波形仿真图4、结合后波形仿真图实验总结这次数字钟的实验,不仅巩固了以前所学过的知识,而且学到了很多书本上学不到的知识,同时锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,对未来有了更多的信心。

数字钟设计报告 verilog EDA

数字钟设计报告 verilog EDA

电子与电气工程系实习报告书实习名称:数字钟设计年纪专业及班级: 08通信工程1班姓名:学号:指导老师:评定成绩:教师评语:指导老师签名:20 年月日基于FPGA 的数字时钟设计一、课程设计目的1、进一步熟悉Quartus Ⅱ的软件使用方法;2、 熟悉可编程逻辑器件的开发流程及硬件测试方法;3、熟悉基于FPGA 的综合数字系统设计方法;二、课程设计任务设计一台可以显示时、分、秒的数字钟。

如图1所示为基于FPGA 的数字钟设计的系统框图。

FPGA数码管控制数码管控制数码管控制重启校时图1 数字钟系统三、设计要求1、能直接显示小时、分、秒,其中小时为以二十四为计数周期;2、当电路发生走时错误时,要求电路有校时功能,可以对时、分单独校正;3、具有闹钟功能,即输入想要定时的时间,当时钟到达该时间时报警,系统可由灯亮代表报警信号。

四、实验设备1、EDA6000实验箱一台2、PC 机一台五、整体系统设计方案1、总体思路和结构方框图由上面的方框图可以知道整个数字钟的设计分为6个功能模块,分别是时钟计时模块、闹钟设置模块、日期计数模块、校时模块(分别能对时钟时间、闹钟时间和日期进行校对)、闹钟报时模块以及数码管显示模块。

各个模块各自完成各自的功能互不干扰却相互合作,共同晚上数字钟的时间显示、日期显示、闹铃设置报时和时间、日期的校正功能。

数字钟的使用图如下:时钟部分闹钟部分 日期部分 校时部分 报时部分 显示切换部分 FPGAK2 K1CLK JF/D JH/M NF NH SOUND数码管显示如上图所示各个管脚的功能CLK:为数字钟整个系统的时钟信号,频率为1HZ;K1\K2:为时钟系统的使能端,用来切换显示功能和校时功能;JF/D:时间校时用来校正分的部分以及校正日期的天数;JH/M:时间校时用来校正时的部分以及校正日期的月数;NF:设置闹钟分的部分;NH:设置闹钟时的部分;SOUND:报时声音输出信号。

2、各模块设计思路(1)时钟模块由于数字钟设计要求用24进制,所以整个时钟用两个60进制计数器和一个24进制计数器分别级联在一起共同完成数字钟时间跳动功能。

eda数字钟实验报告

eda数字钟实验报告

eda数字钟实验报告EDA数字钟实验报告本次实验旨在设计并实现一个EDA数字钟。

通过这个实验,我们将学习如何使用EDA工具来设计数字电路,并通过实际的电路实现来验证我们的设计。

1. 实验背景数字钟是我们日常生活中常见的设备之一。

它不仅可以显示时间,还具有闹钟等功能。

在这个实验中,我们将使用EDA工具来设计一个数字钟电路,并通过FPGA实现这个电路。

2. 实验目标本次实验的目标是设计一个能够显示小时、分钟和秒的数字钟电路。

我们将使用七段数码管来显示这些信息,并通过按键来设置时间和闹钟。

3. 设计思路我们的设计思路如下:3.1 时钟模块我们首先需要设计一个时钟模块,用来产生一个固定的时钟信号。

我们可以使用FPGA的时钟模块来实现这个功能,或者使用外部的晶振电路。

3.2 数码管驱动模块接下来,我们需要设计一个数码管驱动模块,用来将数字转换为七段数码管的显示信号。

我们可以使用查找表或者逻辑门电路来实现这个功能。

3.3 时间设置模块为了能够设置时间,我们需要设计一个时间设置模块。

这个模块可以通过按键来设置小时、分钟和秒。

3.4 闹钟设置模块类似于时间设置模块,我们还需要设计一个闹钟设置模块。

这个模块可以通过按键来设置闹钟的小时和分钟。

3.5 主控制模块最后,我们需要设计一个主控制模块,用来控制时钟、数码管驱动、时间设置和闹钟设置模块之间的交互。

这个模块可以根据设置的时间和闹钟来控制数码管的显示。

4. 电路实现根据我们的设计思路,我们使用EDA工具来实现我们的数字钟电路。

我们使用VHDL语言来描述电路,并使用模块化的方式来组织我们的代码。

5. 实验结果经过实际的电路实现和测试,我们成功地实现了数字钟电路。

我们可以通过按键来设置时间和闹钟,并通过七段数码管来显示时间和闹钟。

6. 实验总结通过这个实验,我们学习了如何使用EDA工具来设计数字电路,并通过实际的电路实现来验证我们的设计。

我们深入了解了数字钟的工作原理,并学会了如何使用VHDL语言来描述电路。

EDA设计数字钟实验报告

EDA设计数字钟实验报告

南京理工大学EDA(Ⅱ)实验报告——多功能数字钟姓名:学号:学院:指导教师:时间:2014/11/3~2014/11/7摘要日益复杂的电子线路使得基于原理图的设计越来越复杂,甚至不切实际。

硬件描述语言的诞生,对设计自动化起到了极大的促进和推动作用。

Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,实现了从算法级、门级到开关级的多种抽象设计层次的数字系统建模,具有仿真,验证,故障模拟与时序分析等功能。

本文利用Verilog HDL语言,采用自顶向下的设计方法设计多功能数字钟,并通过QuartusⅡ分块进行了仿真。

此程序通过下载到FPGA芯片后,可实现实际的数字钟显示,具有基本的计时显示和设置,时间校正,整点报时,12h/24h转换,闹钟设置和闹铃控制的功能。

关键词: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,数字钟AbstractThe development of electronic circuit has grown to be too complicated to be designed base on schematic diagram. The birth of HDL accelerated the development of electronic design automation drastically. Verilog HDL is one of the HDL with multiple and strong functions.In this thesis, a complex digital system is designed in the bottom-up way with Verilog HDL and is simulated by QuartusⅡ. The function of a digital clock can be realized by downloading the program to FPGA, which includes timing, time-setting, hourly chiming, 12/24transforming, bell-setting and bell-controlling.Keywords: FPGA, Verilog HDL, QuartusⅡ, EP3C25F324C8,Digital clock目录摘要Abstract第一章数字钟设计要求说明第二章数字钟的设计思路和工作原理第三章模块的Verilog HDL设计与仿真3.1 计数器模块3.2 基本计时顶层模块3.3 分频模块3.4 整点报时模块3.5闹钟模块3.6 LED数码管显示模块3.7 数字钟顶层模块第四章FPGA实现第五章总结5.1 遇到的问题与解决方案5.2 尚存在的不足之处5.3 收获与感悟参考文献第一章数字钟设计要求说明(一)数字钟可以正常进行基本的时,分,秒计时功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字钟
一、任务解析
用Verilog硬件描述语言设计数字钟,实现:
1、具有时、分、秒计数显示功能,以二十四小时循环计时。

2、具有调节小时,分钟的功能,调整时对应的数字闪烁。

3、具有整点报时及闹铃时间可调的功能。

4、数字钟具有四种模式:正常显示、时间调整、闹铃时间调整、秒表。

二、方案论证
没有闹铃功能
三、重难点解析
选择模式:module beii(clr,selin_key,beii_out);
input clr,selin_key;
output [1:0]beii_out;
wire [1:0]beii_out;
reg [1:0]selout_key;
always@(negedge clr or posedge selin_key) begin
if(!clr) selout_key=0;
else begin if(selout_key==2) selout_key=0;
else selout_key=selout_key+1;end
end
assign beii_out=selout_key;
endmodule
头文件中:
module clk_top(clr,clk,upkey,downkey,sel,a,b,c,d,e,f,g,p,clr_key,selin_key);
clr:清零clk:50M时钟
upkey:向上调downkey:向下调
clr_key:恢复初始状态selin_key:模式选择
四、硬件资源分配
60进制module mycnt60(clr,clk,upkey,downkey,selout,q,c);
input clk,clr,upkey,downkey;//upkey为加按键
input [1:0] selout;
output[7:0] q;//60进制输出
output c;//进位溢出位
reg c;
reg[7:0] q;
wire new_clk1,ckb,ckc,ckd,cko;
assign new_clk1=clk|((!selout[0]&selout[1])&(upkey|downkey));
LCELL AA(new_clk1,ckb);//信号延迟
LCELL BB(ckb,ckc);
LCELL CC(ckc,ckd);
LCELL DD(ckd,cko);
initial c=0;
always @(posedge cko or negedge clr )begin
if(!clr) q=8'h00;
else begin if(selout==2) begin if(upkey)begin
if(q==8'h59) q=8'h00;
else if(q==8'h?9) q=q+4'h7;
else q=q+1;
end
else if(downkey)begin
if(q==8'h00) q=8'h59;
else if(q==8'h?0) q=q-4'h7;
else q=q-1;
end
end
else begin
if(q==8'h59) begin q=8'h00;c=1;end
else if(q==8'h?9) begin q=q+4'h7;c=0;end
else begin q=q+1;c=0;end
end
end
end
endmodule
五、实验总结
通过对数字钟的设计到成功是耗时最长的,但也是学到知识点最多,收获最多的。

每一个模块与代码都必须仔细研读,参照前人的成功经验,再加上自己的学习心得,将头文件,24进制,浏览扫描模块自己写出,并最终调试成功,非常开心!觉得学到有用的东西,很实用。

当然离不开老师与同学的帮助与支持,历练了自己。

对数字系统设计有了更深层次的了解,对数字电路也有了知识的补充与扩充!。

相关文档
最新文档