数电大作业论文
目录
一、摘要
二、概述
三、总体方案介绍
四、硬件电路设计
五、逻辑设计
六、总结与展望
1
一、摘要
通过数电大作业——电子秒表的设计,我们可以对数电教材中的知识有一个更加系统的掌握,将理论与实际有机的结合在一起。
为了电子秒表的设计,我们查阅了文献、研究了FLEX10K芯片,研究了计数状态机,了解到了74系列一些器件的性能及参数,用Verilog HDL语言描述了计数状态机、计数器、译码器、数码管。用protel99se绘制了硬件部分原理图和pcb图。用max+plusII实现逻辑部分的编写,用flex10k20实现了仿真。 二、概述
我们设计的电子秒表,虽然功能比较单一,但是用起来会很方便。随着人们生活水平的日益提高,社会体系的日益完善,人们对于各种应用器材的要求也越来越高.秒表作为日常生活中,特别是体育运动中应用的特别广泛,所以精确且方便使用的秒表就被越来越多的人所选择.本秒表计时器用于体育竞赛及各种要求有较精确时的各领域。此计时器是用一块专用的芯片,用VerilogHDL语言描述的。它具有开关、时钟和显示功能,其体积小,携带方便。
市场上的一款秒表
工作安排:首先有一个整体构想,选定各个器件。接下来,进行逻辑设计实现仿真。然后进行硬件设计,画出原理图及pcb图。期间我们需要查阅各种器件知料,以及各种产品例子。 三、总体方案介绍
我们设计的秒表有两个按钮,按钮k1由于启动和停止秒表,按钮k2用于停止时复位秒表。该秒表的最小计时时间为0.1秒。
0.1秒CLK获得原理:用555 定时器构成多谐振荡器,获得频率为50HZ 的矩形波信号。计数器74LS160接成五进制形式,对频率为50HZ 的时钟脉冲进行五分频,在输出端QD 取得周期为0.1S 的矩形脉冲。
计数器:用74LS160构成十进制、六十进制计数器。 数码管显示:以7446驱动共阳数码管。
控制器选择的是FLEX10K:FLEX系列可编程逻辑器件是美国Altera公司主力推出的产品。FLEX10K是该系统器件中的典型代表。与许多PLD器件一样,它有在线可配置(ISR)功能和高密度、高速度的优点;作为工业界第1个嵌入式PLD,它还采用重复可构造的CMOSSRAM工艺,把连续的快速通道互连与独特嵌入式阵列结构相结合,来完成普通门阵列的宏功能。每个FLEX10K器件还1包括个
2
嵌入式阵列和1个逻辑阵列,能让设计人员轻松地开发集成存储器、数字信号处理器及特殊逻辑功能等强大的功能于一身的芯片。图1为其结构图。FLEX10K主要由逻辑阵列(logicarray)、嵌入式阵列(EAB)构成。其中,逻辑阵列是由多个逻辑阵列块(LAB)组成的,而每个逻辑阵列块(LAB)又包含8个逻辑单元(logicelement),在每行、列互连通道的两端都有输入/输出单元(IOE)。
3
秒表原理框图
控制器状态图
4
状态S0:如果输入K1=0,转移到状态S1,输出JS=1,CLR=0 如果输入K1=1,转移到状态S0,输出JS=0,CLR=0 如果输入K2=0,转移到状态S2,输出JS=0,CLR=1 状态S1:如果输入K1=0,转移到状态S0,输出JS=0,CLR=0 如果输入K1=1,转移到状态S1,输出JS=1,CLR=0
状态S2:如果输入K1=0,转移到状态S0,输出JS=0,CLR=0
四、硬件电路设计
原理图(第一次设计)
5
pcb图
6
(第二次设计)
五、逻辑设计 状态机
module kongzhiqi(js,CLR,K1,K2,clk1); output js,CLR; input clk1,K1,K2; reg js,CLR;
reg [1:0]state,next_state;
parameter s0=2'b00,s1=2'b01, s2=2'b10; always@(posedge clk1)
7
begin state<=next_state;end always@(state or K1 or K2) begin
case(state)
s0:begin js<=0;CLR<=0;
if(!K1) begin next_state<=s1;end else begin next_state<=s0;end if(!K2)begin next_state<=s2;end end
s1:begin js<=1;CLR<=0;
if(K1) begin next_state<=s1;end
else if(!K1)begin next_state<=s0;end else begin next_state<=s0;end end
s2:begin js<=0;CLR<=1;
if(!K1)begin next_state<=s0;end end endcase end
endmodule 仿真
说明:K1和K2均为低电平有效。K1第一次按下进入状态1——计数,第二次按下进入状态0——暂停。K2在暂停情况下按下,进入状态2——复位。 计数器
module jshu (CLK, CLR, EN, CQ, JINWEI); input CLK,CLR,EN; output[3:0] CQ; output JINWEI; reg[3:0] CQ,CQI; reg JINWEI;
always @(posedge CLK) begin : u1
if (RST == 1'b1) begin
8
CQI={4{1'b0}}; end begin
if(EN==1'b1) begin
if (CQI<9) begin
CQI=CQI+1; end else begin
CQI={4{1'b0}}; end end end
if (CQI==9) begin
JINWEI<=1'b1 ; end else begin
JINWEI<=1'b0 ; end
CQ<=CQI ; end endmodule 仿真
说明:CLR,EN,JINGWEI均为高电平有效。有EN=1输入,开始计数,EN=0时计数停止。CLR=1清零。当计数到10时,进位产生高电平。 数码管
module bcd(ag,hex); output[6:0]ag; input[3:0]hex; reg[6:0]ag;
always@(hex) begin case(hex)
9
4'd0:ag=7'b0000001; 4'd1:ag=7'b1001111; 4'd2:ag=7'b0010010; 4'd3:ag=7'b0000110; 4'd4:ag=7'b1001100; 4'd5:ag=7'b0100100; 4'd6:ag=7'b0100000; 4'd7:ag=7'b0001111; 4'd8:ag=7'b0000000; 4'd9:ag=7'b0000100; 4'd10:ag=7'b0001000; 4'd11:ag=7'b1100000; 4'd12:ag=7'b0110001; 4'd13:ag=7'b1000010; 4'd14:ag=7'b0110000; 4'd15:ag=7'b0111000; endcase end endmodule
仿真
说明:译码器可以将二进制代码显示在数码管上。 引脚锁定
10
顶层图
11
六、总结与展望
通过本次课程设计,我了解数字秒表的主体电路组成及工作原理,熟悉了集成电路及有关电子元器件的使用,学习和掌握数字电路中基本状态机、计数、译码显示等单元电路的综合应用。真正体验了一个简单系统设计的复杂性.好多的东西没有真正的理解,导致许多错误产生,不过也真正的学到了东西,虽然系统的某些功能还不是很完善,到终究是自己的努力产生的成果。希望以后可以继续学习与制作,将理论联系实际,融与实际,一便能更好的理解。
本次课程设计,我对数字电子技术有了更进一步的熟悉,一个看似很简单的电路,要动手把它设计出来就很困难了,因而要把课本上所学的知识和实际联系起来;同时通过本次电路的设计,我不但巩固了所学知识,也使我们把理论与实际从真正意义上结合起来,增强了学习的兴趣,考验了我们借助互联网搜集、查阅相关文献资料和组织材料的综合能力。
该次设计实验,在老师的认真指导下,基本完成。但是在某些方面,我还是做的不够,尤其是在设计调试过程中个位到十位进位调试不成功,希望下次能够改正。
最近几年,科学发展很快,渗透在工农业生产的许多领域。通过大作业的设计我们有了更深的认识,只有在设计制作过程中不断地学习才能有更新的进步,不论在什么地方,什么岗位我们都要以学习为主,学以致用,才能把我们的工作做得更好。
12
心得体会
总体部分
作为此次设计的负责人,我感觉责任重大。当我们选定秒表设计这个题目后,我便开始查找有关资料,来决定将如何设计秒表。
首先,我为了实现逻辑设计,我画出了秒表的状态图,并大致敲定了总体结构框图。接下来,我查找了数电教材,看用什么计数器来实现秒表的0.1s位和10s位,最终我决定用74LS160j计数器来实现10进制。在译码器选择方面,我用了7446.显示方面我用了七段共阳数码管。我们用的是5V电源。在课堂上,老是曾经讲过220V交流电转换为5V直流电的方法。于是我便用老是所传授的知识——将220V交流电经过变压器变压,四个二极管桥式整流,一个电容器进行滤波和7805进行稳压。于是便得到了5V直流电源管。在CLK时钟提供方面,我遇到了很大困难。我需要产生一个0.1s时钟来使秒表进行正常工作。经过查阅书籍,上网查资料,最终我决定用555来产生一个50Hz的时钟,然后再对其进行5分频,最终实现0.1s的时钟。由于要用到FPGA芯片,我在网上查阅了一些PFGA芯片的相关资料,于是我便得出了最初的总体硬件框图,但经过逻辑仿真后,我发现自己的硬件设计不太令人满意,于是我便仿照老师“延迟开关”的例子重新设计了一下硬件部分。这次总体硬件部分差强人意。至次逻辑框图与总体硬件部分我便全部射箭完成。
设计期间感谢老师指导和同学们的建议。通过这次设计使我对输电知识有了一个更加深层次的认识和理解。
13
逻辑部分
秒表的逻辑设计很难,从开始设计到仿真成功一共用去了我4天时间。起初因为我对verilogHDL语言不熟悉,而造成状态机编译时总是出错。后来经过反复不断地研究检查发现原来是少输入了一个分号。但是在编译通过后,波形仿真又出现了错误,仿真出来的波形并不是我所设想的波形。当计数电平起作用一段时间在按下K1使其暂停计数后,第三次按K1时无法继续计数。经过对状态机逻辑的分析才发现原因。在做了改正以后,终于可以使状态机正常工作——第一次按下K1开始计时时,第二次按下K1暂停计时,如果在按一次K1则继续计时,否则按下K2则清零。
在计数器的语言描述过程中。由于忽略了进制问题。结果导致仿真数码管以十六进制显示。后来经过改正终于可以以十进制显示。译码器的语言描述并未遇到什么障碍,而且是一次成功,这令我很欣慰。
最后经过将所有块连接,总仿真,及引脚锁定。下载到FPGA芯片过程中。我未注意到FLEX10K20是低电频有效而没有仿真成功,但经过询问老是对电平进行修改之后,终于得到了想要的结果,在仿真成功的一刹那,我真的很高兴,经过自己的努力终于实现了秒表的逻辑部分。
在此过程中,我还要感谢老是的耐心指导和同学们的热情帮助,是他们让我少走了许多弯路,并使我最终取得了成功!
14
硬件部分
这次大作业和课程设计,我主要负责硬件方面,主要内容就是画电路板,包括原理图和PBC图。第一次画我觉得难度挺大的。
第一次,我花了3天的时间,把自己设计的电路图先化成原图,然后再生成PBC图,由于第一次画,对protell99se这个软件不是很熟悉,很多功能都不知道,于是我就自己买了本书照着书上一步一步地画,最后原理图是画出来了,可是生成PCB图的时候产生了很多错误,改正这些错误可不是件容易的事。由于自己画的原理图,很多封装都得自己画,可又不知道实际器件的大小。于是就凭着自己的感觉画,最后画好后整体一比较,发现有些原件太小,有些元件太大,使得整个板不是那么美观,最主要的是仔细想想发现自己画的电板根本不能用。
于是就开始重画,第二次画图老师给的元件里封装什么的都有了,比第一次好画很多,也可能是“一回生,二回熟”吧。出现的一些小错误也很快解决了。对这个软件的慢慢熟悉,操作起来也得心应手了。一上午的时间就把前三天的工作全部做完了,做完归做完,可仍有很多方面不足,又因为面临着考试,时间比较紧张,所以很多方面都存在着不足之处。
刚开始画的时候,真是无从下手,看着就发愁,不过还是一步一步过来了,现在想想,也就那么回事。当初认为很艰难的东西经历过后就发现那个过程其实挺美好的。虽然好几个晚上都是大半夜睡觉,大早上五点的起床继续画。不过天下没有免费的午餐,不努力哪会有收获。以后在各个方面都应该这样,只有经过不懈的努力才会有长足的进步。
15