x
x

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

发布时间:2016-2-18 14:11    发布者:designapp
关键词: 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信号的关系,即可验证设计的正确与否。
  八、 仿真分析
  


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

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

  • Microchip视频专区
  • EtherCAT®和Microchip LAN925x从站控制器介绍培训教程
  • MPLAB®模拟设计器——在线电源解决方案,加速设计
  • 让您的模拟设计灵感,化为触手可及的现实
  • 深度体验Microchip自动辅助驾驶应用方案——2025巡展开启报名!
  • 贸泽电子(Mouser)专区

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表