在高级编程语言中,为了避免在程序中多次重复编写特定的例行程序,可以使用子程序和函数。Verilog语言也可提供类似的能力,即Verilog的任务和函数。它们可以把大型设计模块化,从而使Verilog代码更加容易理解。

Verilog任务

任务用关键字task声明,其中包含若干条语句,最后以endtask结尾。这样的语句模块就称为任务。任务必须包含在调用该任务的模块中。它可以有输入和输出端口。任务的端口并不是调用该任务模块的端口,而是用来将它和调用它的模块连接的端口。任务端口仅仅用来在模块和任务之间传递数据。

例:下图中,我们列出了16选1多路选择器的Verilog代码,该代码实例引用了五个4选1多路选择器电路,这个4选1多路选择器电路由一个独立的名为mux4to1的模块提供。16选1多路选择器也可以使用任务来描述,如图所示。注意观察关键的不同点。任务mux4to1包含在模块mux16to1中。在always模块中通过case语句来调用任务。任务的输出必须是一个变量,因此g是reg型。

Verilog函数

函数用关键字function声明,包含若干条语句,最后以关键字endfunction结尾。函数必须至少有一个输入,而且只返回一个值到函数被调用的位置。

下图说明了如何使用函数来完成上图的代码。Verilog编译器实质上在每一个调用函数的地方插入函数。因此,条件分支语句

0:f=mux4to1(W[0:3], S16[1:0]);

变成

0:case(S16[1:0])

0: f = W[0];

1: f = W[1];

2: f = W[2];

3: f = W[3];

endcase

函数使mux16to1模块变得紧凑和易读。

Verilog函数可以调用另外一个函数,但不能调用另外一个Verilog任务。而任务可以调用另一额任务也可以调用函数。在调用某任务的always块后,才定义该任务。而在调用某函数的always块之前就已经定义了该任务。对任务和函数来说,这两种情况Verilog标准都是允许的。但是,有些CAD工具要求先定义好函数,才能调用函数。




Verilog HDL模块化设计相关推荐

  1. 【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论

    1 Verilog HDL 数字设计总论 1.1 几个重要的概念 EDA(Electronic Design Automation) 电子技术自动化 EDA工具 类似于软件工程中的IDE(集成开发环境 ...

  2. (44)Verilog HDL 计数器设计

    (44)Verilog HDL 计数器设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL 计数器设计 5)结语 1.2 FPGA简介 FPGA( ...

  3. (43)Verilog HDL 二分频设计

    (43)Verilog HDL 二分频设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL 二分频设计 5)结语 1.2 FPGA简介 FPGA( ...

  4. (40)Verilog HDL锁存器设计

    (40)Verilog HDL锁存器设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL锁存器设计 5)结语 1.2 FPGA简介 FPGA(Fi ...

  5. (135)Verilog HDL:设计一个加法器之Adder100i

    (135)Verilog HDL:设计一个加法器之Adder100i 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)VVerilog HDL:设计一个加法器之Adder ...

  6. (126)Verilog HDL:设计一个复用器之Always case

    (126)Verilog HDL:设计一个复用器之Always case 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL:设计一个复用器之Alwa ...

  7. 【Verilog HDL】设计硬件电路时,如何避免生成锁存器?

    这个问题很简单,前面的很多博文也多多少少提到了这个问题,(如:Verilog HDL 使用规范(一)),今天就系统地理一遍. Verilog HDL设计中容易犯的一个通病就是不正确使用语言,生成了并不 ...

  8. 模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)

    目录 前言 模6计数器 Verilog HDL语言描述 测试文件 仿真电路图 RTL Schematic Technology Schematic 模10计数器 Verilog HDL语言描述 测试文 ...

  9. Verilog HDL语言设计实现过程赋值+译码器

    完成课本例题6.11.6.12,进行综合和仿真(功能仿真),查看综合和仿真结果,整理入实验报告. 6.11 module shiyan21(in,clk,out1,out2); input clk,i ...

最新文章

  1. python爬虫入门代码-Python爬虫入门
  2. 10 个小技巧:快速用 Python 进行数据分析
  3. cmd 查看本地ip_西门子WinCCV7.4使用普通网卡通过TCP/IP连接PLC步骤
  4. C#委托Action、ActionT、FuncT、PredicateT
  5. Linux下如何高效删除一个几十G的文本文件的最后一行或几行
  6. 详解Java反射机制
  7. 基于LZ77算法的文件压缩收尾
  8. Android之HttpClient 和HttpResponse 小结
  9. C Builder中如何利用消息
  10. mac vscode远程服务器
  11. vant ui 官方文档_转载:微信小程序UI组件库合集
  12. concurrenthashmap获取不到_面试必问的ConcurrentHashMap
  13. 乐鑫Esp32学习之旅28 熟悉自定义分区表 partition,拉取阿里云OSS对象存储的单片机/图片等较大文件保存在特定的存储位置,并读取出来做完整性校验,保证数据的完整性。(附带源码)
  14. Dos/Linux/nc/Xscan/Xsniffer
  15. 高彩色显示图标(转)
  16. C#解压zip和rar文件
  17. 使用Python横向合并excel文件的实例
  18. ftp服务器打开文件时浏览器,ftp服务器怎样浏览器打开文件
  19. IDEA项目名称后面出现中括号
  20. python中国社区-Python中文社区名称的统一

热门文章

  1. 纯CSS实现简约大方灰紫色下拉菜单代码
  2. MySQL密码长不为6_mysql密码问题
  3. 【小作品】STM32无线WIFI视频小车制作剖析(上)
  4. 论语 季氏第十六主要大意
  5. 练习题34-位一的个数
  6. 并发基础(一)并发的三大特性
  7. smartbi 移动版报注册失败错误
  8. JAVA泛型学习demo代码
  9. 借款人如果不按期还款要怎么办
  10. 2019春招面试高频题(Java版),持续更新(答案来自互联网,以及一些自己看的书)...