流水灯实验

开发板上有一排LED灯,共26个,LEDR17-LEDR0-LEDG7-LEDG0;

实现以1s间隔从左至右流,循环不断~

完整代码如下(用的依旧是自动生成的模板):

//=======================================================
//  This code is generated by Terasic System Builder
//=======================================================

module LED_Test(
    //////////// CLOCK //////////
    CLOCK_50,
    RSTn,
    //////////// LED //////////
    LEDG,
    LEDR
);
//=======================================================
//  PORT declarations
//=======================================================

//////////// CLOCK //////////
input                          CLOCK_50;
input                            RSTn;
//////////// LED //////////
output             [8:0]        LEDG;
output            [17:0]        LEDR;

//=======================================================
//  Structural coding
//=======================================================

//-----------------------定时器模板--------------------------
//----1MS定时器parameter T1MS = 16‘d49_999;
reg    [15:0]    Count1;
[email protected](posedge CLOCK_50 or negedge RSTn)
    if(!RSTn)
        Count1 <= 16‘d0;
    else if(Count1 == T1MS)
        Count1 <= 16‘d0;
    else
        Count1 <= Count1 + 1‘b1;        

//----1S定时器
reg    [9:0]    Count_MS;
[email protected](posedge CLOCK_50 or negedge RSTn)
    if(!RSTn)
        Count_MS <= 10‘d0;
    else if(Count_MS == 16‘d1000)
        Count_MS <= 10‘d0;
    else if(Count1 == T1MS)
        Count_MS <= Count_MS + 1‘b1;
  //----------------------------------------------------------
//---------------------流水灯实现---------------------------
reg    [26:0]    rLED;

[email protected](posedge CLOCK_50 or negedge RSTn)
    if(!RSTn)
        rLED <= 27‘b1000_0000_0000_0000_0000_0000_00;
    else if(Count_MS == 16‘d1000)
        begin
            if(rLED == 27‘b0000_0000_0000_0000_0000_0000_001)    //首尾交接处
                rLED <= 27‘b1000_0000_0000_0000_0000_0000_000;
            else if(rLED == 27‘b0000_0000_0000_0000_0100_0000_000)   //红绿LED交接处
                rLED <= 27‘b0000_0000_0000_0000_0001_0000_000;
            else
                rLED <= {1‘b0,rLED[26:1]};
        end
//-----------------------------------------------------------------

// 输出赋值
assign LEDR = rLED[26:9];
assign LEDG = {1‘b0,rLED[7:0]};  //由于LEDG8跟它们一排LED不在同一排,所以就分出来置零好了

endmodule
时间: 2024-10-13 19:29:54

流水灯实验的相关文章

MiS603开发板 第四章 流水灯实验

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第四章 流水灯实验 关于流水灯,网上有太多的例子了.其实只要掌握上面分频计数的技巧,设计流水灯是件极其简单的事情.从

FPGA流水灯实验

源代码下载地址: http://pan.baidu.com/s/14H8D4 FPGA流水灯实验 花了几天通过流水灯实验把学习的verilogHDL的建模技巧总结了一下.写一份总结,给自己制定一套规范,方便以后查看和解决问题. 实现目标: 通过流水灯的实验实现了串行工作,流水线工作(时间并行),并行流水线工作(空间并行).串行工作是CPU的工作方式,也就是一个时间只能做一件事.通过verilogHDL完全可以模仿这种工作方式,也就是说通过CPU实现的算法和驱动程序完全可以转换成对应的verilo

51流水灯实验

  课程名称:_单片机原理与应用 专业班级: 嵌入式14103班 姓    名:_赵存档       _ __ 学    号:_14160310317    __     2015-- 2016   学年第  1 学期     实验项目( 一 ) — 预习报告 项目 名称 LED高低电平交替闪烁程序 实验 目的 及 要求 1. 正确安装keil软件 2. 在 Proteus 的环境下,设计硬件原理图: 3.在keil 集成环境下设计C语言程序: 4. 在 Proteus 的环境下,将硬件原理图与

Nios学习笔记2——流水灯实验

回到quartus,我们新建一个Verilog文件,将之前复制的代码粘贴进去,保存文件为led.v.为了后面的编译,需要将nioscpu的Quartus IP File(.qip)加入项目中,点击Assignments->Settings,在File中将nioscpu.qip加入,如下图所示,点击Add,再点击OK. 接下来,我们建立锁相环PLL,给Nios提供时钟. 单击Tools->MegaWizard Plug-In Manager,点击Next,如图所示,搜索PLL,选择ALTPLL,

【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块

实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务.为此,流水灯实验作为低级建模II的动土仪式再适合不过了.废话少说,我们还是开始实验吧. 图1.1 实验一建模图. 如图1.1 所示,实验一有名为 led_funcmod的功能模块.如果无视环境信号(时钟信号还有复位信号),该功能模块只有一组输出端,亦即4位LED信号.接下来让我们来看具体内容: led_funcmod.v 1. module led_funcmod2. (3. input CLOCK, RESET,4. output

四位流水灯Led_4

流水灯实验是我们学习开发板或语言的入门程序,通过流水灯这个可视化的实验,会增加我们对学习语言的乐趣, 会让我们觉得其实语言也是可以玩出花样的,接下来呈上代码,大家可以下到自己的板子里试试,. //Led_4.v module Led_4(clk,rst,led); input clk; input rst; output [3:0] led; reg [3:0] led; always @(posedge clk or negedge rst) begin if(!rst) begin led

Tiny4412之C语言实现流水灯,Tiny4412裸机程序[3]

在前边我们使用汇编完成了一个流水灯实验: Tiny4412汇编流水灯代码,Tiny4412裸机LED操作 但是,汇编语言可读性太差,在这一节我们用 C语言来实现了同样的功能,而以后的试验也尽量用 C语言实现. 我们在编写上位机程序时,C语言程序执行的第一条指令,并不在main函数中.生成一个 C程序的可执行文件时,编译器通常会在我们的代码中加上几个被称为启动文件的代码—— crtl.o .crti.o.crtend.o .crtn.o 等,它们是标准库文件.这些代码设置C程序的堆栈等,然后调用

FPGA 流水灯

VerilogHDL那些事儿_建模篇(黑金FPGA开发板配套教程) 作者:akuei2 说明:参照该书将部分程序验证学习一遍 学习时间:2014年5月2号 主要收获: 1. 对FPGA有初步了解: 2. 功能模块和控制模块: 3. 并行操作的思维: 4. 使用"并行操作"进行流水灯实验. FPGA是什么? 1. 一个很好的比喻是:FPGA是"一堆乐高积木",而Verilog是"搭积木的手".FPGA并没有实际的形状,要通过Verilog描述出形状

永远的流水灯(Verilog)

1. 为了更好地学习FPGA和深入理解Verilog语法,首先从最简单的流水灯做起.虽然简单,但是也包含了不少知识.通过这次实验项目,可以了解开发软件的使用及Verilog的编程方法,熟悉模块化设计的方法. 2. 该项目主要实现的功能为: (1)10位的流水灯 (2)中间两个led灯每隔100ms闪烁一次 (3)两边的led灯每隔100ms流动一下,从中间向两边流水. 3.  具体实现如下 (1)首先定义一个时间计数寄存器counter,每当达到预定的100ms时,计数寄存器就清零,否则的话寄存