首页 > 文库大全 > 精品范文库 > 1号文库

FPGA-verilog秒表设计[合集]

FPGA-verilog秒表设计[合集]



第一篇:FPGA-verilog秒表设计

大规模集成电路秒表设计

专题实习报告

一、实习题目:

大规模集成电路秒表设计

二、模块名称:

计数器,控制逻辑,译码器,数据选择器

三、实习目的:

对quartusII软件的使用,同时增强对Verilog HDL语言的编程与运用;将软件与硬件的使用结合起来。掌握秒表设计的思路,各模块的设计方法,培养缜密的设计思想。

四、模块源程序:

1、控制逻辑:

module miaoobiao(CLK,CLR,PAUSE,MSH,MSL,SH,SL,MH,ML);input CLK,CLR,PAUSE;output[3:0] MSH,MSL,SH,SL,MH,ML;reg[3:0] MSH,MSL,SH,SL,MH,ML;reg cn1,cn2;always @(posedge CLK or posedge CLR)begin if(CLR)begin{MSH,MSL}<=8'h00;cn1<=0;end

else if(!PAUSE)

begin

if(MSL==9)begin MSL<=0;

if(MSH==9)begin MSH<=0;cn1<=1;end

else MSH<=MSH+1;

end

else begin MSL<=MSL+1;cn1<=0;end

end end always @(posedge cn1 or posedge CLR)begin if(CLR)begin {SH,SL}<=8'h00;cn2<=0;end

else

if(SL==9)

begin SL<=0;

if(SH==5)begin SH<=0;cn2<=1;end

else

SH<=SH+1;

end

else begin SL<=SL+1;cn2<=0;end end always @(posedge cn2 or posedge CLR)begin if(CLR)begin {MH,ML}<=8'h00;end

else

if(ML==9)

begin ML<=0;if(MH==5)

MH<=0;else

MH<=MH+1;end else ML<=ML+1;end Endmodule

2、计数器程序:

module jishuqi(clk,state);input clk;output[2:0]state;reg [2:0]state;always @(posedge clk)

if(state==5)

state=0;

else

state=state+1;

Endmodule

3、数据选择器源程序:

module mux6_1(out,in0,in1,in2,in3,in4,in5,sel);input[3:0] in0,in1,in2,in3,in4,in5;input[2:0] sel;output[3:0] out;reg[3:0] out;always @(in0 or in1 or in2 or sel)

begin case(sel)

3'b000:out=in1;

3'b001:out=in0;

3'b010:out=in3;

3'b011:out=in2;

3'b100:out=in5;

default:out=in4;

endcase

end Endmodule 4.译码器

module decode47(decodeout,dec_in);input[3:0] dec_in;output[6:0] decodeout;reg[6:0] decodeout;always @(dec_in)begin case(dec_in)4'd0:decodeout=7'b1111110;4'd1:decodeout=7'b0110000;4'd2:decodeout=7'b1101101;4'd3:decodeout=7'b1111001;4'd4:decodeout=7'b0110011;4'd5:decodeout=7'b1011011;4'd6:decodeout=7'b1011111;4'd7:decodeout=7'b1110000;4'd8:decodeout=7'b1111111;4'd9:decodeout=7'b1111011;default:decodeout=7'bx;endcase end endmodule 模块图:

1、控制器 :

2、计数器: 3、6选用1选择器:

4、译码器:

jishu100cincin1clkrstout[7..0]coutinst9

五、仿真图:

六、原理图:

七、心得体会:

通过“秒表的设计”,书本知识与实际的融会贯通,我学到了很多: i.刚开始我什么都不懂,就抱为考试复习做准备的心态,熟悉书本知识; ii.熟悉了加法器的设计,乘法器的设计,计数器的设计,选择器的设计; iii.专周从刚开始没头绪,到从模块设计,到程序的书写,到波形的仿真,到网表生成,到引脚的定义,基本熟悉了秒表的设计过程;

iv.从最基本的verilog HDL语言的基本要数,到行为语句的熟悉,一步一步的将书本的知识应用到专周的设计中;

v.vi.熟悉了Quartus7.2软件的应用;

Verilog HDL 过程赋值语句,“always”过程语句通常带触发条件,assign为持续赋值语句;

vii.条件语句case多用于译码器,数据选择器中,一般case(敏感表达式);

viii.ix.x.复习了同步清零和异步清零的区别;

中间我们遇到的问题是怎么选位和怎么选段; 以及怎么将编辑的模块联系起来;

第二篇:实习报告-单片机秒表设计

目 录

第1章 单片机系统硬件电路.................................................................................1

1.1 实习目的..............................................................................................1 1.2 单片机型号及特性..............................................................................1 1.3 单片机开发板......................................................................................2

第2章 单片机应用系统软件.................................................................................5

2.1 STC下载软件......................................................................................5 2.2 Keil软件...............................................................................................5 2.3 外部电路驱动......................................................................................6

第3章 00-59秒计时器设计..................................................................................7

3.1 电路原理图..........................................................................................7 3.2 设计原理..............................................................................................7 3.3 实现方法..............................................................................................8

第4章 实习总结.....................................................................................................9

4.1 实习体会..............................................................................................9 4.2 设计硬件体会......................................................................................9

参考文献.................................................................................................................10 附录1 实物图........................................................................................................11 附录2 系统主要程序............................................................................................12

I

东北石油大学生产实习总结报告

第1章 单片机系统硬件电路

1.1 实习目的

了解单片机最小系统;

了解keilc软件操作,程序下载及调试方法; 掌握单片机外部电路使用; 掌握键盘和数码管显示编程方法; 应用单片机开发板进行实验开发;

1.2 单片机型号及特性

1、AT89S51单片机功能及特点

5l系列单片机中典型芯片(AT89S51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256 B的RAM,2个16b的定时/计数器TO和T1,4个8 b的I/O端I:IP0,P1,P2,P3,一个全双功串行通信口等组成。特别是该系列单片机片内的Flash可编程、可擦除只读存储器(E~PROM),使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。5l系列单片机提供以下功能:4 kB存储器;256 BRAM;32条I/O线;2个16b定时/计数器;5个2级中断源;1个全双向的串行口以及时钟电路。空闲方式:CPU停止工作,而让RAM、定时/计数器、串行口和中断系统继续工作。掉电方式:保存RAM的内容,振荡器停振,禁止芯片所有的其他功能直到下一次硬件复位。5l系列单片机为许多控制提供了高度灵活和低成本的解决办法。充分利用他的片内资源,即可在较少外围电路的情况下构成功能完善的超声波测距系统。ATMEL的AT89S51是一种高效微控制器,AT89S2051是它的一种精简版本。AT89S单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2、STC89C52单片机功能及特点

STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory)的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业

东北石油大学生产实习总结报告

标准的MCS-51指令集和输出管脚相兼容。

STC89C52完全兼容AT89C51 AT89C52 AT89S51 AT89S52 而且加入了更多新功能, 它内部有1280字节的SRAM、8-64K字节的内部程序存储器、2-8K字节的ISP引导码、除P0-P3口外还多P4口(PLCC封装)、片内自带8路8位AD(AD系列),片内自带EEPROM、片机自带看门狗、双数据指针等。

1.3 单片机开发板

1、复位电路

图1-1复位电路图

复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。

RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用频率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。

东北石油大学生产实习总结报告

2、晶振电路

图1-2晶振电路图

简单地说,没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。

对于一个高可靠性的系统设计,晶体的选择非常重要,尤其设计带有睡眠唤醒,往往用低电压以求低功耗的系统,这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振,这一现象在上电复位时并不特别明显,原因是上电时电路有足够的扰动,很容易建立振荡,在睡眠唤醒时,电路的扰动要比上电时小得多,起振变得很不容易,在振荡回路中,晶体既不能过激励,容易振到高次谐波上,也不能欠激励不容易起振,晶体的选择至少必须考虑、谐振频点、负载电容、激励功率、温度特性长期稳定性。

8051的时钟周期即CPU的晶振的振荡频率的振荡周期(频率的倒数)当振荡频率为10MHZ时,振荡周期=1/10MHZ=0.1us机器周期是完成一个基本操作的时间单元,一个机器周期=12个时钟周期,当振荡频率为10MHZ时,机器周期=12x0.1=1.2us 8051的指令周期,指取出并执行一条指令的时间。一般为1-4个机器周期

3、键盘和中断

矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这一点是识别矩阵按键是否被按下的关键。然而,矩阵键盘中的行线、列线和多个键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响,因此,必须将行线、列线信号配合起来作适当处理,才能确定闭合键的位置。

按键按下时,与此键相连的行线与列线导通,行线在无键按下时处在高电平,显然,如果让所有的列线也处在高电平,那么,按键按下与否不会引起行线电平的变化,因此,必须使所有列线处在低电平,只有这样,当有键按下时,该键所在的东北石油大学生产实习总结报告

行电平才会由高电平变为低电平。CPU根据行平电的变化,便能判定相应的行有键按下。8号键按下时,第2行一定为低电平,然而,第2行为低电平时,能否肯定是8号键按下呢?回答是否定的,因为9、10、11号键按下同样使第2行为低电平。为进一步确定具体键,不能使所有列线在同一时刻都处在低电平,可在某一时刻只让一条列线处于低电平,其余列线均处于高电平,另一时刻,让下一列处在低电平,依次循环,这种依次轮流每次选通一列的工作方式称为键盘扫描。

外部中断请求源:即外中断0和1,经由外部管脚引入的,在单片机上有两个管脚,名称为INT0、INT1,也就是P3.2、P3.3这两个管脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进行置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断,中断允许寄存器IE在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。

图1-3矩阵式键盘的结构

东北石油大学生产实习总结报告

第2章 单片机应用系统软件

2.1 STC下载软件

图2-1 总体方案原理框图

2.2 Keil软件

目前流行的51系列单片机开发软件是德国Keil公司推出的Keil C51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:μVision IDE集成开发环境(包括工程管理器①、源程序编辑器②、程序调试器③,C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及 Monitor-

51、RTX51实时操作系统。

东北石油大学生产实习总结报告

应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜Project-New Project…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group „Source Group1‟”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点close返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-Option forTarget „Target1‟(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“Creat Hex Fi”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。

2.3 外部电路驱动

1、串口

2、定时器

3、中断

东北石油大学生产实习总结报告

第3章 00-59秒计时器设计

3.1 电路原理图

图3-1电路原理图

3.2 设计原理

在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加 1,当秒计数达到 60 时,就自动返回到 0,从新秒计数。

对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对 10 整除和对 10 求余。

东北石油大学生产实习总结报告

在数码上显示,仍通过查表的方式完成。

一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到 1 秒时间为 1.002 秒。

图3-1 程序流程图

3.3 实现方法

系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。单片机的软件设计通常要考虑以下几个方面的问题:

(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;

(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。既便于调试、链接,又便于移植和修改;

(3)绘制程序流程图;(4)合理分配系统资源;

(5)为程序加入注释,提高可读性,实施软件工程;

东北石油大学生产实习总结报告

第4章 实习总结

4.1 实习体会

大约20天的的实习已经结束了,通过这次的实习锻炼了我们的实践能力,也是对我们以后的实际工作能力的具体训练和考察过程。现在是一个高科技的时代,单片机已经成为当今计算机应用中空前活跃的领域。因此对于我们这一专业的同学来说,学好单片机,并正确应用单片机是非常重要的。

此次单片机课程设计,从选题到定稿,从理论到实践,学到了很多的东西。同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。

4.2 设计硬件体会

设计过程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在整个设计中也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。

单片机实习虽然结束了,但通过实习所学到的东西将长久存在。相信这次单片机设计带给我们的严谨的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下一个更坚实的基础。

东北石油大学生产实习总结报告

参考文献

[1] 张占松,孙时生,伍言真.电路和系统的仿真实践.北京:科学出版社电路.202_年1月

[2] Akagi H.Kanazawa Y ,Nabe A.Instantaneous reactive power compensators comprising switching devices without energy storage components.IEEE Trans.Ind.Applicat.,1984,20(3).625-630 [3] Peng F Z, Akagi H,A H;Nabae A.A novel harmonic power filter.PESC Record,1988,1151-1159 [4] 朱东起,姜新建,马大铭.无源和有源滤波器构成的并联型综合电力滤波系统.北京:清华大学学报(自然科学版),1999,39(3):49-52 [5] 邓肖粤、胡晓云《EDA在电子技术教学中的应用》 《实验与探索》 202_年12月

[6] 张占松,孙时生,伍言真.电路和系统的仿真实践.北京:科学出版社电路.202_年1月

[7] 郑春龙.Pspice在数模混合电路分析中的应用. 电子技术.1999(12)[8] 纪良文,蒋静坪.机器人超声测距数据的采集与处理.电子技术应用.202_(4)

东北石油大学生产实习总结报告

附录1 实物图

东北石油大学生产实习总结报告

附录2 系统主要程序

#include

code unsigned char tab[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};// 0-9

unsigned char Shiwei;//定义十位 unsigned char Gewei;//定义个位 void delay(unsigned int cnt){ while(--cnt);} main(){ TMOD |=0x01;//工作在模式1,16位定时 TH0=(65535-45872)/256;TL0=(65535-45872)%256;IE= 0x82;//打开中断 TR0=1;

//打开定时开关

while(1)

{

P0=Shiwei;//显示十位

P1=0xdf;

delay(300);

//短暂延时

P0=Gewei;//显示个位

P1=0xef;

delay(300);

} }

/*

定时器中断函数

*/

东北石油大学生产实习总结报告

void tim(void)interrupt 1 using 1 { static unsigned char second,count;TH0=(65535-45872)/256;TL0=(65535-45872)%256;

count++;

if(count==20)

{

count=0;

second++;

//秒加1

if(second==60)

second=0;Shiwei=tab[second/10];//十位显示值处理

Gewei=tab[second%10];//个位显示处理

}

}

东北石油大学生产实习总结报告

第三篇:电子秒表设计文献综述

电子秒表设计文献综述

前言:古代人为了测定昼夜之别,发明了日晷、水钟及其他早起计时工具,到了13世纪,由于需要更可靠的计时工具,中世纪的工匠发明了机械钟,虽然已可满足都市生活的需求,但对于科学应用来说,还是不够精确。随着数字电路的发展,计时工具的精度越来越高,对日常生活及科学都产生较大影响,研究电子秒表不仅是了解电子秒表的工作原理,关键是对各种门电路功能的理解,对研究和设计大型数字电路有着深远的意义。

主题:运用TTL 系列逻辑门及时序逻辑芯片实现最小单位0.1秒的计时秒表。通过555定时器及电阻、电容组成秒信号发生器为由74LS192、74LS08、74LS02集成组成计时控制电路提供时钟信号。然后用74LS47作为译码驱动加到数码管显示。具体要求如下: 电子秒表电路可现实6位数,计时范围为0—9小时,精度为0.1秒 电子秒表能实现三种功能:计数、保持、清零

独立组装、调试电路,分析计数器的逻辑功能和特点

数字逻辑电路主要研究电路输出量与输入量间的逻辑关系, 按逻辑功能可分为组合逻辑电路和时序逻辑电路。数字逻辑电路研究分为两方面:逻辑分析和逻辑设计。前者所要完成的工作是, 通过分析找出电路的逻辑功能并用逻辑函数加以描述和评定。后者是根据给定的逻辑间题设计出最简的逻辑电路, 从研究的顺序看, 两者互为逆过程。555 定时器的功能主要由两个比较器决定。两个比较器的输出电压控制 RS 触发器和放电管的状态。在电源与地之间加上电压,当 5 脚悬空时,则电压比较器 C1 的同相输入端的电压为 2VCC /3,C2 的反相输入端的电压为VCC /3。若触发输入端 TR 的电压小于VCC /3,则比较器 C2 的输出为 0,可使 RS 触发器置 1,使输出端 OUT=1。如果阈值输入端 TH 的电压大于 2VCC/3,同时 TR 端的电压大于VCC /3,则 C1 的输出为 0,C2 的输出为 1,可将 RS 触发器置 0,使输出为 0 电平。

逻辑函数是数字电路(一种开关电路)的特点及描述工具,输入、输出量是高、低电平,可以用二元常量(0,1)来表示,输入量和输出量之间的关系是一种逻辑上的因果关系。仿效普通函数的概念,数字电路可以用逻辑函数的的数学工具来描述。

真值表是列出命题公式真假值的表。通常以1表示真,0 表示假。命题公式的取值由组成命题公式的命题变元的取值和命题联结词决定,命题联结词的真值表给出了真假值的算法。真值表是在逻辑中使用的一类数学表,用来确定一个表达式是否为真或有效。卡诺图是逻辑函数的一种图形表示。一个逻辑函数的卡诺图就是将此函数的最小项表达式中的各最小项相应地填入一个方格图内,此方格图称为卡诺图。卡诺图的构造特点使卡诺图具有一个重要性质:可以从图形上直观地找出相邻最小项。两个相邻最小项可以合并为一个与项并消去一个变量。卡诺图用相邻项“循环邻接”的方法描述输出函数与输入变量取值组合间关系的方格图。主要用于逻辑函数的化简。

逻辑图用符号图表示输出与输入间的逻辑关系。它是数字逻辑电路通用的电路表达形式, 既是逻辑分析对象, 也是逻辑设计结果。

在组合电路逻辑设计中, 问题往往是以文字表达的方式提出, 而将这一问题归结为一个逻辑问题则要利用真值表,再由真值表得到问题的逻辑函数式, 然后通过卡诺图化简, 最后得到设计结果—逻辑图。正是这些逻辑功能的描述方法构成了组合电路逻辑设计的基本方法, 由此可见逻辑功能描述在数字逻辑电路研究讨论中的重要性。熟悉逻辑功能描述是关键, 掌握分析方法是重点。逻辑分析与设计是以逻辑功能描述为基础, 只有掌握了逻辑抽象和逻辑功能描述要领, 才能掌握逻辑分析与设计的方法, 才能抓住关键、重点和本质, 收到事半功倍的学习效果。主要参考资料:

[1] 阎石.数字电子技术基础第四版[M].北京:高等教育出版社,1998 [2]康华光.电子技术基础数字部分.北京:高等教育出版社,1999 [3]余孟尝.数字电子技术基础简明教程第三版.北京:高等教育出版社,202_ [4]刘修文.实用电子电路设计制作.淮安:电子信息工程系,202_,69 [5] Ashkin A.Forces of a single-beam gradient laser trap on a dielectric sphere in the ray regime[J].Biophysical Journal,1992,61:569-582.[6]阎石.数字电子电路[M].北京:中央电大出版社,1993 [7]吴友宇.数字电子技术基础(第1版).北京:清华大学出版社,202_.5 [8]康华光.数字电子技术基础.武汉:高等教育出版社,202_.1. [9] 王永军,李景华.数字逻辑与数字系统[M](202_年版).北京:电子工业出版社,202_,57~78.[10] 白中英.数字逻辑与数字系统[M].(202_年版).北京:科学出版社,202_,78~89.[11]Desdevises Y.Morand S Oliver G Linking specialization to persification in the Diplectanidae Bychowsky [J].Springer-Verlag,202_,87:223-230.

第四篇:EDA数字秒表的设计

设 计 报 告——数字秒表的设计

EDA 一 设计目的

1.根据设计要求,完成对数字秒表的设计。

2.进一步加强对QuartusⅡ的应用和对Verilog HDL语言的使用。

二 设计内容和要求

1.计时精度应大于1/100S,计时器能显示1/100S的时间,提供给计时器内部定时的时钟频率应大于100Hz,这里选用KHz。

2.计时器的最大计时时间为1小时,为此需要6位的显示器,显示的最长时间为59分59.99秒。

3.设置有复位和起/停开关,复位开关用来使计数器清零,做好计时准备。起停开关的使用方法与传统的机械式计数器相同,即按一下,启动计时器开始计时,再按一下计时终止。

三 系统设计方案

自顶向下的设计自顶向下的设计方法是数字系统设计中最常用的设计方法.也是基于芯片的系统设计的主要方法。

自顶向下的设计方法利用功能分割手段将设计由上到下 进行层次话和模块化,及分层次、分模块进行设计和仿真。功能分割时,将系统功能分解为功能块,功能块再分解为逻辑块,逻辑块再分解为更少的逻辑块和电路。如此分割,逐步的将系统细化,将功能逐步的具体化,模块化。高层次设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细描述在下一设计层次说明,最底层的设计才涉及具体寄存器和逻辑门电路等实现方式的描述。四 模块设计 1.分频模块

将输入1KHZ的系统时钟经过十分频分为100HZ的单位时钟。编程原理跟计数器原理相似。

2.定时模块

采用2个60进制、1个100进制的BCD码全加器作为定时器,分为分,秒,百分秒,输入时钟信号为分频器输出信号100HZ时钟,外界两个拨码开关作为清零按钮和暂停按钮。

3.位选发生器:

根据显示的数据位和人眼暂留效应,设计显示分为分、秒、百分秒位,每位需要2个数码管进行显示,因此变化频率至少为300HZ,为了方便则采用1KHZ,循环码则从000循环到101。

4.多路选择器

根据位选信号,输出对应位显示的数据。

5.译码器

将多路选择器输出端的数据对应的转换为七段二进制数,送给显示器。

五 顶层原理图

以上所描述的模块的程序编写均在同一工程下,由程序生成的元件也在该工程下,所以可以在该工程下再建一原理图作为顶层,将所需要的元件按照要求进行连线,加入输入输出处端口并改名。包层原理图,并将原理图置为顶层文件。

由于我们的程序是写在一起的,所以本设计的整体原理图如图1所示:

qweclkINPUTVCCclkrstkey2instout_wei[7..0]out_duan[7..0]OUTPUTout_wei[7..0]rstINPUTVCCOUTPUTout_duan[7..0]key2INPUTVCC图1.实验原理图

六 系统仿真与引脚分配

本实验结果的仿真图与引脚分配如下图2

引脚分配

实验原理图

图2.实验结果仿真图与引脚分配

七 器件编程与硬件下载

1.在Quartus软件中为顶层文件选择好芯片类型,选择引脚后进行编译。

2.将实验箱端口与计算机相应端口连接,检测试验箱是否可以使用,经检测无误后,关闭试验箱,将主芯片标号对应顶层文件相应引脚标号连线到相应器件处。即输入时钟信号端接试验箱时钟发生电路CLK输出端(用50MHz信号),启动新号段与归零信号端分别接两个拨码开关,输出端count[2..0]分别接3/8译码器的SEL2—SEL0端,输出a,b,c,d,e,f,g,h端接显示译码器的相应输入端,连接好线后打开试验箱电源,将设计好的程序下载到试验箱的芯片上即可测试功能。八 总结及心得

1.总结

通过这次课程设计让我对EDA这门课有了更深刻的了解,对设计过程中困难重重现总结如: 在程序编写时,先要在心中规划一个大概流程,然后编写,经过与其他同学多次合作修改最终编译而成,在如何编写程序方面收获颇多;

在往开发板上导程序的时候,虽然出现了几次错误,但是只要有耐心,就能获得成功。2.心得体会

这次EDA课程设计,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当程序编写调试成功时,心里特别的开心。但在编写时,有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在同学的帮助下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学再次表示忠心的感谢!九 设计程序如下:

module qwe(clk,out_wei,out_duan,rst,key2);//key2==27pin input rst;input clk;input key2;output [7:0]out_wei;output [7:0]out_duan;reg [7:0]out_wei=8'b00000000;reg [7:0]out_duan=8'b00000011;//a b c d e f g dp reg [4:0]count;reg [3:0]count1;reg [14:0]count2;reg [7:0]sec_l=8'b00000011;reg [7:0]sec_h=8'b00000011;reg [7:0]fen_l=8'b00000011;reg [7:0]fen_h=8'b00000011;reg [7:0]msec_l=8'b00000011;reg [7:0]msec_h=8'b00000011;reg [3:0]s_1=0;reg [3:0]s_2=0;reg [3:0]s_3=0;reg [3:0]s_4=0;reg [3:0]s_5=0;reg [3:0]s_6=0;reg clk_out;reg pause;//信号

always@(posedge clk)begin if(count2==25000)

count2<=0;

clk_out<=~clk_out;end else count2<=count2+1;end always@(posedge clk_out)begin count<=count+1'b1;case(count)

:begin

end

3:begin

end

6:begin

//zero at first //fenpin begin //one of thousand secend 25000

//scan

out_wei<=8'b11111110;

out_duan<=msec_l;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;out_wei<=8'b11111101;out_duan<=msec_h;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;

out_wei<=8'b11110111;out_duan<=sec_l;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;

end

9:begin

out_wei<=8'b11101111;

out_duan<=sec_h;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

12:begin

out_wei<=8'b10111111;

out_duan<=fen_l;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

15:begin

out_wei<=8'b01111111;

out_duan<=fen_h;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

18:count<=0;endcase end

always@(negedge key2)begin

pause<=~pause;end

always@(posedge clk_out or negedge rst)begin //minite secend if(!rst)begin

s_1<=0;

s_2<=0;

s_3<=0;

s_4<=0;

s_5<=0;

s_6<=0;end else if(count1==10)begin //if 1s l+1

count1<=0;

if(s_6==9)begin

s_6<=0;

if(s_5==9)begin

s_5<=0;

if(s_1==9)begin

s_1<=0;

if(s_2==5)begin

s_2<=0;

if(s_3==9)begin

s_3<=0;

if(s_4==5)

s_4<=0;

else s_4<=s_4+1;

end else s_3<=s_3+1;

end else s_2<=s_2+1;

end else s_1<=s_1+1;

end else s_5<=s_5+1;

end else s_6<=s_6+1;

end

else if(pause==1)begin

count1<=count1+1;

end end //这下面全部是扫描显示用的。

always@(s_1 or s_2 or s_3 or s_4 or s_5 or s_6)begin

case(s_1)

0:sec_l=8'b11000000;

1:sec_l=8'b11111001;

2:sec_l=8'b10100100;

3:sec_l=8'b10110000;

4:sec_l=8'b10011001;

5:sec_l=8'b10010010;

6:sec_l=8'b10000010;

7:sec_l=8'b11111000;

8:sec_l=8'b10000000;

9:sec_l=8'b10010000;

default:sec_l=1'bx;

endcase

case(s_2)

0:sec_h=8'b11000000;

1:sec_h=8'b11111001;

2:sec_h=8'b10100100;

3:sec_h=8'b10110000;

4:sec_h=8'b10011001;

5:sec_h=8'b10010010;

6:sec_h=8'b10000010;

default:sec_h=1'bx;

endcase

case(s_3)

0:fen_l=8'b11000000;

1:fen_l=8'b11111001;

2:fen_l=8'b10100100;

3:fen_l=8'b10110000;

4:fen_l=8'b10011001;

5:fen_l=8'b01001001;

6:fen_l=8'b10010010;

7:fen_l=8'b10000010;

8:fen_l=8'b10000000;

9:fen_l=8'b10010000;

default:fen_l=1'bx;

endcase

case(s_4)

0:fen_h=8'b11000000;

1:fen_h=8'b11111001;

2:fen_h=8'b10100100;

3:fen_h=8'b10110000;

4:fen_h=8'b10011001;

5:fen_h=8'b01001001;

6:fen_h=8'b10010010;

default:fen_h=1'bx;

endcase

case(s_6)

0:msec_l=8'b11000000;

1:msec_l=8'b11111001;

2:msec_l=8'b10100100;

3:msec_l=8'b10110000;

4:msec_l=8'b10011001;

5:msec_l=8'b10011001;

6:msec_l=8'b10010010;

7:msec_l=8'b10000010;

8:msec_l=8'b10000000;

9:msec_l=8'b10010000;

default:msec_l=1'bx;

endcase

case(s_5)

0:msec_h=8'b11000000;

1:msec_h=8'b11111001;

2:msec_h=8'b10100100;

3:msec_h=8'b10110000;

4:msec_h=8'b10011001;

5:msec_h=8'b10011001;

6:msec_h=8'b10010010;

7:msec_h=8'b10000010;

8:msec_h=8'b10000000;

9:msec_h=8'b10010000;

default:msec_h=1'bx;

endcase end endmodule

第五篇:数字电路课程设计-电子秒表的设计

目录

1.引言

1.1设计目的------------------------2 1.2设计内容------------------------2 1.3设计要求------------------------2 2.数字电子秒表设计

2.1仪器设备------------------------3 2.2设计原理------------------------3 2.3电路设计及仿真------------------3 3.电路的硬件验证-------------------10 4.心得体会--------------------------12 5.参考文献--------------------------12

1.引言

1.1设计目的:

(1)掌握同步计时器74160、74161的使用方法,并理解其工作原理。(2)掌握74160、74161进行计数器、分频器的设计方法。

(3)掌握用三态缓冲器74244和74160,74138,7448进行动态显示扫描电路设计的方法。(4)掌握电子秒表的设计方法。

(5)掌握在EDA系统软件MAX+plusII环境下用FPGA/CPLD进行数字系统设计的方法,掌握该环境下功能仿真、时序仿真、管脚锁定的芯片下载的方法。(6)掌握用EDA硬件开发系统进行硬件验证的方法。

1.2设计任务内容:

(1)设计可控的计数器(定时器)、分频器、按键去抖电路和动态扫描显示电路;(2)设计系统顶层电路;

(3)进行功能仿真和时序仿真;

(4)对仿真结果进行分析,确认仿真结果达到要求;

(5)在EDA硬件开发系统上进行硬件验证与测试,确保设计电路系统能正确地工作。

1.3设计要求

(1)计时精度不小于1/100秒;(2)输入时钟:1khz;

(3)计时器最长计时时间为1小时;(4)具有复位和启/停开关;

(5)显示控制:动态六位七段LED显示,位选以三位编码输出。要求显示稳定,扫描显示的频率大于50hz;

(6)完成硬件验证测试工作;

2.数字电子秒表设计

2.1仪器设备

(1)十进制计数器74LS160,十六进制计数器74LS161;(2)3-8译码器74138(3)BCD-七段译码器7448(4)三态缓冲器74244(5)各种门电路,触发器 2.2设计原理

电子秒表的输入时钟为1KHz,将其十分频后得到100Hz的信号作为标准信号进行计数,则技术值得分辨率为1/100秒,正好满足系统的要求。计数器分为3级,第1级是一百进制计数器作1/100秒的计数,第2级是六十进制计数器作秒的计数,第3级是六十进制计数器作分的计数。电子秒表的计数受控制模块的控制,控制模块接收“起/停”按键则停止输入,当停止计数时,接收到“起/停”键是一个反复键。为了保证系统操作的可靠性,还设计了一个按键去抖动电路。2.3 电路设计及仿真

下图为电子秒表的顶层逻辑图,它由一个按键去抖电路keyin,一个控制器ctrl,一个时钟产生电路clkgen,一个计时电路cntblk,一个50000分频电路p_50000和显示译码电路disp组成。

keyinstart_stopclrINPUTVCCINPUTVCCctr1CLRCNTENST_STinst2key_in1key_out1clkkey_out2key_in2inst4cntblkp_50000clk_1INPUTVCCdispA[3..0]B[3..0]C[3..0]D[3..0]E[3..0]F[3..0]clkgenCLKDIV_10DIV_40instclkclk_fpinst5cntenA[3..0]clkB[3..0]clrC[3..0]D[3..0]E[3..0]F[3..0]inst1A[3..0]LED[7..1]B[3..0]S[2..0]C[3..0]D[3..0]E[3..0]CLKF[3..0]inst3OUTPUTOUTPUTLED[7..1]S[2..0]

按键去抖电路

DFFDFFNOTAND3OUTPUTkey_in1INPUTVCCDPRNQDPRNQkey_out178CLRN56CLRNclkINPUTVCCNOT4DFFDFFkey_in2INPUTVCCDPRNQDPRNNOTAND3OUTPUTQkey_out21718CLRN1415CLRNNOT13 按键去抖电路keyin如图所示。任何按键在触点接触和断开的瞬间都会产生机械抖动,如果不进行处理,每一次按键有可能产生若干次的响应,一般抖动的时间小于20ms。Keyin模块能完成对输入信号的去抖动处理,它利用两个串接的边沿D触发器来消除高频的抖动,当在CLK端输入一个频率为25Hz的方波信号时,其输出信号就能得到宽度固定为20ms的单脉冲信号。

下图为它的仿真波形图。

从图中可见,存在于输入信号上的抖动被完全的消除了。

控制器电路

6NOTDFFDPRNQOUTPUTCNTENST_STINPUTVCCCLRN1CLRINPUTVCCNOT7

控制器ctrl模块如上图所示。它在“启/停”信号ST_ST和复位信号CLR的作用下完成对计数使能信号CNTEN的控制。任何时候只要CLR=1,则CETEN=0,所以它是异步清零;ST_ST是一个反复键,当CLR无效时,每一个ST_ST脉冲都会使CETEN反向,该信号作用于 控制计时器的计时,当取值为1时允许计时器计时,当取值为0时不允许计时器计时。

下图为它的仿真波形图。

时钟产生电路

VCCVCCNOT74160LDNABCDENTENPCLRNCLKINPUTVCCinst74160LDNABCDENTENPCLRNGNDinst4QAQBQCQDRCOQAQBQCQDRCOAND3OUTPUTDIV_40inst5CLKCOUNTERCLKinst1COUNTERDIV_10OUTPUT

时钟产生电路clkgen模块如上图所示。它完成对输入时钟信号分频,并输出四十分频信号DIV_40和十分频信号DIV_10,即25Hz去抖动时钟信号和100Hz计时器标准计时信号。clkgen模块可方便的由中规模TTL集成电路74160实现。

下图为它的仿真波形图。

计时电路

NOTAND2111074160LDNABCDENTENPCLRNCLK174160A[0]A[1]A[2]A[3]74160B[0]B[1]B[2]B[3]74160C[0]C[1]C[2]C[3]cntenINPUTVCCQAQBQCQDRCOLDNABCDENTENPCLRNCLK2QAQBQCQDRCOLDNABCDENTENPCLRNCLK3QAQBQCQDRCOLDNABCDENTENPCLRNCLK4QAQBQCQDRCOD[0]D[1]D[2]D[3]COUNTERCOUNTERCOUNTERCOUNTERclkINPUTVCCclrINPUTVCCNOT74160LDNABCDENTENPCLRNCLK5E[0]E[1]E[2]E[3]74160LDNABCDENTENPCLRNCLK6F[0]F[1]F[2]F[3]NOTAND2151213QAQBQCQDRCOQAQBQCQDRCOOUTPUTA[3..0]OUTPUTOUTPUTOUTPUTOUTPUTOUTPUTB[3..0]C[3..0]D[3..0]E[3..0]F[3..0]COUNTERCOUNTER 计时电路cntblk模块如图所示。它在控制信号cnten和clr的作用下完成对输入的clk信号进行计数。由于clk信号是标准的100Hz信号,因此一百进制计数器的进位输出就是1秒,对秒进行六十进制计数就得到1分,对分又六十进制计数,所以最大计数值为59:59:59,因起始值是00:00:00,故其最大的计时长度为1小时。cntlk模块将输出计时结果。

下图为cntblk模块的仿真波形图。

50000分频电路

因为系统要求输入的是1KHz频率,而开发板的系统频率为5MHz,所以要对系统频率进行50000分频。这里选择用VHDl设计。代码如下:

library ieee;--定义库文件 use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;

entity p_50000 is port(clk:in std_logic;clk_fp:out std_logic);

end entity;

architecture one of p_50000 is signal n:integer range 0 to 24999;

signal cp:std_logic;

begin process(clk)

begin

if clk'event and clk='1' then

if n<24999 then

n<=n+1;else

n<=0;cp<=not cp;

end if;end if;end process;clk_fp<=cp;end one;其波形仿真如下:

显示译码电路

Y1742441GN1A11A21A31A4A[3..0]INPUTVCCA[0]A[1]A[2]A[3]Y274481Y11Y21Y31Y4ABCDLTNRBINBIN54B[3..0]INPUTVCCB[0]B[1]B[2]B[3]342GN2Y12A12Y22A22Y32A32Y42A4OCTAL BUF.OAOBOCODVCCOEOFOGRBONLED[1]LED[2]LED[3]LED[4]LED[5]LED[6]LED[7]OUTPUTLED[7..1]OUTPUTBCD TO 7SEGNAND2S[2..0]Y3C[3..0]INPUTVCC742441GN1A11A21A31A41Y11Y21Y31Y4instC[0]C[1]C[2]C[3]Y4D[0]D[1]D[2]D[3]74161LDNABCDENTENPCLRN74138QAQBQCQDRCOY0NAY1NBY2NCY3NG1Y4NG2ANY5NG2BNY6NY7N563:8 DECODERD[3..0]INPUTVCC2GN2Y12A12Y22A22Y32A32Y42A4OCTAL BUF.38Y1Y2Y3Y4Y5Y6VCCVCCY5742441GN1A11A21A31A41Y11Y21Y31Y4CLK51E[3..0]INPUTVCCE[0]E[1]E[2]E[3]Y6F[0]F[1]F[2]F[3]CLKCOUNTERGNDF[3..0]INPUTVCC2GN2Y12A12Y22A22Y32A32Y42A4OCTAL BUF.inst7INPUTVCC 显示译码电路disp模块如上图所示。该模块有三个功能,首先它完成对输入的6组向量信号的选择,其中被选择的信号由S[2..0]决定,即当S[2..0]=“00”时,选中A,“01”时选中B,“05”时选中F;其次它还对选中的信号进行BCD-七段显示的译码;再次要完成位选信号的产生于输出。下图为它的仿真波形图。disp模块中位选信号的产生只用了一个74161接成六进制计数器即可,为了实现对输入的6个信号的选择再用一个74244,利用它的三态功能实现该部分电路。

3.电路的硬件验证

如下图所示,把程序下载到开发板上并且将SW2拨到高电平,电子秒表开始工作。

拨动SW1到高电平可以将电子秒表置零,如下图。

把SW2拨到低电平再拨到高电平即可实现“暂停”,重复此操作即可继续计数。

4.心得体会

在此次课程设计中,我进一步了解并熟悉了数字电子器件的使用。同时在设计过程中也遇到了不少困难,比如50000分频电路中VHDL语言的编写与应用,对于VHDL我很是陌生,还好有同学的帮助,是我克服了这个困难。所以我认为要想做好这个课程设计,就必须认认真真地去做,不要怕麻烦。而且本次课程设计巩固和加深了我对电子线路基本知识和理解,提高了综合运用所学知识的能力。增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。本次的课程设计对我来说,是第一次自己运用所学的知识,理论联系实际,动手去做东西,对我来说,这将是一次宝贵的经历。

5.参考文献

[1]何伟 《现代数字系统实验及设计》 重庆大学出版社 202_ [2]阎石 《数字电子技术基础》 清华大学出版社 202_

    版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。

    本文地址:https://www.feisuxs.com/wenku/jingpin/1/2728120.html

相关内容

热门阅读
随机推荐