百秒内任意设置倒计时秒表,Verilog编程,basys2开发板_第1页
百秒内任意设置倒计时秒表,Verilog编程,basys2开发板_第2页
百秒内任意设置倒计时秒表,Verilog编程,basys2开发板_第3页
百秒内任意设置倒计时秒表,Verilog编程,basys2开发板_第4页
百秒内任意设置倒计时秒表,Verilog编程,basys2开发板_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DDPP课程设计099秒可设置倒计时器的简单设计与实现本设计基于Xilinx ISE Design Suite 13.2软件开发平台和其综合工具进行099秒可设置倒计时器数字电路的功能设计,在FPGA BSSYS2开发板上来完成设计的测试和实现。I、总体RTL SCHEMATIC:端口说明:CLK_IN为50MHZ时钟输入;PAUSE 计时暂停;RESET 计时重置;S1,S0为重置时设置的倒计时的高位和次高位的起始值;QA_OUT连接到数码管阳极;QC_OUT连接到八段数码管(含小数点)阴极; 图 1 RTL SCHEMATIC整体图图 2 RTL SCHEMATIC细节图II、源程序1) 主模块顶层程序top.v:module top(CLK_IN,RESET,PAUSE,S1,S0,QC_OUT,QA_OUT);input CLK_IN,RESET,PAUSE; input 3:0 S1,S0;output 7:0 QC_OUT;output 3:0 QA_OUT;wire CLK_OUT;wire CLK2_OUT;wire 3:0 Q1,Q2,Q3,Q4;wire 7:0 Q1_OUT,Q2_OUT,Q3_OUT,Q4_OUT;frediv f1(CLK_OUT,CLK2_OUT,CLK_IN); source_counter_1 c1(Q1,Q2,Q3,Q4,CLK_OUT,RESET,PAUSE,S1,S0);display d1(Q1_OUT,Q1);display2 d2(Q2_OUT,Q2);display d3(Q3_OUT,Q3);display d4(Q4_OUT,Q4);coordination o1(QC_OUT,QA_OUT,Q1_OUT,Q2_OUT,Q3_OUT,Q4_OUT,CLK2_OUT);endmodule2) 分模块具体程序1、 分频模块frediv.vmodule frediv(CLK_OUT,CLK2_OUT,CLK_IN);output CLK_OUT,CLK2_OUT;input CLK_IN;/50MHZ输入reg 18:0 cn;/19位计数器wire CLK_OUT;wire CLK2_OUT;initial begin cn=0;endalways (posedge CLK_IN)beginif(cn=499999)begin cn=0; endelse cn=cn+19d1;endassign CLK_OUT=cn18;/输出100HZ,作为四位数码管赋值模块时钟输入assign CLK2_OUT=cn15;/输出800HZ,作为数码管扫描频率endmodule2、 对四位数码管赋值模块 source_counter_1.vmodule source_counter_1(Q1,Q2,Q3,Q4,CLK,RESET,PAUSE,S1,S0);input CLK,RESET,PAUSE;input 3:0 S1,S0;output 3:0 Q1,Q2,Q3,Q4;reg 3:0 Q1,Q2,Q3,Q4;reg 3:0 N,M;always (posedge CLK )begin case (S1)4d0: N=4d0;4d1: N=4d1;4d2: N=4d2;4d3: N=4d3;4d4: N=4d4;4d5: N=4d5;4d6: N=4d6;4d7: N=4d7;4d8: N=4d8;4d9: N=4d9;default :N=4d9;endcasecase(S0)4d0: M=4d0;4d1: M=4d1;4d2: M=4d2;4d3: M=4d3;4d4: M=4d4;4d5: M=4d5;4d6: M=4d6;4d7: M=4d7;4d8: M=4d8;4d9: M=4d9;default :M=4d9;endcase/高位和次高位的起始值预置if(RESET=1) begin Q1=N;Q2=M;Q3=4d0;Q4=4d0;end/RESET重置else if(PAUSE=1) begin Q1=Q1;Q2=Q2;Q3=Q3;Q4=Q4; end/PAUSE 暂停else if (Q4=0)begin Q4=4d9;if(Q3=0) begin Q3=4d9;if(Q2=0)begin Q2=4d9;if(Q1=0)begin Q1=N;Q2=M;Q3=4d0;Q4=4d0;endelse Q1=Q1-4d1;endelse Q2=Q2-4d1; endelse Q3=Q3-4d1; end else Q4=Q4-4d1;/对四位数码管依次赋值,类似于递减1的计数器endEndmodule3、 译码显示模块 3.1:display.vmodule display(Q_OUT,Q);input 3:0 Q;output 7:0 Q_OUT;reg 7:0 Q_OUT;always(Q)begincase (Q)4d0:Q_OUT=8b11000000;/共阳极数码管4d1:Q_OUT=8b11111001;4d2:Q_OUT=8b10100100;4d3:Q_OUT=8b10110000;4d4:Q_OUT=8b10011001;4d5:Q_OUT=8b10010010;4d6:Q_OUT=8b10000010;4d7:Q_OUT=8b11111000;4d8:Q_OUT=8b10000000;4d9:Q_OUT=8b10010000;default :Q_OUT=8b11111111;/数码管的小数点DP段码不点亮endcaseendEndmodule3.2:display2.vmodule display2(Q_OUT,Q);input 3:0 Q;output 7:0 Q_OUT;reg 7:0 Q_OUT;always(Q)begincase (Q)4d0:Q_OUT=8b01000000;4d1:Q_OUT=8b01111001;4d2:Q_OUT=8b00100100;4d3:Q_OUT=8b00110000;4d4:Q_OUT=8b00011001;4d5:Q_OUT=8b00010010;4d6:Q_OUT=8b00000010;4d7:Q_OUT=8b01111000;4d8:Q_OUT=8b00000000;4d9:Q_OUT=8b00010000;default :Q_OUT=8b01111111;/数码管的小数点DP段码点亮,endcaseend其中,3.1和3.2的区别在于数码管的小数点DP段码的点亮与否 ,在top模块的调用时保证其整体上显示为Q1Q2.Q3Q4形式,即只有Q2通过display2来译码,其他三个通过Display来译码。4、 数码管动态扫描显示模块coordination.v (此处coordination意思是把动态扫描显示时数码管阳、阴极协调起来)module coordination(QC_OUT,QA_OUT,Q1,Q2,Q3,Q4,CLK);input 7:0 Q1,Q2,Q3,Q4;input CLK;output 7:0 QC_OUT;output 3:0 QA_OUT;reg 1:0cn;reg 7:0 QC_OUT;reg 3:0 QA_OUT;initial begin cn=2d0;endalways(posedge CLK)begin if(cn=2d3) cn=2d0;else cn=cn+2d1;case(cn) 2d0:begin QC_OUT=Q1;QA_OUT=4b1110;end/数码管阳极端为三极管输入低态有效 2d1:begin QC_OUT=Q2;QA_OUT=4b1101;end2d2:begin QC_OUT=Q3;QA_OUT=4b1011;end2d3:begin QC_OUT=Q4;QA_OUT=4b0111;enddefault :begin QC_OUT=7b1111111;QA_OUT=4b1111;endendcaseend /通过case语句将数码管阳、阴极协调起来,保证在某一时/间点,4个数码管中只有一个能有效显示。Endmodule III、用户约束文件top.ucfNET CLK_IN LOC = B8;NET PAUSE LOC = G12;NET QA_OUT0 LOC = K14;NET QA_OUT1 LOC = M13;NET QA_OUT2 LOC = J12;NET QA_OUT3 LOC = F12;NET QC_OUT0 LOC = L14;NET QC_OUT1 LOC = H12;NET QC_OUT2 LOC = N14;NET QC_OUT3 LOC = N11;NET QC_OUT4 LOC = P12;NET QC_OUT5 LOC = L13;NET QC_OUT6 LOC = M12;NET RESET LOC = A7;NET CLK_IN IOSTANDARD = LVCMOS33;NET PAUSE IOSTANDARD = LVCMOS33;NET QA_OUT0 IOSTANDARD = LVCMOS33;NET QA_OUT1 IOSTANDARD = LVCMOS33;NET QA_OUT2 IOSTANDARD = LVCMOS33;NET QA_OUT3 IOSTANDARD = LVCMOS33;NET QC_OUT0 IOSTANDARD = LVCMOS33;NET QC_OUT1 IOSTANDARD = LVCMOS33;NET QC_OUT2 IOSTANDARD = LVCMOS33;NET QC_OUT3 IOSTANDARD = LVCMOS33;NET QC_OUT4 IOSTANDARD = LVCMOS33;NET QC_OUT5 IOSTANDARD = LVCMOS33;NET QC_OUT6 IOSTANDARD = LVCMOS33;NET RESET IOSTANDARD = LVCMOS33;NET S00 LOC = P11;NET S01 LOC = L3;NET S02 LOC = K3;NET S03 LOC = B4;NET S10 LOC = G3;NET S11 LOC = F3;NET S12 LOC = E2;NET S13 LOC = N3;NET S00 IOSTANDARD = LVCMOS33;NET S01 IOSTANDARD = LVCMOS33;NET S02 IOSTANDARD = LVCMOS33;NET S03 IOSTANDARD = LVCMOS33;NET S10 IOSTANDARD = LVCMOS33;NET S11 IOSTANDARD = LVCMOS33;NET S12 IOSTANDARD = LVCMOS33;NET S13 IOSTANDARD = LVCMOS33;# PlanAhead Generated physical constraints NET QC_OUT7 LOC = N13;# PlanAhead Generated IO constraints NET QC_OUT7 IOSTANDARD = LVCMOS33;IV、程序仿真测试文件test_top.vmodule test_top;reg CLK_IN;reg RESET;reg PAUSE;reg 3:0 S1;reg 3:0 S0;wire 7:0 QC_OUT;wire 3:0 QA_OUT;top uut (.CLK_IN(CLK_IN), .RESET(RESET), .PAUSE(PAUSE), .S1(S1), .S0(S0), .QC_OUT(QC_OUT), .QA_OUT(QA_OUT); parameter PERIOD = 20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论