小梅哥和你一起深入学习FPGA之点亮LED灯(下)

可编程逻辑

1364人已加入

描述

关键词: FPGA , LED

  七、 测试平台设计
  本实验主要对LED的输出和输入与复位的关系进行测试仿真,通过仿真,即可验证设计的正确性和合理性。相关testbench的代码如下:
  以下是代码片段:
  `timescale 1ns/1ns
  module LED_Driver_tb;
  reg Rst_n;
  reg [3:0] Sig;
  wire [3:0] Led;
  LED_Driver
  #( /*参数例化*/
  .Width (4)
  )
  LED_Driver_inst(/*端口例化*/
  .Rst_n(Rst_n),
  .Sig(Sig),/*OFF ON ON OFF*/
  .Led(Led)
  );
  initial begin
  Rst_n = 0;
  Sig = 4'b1010;
  #100;
  Rst_n = 1;
  #40 Sig = 4'b0001;
  #40 Sig = 4'b0010;
  #40 Sig = 4'b0011;
  #40 Sig = 4'b0100;
  #40 Sig = 4'b0101;
  #40 Sig = 4'b0110;
  #40 Sig = 4'b0111;
  #40 Sig = 4'b1000;
  #40 Sig = 4'b1001;
  #40 Sig = 4'b1010;
  #40 Sig = 4'b1011;
  #40 Sig = 4'b1100;
  #40 Sig = 4'b1101;
  #40 Sig = 4'b1110;
  #40 Sig = 4'b1111;
  #40;
  $stop;
  end
  endmodule
  由testbench中可以看出,初始值给Sig赋了一个初始值,系统处于复位状态,100ns后,复位过程结束,系统进入正常工作状态,Sig信号每隔一定时间变化一次。因此,只需要观察Led信号与Sig信号的关系,即可验证设计的正确与否。
  八、 仿真分析
  

小梅哥和你一起深入学习FPGA之点亮LED灯(下)



  由上图仿真结果可知,当复位信号为低电平时,Led输出全部为1,则所有LED熄灭,当复位信号为高电平时,则Led输出与Sig信号一致,证明设计正确无误。对于顶层模块,仿真没有什么太大的实际意义,因此不做仿真。
  九、 下板验证
  手头暂无开发板,板级验证略。
  十、 总结
  可能很多初学FPGA,又看过其它一些资料的同学会对小梅哥的这种组织方式感觉不太习惯,认为本来一个代码模块就能搞定的事儿被我硬生生拆成了两个,增加了系统的复杂性。其实,我这里主要是强调了一种建模的思想,我们所做的模块一定要具有灵活性和通用性,当其它设计中需要用到该外设时,只需要关心其内部端口就行了,在顶层例化时只需要将对应信号接到该端口上就能实现功能了,不用再专门为了特定应用再写一次。目前系统简单,可能大家还看不出这种方式的优势,随着以后的设计越来越复杂,大家就能很明显的看到这种设计方式的优势所在了。
                               
                 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分