• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

流水灯控制设计Verilog代码VIVADO仿真

08/07 14:09
459
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2406241S4595b.doc

共1个文件

名称:流水灯控制设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

流水灯控制

1.设计要求

设计能让一排灯(8只)自动改变显示花样的控制系统。可将实验板上的一排发光二极管作为彩灯用。控制器应有两种控制方式:

◆ 规则变化。变化节拍有0.5秒和0.25秒两种,交替出现,每种节拍可有8种花样,各执行或二个周期后轮换。彩灯变化方向有单向移动,双向移动,跳跃移动等。

◆ 随机变化。变化花样相同,但节拍及花样的转换都随机出现。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1.工程文件

2.程序文件

3.程序运行

4.管脚约束(xdc)

5.Testbench

6.仿真图

整体仿真图,前半部分为0.25s的变化频率,后半部分为0.5s的变化频率

8种变化效果

1、2

3、4

5、6

7、8

部分代码展示:

`timescale?1ns?/?1ps
//////////////////////////////////////////////////////////////////////////////////
//?Company:?
//?Engineer:?
//?
//?Create?Date:?2016/03/25?23:33:57
//?Design?Name:?
//?Module?Name:?paomadeng
//?Project?Name:?
//?Target?Devices:?
//?Tool?Versions:?
//?Description:?
//?
//?Dependencies:?
//?
//?Revision:
//?Revision?0.01?-?File?Created
//?Additional?Comments:
//?
//////////////////////////////////////////////////////////////////////////////////
module?paomadeng(
????input?clk,
????input?reset,
????output?reg?[15:0]?light
????);
reg?[1:0]?speed=2'd0;
reg?[6:0]?led_count=7'b1111111;
always@(posedge?led_clk)
if(reset==1)begin
????led_count<=6'd0;
????speed<=2'd0;
end
????else?
????????if(led_count==7'd127)
????????????begin
????????????????led_count<=6'd0;
????????????????speed<=speed+2'd1;
????????????end
????????else?begin
????????????????led_count<=led_count+6'd1;
????????????????speed<=speed;????????
????????end
reg?[4:0]?div_cnt=5'd0;
always@(posedge?clk)
????if(reset==1)
????????div_cnt<=5'd0;
????else
????????div_cnt<=div_cnt+5'd1;
wire?clk_1;
wire?clk_2;
wire?clk_3;
wire?clk_4;
assign?clk_1=div_cnt[1];
assign?clk_2=div_cnt[2];
assign?clk_3=div_cnt[3];
assign?clk_4=div_cnt[4];
reg?led_clk=0;
always@(posedge?clk)
????case(speed)
????????2'b00:led_clk<=clk_1;
????????2'b01:led_clk<=clk_2;
????????2'b10:led_clk<=clk_3;
????????2'b11:led_clk<=clk_4;
????????default:;
????endcase
reg?[15:0]?huayang_1=16'b1000000000000000;
always@(posedge?led_clk)
????if(huayang_1==16'b1000000000000000)
????????huayang_1<=16'b0000000000000001;
????else
????????huayang_1[15:0]<={huayang_1[14:0],huayang_1[15]};
reg?[15:0]?huayang_2=16'b0000000000000001;
always@(posedge?led_clk)
????if(huayang_2==16'b0000000000000001)
????????huayang_2<=16'b1000000000000000;
????else
????????huayang_2[15:0]<={huayang_2[0],huayang_2[15:1]};
reg?[15:0]?huayang_3=16'b1000000000000001;
always@(posedge?led_clk)
????if(huayang_3==16'b1000000000000001)
????????huayang_3<=16'b0000000110000000;
????else?begin
????????huayang_3[15:8]<={huayang_3[14:8],huayang_3[15]};

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=900

  • 2-2406241S4595b.doc
    下载

相关推荐