verilog实验报告流水灯数码管秒表交通灯_第1页
verilog实验报告流水灯数码管秒表交通灯_第2页
verilog实验报告流水灯数码管秒表交通灯_第3页
verilog实验报告流水灯数码管秒表交通灯_第4页
verilog实验报告流水灯数码管秒表交通灯_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、流水灯实验目的:在basys2开发板上实现LED灯的花样流水的显示,如隔位显示,依次向左移位显示,依次向右移位显示,两边同时靠中间显示。实验仪器:FPGA开发板一块,计算机一台。实验原理:当一个正向的电流通过LED时,LED就会发光。当阳极的电压高于阴极的电压时,LED就会有电流通过。当在LED上增添一个典型值为1.5V2.0V之间的电压时,LED就会有电流通过并发光。实验内容:顶层模块:输入信号:clk_50MHz(主时钟信号),rst(重置信号),输出信号:7:0 led(LED灯控制信号)。module led_top(clkin,rst,led_out);input clkin, rs

2、t;output 7:0 led_out;wire clk_1hz;divider_1hz d0(clkin, rst, clk_1hz);led l0(clk_1hz, rst, led_out);endmodule分频模块:module divider_1hz(clkin,rst,clkout);input clkin,rst;output reg clkout;reg 24:0 cnt;always(posedge clkin, posedge rst)beginif(rst) begincnt=0;clkout=0; endelse if(cnt=24999999) begincnt=

3、0;clkout=!clkout; endelse cnt=cnt+1;endendmodule亮灯信号模块:module led(clkin,rst,led_out);input clkin,rst;output 7:0 led_out;reg 2:0 state;always(posedge clkin, posedge rst)if(rst)state=0;elsestate=state+1;always(state)case(state)3b000:ledout=8b0000_0001;3b001:ledout=8b0000_0010;3b010:ledout=8b0000_0100;

4、3b011:ledout=8b0000_1000;3b100:ledout=8b0001_0000;3b101:ledout=8b0010_0000;3b110:ledout=8b0100_0000;3b111:ledout=8b1000_0000;endcaseendmodule实验中存在的问题:1 芯片选择问题automotive spartan3EXA3S100E XA3S250E CPG132spartan3E XC3S100E XC3S250E CP1322 时序逻辑部分,阻塞赋值和非阻塞赋值混用always(posedge clk)begina=b+c;d=e+f;end3 UCF

5、文件格式错误NET “CLK” LOC = “B8”;NET “a” LOC = “N11”;NET “b” LOC = “G13”;NET “c0” LOC =“K11;数码管实验目的:设计一个数码管动态扫描程序,实现在四位数码管上动态循环显示“1”、“2”“3”“4”;实验仪器:FPGA开发板一块,计算机一台。实验原理:实验内容:数码管显示模块:输入端口dataone,datatwo,datathree,datafour,clk,rst,输出端口current_state, digit_select;module display_scan(current_showdata, scan_cu

6、rrent_state, rst, dataone, datatwo, datathree, datafour, clk_scan ); output reg 7:0 current_showdata; output reg 3:0 scan_current_state; input rst, clk_scan; input 3:0 dataone, datatwo, datathree, datafour; wire 7:0 data1,data2,data3,data4; code_change d1(dataone,data1); code_change d2(datatwo,data2

7、); code_change d3(datathree,data3); code_change d4(datafour,data4);parameter stateone = 4b0111, statetwo = 4b1011, statethree = 4b1101, statefour = 4b1110;always(posedge rst or posedge clk_scan) beginif(rst) scan_current_state = stateone;else case(scan_current_state)stateone:begin scan_current_state

8、 = statetwo;current_showdata = data2; endstatetwo:begin scan_current_state = statethree;current_showdata = data3; endstatethree:begin scan_current_state = statefour;current_showdata = data4; endstatefour:begin scan_current_state = stateone;current_showdata = data1; enddefault:begin scan_current_stat

9、e = stateone; current_showdata = data1; endendcaseend endendmodule2、译码模块module code_change(datain, dataout); output 7:0 dataout; input 3:0 datain; reg 7:0 dataout; always(datain) case(datain)1: dataout = 8b10011111;2: dataout = 8b00100101;3: dataout = 8b00001101;4: dataout = 8b10011001;5: dataout =

10、8b01001001;6: dataout = 8b01000001;7: dataout = 8b00011111;8: dataout = 8b00000001;9: dataout = 8b00001001;0: dataout = 8b00000011; endcaseendmoduleVerilog HDL常见错误:1、进程赋值语句的左侧变量没有声明为寄存器变量;2 、begin-end没有匹配3 、写二进制数时忘了标记数基(即b)。这样,编译器会认作十进制数4、 inlclude和表示数基的语句使用了错误的撇号;5 、声明语句的末尾忘了写分号秒表实验目的:设计一个秒表,0.001s

11、作为扫描时钟,0.01秒作为百分秒时钟。实验仪器:FPGA开发板一块,计算机一台。实验原理:把0-99的BCD码计数过程转化成BCD码计数的百分秒、分等过程。实验内容:分频模块 divider (0.001s作为扫描时钟,0.01秒作为百分秒时钟);module miaobiao(mh,ml,sh,sl,msh,msl,clk,clr,pause); output 3:0 mh,ml,sh,sl,msh,msl; input clk,clr,pause; reg 3:0 mh,ml,sh,sl,msh,msl; reg cn1,cn2;秒表计时模块 (百分秒模块 秒模块 分模块);百分秒模块:

12、always(posedge clk,posedge clr) begin if(clr) begin msh=0;msl=0;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,posedge clr) begin if(clr) begin sh=0;sl=0;cn2=0;end else begin if(sl

13、=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 end 分模块always(posedge cn2,posedge clr) begin if(clr) begin mh=0;ml=0;end else begin if(ml=9) begin ml=0; if(mh=5) begin mh=0;end else mh=mh+1; end else begin sl=sl+1;end end endendmoduleVerilog HDL常见错误:1

14、、进程赋值语句的左侧变量没有声明为寄存器变量;2 、begin-end没有匹配3 、写二进制数时忘了标记数基(即b)。这样,编译器会认作十进制数4、 inlclude和表示数基的语句使用了错误的撇号;5 、声明语句的末尾忘了写分号交通灯实验目的:设计十字路口交通灯控制器,A方向和B方向各设红(R)、黄(Y)、绿(G)三个灯,3个灯按合理的顺序亮灭,并将亮灯的时间以到计时的形式显示出来。实验仪器:FPGA开发板一块,计算机一台。实验原理实验内容:两个方向各种灯亮的时间能够进行设置和修改,此外,假设B方向是主干道,车流量大,因此B方向通行的时间应该比A方向长。交通灯控制器的状态转换表见表5.1-1

15、。表中,1表示灯亮,0表示灯不亮。A方向和B方向的红黄绿分别用R1、Y1、G1、R2、Y2、G2来表示。表5.1-1 交通灯控制器状态转换表从状态表中可以看出,每个方向3盏灯依次按如下顺序点亮,并不断循环:绿灯-黄灯-红灯并且每个方向红灯亮的时间应该与另一个方向绿灯、黄灯亮的时间相等。黄灯所起的作用是用来在绿灯后进行缓冲,以提醒行人该方向马上要禁行了。在使能控制信号(EN)控制时系统工作,并且要求有两个控制输入信号:即复位信号(Reset)和备用模式设置信号(Standby),在复位信号控制时,两个方向均为红灯,在备用模式设置信号控制时,两个方向均为黄灯。module traffic(CLK,

16、EN,LAMPA,LAMPB,ACOUNT,BCOUNT,Reset,Standby);output7:0 ACOUNT,BCOUNT;output2:0 LAMPA,LAMPB;input CLK,EN,Reset,Standby;reg7:0 numa,numb;reg tempa,tempb;reg1:0 counta,countb;reg7:0 ared,ayellow,agreen,bred,byellow,bgreen;reg2:0 LAMPA,LAMPB;always (EN)if(!EN)beginared=8d40;ayellow=8d5;agreen=8d25;bred=8

17、d30;byellow=8d5;bgreen=8d35;endassign ACOUNT=numaassign BCOUNT=numb;always (posedge CLK)beginif(EN)beginif(!tempa)beginif(Reset) begin LAMPA=4;numa=8b11111111;endelse if(Standby) begin LAMPA=2;numa=8b11111111;endelse begintempa=1;case(counta)0: begin numa=agreen; LAMPA=1;counta=1;end1: begin numa=ar

18、ed; LAMPA=4;counta=2;end2: begin numa=ayellow; LAMPA=2;counta=0;enddefault: LAMPA=4;endcaseendendelse if(Reset) begin tempa=0;LAMPA=4;numa=8b11111111;endelse if(Standby) begin tempa=0;LAMPA=2;numa1) beginif(numa3:0=0) beginnuma3:0=4b1001;numa7:4=numa7:4-4b0001;endelse numa3:0=numa3:0-4b0001;if(numa=

19、2) tempa=0;endendelse beginLAMPA=3b100;counta=0;tempa=0;endendalways (posedge CLK)beginif(EN)beginif(!tempb)beginif(Reset) begin LAMPB=4;numb=8b11111111;endelse if(Standby) begin LAMPB=2;numb=8b11111111;endelse begintempb=1;case(countb)0: begin numb=agreen; LAMPB=1;countb=1;end1: begin numb=ared; LAMPB=4;countb=2;end2: begin numb=ayellow; LAMPB=2;countb=0;enddefault: LAM

温馨提示

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

最新文档

评论

0/150

提交评论