循环移位法和数据拼接法基于led

功能描述 让led每隔0.5s从两边向中间闪烁,然后在从中间向两边闪烁,不断循环

项目实现

开发板 晶振为50M,那么达到0.5s时计数器count1需要达到24_999_999这么多次数

计数器代码为

1 [email protected](posedge CLK or negedge RSTn)
2 if(!RSTn)
3     Count1<=28‘d0;
4 else if(Count1==TIME)
5     Count1<=28‘d0;
6 else
7     Count1<=Count1+1‘b1;

可以让前5个led进行循环移位法 后五位进行数据拼接法

循环移位法:先让led灯进行循环右移当达到2.5s时让其反向移动,当到达5s时初始化为0    可以设置一个标志位 在0~2.5s时设置FLAG为0,在2.5~5秒时设置FLAG置一

 1 [email protected](posedge CLK or negedge RSTn)
 2 if(!RSTn)
 3     begin
 4         FLAG<=1‘b0;
 5         TIME_MS<=4‘b0;    end
 6 else if(Count1==TIME) 8         if(TIIME_MS==4‘d10)
 9             TIME_MS<=4‘d0;
10         else if(TIME_MS>=4‘d0&&TIME_MS<4‘d5)
11              FLAG<=1‘b0;
12        else if(TIME_MS>=4‘d5&&TIME_MS<4‘d10)
13              FLAG<=1‘b1;
14         else
15             TIME_MS<=TIME_MS+1‘b1;

功能模块程序为

[email protected](posedge CLK or negedge RSTn)
if(!RSTn)
  rLED_Out<=5‘d1;
else if(!FLAG)  rLED_Out<=rLED_Out>>1;else if(FLAG)  rLED_Out<=rLED_Out<<1;  

在数据拼接中同样的是

[email protected](posedge CLK or negedge RSTn)
if(!RSTn)
    rLED_Out<=5‘b10000;
else if(Count==TIME)
    begin
        if(!FLAG)
            rLED_Out<={1‘b0,[4:1]rLED_Out};//应为rLED_Out[4:1]
        else if(FLAG)
            rLED_Out<={[3:0]rLED_Out,1‘b0};
    end

然后在顶层模块中组合起来

 1 module led_top_module
 2 (
 3    CLK,RSTn,LED_Out
 4 );
 5 input CLK;
 6 input RSTn;
 7 output [9:0] LED_Out;
 8
 9 wire [4:0] LED_Out1;
10 module_yiwei_led U1
11 (
12 .CLK(CLK),
13 .RSTn(RSTn),
14 .LED_Out(LED_Out1)
15 );
16
17 wire[9:5] LED_Out2;
18 module_xunhuan_led U2
19 (
20 .CLK(CLK),
21 .RSTn(RSTn),
22 .LED_Out(LED_Out2)
23 );
24 assign LED_Out={LED_Out1,LED_Out2};

rtl 视图为:

时间: 2024-12-18 21:56:17

循环移位法和数据拼接法基于led的相关文章

单链表的头插法和尾插法c语言实现

/*单链表的头插法和尾插法c语言实现*/ #include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 100/*简单的定义一个链表节点的数据单元*/typedef struct student_t{ int num; char name[SIZE]; struct student_t* pNext;}studentList, *pStudentList; /*定义一个全局的静态的链表头节点指针

简练软考知识点整理-ABC成本法和ABC分析图法

ABC成本法即基于活动的成本计算法,ABC成本法主要用于对现有流程的描述和成本分析.ABC成本法和价值链分析法有某种程度的相似,都是将现有的业务进行分解,找出基本活动.但作业成本分析法着重分析各个活动的成本,特别是活动中所消耗的人工.资源等. 通过对作业成本的确认和计量,以及对所有作业活动的追踪和动态反映,从而消除"不增值作业".改进"可增值作业",将企业的损失.浪费减少到最低限度,提高决策.计划.控制的科学性和有效性,促进企业管理水平的不断提高. ABC分析图法又

大端法和小端法

引言 在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 16 位为基本存储单元的).对于跨越多个字节的数据类型(比如 int 长 4 个字节),如何在内存中对这些字节进行排序有两种常见的方法:大端法(Big-endian)和小端法(Little-endian) [注]首先不管是大端法还是小端法存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址. 基本概念 高位放在低地址就是大端法

链表的头插法和尾插法

链表的头插法和尾插法 本文的链表均是带头结点的链表. 链表可以说是最简单的链式结构,在C语言中,通常用结构体封装其数据域及指针域作为一个结点. 今天我们说的是链表结点的构造方式以及插入方式. 尾插法 1 //尾插法 2 3 void createlistR(LNode *&C,int a[],int n){ 4 LNode *s,*r; 5 int i; 6 C = (LNode*)malloc(sizeof(LNode)); 7 C->next = NULL; 8 r = C; 9 for

Android与服务器端数据交互(基于SOAP协议整合android+webservice)

此文出自:http://www.cnblogs.com/zhangdongzi/archive/2011/04/19/2020688.html 上一节中我们通过http协议,采用HttpClient向服务器端action请求数据.当然调用服务器端方法获取数据并不止这一种.WebService也可以为我们提供所需数据, 那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起. 我们在PC机器java客

C实现头插法和尾插法来构建单链表(不带头结点)

链表的构建事实上也就是不断插入节点的过程.而节点的插入能够分为头插法和尾插法. 头插法就是在头结点后插入该节点,始终把该节点作为第一个节点.尾插法就是在链表的最后一个节点处插入元素,作为最后一个节点.假设想要了解链表的概念和其它链表操作.请參考<数据结构与算法之链表><C语言实现链表的基本操作>两篇文章.演示样例代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsert . // // main.c // Hea

采用头插插法和尾插法建立单项链表

PS: 来源2014年数据结构联考复习指导 Page27. #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; const int END_INPUT = -1; typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; LinkList CreatList1(LinkList

C实现头插法和尾插法来构建链表

链表的构建其实也就是不断插入节点的过程.而节点的插入可以分为头插法和尾插法.头插法就是在头结点后插入该节点,始终把该节点作为第一个节点.尾插法就是在链表的最后一个节点处插入元素,作为最后一个节点.如果想要了解链表的概念和其他链表操作,请参考<数据结构与算法之链表><C语言实现链表的基本操作>两篇文章.示例代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsert . // // main.c // HeadIns

C实现头插法和尾插法来构建非循环双链表(不带头结点)

在实际使用中,双链表比单链表方便很多,也更为灵活.对于不带头结点的非循环双链表的基本操作,我在<C语言实现双向非循环链表(不带头结点)的基本操作>这篇文章中有详细的实现.今天我们就要用两种不同的方式头插法和尾插法来建立双链表.代码上传至  https://github.com/chenyufeng1991/HeadInsertAndTailInsertDoubleList  . 核心代码如下: //尾插法创建不带头结点的非循环双向链表 Node *TailInsertCreateList(No