Verilog中generate语法和作用
Verilog中generate语句的用法
在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计提供了方便,generate语句一般在循环和条件语句中使用,为此,Verilog-2001增加了四个关键字generate,endgenerate, genvar, localparam,genvar是一个新增的数据类型,用在generate的循环中的标尺变量必须定义为gnevar类型;
下面举例说明generate的用法:
首先设计一个1bit位宽的buffer_1:
//1bit width buffer_1module buffer_1(input wire in,output wire out);assign out = ~in;endmodule
在buffer_8中例化buffer_1 8次,这里有几点需要注意:
循环变量i必须是genvar类型的,不可以是reg型,integer型;
for循环之后的的begin最好加上一个标号(BLOCK1);
//8bit width buffermodule buffer_8(input wire[7:0] din,output wire[7:0] dout);// Generate blockgenvar i;generatefor(i=0; i<8; i=i+1) begin:BLOCK1buffer_1 buffer_1_1(.in(din[i]), .out(dout[i]));endendgenerateendmodule
这里给出了一个简单的顶层:
//testbenchmodule buffer_8_tb;// reg & wire define areareg [7:0] din;wire[7:0] dout;// Instance the DUTbuffer_8 buffer_8_1(.din (din ),.dout (dout ));// Generate the stimulateinitial begindin = 8'd7;#10; din = 8'd6;#10; din = 8'd4;#10; din = 8'd7;#10; $finish();endendmodule
generate语法
定义genvar,作为generate种的循环变量。
generate语句中定义的for语句,必须要有begin,为后续增加标签做准备。
begin必须要有名称,也就是必须要有标签,因为标签会作为generate循环的实例名称。
可以使用在generate语句中的类型主要有:
ü module(模块)
ü UDP(用户自定义原语)
ü 门级原语
ü 连续赋值语句
ü initial或always语句
基本结构如下:
genvar 循环变量名;generate// generate循环语句// generate 条件语句// generate 分支语句// 嵌套的generate语句endgenerate
Verilog中generate语法和作用相关推荐
- Verilog中generate的使用
目录 generate的结构类型 1.generate循环结构 2.条件if-generate构造 3.条件case-generate构造 4.断言和形式验证 5.层次化访问生成的模块 总结 Veri ...
- Verilog中generate用法总结
Verilog中generate用法总结 1.generate-for 2.generate-if 3.generate-case 生成语句可以动态的生成verilog代码,当对矢量中的多个位进行 重 ...
- Verilog中generate的用法
Generate 语句基本概念 generate 语句可以动态地生成 Verilog 代码,常用于编写许多结构相同但参数不同的赋值语句或逻辑语句,方便参数化模块的生成.generate 语句主要有以下 ...
- verilog中generate语句的使用
原文地址:https://blog.csdn.net/qq_38428056/article/details/84821982 至芯科技的书上看到的,觉得还行吧,给大家分享一下. 一.为什么学习gen ...
- Verilog中generate语句的用法
在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计提供了方便,generate语句一般在循环和 ...
- 【FPGA】Verilog中generate用法
创作时间:2021-08-18 1.一些说明: generate循环的语法与for循环语句的语法很相似. genvar只有在建模的时候才会出现,在仿真时就已经消失了. 但是在使用时必须先在genvar ...
- Verilog初级教程(12)Verilog中的generate块
文章目录 前言 正文 generate for generate if generate case 参考资料 本系列博文 前言 verilog中的generate块可以称为生成块,所谓生成,可以理解为 ...
- Verilog中生成语句(generate)的用法
一:generate Verilog-2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个variable,net,task,function, ...
- verilog always语法_Verilog初级教程(20)Verilog中的`ifdef 条件编译语句
前言 `ifdef条件编译语句在逻辑设计中还是很常见的,但也常见一些滥用的情况,这应该避免. 应该在什么情况下使用呢? 例如:一部分代码可能有时候用,有时候不用,为了避免全部编译占用资源,可以使用条件 ...
最新文章
- (9)MSP430F5529 定时器Timer_A
- dependencies与dependencyManagement的区(转自:http://blog.csdn.net/liutengteng130/article/details/46991829)
- 每天一道LeetCode-----只可能有'.'和'*'的字符串正则匹配
- [NewLife.XCode]数据初始化
- Linux内核设计与实现---系统调用
- Hadoop初次接触后感
- python调用另一个.py文件中的类和函数
- [No0000F5]C# 类(Class)
- 【图论】Bellman_Ford算法求有步数限制的最短路(图文详解)
- 分析华为毕昇JDK8:类数据共享CDS有效果,幅度很小
- 内存部分重要参数详解
- 支付宝-线上资金授权(小程序)
- php开源微博框架,记事狗微博开源代码学习笔记:微博话题列表
- 甘肃一名高考生偷偷带手机进考场,拍题并上传到网上出钱求答案……
- 色环电阻的识别和检测
- 阿尔法c语言程序设计考试题,计算机考试习题
- jqueryppt_jQuery幻灯片
- python画八角星_Goc-N角星的绘制
- linux 默认路由 主机路由 网络路由
- dwz ajax提交,DWZ-JUI Ajax.post 封装