verilog hdl中generate的使用说明(一)

欢迎各位朋友关注“郝旭帅电子设计团队”,本篇主要讨论generate for的使用。

在编写verilog hdl时,经常需要编写多个结构相同但是连接关系不同或参数不同的模块(逻辑)。如果每一个都单独编写,则需要大量的时间以及大量的代码篇幅;有时我们不确定需要的是具体几个模块,只能够使用参数来确定,那么单独编写是无法胜任的。

verilog hdl中提供了一种动态生成语句(不用设计人员编写,而是综合器遇到这类代码会自动展开)来帮助设计者解决上述的问题。

下面给出一个简单的例子:

单个的异或门:


module xor_gate (

   input     wire            ina,

   input     wire            inb,

   output    wire            os

);



 assign os = ina ^ inb;



endmodule

动态例化nbit的异或门:


module generate_for_nxor #(

 parameter     N       =       16

)(

   input   wire      [N-1:0]       dataa,

   input   wire      [N-1:0]       datab,

   output  wire      [N-1:0]       odata

);



 genvar                          i;

   generate

   for(i=0; i<N; i=i+1) begin : xor_gate

     xor_gate xor_gate_inst(.ina(dataa[i]), .inb(datab[i]), .os(odata[i]));

   end

 endgenerate

endmodule

在使用时,例化的时候给予合适的N即可。

总结关键点:

A. generate for语句必须有genvar关键字定义for的变量,generate_for用于复制模块;

B. for 的内容必须加begin和end

C. 必须给for语段起个名字

本篇内容中有部分资源来源于网络,如有侵权,请联系作者。

如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值