搜档网

当前位置:搜档网 > 30秒可控计数器

30秒可控计数器

课程设计报告书题目: 30秒可控计数器

课程:数字系统设计

专业:电子信息

班级:

学号:

学生姓名:

指导教师:

2014年6月22日

信息工程学系课程设计任务书

30秒可控计数器

2014年6月22日

信息工程系课程设计成绩评定表

30秒可控计数器

随着技术的不断发展,EDA设计得到不断地发展和应用。本文30秒可控计数器为设计对象,根据运行规则和所需基本功能,采用层次化的设计方法,用verilog硬件描述语言实现30秒计数器。内容主要涉及算法,控制器的硬件组成框架以及最后整个控制器的检测方案和仿真。本设计可以实现电梯运行所需的基本功能,并用modelsim进行了仿真。

关键词:FPGA ; Verilog HDL

电子计数器(包含电子式计数继电器)归属于计数继电器,在工业自动化控制中有着广泛的应用。电子计数器已由原来只在控制电路中作计数及计数控制,现已逐步拓展到可以进行自动定长控制。这种功能的实现,使电子计数器不单适用于工业自动化控制,而且也对其它诸多领域:如电缆电线、纺织、印刷等行业中长度(定长)数量进行控制,使产品更趋于自动化的需求,从而大大提高了产品自动化控制能力。目前,AN系列计数器产品已广泛使用于上述领域。

1.1电子计数器的控制功能及计数方式

电子计数器的计数功能主要由自身元器件(如内部集成电路)和外部计数信号以及所配传感器来实现相应的计数。从计数的控制功能方式可分为电子累加计数器和电子预置计数器两种。累加计数器只有计数功能但无输出信号,不能对外部器件进行控制;而预置计数器可以采用加法、减法、加减可逆、随机可逆等方法计数,当计数值达到预置数时,发出符合信号驱动计数器内部控制电路,使内部执行继电器工作,使相应的触点转换,实现对外部器件进行有效控制。

1.2计数器计数信号

计数器计数输入信号一般分以下几种形式:a.点输入;b.脉动电压输入;c.脉动电平输入;d.传感器输入。

1.3电子式计数器停电记忆功能

计数器作为一个较为特殊的显示控制器件,在很

多场合中需要计数器应有断电(计数器工作电源)数据保持功能,

一般按功能可分为:a.普通型;b.停电保持数据型。

1.3.1普通型

一般此类计数器只适用于对计数数据无要求的场合,计数数据随计数器工作电源的接通或断开决定其数据的显示和消失(在计数器有计数信号加入或已有计数数据的情况下)。1.3.2停电保持数据型

对常规由CMOS集成电路组成的计数器,为了对其计数数据进行保存,常采用外接电池或内置大容量电容来保证其数据不会因计数器工作电源的突然掉电而其数据丢失。当然这种保持计数数据方法能起到一定的保持作用,但就从保持时间和可靠性上不尽理想,在很大程度上也取决于外接电池和电容的质量。近几年计数器已逐步向智能化方向发展,PIC单片机及EEPROM存储器的大量使用,使计数器在功能和使用上得到极大的丰富和提高,尤其是彻底解决了数据存储这方面的问题。

在其他人的基础之上自己总结了一些东西然后加以改进,做成自己的一个思想的计数器。此次课程色合计主要以书上的计数器原理还有网上找的篮球计数器思想去做的一些东西。网上的程序实现的功能比较好也值得借鉴。课本上的比较简洁但基本原理方法都还是值得学习。自己的特点就是将程序变得更加复杂化,增加了数码管显示列表的模块以及报警的显示方式。

2 总体设计

2.1 系统框图

本设计最关键的一是时钟脉冲的产生,二是循环方式的实现和控制,大致的设计框图如图2—1所示:

30秒可控计数器

30秒可控计数器

30秒可控计数器

30秒可控计数器

30秒可控计数器

本设计分三个模块,控制模块,显示模块和报警模块,用户在按下开始键后,开始从30秒倒计时,若中途按下暂停键时,计时器暂停,当到达00时,警报系统发出响应,提示用户时间已到,可进行下一轮计时。其中脉冲发生部分的设计,以clk为计时脉冲加以分频电路就可以得到1HZ的计时脉冲,每隔一秒钟计数器

30秒可控计数器

30秒可控计数器

30秒可控计数器

30秒可控计数器

30秒可控计数器

30秒可控计数器

3 具体设计部分

共分为4个模块:分频模块,计数清零以及指数模块,显示模块。总体设计思路比较简单,即在分频模块将1khz信号源进行10000次分频得到1hz的信号源用于后面的技术,在此之后将计数模块用于其中最后通过数码管显示模块进行显示。

3.1 分频模块

此模块主要用于把主系统自带的1khz时钟信号语言分频得到1hz时钟信号源然后进行计数的驱动信号。

程序如下:

always@( posedge clk)

begin

if(counter<=9999) // 10000进制计数器

begin

counter<=counter+1;//不断地加1 直至到达10000次也就是得到1hz end

else begin counter<=0;end

if(counter>=5000)//50%zhankongbi//把得到的信号进行50%的占空比操作

begin

clk_1s<=1;

end

else

begin

clk_1s<=0;

end

end

3.2计数清零以及指数模块

此模块用于将当前的数据进行计数清零以及重新设置数据,以实现所需要的功能。程序如下:always@(posedge clk_1s or negedge zhishu or negedge qingkong) //实现30s可控计时器的功能begin

if(!qingkong)//清空信号源按下时

Begin

xianshi<=0;//数据清零

end

else if(!zhishu)

begin

xianshi=30;//设置数据得到初始化30

end

else

begin

xianshi<=xianshi-1;//不断地减一

end

if(xianshi==0)

begin

led_warning=~led_warning;//时间到开始闪光警告

end

end

3.3显示模块。

此模块用于数码管的显示,比较简单。程序如下:

always @(posedge clk)

begin

weixuan=weixuan+1;//数码管位置选择

case(weixuan)

3'd1:display<=seg[xianshi%10];//十位显示

3'd0:display<=seg[xianshi/10];//个位显示endcase

end

4 总结

在这次的课程色合计里面,自己有很多都不是很熟悉,但是在慢慢找资料问老师的过程中还是学到了很多,一开始不知道怎么去弄,但是还是慢慢找到了方法。这一次的设计主要是在计数器方面的知识比较多一点,在前面的设计中自己用到过许多的程序,有一个比较深刻的理解,还是很容易做出来的。所以自己的一个和理解就是实验课还是的自己好好做,然后你就会得到很多的东西,才能掌握它。

经运行表明,本设计可以很好的技术功能。当然这次设计不是那么的顺利,在刚开始做的时候,由于对各个部分的不熟悉,致使我们在做的时候很碍手碍脚,整个程序的调试过程才是最痛苦的往往一个小小的部分我就可能弄一天才可以弄出来,真的十分煎熬啊。不过东西做出来之后还是很开心的,经过半个月的设计,我不仅在专业技能方面有了明显提高,还了解了产品开发所必须的全过程:资料收集、功能分析、分析电路、安装、调试等。虽然时间不长但我感觉有很大的收获,通过学习使自己对课本上的知识进一步了解加深,能够充分利用图书馆的资料,增加了除课本以为的许多知识。增强了自己对电路图的认识,加深了解了电路图每一部分的作用及其是如何工作的。

总程序

module test(clk,led_warning,weixuan,counter,xianshi,zhishu,qingkong); input clk;

input zhishu,qingkong;

reg clk_1s;

reg[3:0] xianshi;

output led_warning;

reg [7:0]seg[9:0];

output reg[2:0] weixuan;

output reg [15:0] counter=0;

initial

begin

seg[0]=8'b00111111;

seg[1]=8'b00000110;

seg[2]=8'b01011011;

seg[3]=8'b01001111;

seg[4]=8'b01100110;

seg[5]=8'b01101101;

seg[6]=8'b01111101;

seg[7]=8'b00000111;

seg[8]=8'b01111111;

seg[9]=8'b01101111;

end

always@( posedge clk)

begin

if(counter<=9999) // 10000进制计数器

begin

counter<=counter+1;

end

else begin counter<=0;end

if(counter>=5000)//50%zhankongbi

begin

clk_1s<=1;

end

else

begin

clk_1s<=0;

end

end

always @(posedge clk)

begin

weixuan=weixuan+1;

case(weixuan)

3'd1:display<=seg[xianshi%10];

3'd0:display<=seg[xianshi/10];

endcase

end

always@(posedge clk_1s or negedge zhishu or negedge qingkong) //实现30s可控计时器的功能?

begin

if(!qingkong)

Begin

xianshi<=0;

end

else if(!zhishu)

begin

xianshi=30;

end

else

begin

xianshi<=xianshi-1;

end

if(xianshi==0)

begin

led_warning=~led_warning;

end

end

endmodule

参考文献

[1]康华光,陈大钦. 电子技术基础—模拟部分(第五版)[M]. 北京:高等教育出版社,2005

[2] 吴友宇数字电子技术基础,.北京:清华大学出版社,2009

[3] 阎石数字电子技术基础.,北京:高等教育出版社,1998

[4]吴友宇模拟电子技术基础.,北京:清华大学出版社,2009

[5]康华光,电子技术基础(第五版):高等教育出版社,2006

[6]李士雄,丁康源主编,数字集成电子技术教程,北京:高等教育出版社,1993

[7]曹汉房,陈亚奎·数字技术教程·北京:电子工业出版社,1995

[8]伍时和.数字电子技术基础.清华大学出版社,2009年

[9]周新民.,工程实践与训练教程(电工电子部分). 武汉理工大学出版社,2009.

[10]瞿安连,应用电子技术,北京:科学出版社,2003

[11]夏宇闻.《verilog数字系统设计教程》第二版.北京航空航天大学出版社

[12]王金明.《数字系统设计与verilogHDL》第四版,北京;电子工业出版社,2011

1 简介 (5)

2 总体设计 (6)

2.1 系统框图 (6)

3 具体设计部分 (7)

4 总结 (9)

总程序 (10)

参考文献 (12)