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


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

    项目实现

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

    计数器代码为

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

    功能模块程序为

    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<=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 视图为:

  • 相关阅读:
    centos7 安装 tesseract4.1
    08 图的数据结构和算法
    07 树形结构及其算法
    05 数组与链表算法
    06 堆栈与队列算法
    04 查找与哈希算法
    03 排序算法
    javascript 标签轮播
    tomcat URI get 参数中文传到后台 乱码 URIEncoding
    javascript 标签切换
  • 原文地址:https://www.cnblogs.com/bixiaopengblog/p/5927565.html
Copyright © 2020-2023  润新知