• 用FPGA实现流水灯


    这些天一直在看黑金动力的verylog HDL那些事儿,很推荐这个教程,对于那些语法已经有一些基础,但是对FPGA的运行方式,处理方法不是很了解的同学,特别推荐,下面给出我的以一个流水灯代码

    module riderled(CLK_50M,key_1,led);
       input CLK_50M,key_1;
     output [7:0] led;
     reg [22:0] cnt;
     
     
     always@(posedge CLK_50M or negedge key_1)
     begin
     if(!key_1)
     cnt<=0;
     //else if(cnt==21'd000000)
     //cnt<=0;
     else
     cnt<=cnt+1'b1;
     end
     wire SYSCLK=cnt[22];
     
     reg dir;
     reg [7:0] led_m;
     
     always@(posedge SYSCLK or negedge key_1)
    begin
      if(!key_1)
      dir<=1'd0;
      else if(led_m[6]) //如果改为led_m[7],则流水灯只流过去一次,然后没有现象了,原因是当时钟上升沿到来时,dir改变为1,而此时led_m值为 1 0000 0000

                                   然而led_m为8位,1已经溢出了,故灯不再亮。
      dir<=1'd1;
      else if(led[1])  //下一个时钟信号到来时,才将 0 赋给dir
      dir<=1'd0;
     
    end
     
     always@(posedge SYSCLK or negedge key_1)
     begin
      if(!key_1)
        led_m<=8'b00000001;
      else
        if(!dir )
            led_m=led_m<<1;
          else if(dir)
             led_m=led_m>>1;
     end

     assign led=led_m;
     
      endmodule

    代码比较简单,但是把这个贴出来是为了加深对非阻塞赋值的理解,这么一个小小的问题导致我对着张亚峰的代码对着看了几乎两天,很是气馁啊,不过做学问还是要沉得住气,一步一个脚印,不能太浮躁。注释如有错误请高手指正

  • 相关阅读:
    机器学习之线性回归
    最长回文字串——manacher算法
    linux系统下pdf操作软件pdftk
    markdown表格
    3.9 标准化,让运营数据落入相同的范围
    3.numpy_array数组
    4. 归并排序和快速排序
    3.病毒分裂
    2. 大整数乘法
    1.单峰序列
  • 原文地址:https://www.cnblogs.com/huazhongwang/p/2737997.html
Copyright © 2020-2023  润新知