FPGA学习笔记4.1——Verilog下的LED流水灯实现

举报
nimo的小舔狗 发表于 2022/05/11 00:11:56 2022/05/11
【摘要】 设计思路 彩灯显示电路:现在有18个红色LED灯,采用状态机设计一个流水灯,工作模式为: 要求控制18个LED灯实现如下的演示花型:– 从两边往中间逐个亮;全灭 – 从中间往两头逐个亮;全灭 – 循环执行上述过程    原理图 功能模块代码:  module denghua(cl...

设计思路

彩灯显示电路:现在有18个红色LED灯,采用状态机设计一个流水灯,工作模式为:

要求控制18个LED灯实现如下的演示花型:– 从两边往中间逐个亮;全灭 – 从中间往两头逐个亮;全灭 – 循环执行上述过程 

 

原理图

功能模块代码: 


  
  1. module denghua(clk,clr,z,qout);
  2. input clk,clr;
  3. output reg z;
  4. output reg[17:0] qout;
  5. parameter S0=18'b100000000000000001;
  6. parameter S1=18'b010000000000000010;
  7. parameter S2=18'b001000000000000100;
  8. parameter S3=18'b000100000000001000;
  9. parameter S4=18'b000010000000010000;
  10. parameter S5=18'b000001000000100000;
  11. parameter S6=18'b000000100001000000;
  12. parameter S7=18'b000000010010000000;
  13. parameter S8=18'b000000001100000000;
  14. parameter S9=18'b111111111111111111;
  15. parameter S10=18'b111111110011111111;
  16. parameter S11=18'b111111100001111111;
  17. parameter S12=18'b111111000000111111;
  18. parameter S13=18'b111110000000011111;
  19. parameter S14=18'b111100000000001111;
  20. parameter S15=18'b111000000000000111;
  21. parameter S16=18'b110000000000000011;
  22. always @(posedge clk or posedge clr) //此过程定义状态转换
  23. begin
  24. if(clr)
  25. qout<=0; //异步复位
  26. else
  27. case(qout)
  28. S0: qout<=S1;
  29. S1: qout<=S2;
  30. S2: qout<=S3;
  31. S3: qout<=S4;
  32. S4: qout<=S5;
  33. S5: qout<=S6;
  34. S6: qout<=S7;
  35. S7: qout<=S8;
  36. S8: qout<=S9;
  37. S9: qout<=S10;
  38. S10: qout<=S11;
  39. S11: qout<=S12;
  40. S12: qout<=S13;
  41. S13: qout<=S14;
  42. S14: qout<=S15;
  43. S15: qout<=S16;
  44. S16: qout<=S0;
  45. default: qout<=S0; /*default语句*/
  46. endcase
  47. end
  48. always @(qout) /*此过程产生输出逻辑*/
  49. begin
  50. case(qout)
  51. S16: z=1'b1;
  52. default:z=1'b0;
  53. endcase
  54. end
  55. endmodule

测试模块代码: 


  
  1. `timescale 1 ps/ 1 ps
  2. module denghua_vlg_tst();
  3. reg eachvec;
  4. reg clk;
  5. reg clr;
  6. wire [17:0] qout;
  7. wire z;
  8. integer i;
  9. denghua i1 (
  10. .clk(clk),
  11. .clr(clr),
  12. .qout(qout),
  13. .z(z)
  14. );
  15. initial
  16. begin
  17. $display("Running testbench");
  18. clk=1;
  19. clr=0;
  20. #40 $stop();
  21. end
  22. initial
  23. $monitor("qout:%b z:%b",qout,z);
  24. always
  25. begin
  26. #1 clk=~clk;
  27. end
  28. endmodule

运行图:

文章来源: blog.csdn.net,作者:渣渣ye,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/yyfloveqcw/article/details/124177147

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。