Verilog HDL模块化设计
在高级编程语言中,为了避免在程序中多次重复编写特定的例行程序,可以使用子程序和函数。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模块化设计相关推荐
- 【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论
1 Verilog HDL 数字设计总论 1.1 几个重要的概念 EDA(Electronic Design Automation) 电子技术自动化 EDA工具 类似于软件工程中的IDE(集成开发环境 ...
- (44)Verilog HDL 计数器设计
(44)Verilog HDL 计数器设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL 计数器设计 5)结语 1.2 FPGA简介 FPGA( ...
- (43)Verilog HDL 二分频设计
(43)Verilog HDL 二分频设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL 二分频设计 5)结语 1.2 FPGA简介 FPGA( ...
- (40)Verilog HDL锁存器设计
(40)Verilog HDL锁存器设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL锁存器设计 5)结语 1.2 FPGA简介 FPGA(Fi ...
- (135)Verilog HDL:设计一个加法器之Adder100i
(135)Verilog HDL:设计一个加法器之Adder100i 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)VVerilog HDL:设计一个加法器之Adder ...
- (126)Verilog HDL:设计一个复用器之Always case
(126)Verilog HDL:设计一个复用器之Always case 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL:设计一个复用器之Alwa ...
- 【Verilog HDL】设计硬件电路时,如何避免生成锁存器?
这个问题很简单,前面的很多博文也多多少少提到了这个问题,(如:Verilog HDL 使用规范(一)),今天就系统地理一遍. Verilog HDL设计中容易犯的一个通病就是不正确使用语言,生成了并不 ...
- 模6计数器以及模10计数器(Verilog HDL语言设计)(Modelsim仿真与ISE综合)
目录 前言 模6计数器 Verilog HDL语言描述 测试文件 仿真电路图 RTL Schematic Technology Schematic 模10计数器 Verilog HDL语言描述 测试文 ...
- Verilog HDL语言设计实现过程赋值+译码器
完成课本例题6.11.6.12,进行综合和仿真(功能仿真),查看综合和仿真结果,整理入实验报告. 6.11 module shiyan21(in,clk,out1,out2); input clk,i ...
最新文章
- python爬虫入门代码-Python爬虫入门
- 10 个小技巧:快速用 Python 进行数据分析
- cmd 查看本地ip_西门子WinCCV7.4使用普通网卡通过TCP/IP连接PLC步骤
- C#委托Action、ActionT、FuncT、PredicateT
- Linux下如何高效删除一个几十G的文本文件的最后一行或几行
- 详解Java反射机制
- 基于LZ77算法的文件压缩收尾
- Android之HttpClient 和HttpResponse 小结
- C Builder中如何利用消息
- mac vscode远程服务器
- vant ui 官方文档_转载:微信小程序UI组件库合集
- concurrenthashmap获取不到_面试必问的ConcurrentHashMap
- 乐鑫Esp32学习之旅28 熟悉自定义分区表 partition,拉取阿里云OSS对象存储的单片机/图片等较大文件保存在特定的存储位置,并读取出来做完整性校验,保证数据的完整性。(附带源码)
- Dos/Linux/nc/Xscan/Xsniffer
- 高彩色显示图标(转)
- C#解压zip和rar文件
- 使用Python横向合并excel文件的实例
- ftp服务器打开文件时浏览器,ftp服务器怎样浏览器打开文件
- IDEA项目名称后面出现中括号
- python中国社区-Python中文社区名称的统一