【FPGA】Verilog中generate用法
创作时间:2021-08-18
1.一些说明:
generate循环的语法与for循环语句的语法很相似。
genvar只有在建模的时候才会出现,在仿真时就已经消失了。
但是在使用时必须先在genvar声明中声明循环中使用的索引变量名,然后才能使用它。
genvar声明的索引变量被用作整数用来判断generate循环。
genvar声明可以是generate结构的内部或外部区域,并且相同的循环索引变量可以在多个generate循环中,只要这些环不嵌套。
2.举个例子,一看就明了
1)代码
design file
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2021/08/17 17:46:44
// Design Name:
// Module Name: ex_generate
module ex_generate#(parameter DW=16 )(iv_data ,ov_data_channel_0 ,ov_data_channel_1 ,ov_data_channel_2 ,ov_data_channel_3 ,ov_data_channel_4 ,ov_data_channel_5 ,ov_data_channel_6 ,ov_data_channel_7 );input wire[DW-1:0]iv_data ;output wire[ 1:0]ov_data_channel_0;output wire[ 1:0]ov_data_channel_1;output wire[ 1:0]ov_data_channel_2;output wire[ 1:0]ov_data_channel_3;output wire[ 1:0]ov_data_channel_4;output wire[ 1:0]ov_data_channel_5;output wire[ 1:0]ov_data_channel_6;output wire[ 1:0]ov_data_channel_7;wire[1:0] temp [7:0]; //注意[1:0]和[7:0]的顺序genvar ii;generate for(ii=0;ii<=7;ii=ii+1)begin: ex_gen//begin 后边这个命名一定要加assign temp[ii]=iv_data[2*ii+1:2*ii];endendgenerateassign ov_data_channel_0=temp[0];assign ov_data_channel_1=temp[1];assign ov_data_channel_2=temp[2];assign ov_data_channel_3=temp[3];assign ov_data_channel_4=temp[4];assign ov_data_channel_5=temp[5];assign ov_data_channel_6=temp[6];assign ov_data_channel_7=temp[7];endmodule
- RTL 电路
3)综合电路
4)仿真波形
testbench
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2021/08/18 10:32:32
// Design Name:
// Module Name: tb_ex_generate
module tb_ex_generate( );parameter DW=16;reg [DW-1:0]iv_data ;wire [ 1:0]ov_data_channel_0;wire [ 1:0]ov_data_channel_1;wire [ 1:0]ov_data_channel_2;wire [ 1:0]ov_data_channel_3;wire [ 1:0]ov_data_channel_4;wire [ 1:0]ov_data_channel_5;wire [ 1:0]ov_data_channel_6;wire [ 1:0]ov_data_channel_7;initial beginiv_data=16'b1100_0000_0000_0000;//(0)#10;iv_data=16'b0011_0000_0000_0000;//(1)#10;iv_data=16'b0000_1100_0000_0000;//(2)#10;iv_data=16'b0000_0011_0000_0000;//(3)#10;iv_data=16'b0000_0000_1100_0000;//(4)#10;iv_data=16'b0000_0000_0011_0000;//(5)#10;iv_data=16'b0000_0000_0000_1100;//(6) #10;iv_data=16'b0000_0000_0000_0011;//(7) endex_generate #(.DW(DW))u_ex_generate(.iv_data(iv_data),.ov_data_channel_0(ov_data_channel_0),.ov_data_channel_1(ov_data_channel_1),.ov_data_channel_2(ov_data_channel_2),.ov_data_channel_3(ov_data_channel_3),.ov_data_channel_4(ov_data_channel_4),.ov_data_channel_5(ov_data_channel_5),.ov_data_channel_6(ov_data_channel_6),.ov_data_channel_7(ov_data_channel_7)) ;endmodule
ok ,目标完成。
最后再说明下:
for(ii=0;ii<=7;ii=ii+1)//for 后边必须有begin end,哪怕是一句话
begin: ex_gen//begin 后边这个命名一定要加,我是随便加了个名字
assign temp[ii]=iv_data[2ii+1:2ii];
end
THE END~
【MATLAB-app】系列教程(含视频)00_csdn上第一套关于matlab appdesigner系列“视频课”来啦~~
关于“复位“的理解与总结(终于讲明白了)
【图像算法&MATLAB】一文讲明白:图像的直方图均衡化(附作者自编源代码)
【探测器与相机标准】我对图像(图像传感器/相机)“非均匀性”的理解与学习笔记
【FPGA】Verilog中generate用法相关推荐
- Verilog中generate用法总结
Verilog中generate用法总结 1.generate-for 2.generate-if 3.generate-case 生成语句可以动态的生成verilog代码,当对矢量中的多个位进行 重 ...
- Verilog中generate语法和作用
Verilog中generate语句的用法 在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计 ...
- Verilog中generate的使用
目录 generate的结构类型 1.generate循环结构 2.条件if-generate构造 3.条件case-generate构造 4.断言和形式验证 5.层次化访问生成的模块 总结 Veri ...
- Verilog中generate的用法
Generate 语句基本概念 generate 语句可以动态地生成 Verilog 代码,常用于编写许多结构相同但参数不同的赋值语句或逻辑语句,方便参数化模块的生成.generate 语句主要有以下 ...
- verilog中signed用法
首先我们知道,有符号数的运算全都是补码的方式. 在Verilog里面,可以使用有符号数据进行运算,定义时使用signed,例如 reg signed[7:0] data: //定义了一个reg型有符号 ...
- Verilog中generate语句的用法
在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计提供了方便,generate语句一般在循环和 ...
- verilog中generate语句的使用
原文地址:https://blog.csdn.net/qq_38428056/article/details/84821982 至芯科技的书上看到的,觉得还行吧,给大家分享一下. 一.为什么学习gen ...
- verilog中function用法_verilog中的function用法与例子
函数的功能和任务的功能类似,但二者还存在很大的不同.在 Verilog HDL 语法中也存 在函数的定义和调用. 1.函数的定义 函数通过关键词 function 和 endfunction 定义,不 ...
- 在verilog中#的用法
# 是延迟的意思,井号后面数字是延迟的数量,延迟的单位由`timescale控制比如有:`timescale 1ns/1ps 意思就是时间单位为1ns,精度是1ps那么,#10.5 就是延迟10.5n ...
最新文章
- 网站文章要求图文并茂,图片要怎样做好优化工作呢?
- cad绘制椭圆的方法有几种_你还在头疼CAD系统变量如何设置?这些你知道几个吗?...
- python实现肯德基店铺查询
- Dungeon Master(三维bfs)java
- 笔记-高项案例题-2015年上-整体管理
- 又一Attention函数诞生啦,带给你意想不到的巨大提升!
- GNU源码安装借用YUM排除故障
- 初识ES-什么是elasticsearch
- python删除字符串中指定_python删除字符串中指定字符
- 大数据初学者的福利——Hadoop快速入门教程
- python 豆瓣电影top250_Python数据可视化:豆瓣电影TOP250
- k邻近算法-分类实操
- 习惯的力量在于不由主——知道顶个球用,成为习惯才是你的
- iOS 广告SDK总结(一)
- 3 年9.9元,网站从HTTP升级到HTTPS
- excel锁定单元格不能修改_Excel如何保护特定的数据不被更改?
- 2021美赛写作(一)
- 放大招!百味勺子硬件设计篇
- 数据库服务的运行与登录
- 腾讯发布的开发语言安全指南:C/C++安全指南