栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

FPGA实现LED流水灯

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

FPGA实现LED流水灯

例程1

源文件

module led_run(
    Clk,                                  //clk, 表示时钟信号
    Reset_n,                              //reset表示复位,  _n表示低电平有效
    Led
    );
    input Clk;
    input Reset_n;
    
    output reg [7:0] Led;
    
    reg [24:0]counter;                    //reg,表示一个D触发器
    
    always@(posedge Clk or negedge Reset_n)   //posedge,表示上升沿;negedge,表示下降沿
    if(!Reset_n)
        counter <= 0;
    else if(counter == 25000000 - 1)
        counter <= 0;
    else
        counter <= counter + 1'b1;
        
    always@(posedge Clk or negedge Reset_n)
    if(!Reset_n)
        Led <= 8'b0000_0001;
    else if(counter == 25000000 - 1)
    begin
        if(Led == 8'b1000_0000)
            Led <=  8'b0000_0001;
        else
            Led <= Led << 1;
    end
    
endmodule

仿真文件

`timescale 1ns / 1ns

module led_run_tb;

    reg Clk;
    reg Reset_n;
    wire [7:0] Led;

    led_run(
        .Clk(Clk),                                  //clk, 表示时钟信号
        .Reset_n(Reset_n),                              //reset表示复位,  _n表示低电平有效
        .Led(Led)
    );

    initial Clk = 1;
    always #10 Clk = ~Clk;
    
    initial 
    begin
        Reset_n = 0;
        #201;
        Reset_n = 1;
        #4000000000;
    end

endmodule

 例程2

源文件,仿真文件与例1相同

module led_run(
    Clk,                                  //clk, 表示时钟信号
    Reset_n,                              //reset表示复位,  _n表示低电平有效
    Led
    );
    input Clk;
    input Reset_n;
    
    output reg [7:0] Led;
    
    reg [24:0]counter;                    //reg,表示一个D触发器
    parameter MCNT = 25'd24999999;       //parameter:定义参数;MCNT:相当于C语言的变量
    
    always@(posedge Clk or negedge Reset_n)   //posedge,表示上升沿;negedge,表示下降沿
    if(!Reset_n)
        counter <= 0;
    else if(counter == MCNT)
        counter <= 0;
    else
        counter <= counter + 1'b1;
        
    always@(posedge Clk or negedge Reset_n)
    if(!Reset_n)
        Led <= 8'b0000_0001;
    else if(counter == MCNT)
    begin
        if(Led == 8'b1000_0000)
            Led <=  8'b0000_0001;
        else
            Led <= Led << 1;
    end

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号