verilog 生成语句怎么理解?

本人刚开始看verilog,看到生成块,不明白生成块的作用,它和c语言中有没有类似的可以对照理解的知识?希望大神能给个形象,易懂的解释... 本人刚开始看verilog,看到生成块,不明白生成块的作用,它和c语言中有没有类似的可以对照理解的知识?希望大神能给个形象,易懂的解释 展开
 我来答
天策寺
2013-08-20 · TA获得超过112个赞
知道答主
回答量:58
采纳率:0%
帮助的人:28.4万
展开全部

3种生成语句其实就是for,if和case。这3种语句的用处都非常打。
for可以用在testbench的激励设置中,定义一个integer i,在initial块中就可以用for来定义一个循环激励,只要i满足一定条件,就有一个对应的激励产生。
if是最常用的条件语句。最常用在行为级的代码书写中。
比方说
if(!reset_n)  // 异步清零有效
  q<=0;
else
   q<=d;
case的用处更多了。当你知道你想定义的输出端是什么的时候,就可以用case来生成输出信号。
case最主要的是要有个使能端,根据使能端来确定输出。

case( {s1,s0} )    // 4选1mux
 2'b00:  y=x[0];
 2'b01:  y=x[1];
 2'b10:  y=x[2];
 2'b11:  y=x[3];
 default:  y=1'bz;
endcase


提醒:

  1. 尽量不要用for语句,因为for语句其实是利用计数器完成的,在编译过程中可能没问题,但是综合到实际电路很容易出问题。

  2. 使用if语句,不管有没有else的内容,都要写上else,即使后面跟空语句。这样的话综合不容易出问题。

追问
generate    endgenerate可以没有吗,一定要把for   if  case 写在generate  endgenerate之间吗?
追答
不可以,verilog是按块进行编译的,每一个块同时进行编译。if else语句等只是生成语句,必须使用在begin end等块语句中。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式