版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计任务书学生姓名:罗序森专业班级:通信gj1101指导教师:胡辑伟工作单位:_信息工程学院一题 目:通信工程应用技术课设 一一FPGA 一、设计任务与要求设计一个具有系统时间设置和带闹钟功能的 24小时计时器中的应用。电子 钟要求如下:(1) 计时功能:4位LED数字时钟对当前时间的小时和分钟进行显示, 显示的最长时间为23小时59分。(2) 设置并显示新的闹钟时间:用户先按“se键,再用数字键“0力“9输入时间,然后按“ alarm键确认。在正常计时显示状态下,用户直接按下“ alarm'键,则已设置的闹钟时间显示在显示屏上。(3) 设置新的计时器时间:用户先按 “se键,再用
2、数字键“0= “9输入新的时间,然后按“ time键确认。在输入过程中;输入的数字在显示屏上从右到左 依次显示。例如,用户要设置新的时间12: 00,则按顺序输入“I,” “2,“0” “0” 键,与之对应,显示屏上依次显示的信息为:“ 1,“ 12; “ 120,“ 12007如果用户在输入任意几个数字后较长时间内, 例如5秒,没有按任何键,则计时器恢 复到正常的计时显示状态。(4) 闹钟功能:如果当前时间与设置的闹钟时间相同, 则扬声器发出蜂鸣三.时间安排:序号阶段内容所需时间1查阅相关资料,了解基本原理2天2:编写程序,实现功能要求p天3巽写报告1天4答辩1天合计7天指导教师签名:年 月
3、 日系主任(或责任教师)签名:目录摘 要 2Abstract 错误 ! 未定义书签。1 绪言 错误! 未定义书签。1.1 课题的研究背景及意义 . 错误 ! 未定义书签。1.2 闹钟系统的 错误 ! 未定义书签。2 FPGA 简介 22.1 FPGA 简述 错误!未定义书签。2.2 FPGA 工作原理 22.3 FPGA 的基本结构 22.4 FPGA 系统设计流程 43 主要模块设计 53.1 分频模块 . 53.1.1 分频模块源代码. 53.1.2 分频模块仿真 . 63.2 按键模块 . 73.2.1 按键模块源代码. 73.2.2 按键模块仿真 . 93.3 时间模块 . 103.3
4、.1 时间模块源代码. 103.3.2 时间模块仿真 . 133.4 显示模块 . 143.4.1 显示模块源代码. 143.4.1 显示模块仿真 . 173.5 闹钟模块 . 173.5.1 闹钟模块源代码. 173.5.2 闹钟模块仿真 . 183.6 顶层模块 . 193.6.1 顶层模块源代码. 193.6.2 顶层模块仿真 . 214 小结与体会 22参考文献 错误 ! 未定义书签。摘要 本设计在对闹钟系统的原理及其功能进行分析的基础上, 采用自顶向下的设 计方法,以现场可编程门阵列(FPGA作为硬件基础,对闹钟系统进行电路设计。 本文的研究目的也是利用EDA技术来实现带闹钟功能的2
5、4小时计时器。分别介 绍发展历史、发展动态、设计思路、系统原理、系统功能分析、系统结构、各个 模块分析与设计以及主要工作过程, 并且经实际电路测试与仿真从而实现了一种 基于FPGA勺精确可靠的数字闹钟系统。 关键字: VHDL, QuartusII, FPGA, 闹钟AbstractThe design is based on the analysis of the alarm system and its functions, using top-down design approach to field programmable gate array (FPGA) as a hardwar
6、e foundation, on the alarm system circuit design. Purpose of this paper makes use of EDA techniques to achieve the alarm clock function with the 24-hour timer. The paper introduces the research background, the development history, the development tendency, the research mentality, the system principl
7、e the system function analysis, the system structure, each module analysis principle, the system function analysis, the system structure, each module analysis and the design as well as the prime task process separately. And by the actual circuit testing and simulation in order to achieve an accurate
8、 and reliable based on the number of FPGAalarm system.Key words: VHDL, QuartusII, FPGA, alarm clock1 绪言1.1 课题的研究背景及意义当今社会是数字化的社会, 是数字集成电路广泛应用的社会。 数字集成电路 本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路, 发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用 集成电路。 但是,随着微电子技术的发展, 设计与制造集成电路的任务已不完全 由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASI
9、C)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适 的 ASIC 芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD,其中应用最广泛的当属现场可编程门阵列(FPGA和复杂可编程逻辑 器件( CPLD)。在许多仪器仪表中都用到闹钟定时 , 目前通常是采用专用的数字闹钟芯片 , 但是这种芯片功能固定 , 不利于嵌入式应用。而且, 在仪器仪表的许多应用场合已 经采用了 FPG/可编程芯片。这样一来,为我们在使用硬件空间的FPGA器件中在 嵌入一个计时闹钟提供了极大的方便 ,而且不会增加成本 ,并可以使系统结构更 加简单,体积更小,成本更低,具有更好的嵌入
10、式和可移植特性。1.2 闹钟系统发展概述六十年代末, 七十年代初带闹钟的电子钟表已悄悄在起步, 因为客观存在成 本低,精度高,显示直观方便(不用上发条)的优点冲击了传统机械表的统治地 位。到底 90 年代初基本垄断了钟表市场。而随着时代的发展,在生产生活中对 计时工具的要求也逐渐增高, 高效节能理念的深入人心, 功耗大开发周期长的传 统电子表已经显然不适合时代的要求。20 世纪末数字电子技术得到飞速发展,数字电子技术的应用已经渗透到人 类生活的各个方面。 从计算机到手机, 从数字电视到数字电话, 从家用电器到军 用设备,从自动化到航天技术都广泛的采用了数字电子技术。现代电子设计技术的核心是ED
11、A技术。EDA技术就是领先功能强大的电子计 算机,在 EDA工具软件平台上,对硬件描述语言 HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动的逻辑编译、化简、分割、 综合、优化和仿真直到下载到可编程逻辑器件 CPLD/FPGA或专用集成电路 ASIC 芯片中,实现既定的电子电路设计功能。EDA技术使得电子闹钟设计工作仅限于 利用硬件描述语言和EDA软件平台完成对系统硬件功能的实现,极大地提高设计 效率,缩短了设计周期,节省设计成本。VHDL进行设本设计就是运用 EDA 技术,根据闹钟要实现的功能:计时功能、闹钟功能、设置新的 计时器时间
12、、设置新的闹钟时间、显示所设置的闹钟。采用高层硬件描述语言计。首先程序文本输入,处理(编译、检查、逻辑优化与综合。适配、分割、布局、布线、 生成编程数据文件) ,然后进行功能仿真和时序仿真,最后下载到 FPGA 器件中并进行功能 测试,进行输入操作、查处输入结果验证设计电路。2 FPGA简介2.1 FPGA 简述FPGA(Field Programmable Gate Array ),即现场可编程门阵列,它是在 PAL GAL CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成 电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又 克服了原有可编程器件门电路数
13、有限的缺点。2.2 FPGA 工作原理FPGA采用了逻辑单元阵列LCA(Logic Cell Array )这样一个概念,内部包 括可配置逻辑模块 CLB(Configurable Logic B l o ck ) 、输出输入模块 IOB(Input Output Block)和内部连线(Interconnect )三个部分。现场可编程门阵列(FPGA 是可编程器件,与传统逻辑电路和门阵列(如PAL GAL及 CPLD器件)相比,FPGA 具有不同的结构。FPGA利用小型查找表(16X1RAM来实现组合逻辑,每个查 找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构
14、成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块, 这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的, 存储在存储器单元中的值决定了逻辑单 元的逻辑功能以及各模块之间或模块与 I/O 间的联接方式,并最终决定了 FPGA 所能实现的功能,FPGA允许无限次的编程。2.3 FPGA 的基本结构FPG具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可 编程的互连资源连接这些逻辑功能块来实现不同的设计。FPG一般由3种可编程电路和一个用于存放编程数据的静态存储器SRA组成。这3种可编程电路是:可编程逻辑模块( CL
15、B-Configurable Logic Block)、 输入/ 输出模块(IOB-I/O Block)和互连资源(IRInterconnect Resource)0 可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵 列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外 部封装脚的接口, 它通常排列在芯片的四周; 可编程互连资源包括各种长度的连 接线段和一些可编程连接开关,它们将各个CLB间或CLB IOB之间以及IOB之间 连接起来,构成特定功能的电路。1. CLB是FPG的主要组成部分。图2是CLBS本结构框图,它主要由逻辑函数发生器、触发器、
16、数据选择器等电路组成。CLB中 3个逻辑函数发生器分别是G F 和H,相应的输出是G 、F'和H 。 G有4个输入变量G1、G2 G3和G4- F也有4 个输入变量F1、F2、F3和F4。这两个函数发生器是完全独立的,均可以实现 4输 入变量的任意组合逻辑函数。逻辑函数发生器H有3个输入信号;前两个是函数发 生器的输出G和F',而另一个输入信号是来自信号变换电路的输出 H1。这个函 数发生器能实现3输入变量的各种组合函数。这3个函数发生器结合起来,可实现多达9变量的逻辑函数。. n nCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLBCLB可编程开关
17、矩输入输出模块 互连资源图1 CLB基本结构CL沖有许多不同规格的数据选择器(四选一、二选一等),通过对 CL的部 数据选择器的编程,逻辑函数发生器 G F和H的输出可以连接到CLB俞出端X或丫, 并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。 这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。CL沖的逻辑函数发生器F和 G匀为查找表结构,其工作原理类似于ROMF和G 的输入等效于RO的地址码,通过查找ROMP的地址表可以得到相应的组合逻辑函 数输出。另一方面,逻辑函数发生器 F和G还可以作为器件内高速RA或小的可读 写存储器使用,它由信号变换电路
18、控制。2. 输入/输出模块IOB。IOB提供了器件引脚和内部逻辑阵列之间的连接。它 主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。每个IOB控制一个引脚,它们可被配置为输入、输出或双向 I/O功能。当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。缓冲器的输出分成两路:一路可以直接送到 MUX另一路经延时几纳秒(或者不延时) 送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制 信息,确定送至CLB车列的11和12是来自输入缓冲器,还是来自触发器。当IOB控制的引脚被定义为输出时,CLB车列的输出信号0U也可以有两条传 输途径:一条是直
19、接经MU送至输出缓冲器,另一条是先存入输出通路 D触发器, 再送至输出缓冲器。IOB俞出端配有两只MO管,它们的栅极均可编程,使 MO管导通或截止,分 别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。3. 可编程互连资源IR。可编程互连资源IR可以将FPG内部的CL餉CLB间、 CL餉IOB之间连接起来,构成各种具有复杂功能的系统。IR主要由许多金属线段 构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。2.4 FPGA系统设计流程一般说来,一个比较大的完整的项目应该采用层次化的描述方法:分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具
20、体实现, 这就是TOPDOWN自顶向下)的设计方法。目前这种高层次的设计方法已被广泛 采用。高层次设计只是定义系统的行为特征, 可以不涉及实现工艺,因此还可以 在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优 化的网络表,工艺转换变得轻而易举。CPLD/FPG系统的工作流程如图2所示。图2 FPGA设计流程3 主要模块设计3.1 分频模块分频的关键在于设置不同进位规则的计数器。模块开始定义了count1、count2、count3、count4 位宽不同的寄存器,分别用于四种输出信号的计数。以 1s信号输出为例,在always引导的过程语句中设置了 negedgeclk条
21、件,即当时 钟下降沿到来时执行always块中的语句,即count1计数器加1,然后通过if语 句判断countl是否到达24' d12582912,即是否达到0.5s。若达到则清零计数 器并将 sec_1 取反。通过上述过程便实现了将24Mz信号分频成1Hz秒信号的目的。另外三种信 号的产生机制与秒信号一样,只是改变了计数器的范围。3.1.1 分频模块源代码/产生 1s,1ms 的分频/FPGA 晶振 50Mhz分频模块源代码如下:module fenpin (clk,rst_n,en_1s,en_1ms); input clk;input rst_n;output en_1s;ou
22、tput en_1ms;reg31:0 jishu_1s;reg15:0 jishu_1ms;parameter cnt_1s =49999999;parameter cnt_1ms =49999;always(posedge clk or negedge rst_n) beginif(!rst_n) jishu_1s<=32'b0;else if(jishu_1s<cnt_1s)jishu_1s<=jishu_1s+1'b1;else jishu_1s<=32'b0;endalways(posedge clk or negedge rst_n)
23、 beginif(!rst_n) jishu_1ms<=16'b0;else if(jishu_1ms<cnt_1ms)jishu_1ms<=jishu_1ms+1'b1;elsejishu_1ms<=16'b0; endassign en_1s=(jishu_1s=c nt_1s)? 1'b1 : 1'b0;/1sassig n en _1ms=(jishu_1ms=c nt_1ms)? 1'b1 : 1'b0;/1msen dmodule分频模块仿真分频模块的RTL视图如图4所示,可以看出输出端en_1ms与
24、en_1s与输入 端clk和rst_n的逻辑关系。炉JlsliUi_U|3f JO)Equal IADDERLcsslhanlKTU 1S4JI.O1応 oill-lu-徒L MTHAIEIUAL eQUIL5卜n qLLLK- |图4分频模块的RTL视图1ms时钟信号的输出,如图5所示,相邻脉冲之间相隔1ms。图5 1ms时钟信号的仿真1s时钟信号的输出,如图6所示,相邻脉冲之间相隔1sIDIZdCDOIE:IDCECnPJLQ HSlidn-r On-.图6 1s时钟信号的仿真3.2按键模块本设计的按键模块主要作用是校时作用,可以调整时间与闹钟时间,同时作为时间模式与闹钟模式的切换。本模块
25、用于当有按键按下时,采用软件消抖的办法去除按键抖动。模块的实现方法是先判断是否有按键按下,如有按键按下则延时一段时间,待抖动过去之 后再读行线状态,如果仍有低电平行线,则确定有按键按下,然后产生一个有按 键按下的信号。该模块有一个时钟输入端口,输入时钟信号是分频出来的50MHZ 的时钟;有一个输入端口与行线相连,用于输入行线状态;一个输出端口,用于 输出有按键按下的信号。按键模块源代码按键模块的部分源代码如下(以一个按键为例):module/按键控制部分anjia n(clk,rst_ n,key1,key2,key1o w,key2o w,key3,key3_low);in put clk;
26、in put rst_n;in put key1;/分加in put key2;/分减in put key3;/界面选择output key1ow;/按键按下消抖后的标志位output key2_low;output key3_low;reg reg0_key; /key1 消抖reg reg1_key;reg reg2_key; /key2 消抖reg reg3_key;reg reg4_key; /key3 消抖reg reg5_key;always (posedge clk or negedge rst_n)beginif(!rst_n)beginreg0_key <= 1'
27、;b1;reg1_key <= 1'b1;endelsebeginreg0_key <= key1;reg1_key <= reg0_key; / 根据非阻塞赋值的原理, reg1_key 存储的值是 reg0_key 上一个时钟的值endend/脉冲边沿检测法 , 当寄存器 key1 由 1 变为 0 时, key1_an 的值变为高,维持一个时 钟周期wire key1_an;assign key1_an = reg1_key & ( reg0_key);always (posedge clk or negedge rst_n)beginif(!rst_n
28、)beginreg2_key <= 1'b1;reg3_key <= 1'b1;endelsebeginreg2_key <= key2;reg3_key <= reg2_key;endendreg19:0 cnt_key1; / 计数寄存器always (posedge clk or negedge rst_n) beginif (!rst_n)cnt_key1 <= 20'd0; /异步复位else if(key1_an)cnt_key1 <=20'd0;/led1_an=1 ,按键确认按下, cnt_key1 从 0 开
29、始计数elsecnt_key1 <= cnt_key1 + 1'b1;end/以下为消抖程序reg reg_low;reg reg1_low;always (posedge clk or negedge rst_n)beginif (!rst_n)beginreg_low <= 1'b1;endelse if(cnt_key1 = 20'hfffff)/时钟 50mhz 的话大约计时是 20msbeginreg_low <= key1;/led_an=1 ,按键确认按下, cnt_key 从 0 开始计数,这时候还有消抖动,计数 20ms 后 抖动滤除
30、了此时再锁存一下 key1 的值end/ 这时 key1 的值就稳定了endalways (posedge clk or negedge rst_n) beginif (!rst_n) reg1_low <= 1'b1;else reg1_low <= reg_low;endassign key1_low = reg1_low & ( reg_low); / 当寄存器 reg_low 由 1 变为 0 时, key_low 的值变为高,维持一个时钟周期/以一个按键为例,省略其余两个按键 endmodule3.2.2 按键模块仿真按键模块的 RTL 视图如图 7 所示
31、,可以看出输出端 Key1_low 、Key2_low、 Key3_low 与输入端 Key1 和 Key2、 Key3、clk、rst_n 的逻辑关系。图7按键模块的RTL视图3.3时间模块时间模块的作用是:利用分频模块产生的精确的秒时钟信号,给时钟秒位计 时,设置好时分秒的进位;利用按键模块的控制,给时钟校时,给闹钟设置时间。 331时间模块源代码按键模块的部分源代码如下:/时、分、秒moduleshijia n( clk,rst_ n,e n_1s,key1ow,key2_low,key3_low,shi,fe n, miao, nao_shi, nao_fe n,n ao_miao,m
32、o shi);in put clk;in put rst_n;in put en _1s;in put key1_low;in put key2_low;in put key3_low;output5:0 shi;output5:0 fe n;output5:0 miao;output5:0 n ao_shi;output5:0 n ao_fe n;output5:0 n ao_miao;output reg1:O moshi ;/0时显示时间 1时显示闹钟reg 5:0 shi;reg 5:0 fe n;reg 5:0 miao;reg 5:0 nao_shi;reg 5:0 nao_fen
33、;reg 5:0 nao_miao;always(posedge clk or negedge rst_n)/key3 按键选择模式 beginif(!rst_n)begin moshi<=1'b0;endelse if(key3_low) begin moshi<=moshi+1'b1;endendalways(posedge clk or negedge rst_n)beginif(!rst_n)begin shi<=6'b000001; /1fen<=6'b011000;/24miao<=6'b0;/0nao_shi&
34、lt;=6'b000001;/1nao_fen<=6'b011110;/30nao_miao<=6'b010100; /20endelse if(en_1s)beginmiao=miao+1'b1;if(miao=60)beginmiao=0;fen=fen+1'b1;if(fen=60)beginfen=0;shi=shi+1'b1;if(shi=24)shi=0;endendendelse if(!moshi&&key1_low)/ 时间模式下 按加键beginfen=fen+1'b1;if(fen=60)
35、beginfen=0; shi=shi+1'b1;if(shi=24)shi=0;endendelse if(!moshi&&key2_low)/ 时间模式下 按减键 begin fen=fen-1'b1;if(fen=0)begin shi=shi-1'b1; fen=59; end endelse if(moshi&&key1_low)/ 时间模式下 按加键 beginnao_fen=nao_fen+1'b1;if(nao_fen=60)begin nao_fen=0; nao_shi=nao_shi+1'b1; if
36、(shi=24) shi=0;endendelse if(moshi&&key2_low)/ 闹钟模式下 按减键 beginnao_fen=nao_fen-1'b1;if(nao_fen=0)begin nao_shi=nao_shi-1'b1; nao_fen=59;endendelsebeginshi<=shi;fen<=fen;miao<=miao;n ao_shi<=n ao_shi;n ao_fe n<=n ao_fe n;n ao_miao<=n ao_miao; endenden dmodule332时间模块仿真
37、时间模块的RTL视图如图8所示,可以看出输出端shi、en、miao、nao_shi、 nao_fen、mao_miao与输入端 Key1_low 和 Key2_low、Key3_low、en_1s、rst_n 的逻辑关系。图8时间模块的RTL视图仿真了时钟,仿真波形图如图 9、图10所示,仿真图满足设计的要求。分 计数和时计数模块的设计原理与秒模块的类似。附112nLllij Tim# |S<'1 耐iBBMi | " G1>ie3NiH#阿,Q 那叩申 E和呼帕VKIOflB1»UB1.1UB1 爭E1.4ltW > 13 3*- e1>
38、1*!*1*mdK4mxd410wuuinwuuimmiuuuwwuinrumnjimj _ Jinmrnn3 tfi4jrWhp 0|01iari«yo)匕 i|3 "|D&图9秒时钟仿真波形图10计时模块仿真3.4显示模块显示模块的作用是:在8位数码管上显示时间模块输出的时间和闹钟信号, 通过按键可以切换显示时间和闹钟。具体原理是采用动态扫描的方法,动态扫描电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且输出数码管的片选信号和位选信号。所谓动态扫描显示方式是在显示某一位LED显示块的数据的时候,让其它位不显示,然后在显示下一位的数据,同时关闭其
39、他显示块。这样做可以使每一个显示块显 示与自己相对应的数据。只要保证每一位显示的时间间隔不要太大,利用人眼的视觉暂留的现象,就可以造成各位数据同时显示的假象。一般每一位的显示时间为 110ms显示模块源代码显示模块的部分源代码如下:(以显示秒为例)modulexian shi(clk,rst_ n,en _1ms,shi,fe n,miao,led_bit,dataout,moshi, nao_shi, nao_fe n,n ao_miao);in put clk;in put rst_n;in put en _1ms;input5:0 shi;in put5:0 fe n;in put5:0
40、 miao;in put5:0 n ao_shi;in put5:0 n ao_fe n;in put5:0 n ao_miao;in put1:0 moshi;output2:0 led_bit;/ 位选output7:0 dataout;/ 段选数码管显示 09对应段选输出parameternum0 = 8'b11000000,num1=8'b11111001,num2=8'b10100100,num3=8'b10110000,num4=8'b10011001,num5=8'b10010010,num6= 8'b10000010,nu
41、m7= 8'b11111000,num8= 8'b10000000,num9= 8'b10010000;reg3:0 shi1,shi2,fen1,fen2,miao1,miao2;reg3:0 nao_shi1,nao_shi2,nao_fen1,nao_fen2,nao_miao1,nao_miao2;reg2:0 led_bit;/ 位选reg7:0 dataout;/ 段选reg2:0 state;/ 状态寄存器always(posedge clk or negedge rst_n)if(!rst_n)beginstate<=3'b0;endels
42、e if(en_1ms)beginstate<=state+1'b1;shi1=shi/10;shi2=shi%10;fen1=fen/10;fen2=fen%10;miao1=miao/10;miao2=miao%10;nao_shi1=nao_shi/10;nao_shi2=nao_shi%10;nao_fen1=nao_fen/10;nao_fen2=nao_fen%10;nao_miao1=nao_miao/10;nao_miao2=nao_miao%10;if(state=3'b000)beginled_bit=3'b101;if(!moshi)begi
43、ncase(miao2)0: dataout<=num0;1: dataout<=num1;2: dataout<=num2;3: dataout<=num3;4: dataout<=num4;5: dataout<=num5;6: dataout<=num6;7: dataout<=num7;8: dataout<=num8;9: dataout<=num9;default :dataout<=num0;endcaseend else if(moshi) begin case(nao_miao2)0: dataout<=
44、num0;1: dataout<=num1;2: dataout<=num2;3: dataout<=num3;4: dataout<=num4;5: dataout<=num5;6: dataout<=num6;7: dataout<=num7;8: dataout<=num8;9: dataout<=num9;default :dataout<=num0;endcaseendendelse if(state=3'b001)begin led_bit=3'b100; if(!moshi) begin case(mia
45、o1)0: dataout<=num0;1: dataout<=num1;2: dataout<=num2;3: dataout<=num3;4: dataout<=num4;5: dataout<=num5;default :dataout<=num0;endcaseendif(moshi)begin case(nao_miao1) 0: dataout<=num0;1: dataout<=nu ml;2: dataout<=nu m2;3: dataout<=nu m3;4: dataout<=num4;5: data
46、out<=nu m5; default :dataout<=numO;endcaseendendend/以显示秒为例,时与分的省略En dmodule显示模块仿真显示模块的RTL视图如图11所示,可以看出输出端控制数码管的8位段选和3为位选与输入端时间信号和闹钟信号的逻辑关系。图11 显示模块的RTL视图3.5闹钟模块闹钟模块的作用是:当时间与闹钟时间相同时,闹钟模块根据分频模块得出 的en_1ms驱动蜂鸣器发出声响。闹钟模块源代码闹钟模块的源代码如下:module n aozh on g(clk,e n_1ms,beep,shi,fe n,miao, nao_shi, nao_f
47、e n,n ao_miao);in put clk,en_1ms;/clk作为时钟信号,en_1ms作为发声信号 input5:0 shi;input5:0 fen;input5:0 miao;input5:0 nao_shi;input5:0 nao_fen;input5:0 nao_miao;output reg beep;/作为发声输出信号接扬声器reg bep;initialbeginbeep<=1; bep<=0;endalways (posedge clk)begin if(nao_shi=shi && nao_fen=fen&& nao
48、_miao<miao ) bep<=1'b1;else bep<=0;endalways (bep)begin if(bep=1'b1)begin beep<=en_1ms;endelse beep<=1;end endmodule3.5.2 闹钟模块仿真闹钟模块的RTL视图如图12所示,可以看出当输出端时间信号大于等于闹 钟信号时,蜂鸣器开始工作。I estTl mfi_A?5.IZ|r in_mrir(5ess imxL_i jiu nr- fprjfj nF副脚en 1 nnsLUUW.EqualalwaysO-l图12 闹钟模块的RTL视图
49、3.6顶层模块顶层模块的作用是:例化各模块,建立分频模块、时间模块、按键模块、显 示模块、闹钟模块的联系。顶层模块源代码顶层模块的源代码如下:module shuzizh on g(clk,rst_ n, key1,key2,key3,led_bit,dataout,beep);in put clk;in put rst_n;in put key1; 加in put key2; 减in put key3;模式按键output2:0 led_bit;output7:0 dataout;output beep;wire en _1s;wire en _1ms;wire5:0 shi;wire5:0 fe n;wire5:0 miao;wire5:0 n ao_shi;wire5:0 n ao_fe n;wire5:0 n ao_miao;wire key1_low,key2_low,key3_low;wire1:0 moshi;fen pi nfen pinn t(.clk(clk),.rst_ n(rst_ n),.en _1s(e n_1s),.en_1ms(en_1ms);anjian anjian_int(.clk(clk),.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 古蔺县成龙学校急招教师(6人)备考题库含答案详解(基础题)
- 2026广东清远市连南瑶族自治县大坪镇招聘村级专职网格员1人备考题库附答案详解(考试直接用)
- 2026广西柳州市柳北区交通运输局招聘公益性岗位人员1人备考题库附答案详解(突破训练)
- 2026四川凉山州西昌市北城社区卫生服务中心招聘1人备考题库附答案详解(综合题)
- 2026青海黄南藏族自治州藏医院招聘5人备考题库附答案详解(突破训练)
- 2026浙江舟山市普陀区民政局代管国有企业招聘合同制工作人员1人备考题库及答案详解(夺冠系列)
- 2026年南阳师范学院招聘高层次人才168人备考题库附答案详解(培优)
- 2026安徽淮南市消防救援局政府专职消防员招聘49人备考题库附答案详解(培优a卷)
- 2026北京协和医院检验科王瑶团队合同制科研助理招聘1人备考题库含答案详解
- 2026浙江台州科技职业学院编外工作人员招聘4人备考题库附答案详解(能力提升)
- 维修改造工程施工组织设计方案
- 品管圈PDCA获奖案例降低住院患者胃管非计划拔管率
- 帕金森病非药物治疗
- 原料验收管理制度范文(2篇)
- 《小型局域网的组建》课件
- 《软件介绍使用说明》课件
- 紧急剖宫产应急预案
- 《班级文化建设方案》课件
- 个人和公司签的业务提成协议书(2篇)
- GB/T 18029.8-2024轮椅车第8部分:静态强度、冲击强度及疲劳强度的要求和测试方法
- 自建房安全施工合同协议书
评论
0/150
提交评论