创作时间: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
  1. 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用法相关推荐

  1. Verilog中generate用法总结

    Verilog中generate用法总结 1.generate-for 2.generate-if 3.generate-case 生成语句可以动态的生成verilog代码,当对矢量中的多个位进行 重 ...

  2. Verilog中generate语法和作用

    Verilog中generate语句的用法 在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计 ...

  3. Verilog中generate的使用

    目录 generate的结构类型 1.generate循环结构 2.条件if-generate构造 3.条件case-generate构造 4.断言和形式验证 5.层次化访问生成的模块 总结 Veri ...

  4. Verilog中generate的用法

    Generate 语句基本概念 generate 语句可以动态地生成 Verilog 代码,常用于编写许多结构相同但参数不同的赋值语句或逻辑语句,方便参数化模块的生成.generate 语句主要有以下 ...

  5. verilog中signed用法

    首先我们知道,有符号数的运算全都是补码的方式. 在Verilog里面,可以使用有符号数据进行运算,定义时使用signed,例如 reg signed[7:0] data: //定义了一个reg型有符号 ...

  6. Verilog中generate语句的用法

    在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计提供了方便,generate语句一般在循环和 ...

  7. verilog中generate语句的使用

    原文地址:https://blog.csdn.net/qq_38428056/article/details/84821982 至芯科技的书上看到的,觉得还行吧,给大家分享一下. 一.为什么学习gen ...

  8. verilog中function用法_verilog中的function用法与例子

    函数的功能和任务的功能类似,但二者还存在很大的不同.在 Verilog HDL 语法中也存 在函数的定义和调用. 1.函数的定义 函数通过关键词 function 和 endfunction 定义,不 ...

  9. 在verilog中#的用法

    # 是延迟的意思,井号后面数字是延迟的数量,延迟的单位由`timescale控制比如有:`timescale 1ns/1ps 意思就是时间单位为1ns,精度是1ps那么,#10.5 就是延迟10.5n ...

最新文章

  1. 网站文章要求图文并茂,图片要怎样做好优化工作呢?
  2. cad绘制椭圆的方法有几种_你还在头疼CAD系统变量如何设置?这些你知道几个吗?...
  3. python实现肯德基店铺查询
  4. Dungeon Master(三维bfs)java
  5. 笔记-高项案例题-2015年上-整体管理
  6. 又一Attention函数诞生啦,带给你意想不到的巨大提升!
  7. GNU源码安装借用YUM排除故障
  8. 初识ES-什么是elasticsearch
  9. python删除字符串中指定_python删除字符串中指定字符
  10. 大数据初学者的福利——Hadoop快速入门教程
  11. python 豆瓣电影top250_Python数据可视化:豆瓣电影TOP250
  12. k邻近算法-分类实操
  13. 习惯的力量在于不由主——知道顶个球用,成为习惯才是你的
  14. iOS 广告SDK总结(一)
  15. 3 年9.9元,网站从HTTP升级到HTTPS
  16. excel锁定单元格不能修改_Excel如何保护特定的数据不被更改?
  17. 2021美赛写作(一)
  18. 放大招!百味勺子硬件设计篇
  19. 数据库服务的运行与登录
  20. 腾讯发布的开发语言安全指南:C/C++安全指南

热门文章

  1. 连接网址 王世林 老罗的Android之旅
  2. 【编译原理】词法分析(一)
  3. 人机界面在石油钻井工程中的应用:如何搭建钻井工程参数监测系统?
  4. Kafka使用SASL_PLAINTEXT实现简易的用户认证及权限
  5. 平面设计中的金色字的颜色是怎么调的?
  6. 什么是io流,以及程序文件的处理
  7. Android Studio Arctic Fox 版本迭代命名含义
  8. 我收藏的全部是精品美女,最经典的
  9. 1039: n个数求和 Python
  10. Python基础-推导式