1、电子电路EDA技术课程实践试验考试报告书课程实践实验考试设计报告设计课题: 7段数码显示分钟与秒钟设计自考专业: 电子信息技术(B080738) 考生姓名: xxx 指导教师: xxx 设计时间: 2016-03-11 电子电路EDA技术实践考试 设计任务书姓 名:xxx专 业:电子信息技术专业代码:B080738指导教师:xxx职 称:课程名称电子电路EDA技术课程设计题目:7段数码显示分钟与秒钟设计设计要求:1 设计一个1分钟计时器,并显示秒数,显示采用七段数码管。2 模块划分;3 HDL代码编写;4 仿真并验证设计结果。所需仪器设备:计算机及相关开发设计软件、EDA实箱、示波器成果验收形
2、式:需求分析;概要设计;详细设计;调试与分析;试验报告参考文献:1基于FPGA的现代数字系统设计西安电子科技大学出版社2011年版2. 华清远见嵌入式培训中心编 时间安排2016311一、 总体设计分析 1.1 原理分析分计数器和秒计数器为60进制计数器,采用10进制计数器与6进制计数器组合而成,便于数码管显示设计。若采用静态扫描显示方式,则4个数码管段选线是独立的,则需要I/O端口较多,占有资源大,且此功耗大。因此,采用动态扫描显示方式输出。1.2 模块划分该设计主要由分频器、计数器、动态扫描显示模块、共阴7段数码管译码器组成。其中分频器设计中,采用有PLL锁相环分频后的200Hz的时钟源,
3、经200分频后为1HZ的秒计数时钟;另外200Hz作为数码管动态扫描等其他所用时钟源;采用太快得时钟动态扫描,数码管显示会有些昏暗;频率太慢人眼睛会看到闪烁。2个60进制计数器分别作为分计数器和秒计数器。一个60进制计数器由一个6进制计数器和一个10进制计数器组成,便于四个数码管的显示。另外,使用一个接口作为数码管复位按键接口;由于是共共阴7段数码管,因此,FPGA输出接口与数码管间需接数码管驱动电路,增强FPGA输出信号的驱动能力。图1 总体设计框图1.3 输入输出端口分配FPGA分配的与外围电路的接口管脚信号,其中各引脚的功能如下:引脚符号功能说明1Rst_n数码管复位按键接口2disp_
4、select外接数码管阴极动态扫描接口(四根信号)3disp_data译码器输出端,接数码管的阳极(ag7根信号口,中间需驱动器,四个数码管并联)二、 各模块详细设计与仿真2.1 分频器设计Verilog HDL代码如下:(200HZ的动态扫描时钟进行200分频为1HZ计时时钟信号)module Clk_Div200 ( Clk_in,Rst_n,Clk_out ) ; input Clk_in,Rst_n ;output reg Clk_out ;reg 7:0 Cnt;always ( posedge Clk_in ) beginif ( !Rst_n ) Cnt = 0 ; else i
5、f ( Cnt = 8d199 ) Cnt = 0 ; else Cnt = Cnt + 1b1 ;endalways ( posedge Clk_in ) beginif ( !Rst_n ) Clk_out = 0 ; else if ( Cnt = 8d199) Clk_out = Clk_out ;endendmodule功能仿真结果如下图:2.2 分钟与秒钟计数设计采用与十进制计数器与六进制计数器组合而成,一个60进制的计数器。Verilog HDL代码如下:module time_counter /分钟秒钟计数 (Rst_n,Clk_out,time_bit_high,time_b
6、it_low,EO);input Clk_out,Rst_n;output EO; output 3:0 time_bit_high,time_bit_low;reg 3:0 time_bit_high,time_bit_low;reg EO;reg low_to_high;wire Clk_out;always (posedge Clk_out) begin/低位计数,到9清零,高位计数使能开启 if( !Rst_n ) begin time_bit_low = 4b0; low_to_high = 1b0; end else if (time_bit_low 4b1001) begin t
7、ime_bit_low = time_bit_low + 4b1; low_to_high = 1b0; end else if (time_bit_low = 4b1001) begin low_to_high = 1b1; time_bit_low = 4b0; endendalways ( low_to_high ) begin if( !Rst_n ) begin time_bit_high = 4b0; EO = 1b0; end else if (time_bit_high 4b0101 & low_to_high = 1b1) begin /高位计数,到5清零,高位计数使能开启
8、time_bit_high = time_bit_high + 4b1; EO = 1b0; end else if ( time_bit_high = 4b0101 & low_to_high = 1b1)begin time_bit_high = 1b0; EO = 1b1; endendendmodule功能仿真结果如下图:(输入Rst_n复位信号,分秒计数清零。秒钟计数,低温到9清零后产生高位计数信号low_to_high,高位计数到5后。对于秒钟计数产生分钟低位开始计数的使能信号EO)2.3 动态扫描模块设计采用与200Hz的时钟不断刷新显示,利用人眼睛视觉延时特性,动态显示计数结果
9、。四位共阴数码管动态扫描。Verilog HDL代码如下:module dynamic_scanning /四位共阴数码管动态扫描 (Rst_n,Clk_in,disp_select, minute_bit_high,minute_bit_low,second_bit_high,second_bit_low);input Rst_n,Clk_in;input 3:0 minute_bit_high,minute_bit_low,second_bit_high,second_bit_low;output 3:0 disp_select;reg 3:0 disp_select;wire 3:0 m
10、inute_bit_high,minute_bit_low,second_bit_high,second_bit_low;reg 1:0 Cnt;always ( posedge Clk_in ) beginif ( !Rst_n ) Cnt = 0 ; else if ( Cnt = 2b11 ) Cnt = 0 ; else Cnt = Cnt + 1b1 ;endalways ( posedge Clk_in ) begin case (Cnt) 2b00 : disp_select = second_bit_low ; 2b01 : disp_select = second_bit_h
11、igh ; 2b10 : disp_select = minute_bit_low ; 2b11 : disp_select = minute_bit_high ; default: disp_select = 4b1111 ; endcaseendendmodule2.4 数码管译码器设计对计数器输出的数据,进行译码,生成在七段共阴数码管上能显示09的二进制信号。Verilog HDL代码如下:module disp_decode4_7 (Rst_n,Clk_in, minute_bit_high,minute_bit_low,second_bit_high,second_bit_low,
12、select_data,disp_data);input Rst_n,Clk_in;input 3:0 minute_bit_high,minute_bit_low,second_bit_high,second_bit_low;input 3:0 select_data;output 7:0 disp_data;wire 3:0 minute_bit_high,minute_bit_low,second_bit_high,second_bit_low;reg 7:0 disp_data;reg 3:0 data;always ( posedge Clk_in ) begin if(Rst_n
13、= 1b1) begin case (select_data) 4b1110: data = second_bit_low; 4b1101: data = second_bit_high; 4b1011: data = minute_bit_low; 4b0111: data = minute_bit_high; default: data = 4b1111; endcase end case(data) 4b0000: disp_data = 7b1111110; 4b0001: disp_data = 7b0110000; 4b0010: disp_data = 7b1101101; 4b
14、0011: disp_data = 7b1111001; 4b0100: disp_data = 7b0110011; 4b0101: disp_data = 7b1011011; 4b0110: disp_data = 7b1011111; 4b0111: disp_data = 7b1110000; 4b1000: disp_data = 7b1111111; 4b1001: disp_data = 7b1111011; default: disp_data = 7b0; endcaseendendmodule2.5 顶层模块设计对以上各个功能模块例化,设计顶层文件,完成最终Verilog
15、 HDL设计。Verilog HDL代码如下:module disp_minute_second_top (Rst_n,Clk_in,disp_select,disp_data);input Clk_in,Rst_n ;output 3:0 disp_select;output 6:0 disp_data;wire Clk_out,EO;wire 3:0 disp_select;wire 3:0 minute_bit_high,minute_bit_low,second_bit_high,second_bit_low;wire 3:0 select_data;Clk_Div200 U_Clk_
16、Div200 ( .Rst_n(Rst_n), .Clk_in(Clk_in), .Clk_out(Clk_out);time_counter U_second_counter ( .Rst_n(Rst_n), .Clk_out(Clk_out), .time_bit_high(second_bit_high), .time_bit_low(second_bit_low), .EO(EO);time_counter U_minute_counter ( .Rst_n(Rst_n), .Clk_out(Clk_out), .time_bit_high(minute_bit_high), .tim
17、e_bit_low(minute_bit_low), .EO();dynamic_scanning U_dynamic_scanning ( .Rst_n(Rst_n), .Clk_in(Clk_in), .disp_select(disp_select), .minute_bit_high(minute_bit_high), .minute_bit_low(minute_bit_low), .second_bit_high(second_bit_high), .second_bit_low(second_bit_low);disp_decode4_7 U_disp_decode4_7 ( .
18、Rst_n(Rst_n), .Clk_in(Clk_in), .minute_bit_high(minute_bit_high), .minute_bit_low(minute_bit_low), .second_bit_high(second_bit_high), .second_bit_low(second_bit_low), .select_data(disp_select), .disp_data(disp_data);Endmodule三、 综合仿真测试对工程设计文件综合,RTL视图如下:然后进行时序分析与时序仿真。数码管复位信号为低时,计时器复位清零。四、 分析与总结1. 自顶向下
19、的设计方法利用功能分割手段将设计由上到下进行层次话和模块化,及分层次、分模块进行设计和仿真。功能分割时,将系统功能分解为功能块,功能块再分解为逻辑块,逻辑块再分解为更少的逻辑块和电路。如此分割,逐步的将系统细化,将功能逐步的具体化,模块化。高层次设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细描述在下一设计层次说明,最底层的设计才涉及具体寄存器和逻辑门电路等实现方式的描述2. 采用动态扫描显示方式输出:4个LED显示,将所有的段选线并联接至一共阴7段数码管译码器输出端,阳极接位选控制线,实现各位分时选通。共用一个译码器,这样节约FPGA的硬件资源。每一位显示时间间隔不内能超过20
20、ms,否则会闪烁。3. 在学习的过程中,通过结合书本理论知识及课后实验练习,熟悉了EDA开发软件的使用及Verilog HDL语言,一分钟计时器可以说是书本上课后实验的演变,在熟练教材原理知识和实验的基础上进行此实验相对来说更容易一些。遇到的问题主要就是,在进行原理图设计时,定时器原件块和多路选择器原件块输出、输入接错了,导致波形仿真失败,还有对VerilogHDL语言逻辑不太熟练,通过实验,自己学会了原理图设计法、文本输入设计法,同时也感受到了自顶而下和自下而上设计思路的优势。4. 感谢指导老师耐心的指导,希望有更多机会接受老师的现场指导.五、 附件电子电路EDA技术实践考试课程设计成绩评定表专业: 电子信息技术 代码: B080738 学号:06990820xxx 姓名:xxx 课题名称7段数码显示分钟与秒钟设计设计任务与要求1. 设计一个1分钟计时器,并显示秒数,显示采用七段数码管。2. 模块划分;3. HDL代码编写;4. 仿真并验证设计结果。指导教师评语 建议成绩: 指导教师:课程小组评定评定成绩: 课程负责人: 年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1