功能描述 让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. cout 格式化的一些方法

    cout格式化的方式有很多,和C中的printf相比较,在实现方式上更加容易理解. 1.计数进制. 1.十六进制:hex 2.八进制:oct 3.十进制:dec(默认) 在控制进制的时候,可以使用两种 ...

  2. HDU 5884 Sort

    二分,验证. 二分$k$,然后进行验证.有一个地方需要注意一下:如果$n$个数,每次合并$k$个,最后一次不能合$k$个,那么一开始需要补$0$之后再合并才是最优的.合并的时候用优先队列合并时间复杂度 ...

  3. CSU 1806 Toll

    最短路,自适应$Simpson$积分. 看了别人的题解才知道有个东西叫自适应$Simpson$积分. 有这样一个积分公式:$\int_a^b {f(x)dx}  \approx \frac{{b - ...

  4. umount: /home: device is busy

    转自:umount: /home: device is busy 取消挂载/home时出现umount: /home: device is busy,原因是因为有程序在使用/home目录,我们可以使用 ...

  5. NTFS 读写高手进阶 - Windows 格式硬盘 Mac存文件

    常识:硬盘格式:FAT32 - WIndows 硬盘分区格式, 有点通用性高, 缺点不支持单个大于 4G 的文件. exFAT - Windows 硬盘分区格式, 兼容性低. 稳定性不如 FAT32. ...

  6. php笔记(六)PHP类与对象之对象接口

    接口的实现 <?php //interface 关键字用于定义一个接口 interface ICanEat{ //接口里面的方法不需要实现 public function eat($food); ...

  7. vue的测试(Vue.js devtool)

    1. 安装chrome插件:Vue.js devtools(https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejigli ...

  8. Debian7安装php5.5/5.6

    ### 1 添加源 echo "deb http://packages.dotdeb.org wheezy-php56 all" >> /etc/apt/sources ...

  9. iOS 打包上传AppStore相关(3)-iTunes相应配置以及使用蒲公英网站进行应用托管分发(链接/二维码)

    上一篇讲到我们最终生成了一个格式为 .xcarchive 的文件(可以右键并Show in Finder)查看.本篇我们就进行最后的设置,打包上传.另外,还有一个小福利,那就是打测试包分发链接测试. ...

  10. oracle之nomount、mount、open三种状态

    1.先来看下外国网站上的资料怎么说 Nomount – The database instance has been started (processes and memory structures ...