1、 基于CPLD的数字秒表设计,应用Verilog 语言编写源程序,用Quartus对程序编译、仿真。最终下载至已焊接组合好的电路中应用。实物元件清单: 印制电路板一块电阻(1K的4个,10K的7个,220的11个)三极管4个芯片ALTERA 的EPM7064SL-44基对应插槽1对按键3个数码管(共阴极)1个晶振1个下载线,电源线若干 电路原理图: 核心控制部分:功率放大显示部分:电路工作原理:印制板电路主要分为两部分,即核心控制部分和数码显示部分。通过Quartus软件将源程序下载至电路芯片中,接通电源,由晶振提供震源,在数码显示部分(功率放大部分)显示数字秒表,通过三个按键来控制秒表显示状
2、态。三、设计程序 系统总体框图数字秒表主要有分频器、计数模块、功能控制模块、势能控制模块和显示输出模块组成。系统框图下图所示(只显示程序部分)。各部分源程序及说明 (一)分频模块设计所用晶振提供12MHz的震源,通过分频将其转化为要求的100Hz,程序如下:module int_div(clock,clk_out);/I/O口声明input clock; /输入时钟output clk_out; /输出时钟/内部寄存器reg clk_p_r; /上升沿输出时钟reg clk_n_r; /下降沿输出时钟regF_DIV_WIDTH - 1:0 count_p; /上升沿脉冲计数器0 count_
3、n; /下降沿脉冲计数器/参数-分频系数parameter F_DIV = 120000; /分频系数-修改这里parameter F_DIV_WIDTH = 32; /分频计数器宽度wire full_div_p; /上升沿计数满标志wire half_div_p; /上升沿计数半满标志wire full_div_n; /下降沿计数满标志wire half_div_n; /下降沿计数半满标志/判断计数标志位置位与否assign full_div_p = (count_p F_DIV - 1);assign half_div_p = (count_p 1) - 1);assign full_d
4、iv_n = (count_n assign half_div_n = (count_n /时钟输出assign clk_out = (F_DIV = 1) ? clock : (F_DIV0 ? (clk_p_r & clk_n_r) : clk_p_r);/上升沿脉冲计数always (posedge clock)begin if(full_div_p) begin count_p = count_p + 1b1; if(half_div_p) clk_p_r = 1b0; else end else= 0; clk_p_r end/下降沿脉冲计数always (negedge clock
5、) if(full_div_n) count_n = count_n + 1 if(half_div_n) clk_n_r clk_n_r endmodule(二)计数模块计数模块中,时钟信号是100 Hz作为秒表的百分秒输入,百分秒为100进制计数器,其进位输出作为秒的计数时钟,秒为60进制计数器。控制信号控制计数器的开始、停止和至零。(三)数码显示模块:module decl7s(d,seg); /模块名decl7sinput3:0 d; /输入4位二进制码output7:0 seg; /七段译码输出reg7:0 seg_r; /定义数码管输出寄存器assign seg = seg_r;
6、/输出数码管译码结果 always (d) case(d) /七段译码 4h0:seg_r = 8hc0; /显示0h1:hf9; /显示1h2:ha4; /显示2h3:hb0; /显示3h4:h99; /显示4h5:h92; /显示5h6:h82; /显示6h7:hf8; /显示7h8:h80; /显示8h9:h90; /显示9ha:h88; /显示ahb:h83; /显示bhc:hc6; /显示chd:ha1; /显示dhe:h86; /显示ehf:h8e; /显示f endcase 同时通过控制信号示系统处在不同的功能状态:系统时间运行状态,系统时间至零状态,时钟正常显示状态。利用功能转
7、换信号实现3个功能状态之间的转换,并产生相应的控制信号去控制显示输出模块不同状态的正确显示。 九遇到问题的解决方案 1. 焊接时,由于三极管的管脚距离太近,焊接时很容易管脚发生连焊,于是我们通过把电烙铁侧拿、只用一个角与三极管和焊锡接触,以此来避免出现管脚相连的现象发生。2.焊好后,JTAG接口无法正常下载程序(经检查,是当时焊接时,烙铁温度过高,导致一个管脚的焊盘脱落,不导电所致),于是通过先把芯片放在别人的能下载的电路板上下载程序,然后再放到我们的电路板上,结果表明:下载好程序的芯片放在本电路上,能够正常工作。4.编译通过后,下载到硬件上之后,发现承租并没有达到预期的效果。如显示乱序而没有
8、规律等等,当加入适当的选通信号或者脉冲后发现问题得到了解决,所以必须在实践中不断修改已得到正确结论。5高电平有效还是低电平有效,这是一个非常容易忽视的问题,有时就知道这个端口要控制信号但不考虑好什么电平有效,造成错误,使得使能端或者清零端的出现错误控制信号。并且到底是脉冲控制,还是边沿控制一定要清楚。在实验时候可以避免一些不必要的麻烦。6.引脚重复使用也是一个问题,有时候输出信号必须输出到一个特定的引脚。而输出来自两路信号,这时候必须加入一个选择器件选择输出信号输出。在实际调试的时候我们必须耐心思考,遇到问题针对问题出现的原因认真思考以解决问题。十总结 这是一次综合性很强的实验,从最初的模型规
9、划,到具体功能的实现,再到电路的连接,直至最后的电路调试,每一个环节都让我加深了对实际问题的思考,同时也让我动手能力有了很大的提高。这次最大的收获就是学会了很系统地去解决一个实际问题,学会了巧妙运用模块化的思想。在整个电路设计与实现中,最成功的地方就是有条理地将功能细化,分成一个一个小的功能来实现。没做好一个小功能实现的电路,就将其集成为一块具有此功能的芯片,这样,在之后的电路连接中就只要将这块芯片接入即可,最后就这样一级一级地将电路集成,最后生成的电子钟电路就只是一块芯片,只要加一些其他外部控制开关与显示电路就能实现此多功能电子钟的各功能。在这个过程中,我更深刻地体会从分立元件到中下规模集成电路再到大规模集成电路的组成过程。同时也更加深入地了解了Quarter2这一软件的更多的功能。更重要的是在此过程中,我学会了独立思考,遇到问题一步一步去研究与解决解决,对于电路出现的问题不急于拆线,而是一部分一部分地对其应有的功能进行调试,对问题进行各个击破。总而言之,这次实验让我觉得受益匪浅,不再觉得学无所用。实验所解决的问题与生活紧密相连,从而将平时学书本上的理论与实践很好地结合起来,最终当做出成品时,有很大的成就感。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1