在现在社会,报告的用途越来越大,要注意报告在写作时具有一定的格式。那么什么样的报告才是有效的呢?下面是小编给大家带来的报告的范文模板,希望能够帮到你哟!
eda课程设计报告篇一
学号:
班级:自动化 设计题目 多功能数字钟电路设计 设计任务及要求 多功能数字钟应该具有的功能有:显示时—分—秒、小时和分钟可调等基本功能。整个钟表的工作应该是在1hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。
在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(bcd码)显示个位,对于小时因为他的范围是从0~23,所以可以用一个2位的二进制码显示十位,用一个4位的二进制码(bcd码)显示个位。
实验中由于七段码管是扫描的方式 显示,所以虽然时钟需要的是1hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1hz信号,必须对输入的系统时钟50mhz进行分频。
调整时间的按键用按键模块的s1和s2,s1调节小时,每按下一次,小时增加一个小时;
s2调整分钟,每按下一次,分钟增加一分钟。另外用s8按键作为系统时钟复位,复位后全部显示00—00—00。
三.基于verilog hdl语言的电路设计、仿真与综合(一)顶层模块 本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块,如图1所示:
图1:顶层结构框图(二)子模块 1.分频器 分频器的作用是对50mhz的系统时钟信号进行分频,得到频率为1000hz的信号,作为显示器的输入信号。
源程序如下:
module fenpin(input cp, output cpout);reg cpout;reg [31:0] cout;reg cp_en;always @(posedge cp)//将50mhz分频为1khz begin cout <=(cout == 32'd50000)? 32'd0 :(cout + 32'd1);cp_en <=(cout == 32'd50000)? 1'd1 : 1'd0;cpout <= cp_en;end endmodule 功能仿真波形如图2所示(以五分频为例):
2.控制器和计数器 控制器的作用是,调整小时和分钟的值,并能实现清零功能。计数器的作用是实现分钟和秒钟满60进1,小时则由23跳到00。当到达59分55秒的时候,led灯会闪烁来进行报时。因为控制器和计数器的驱动信号频率均为1hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1khz变为1hz。
if(clk_en)begin if(r1==1)begin if(hour<24)hour=hour+1;if(hour==24)begin hour=0;end r1=0;end if(r2==1)begin if(minute<60)minute=minute+1;if(minute==60)begin minute=0;if(hour<24)hour=hour+1;if(hour==24)begin hour=0;end end r2=0;end if(second<60)second=second+1;if(second==60)begin second=0;if(minute<60)minute=minute+1;源程序如下:
module kongzhiqi(cpout,s1,s2,ret, hour,minute,second,led);input cpout,s1,s2,ret;output [5:0] hour;output [5:0] minute;output [5:0] second;output led;reg [5:0] hour;reg [5:0] minute;reg [5:0] second;reg r1;reg r2,r8,led;reg [10:0] cout;reg clk_en;always@(posedge cpout)begin if(s1==0)begin r1=1;end if(s2==0)begin r2=1;end if(ret==0)begin r8=1;end cout=(cout==32'd1000)?32'd0:(cout + 32'd1);clk_en=(cout==32'd1000)?1'd1:1'd0;led=1;end else led=0;if(r8==1)//清零 begin hour=0;minute=0;second=0;r8=0;end end end endmod if(minute==60)begin minute=0;if(hour<24)hour=hour+1;if(hour==24)begin hour=0;end end end if((minute==59)&&(second>55))begin if(led==1)led=0;else 功能仿真波形如图3所示:
3.显示器 显示器的作用是将时—分—秒的值在数码管上依次显示出来。从分频器输出的1khz的信号作为数码管的扫描信号。sel 表示三个数码管选择位,它的取值表示八个数码管,从左至右依次是111~000。ledga表示七段数码管,它的取值决定特定位数上显示的数字。
源程序如下:
4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase if(sel==3'b100)led=7'b1000_000;if(sel==3'b011)case(shiwei2)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;module xianshi(cpout,hour,minute, second,sel,ledag);input cpout;input hour,minute,second;output sel,ledag;reg [2:0] sel;reg [6:0] led;reg [3:0] shi1,ge1,shi2,ge2,shi3,ge3;always @(posedge cpout)begin shiwei1=hour/10;gewei1=hour%10;shiwei2=minute/10;gewei2=minute%10;shiwei3=second/10;gewei3=second%10;if(sel==3'b110)case(shiwei1)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase if(sel==3'b101)case(gewei1)default: led = 7'b0000_000;endcase if(sel==3'b111)case(gewei3)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase sel = sel + 3'd1;end assign ledag=led;endmodule 4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase if(sel==3'b010)case(gewei2)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase if(sel==3'b001)led=7'b1000_000;if(sel==3'b000)case(shiwei3)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;总结体会 这次课程设计虽然只有短短的四天,但我的收获却很大。通过这次实习,我掌握了eda设计的基本流程(即设计输入—编译—调试—仿真—下载),领会了自顶而下结构化设计的优点,并具备了初步的eda程序设计能力。
我感觉,这个程序最难的地方在于顶层模块的设计,因为顶层模块需要将各个子模块按照电路原理有机地结合起来,这需要扎实的理论功底,而这正是我所欠缺的。相比而言,子模块的设计就容易多了,因为verilog语言和c语言有很多相似之处,只要明白了实验原理,就不难完成,水平的高下只体现在程序的简洁与否。verilog源程序的编写很容易出现错误,这就需要耐心的调试。因为很多情况下,一长串的错误往往是由一个不经意的小错误引起的。当程序屡调屡错的时候,最好和其他同学沟通交流一下,他们不经意的一句话,就可能给我启发,使问题迎刃而解。
这次实习,给我感触最深的还是行为态度问题。人的能力有大有小,但只要端正态度,不抛弃,不放弃,任何人都能取得令自己满意的成绩。在此,我由衷的感谢在这次课程设计中给了我巨大帮助的老师和同学们!
eda拔河游戏机课程设计报告
数字电子钟逻辑电路设计《eda技术》课程设计报告
eda课程设计vhdl语言简易出租车计费器设计
eda实验
eda实验模版