人人范文网 范文大全

EDA课程设计

发布时间:2020-03-03 04:14:14 来源:范文大全 收藏本文 下载本文 手机版

考试序号:28

自动打铃系统设计说明书

学 生 姓 名:周文江

号:14112502521

专 业 班 级:1102

报告提交日期:2013.11.26

湖 南 理 工 学 院 物 电 学 院

目录

一、题目及要求简介……………3 1.设计题目…………………3 2.总体要求简介……………3

二、设计方案说明……………3

三、系统采用器件以及模块说明………3 1.系统框图…………4 2.选择的FPGA芯片及配置………4 3.系统端口和模块说明…………5

四、各部分仿真结果………5

五、调试及总结………6

六、参考文献……7

七、附录………7

一、题目及要求简介

1、设计题目

设计一个多功能自动打铃系统

2、总体要求简介

① 基本计时和显示功能(24小时制显示),包括:

1.24小时制显示 2.动态扫描显示; 3.显示格式:88-88-88 ② 能设置当前时间(含时、分) ③ 能实现基本打铃功能,规定:

06:00起床铃,打铃5s

二、设计方案说明

本次设计主要采用Verilog HDL硬件描述性语言、分模块法设计的自动打铃系统。由于这次用的开发板提供的是50M晶振。首先要对时钟进行分频,当计时到2FA_F07F时完成1s分频,通过计时到60s产生分钟进位信号,再通过60分钟产生时钟进位信号。最后通过6个寄存器对时分秒进行锁存最终输出到8个数码管上完成显示。当显示时钟和默认闹钟时钟相等时,驱动打铃模块。通过key_mode,key_turn,key_change查看闹钟,时钟显示,调整时钟。

三、系统采用器件以及模块说明

1.系统框图如下:

:下如图框统系

2.选择的FPGA芯片及配置:本次系统设计采用的FPGA芯片是Alter公司生产的Cyclone II EP2C8Q208C8。该芯片是208个管脚,138个IO,并且具有两个内部PLL,而且内嵌乘法器,8K的逻辑门,资源相当丰富。完成这次自动打铃系统的设计总共消耗250个LE单元,22个IO口,131个寄存器。经过综合后,本系统最高能实现145M的运行速度。通过Quartus II 软件观察到内部的RTL图如下

3.系统端口和模块说明

(1)分频部分

分频器的作用是对50Mhz的系统时钟信号进行分频,得到频率为1hz的信号,即为1S的计时信号。

(2)按键部分

按键key_mode--0为显示计时,1为闹钟显示,2为调整时间。 按键key_turn—0为调整小时,1为调整分钟。 按键key_change—每按一次加1 (3)计时部分

通过sec_L,sec_H,min_L,min_H,hour_L,hour_H 6个寄存器对时分秒进行锁存然后送入数码管显示

(4) 闹钟模块

当设定的闹钟时间和数码管上显示的时间相等时驱动闹钟,完成打铃,持续时间5s。

(5)数码管显示模块

显示模块是由8个位选8个段选构成的显示模块,利用人眼的余晖效果完成动态扫描,显示时间。

四、各部分仿真结果

测试文件如下:

module clock_tb; reg sysclk,rst_b; reg key_mode,key_turn,key_change; wire buzzer;

wire [7:0] led_sel,led_data; clock I_clock( .sysclk (sysclk),.rst_b (rst_b),.key_mode (key_mode), .key_change (key_change),.key_turn (key_turn),.buzzer (buzzer),.led_sel (led_sel),.led_data (led_data)); initial begin sysclk = 1\'b1; rst_b = 1\'b0; //复位信号

#30 rst_b = 1\'b1; end always #10 sysclk = ~sysclk; //输入的系统时钟,20ns的周期 endmodule

五、调试及总结

本次课程设计总共花费了四天左右的时间,设计了自动打铃系统。通过这次的设计更加熟悉了对EDA技术的了解和认识,在中也发现许多不足的地方。使用了自顶而下的设计方法,使得设计更加的简单和明了。在调试过程中,有些代码的设计不规范性,导致时序相当缓慢,甚至编译综合都会报错。在不断的修改下,发现时序电路和组合逻辑最好分开写,这样便于查错,和修改代码。毕竟Verilog HDL语言不同于C语言,不能以软件的思想来设计,而是要利用电路的思想来编程,这样可以更好的节省资源,使得时序也比较的简单明了。在以后的学习及程序设计当中,我们一定要倍加小心,在程序出现不正常运行的情况下要耐心调试,尽量做到精益求精。

最后通过这次EDA方面的课程设计, 提高了我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。有利于锻炼我们独立分析问题和解决问题的能力。

六、文献参考

[1] .王金明、左自强 编,《EDA技术与Verilog设计》科学出版社

2008.8 [2] .杜慧敏、李宥谋、赵全良 编,《基于Verilog的FPGA设计基础》 西安电子科技大学出版社 2006.2 [3] .韩彬 编,《从零开始走进FPGA世界》杭州无线电爱好者协会出版社 2011.8.20

七、附录(实物图及源码)

module clock(//Input

sysclk,rst_b,key_mode,key_change,key_turn,

//Output

buzzer,led_sel,led_data );

input sysclk,rst_b; //sysclk--global system clock,rst_b--global reset signal input key_mode;//mode choose .0--Timing function.1--Alarm clock function.2--adjust function input key_turn;//choose adjust minute or hour input key_change;//count add 1 output buzzer; //device buzzer output [7:0] led_sel;//led tube bit choose

output [7:0] led_data;//led_tube 8 bit data choose

parameter init_hour = 8\'h12; parameter init_min = 8\'h59; parameter init_sec = 8\'h50; //initial time :12:59:50 parameter init_alarm_hour = 8\'h06; parameter init_alarm_min = 8\'h30;//initial alarm time : 06:30:0 parameter Count_1s = 28\'h2FA_F07F; //count time 1s;

reg [7:0] sec; reg [7:0] min; reg [7:0] hour; reg [3:0] min_L; //minute low 4 bit reg [3:0] min_H; //minute high 4 bit reg [3:0] hour_L; //hour low 4 bit reg [3:0] hour_H; //hour high 4 bit reg [23:0] key_time; //pre key away shake reg key_mode_n; //pre key_mode next state reg key_change_n; //pre key_change next state reg key_turn_n; //pre key_turn next state wire key_mode_pre;//sure Button pre key_mode wire key_turn_pre; //sure button pre key_turn wire key_change_pre;//sure button pre key_change

always @ (posedge sysclk ) key_mode_n

always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) key_time

key_time

end

reg [1:0] mode_num; //key mode ..0--Timing function.1--Alarm clock function.2--adjust function always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) mode_num

mode_num

always @ (*) begin if(mode_num == 2\'h1)begin

min = init_alarm_min; hour = init_alarm_hour; end else begin

min = {min_H,min_L}; hour = {hour_H,hour_L}; end end

reg fm; //choose turn hour or minute always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) fm

fm

reg [27:0] time_cnt; ///count time reg [27:0] time_cnt_n; //count time next state always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) time_cnt

always @ (*) begin if(time_cnt == Count_1s) time_cnt_n

reg [3:0] sec_L; //second low 4 bit reg [3:0] sec_H; //second high 4 bit wire sec_cb; //second carry bit signal aign sec_cb = (sec_L == 4\'h9) && (sec_H == 4\'h5); always @ (posedge sysclk or negedge rst_b) begin if(!rst_b)begin

sec_L

sec_L

sec_L

sec_L

wire min_cb; //minute carry bit signal aign min_cb = (min_L == 4\'h9) && (min_H == 4\'h5); always @ (posedge sysclk or negedge rst_b) begin if(!rst_b)begin

min_L

min_L

min_L

min_L

min_L = min_L + 4\'h1; else if((fm) && (mode_num == 2\'h2) &&(key_change_pre) && (key_time ==

24\'h0) && (min_L == 4\'h9) && (min_H !=4\'h5)) begin

min_L = 4\'h0; min_H = min_H + 4\'h1; end else if((fm) && (mode_num == 2\'h2) &&(key_change_pre) && (key_time == 24\'h0) && (min_L == 4\'h9) && (min_H ==4\'h5)) begin

min_L = 4\'h0; min_H = 4\'h0; end end

always @ (posedge sysclk or negedge rst_b) begin if(!rst_b) begin

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

hour_L

24\'h0) && (hour_L == 4\'h3) && (hour_H ==4\'h2)) begin

hour_L

wire buzzer_en; aign buzzer_en = (init_alarm_min == {min_H,min_L}) && (init_alarm_hour == {hour_H,hour_L});

led_tube I_led_tube ( .sysclk (sysclk), .rst_b (rst_b), .scan_time (24\'h1F090), .data0 ({1\'h1,sec_L}), .data1 ({1\'h1,sec_H}), .data2 ({1\'h1,4\'hA}), .data3 ({1\'h1,min[3:0]}), .data4 ({1\'h1,min[7:4]}), .data5 ({1\'h1,4\'hA}), .data6 ({1\'h1,hour[3:0]}), .data7 ({1\'h1,hour[7:4]}), .led_data (led_data), .led_sel (led_sel) ); buzzer I_buzzer ( .sysclk (sysclk), .rst_b (rst_b), .buzzer_en (buzzer_en), .buzzer (buzzer) ); endmodule

EDA 课程设计

《EDA课程设计》

eda课程设计

eda课程设计心得体会

EDA数字钟课程设计

EDA课程设计感想

EDA课程设计题库

EDA课程设计论文

EDA课程设计——数字频率计

EDA单片机课程设计

EDA课程设计
《EDA课程设计.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档