- 44
- 0
- 约7.48千字
- 约 9页
- 2016-05-27 发布于重庆
- 举报
verilog实验报告流水灯数码管秒表交通灯
流水灯
实验目的:
在basys2开发板上实现LED灯的花样流水的显示,如隔位显示,依次向左移位显示,依次向右移位显示,两边同时靠中间显示。
实验仪器:
FPGA开发板一块,计算机一台。
实验原理:
当一个正向的电流通过LED时,LED就会发光。当阳极的电压高于阴极的电压时,LED就会有电流通过。当在LED上增添一个典型值为1.5V—2.0V之间的电压时,LED就会有电流通过并发光。
实验内容:
顶层模块:输入信号:clk_50MHz(主时钟信号),rst(重置信号),输出信号:[7:0] led(LED灯控制信号)。
module led_top(clkin,rst,led_out);
input clkin, rst;
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)
begin
if(rst) begin
cnt=0;
clkout=0; end
else if(cnt= begin
cnt=0;
clkout=!clkout; end
else cnt=cnt+1;
end
endmodule
亮灯信号模块:
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;
else state=state+1;
always@(state)
case(state)
3b000:ledout=8b0000_0001;
3b001:ledout=8b0000_0010;
3b010:ledout=8b0000_0100;
3b011:ledout=8b0000_1000;
3b100:ledout=8b0001_0000;
3b101:ledout=8b0010_0000;
3b110:ledout=8b0100_0000;
3b111:ledout=8b1000_0000;
endcase
endmodule
实验中存在的问题:
1 芯片选择问题
automotive spartan3E
XA3S100E XA3S250E CPG132
spartan3E
XC3S100E XC3S250E CP132
2 时序逻辑部分,阻塞赋值和非阻塞赋值混用
always@(posedge clk)
begin
a=b+c;
d=e+f;
end
3 UCF文件格式错误
NET “CLK” LOC = “B8”;
NET “a” LOC = “N11”;
NET “b” LOC = “G13”;
NET “c[0]” LOC =“K11;
数码管
实验目的:
设计一个数码管动态扫描程序,实现在四位数码管上动态循环显示“1”、“2”“3”“4”;
实验仪器:
FPGA开发板一块,计算机一台。
实验原理:
实验内容:
数码管显示模块:输入端口dataone,datatwo,datathree,datafour,clk,rst,输出端口current_state, digit_select;
module display_scan(current_showdata, scan_current_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);
code_change d3(datath
原创力文档

文档评论(0)