【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

在前面的一篇博客中,我们说到可以使用modelsim对verilog进行测试和仿真。事实上,还有很多开源的工具可以使用,比如说iverilog+gtkwave,大家如果有兴趣,可以在网上查找相关的内容。现在的芯片设计越来越复杂,如果按照基本的门电路设计,那么效率是非常低的。恰当地使用硬件描述语言,可以有效地提高我们工作效率。同时,如果深入了解了verilog,对于我们了解芯片的设计流程也非常有益。在购物网站上,有这么一本书,书名为《计算机原理与设计-Verilog HDL版》,它从另外一个角度帮我们描述了计算机到底是怎么一回事,个人感觉内容非常好,也非常实在。

当然,回到今天的内容。有过软件开发经验的朋友都知道,我们编写代码的时候经常需要编写测试用例对代码功能进行测试。其实编写verilog代码也是一样的。最简单的verilog代码也需要两部分的内容,一部分就是实现模块功能,另外一部分就是实现testbench功能,也就是测试我们设计的模块是否满足需求。verilog代码和C语言很相似,大家不需要有什么顾虑。首先,我们还是看看verilog module的代码内容,


module add(a, b, c);input a;input b;output c;assign c = a & b;endmodule

工科的同学都学过数字电路,一般来说数字电路包括逻辑电路和时序电路。上面的代码实现就是一个最简单的逻辑功能,也就是与功能。其中a、b为输入信号,c为输出信号。那么testbench代码是什么样的呢?我们接着看,

`timescale 1ns/1nsmodule add_t;reg a;reg b;wire c;add t(a,b,c);initialbegin#10 a = 1; b = 0;#10 a = 0; b = 1;#10 a = 0; b = 0;#10 a = 1; b = 1;#50 $finish;endinitial$monitor("a = %d, ", a, " b = %d, ", b, "c = %d\n", c);endmodule

从代码中,大家可以看到initial的内容,也可以看到add的内容。add模块表示当前实现了一个add实例,名称为t。initial模块中的内容是测试内容,从10ns开始,a为高电平、b为低电平;再过10ns,a为低电平、b为高电平;依次类推,直到信号finish为止。在每一次信号翻转的时候,我们都会利用monitor打印相关数据信息。当然,这些都是一些代码的内容,大家可以在modelsim实践一下,看一下wave或者是dataflow,会有更多的收获。

verilog学习记(快速入门)相关推荐

  1. 如何学习verilog,如何快速入门?

    前言 害怕真的有人不知道verilog是什么东西,于是就给把百度给搬来了! Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图.逻辑表达式 ...

  2. 深度学习工程应用快速入门

    课程介绍 伴随人工智能时代的到来,深度学习技术也发挥着越来越重要作用,越来越多的技术人才开始投身入这一行业中,并希望发展成为一名深度学习算法工程师.然而,在实际的工程设计中,深度学习研发者总会面临着各 ...

  3. HTML5+app开发学习之快速入门篇

    HTML5+app开发学习之快速入门篇 5+app开发概念理解相关 开发环境与支持 快速入门实战 5+app开发概念理解相关 见博文:学习跨平台移动应用开发必须理解的一些概念 开发环境与支持 开发环境 ...

  4. Spring学习(1)——快速入门

    Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Co ...

  5. verilog学习记(测试和验证)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 平台的选择 对于很多不是数字电路专业的同学来说,学习verilog的过程不算轻松.因为没有mod ...

  6. Java学习的快速入门:10行代码学JQuery

    生活在快速发展时代的我们,如果不提速可能稍不留神就被时代淘汰了.快节奏的时代成就了快餐,亦成就了速成教育.尤其是身处互联网行业的我们,更新换代的速度更是迅速,快速掌握一门技术已经成为潮流趋势.怎样才能 ...

  7. Python学习之快速入门

    1. 前言 最近玩服务器,需要服务器和本地的一个端口进行互交,查了一些资料,发现用 Python实现很简单,刚好我也想学学一些Python语法.我之前编程语言已经学习了C/C++,Java语言,所以就 ...

  8. 少样本学习原理快速入门,并翻译《Free Lunch for Few-Shot Learning: Distribution Calibration》

    ICLR2021 Oral<Free Lunch for Few-Shot Learning: Distribution Calibration> 利用一个样本估计类别数据分布 9行代码提 ...

  9. verilog学习记(verilog翻译成c)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 有的时候,写verilog代码时,不太确定是否正确,会写一段伪c代码来进行验证,比如 modu ...

最新文章

  1. Scala和范畴论 -- 对Monad的一点认识
  2. writelines是python对文件的写操作方法_Python File writelines() 方法
  3. linux 安装 MySQL
  4. angular入门-ngOptions
  5. [转]Java 关闭线程的安全方法
  6. Mysql 5.5 源码安装
  7. windows系统改装为linux系统_Linux怎么克隆系统?备份系统跟Windows系统有区别吗?...
  8. html if语句_轻量html模版渲染库 cJinja
  9. raspberry pi_如何使用Raspberry Pi构建WiFi相框
  10. json解析和字符串解析_高效创建和解析定界字符串
  11. 电脑自动配置IPV4地址169的解决办法
  12. docker容器的标准使用过程_docker容器的使用
  13. 高程3总结#第23章离线应用与客户端存储
  14. 计算机组成原理期末复习【超实用】
  15. 超简洁又强大的幻灯片JS、CSS代码,兼容性强
  16. 一维的热传导方程向前差分法
  17. DWG转PDF在线转换怎么转?这个方法线上线下都能用
  18. JavaScript学习(三)
  19. 百度排名批量查询_一篇文章告诉你如何快速实现百度霸屏?
  20. D. Lizard Era: Beginning(折半搜索)

热门文章

  1. Oracle DBA课程系列笔记(4)
  2. ALL-TAG推出RFID墨水防损标签
  3. 我的Python成长之路---第三天---Python基础(13)---2016年1月16日(雾霾)
  4. Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件
  5. 发布过程5分钟内load飙升问题排查
  6. js中值得推荐的Memoization
  7. VDI序曲八 网关与VDI发布
  8. DNSPod揭6省断网重大事故内幕:网游私服恶斗
  9. 【springmvc+mybatis项目实战】杰信商贸-2.数据库配置
  10. StringBuffer和String,StringBuilder的区别?