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

项目实现

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

计数器代码为

 always@(posedge CLK or negedge RSTn)
if(!RSTn)
Count1<='d0;
else if(Count1==TIME)
Count1<='d0;
else
Count1<=Count1+'b1;

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

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

 always@(posedge CLK or negedge RSTn)
if(!RSTn)
begin
FLAG<='b0;
TIME_MS<='b0;
    end
else if(Count1==TIME) if(TIIME_MS=='d10)
TIME_MS<='d0;
else if(TIME_MS>='d0&&TIME_MS<4'd5)
FLAG<='b0;
else if(TIME_MS>='d5&&TIME_MS<4'd10)
FLAG<='b1;
else
TIME_MS<=TIME_MS+'b1;

功能模块程序为

always@(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;
  

在数据拼接中同样的是

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

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

 module led_top_module
(
CLK,RSTn,LED_Out
);
input CLK;
input RSTn;
output [:] LED_Out; wire [:] LED_Out1;
module_yiwei_led U1
(
.CLK(CLK),
.RSTn(RSTn),
.LED_Out(LED_Out1)
); wire[:] LED_Out2;
module_xunhuan_led U2
(
.CLK(CLK),
.RSTn(RSTn),
.LED_Out(LED_Out2)
);
assign LED_Out={LED_Out1,LED_Out2};

rtl 视图为:

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

  1. led跑马灯多种方法(移位法,位拼接法,调用模块法,位移及位拼接语法,testbench的理解,源文件的存储路径,计数器的个数,调用模块的方式)

    跟着教程写了几种方法,才发现自己写的虽然能实现,但比较繁琐.教程有三种方法: 1.移位法,每次左移一位,相比我自己写的,优点是不用把每一种情况都写出来.但是需要考虑左移到最后一位时需要自己再写个赋值语 ...

  2. 使用java实现快速排序(挖坑填数法和指针交换法)

    快速排序:通过一趟排序,将数据分为两部分,其中一部分中的所有数据比另外一部分的所有数据要小,然后按照此方法,分别对这两部分进行排序,达到最终的排序结果. 每趟排序选取基准元素,比该基准元素大的数据放在 ...

  3. OC中如何把字典中的数据拼接成url字符串

    在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了.而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么 ...

  4. 大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 聚类分析算法)

    原文:(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 聚类分析算法) 本篇文章主要是继续上一篇Microsoft决策树分析算法后,采用另外一种分析算法对目标顾客群体的挖掘 ...

  5. python基础2 数据类型、数据拼接、数据转换

    一.数据类型 1.字符串 字符串英文string,简写str,只要是被[单/双/三引号]这层皮括起来的内容,不论那个内容是中文.英文.数字甚至火星文.只要是被括起来的,就表示是字符串类型 如:prin ...

  6. Json对象和字符串互相转换 数据拼接 JSON使用方式

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 一.JSON字符串转换为JSON对象: eval() 和 JSON.parse eg- json字符串: ...

  7. 从Exchager数据交换到基于trade-off的系统设计

    可以使用JDK提供的Exchager类进行同步交换:进行数据交换的双方将互相等待对方,直到双方的数据都准备完毕,才进行交换.Exchager类很少用到,但理解数据交换的时机却十分重要,这是一个基于tr ...

  8. Linux下串口操作之数据拼接

    串口操作中,特别以非阻塞的方式读取和发送数据,做好进程之间的同步很重要.有时我们会发现这样一个问题,在进行read操作时,一次read不能获得一个完整的数据帧,这就好比你买了一个电脑,送货的先把显示器 ...

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

    链表的构建事实上也就是不断插入节点的过程.而节点的插入能够分为头插法和尾插法. 头插法就是在头结点后插入该节点,始终把该节点作为第一个节点.尾插法就是在链表的最后一个节点处插入元素,作为最后一个节点. ...

随机推荐

  1. 关于eclipse中代码与SVN服务器关联问题

    今天开始开发新项目,此项目采用maven搭建,分多个工程,用eclipse的SVN插件检出工程之后只有一个工程,只好用桌面端的SVN工具检出,然后再import导入到eclipse中直接变成了多个工程 ...

  2. Java 序列化 JDK序列化总结

    Java 序列化 JDK序列化总结 @author ixenos Java序列化是在JDK 1.1中引入的,是Java内核的重要特性之一.Java序列化API允许我们将一个对象转换为流,并通过网络发送 ...

  3. Zeppelin使用Spark的yarn-client模式

    Zeppelin版本0.6.2 1. Export SPARK_HOME In conf/zeppelin-env.sh, export SPARK_HOME environment variable ...

  4. VS2010下编译sqlite3

    首先下载源码,http://www.sqlite.org/download.html中第一个下载文件就是,下载sqlite-amalgamation-3071000.zip,当前版本是3.7.10,里 ...

  5. kindeditor编辑器上传图片失败 错误 405.0解决办法(亲测)

    HTTP 错误 405.0 - Method Not Allowed(省略)editor/php/upload_json.php?dir=image物理路径 http://www.gdgoga.com ...

  6. 【转】CSS

    css概念 http://www.cnblogs.com/moveofgod/archive/2012/09/18/2691101.html css八大功能 http://developer.51ct ...

  7. sqlite增删改查

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  8. easyDialog弹窗+zTree部门选择

    写一个父页面方法,将name和id赋值 function show(name,id) { $("#deptnoID").val(name); $("#deptnoId&q ...

  9. Spring.net 学习IOC------通过构造器注入

    别的不多说,咱们先上代码 1> object.xml 的文件内容 <?xml version="1.0" encoding="utf-8" ?> ...

  10. webAppRootKey

    web.xml中webAppRootKey ------------------------------------------------------------------------------ ...