在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2281|回复: 0

[讨论] verilog 书写风格讨论

[复制链接]
发表于 2016-3-12 10:38:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
1.
always @(posedge clk or negedge rst_n)
begin
  if (!rst_n) begin
    r_c <= 2'd0;
    r_a <= #1 2'd0;
  end
  else begin
    r_a <= #1 r_b;
    r_c <= #1 r_b;
  end
end
在仿真和综合时,这两种写法有什么不同?
Is there some difference in simulation and synthsis?

2.
parameter BIT_WIDTH = 8;
parameter BUFF_LENGTH = 16;
input [BIT_WIDTH-1:0] i_data;
reg [BIT_WIDTH-1:0]s_data_buff[BUFF_LENGTH-1:0];
integer i;
2.1
always @(posedge clk or negedge rst_n)
if (!rst_n) begin
  for(i=0; i< BUFF_LENGTH; i=i+1)s_data_buff[i] <= #1 {BIT_WIDTH{1'd0}};
end
else begin
  s_data_buff[0] <= #1 i_data;
  for(i=0; i< BUFF_LENGTH-1;i=i+1)s_data_buff[i+1] <= #1 s_data_buff[i];
end
2.2
wire [3:0] w_buff_length;//0--15
always @(posedge clk or negedge rst_n)
if (!rst_n) begin
  for(i=0; i< w_buff_length; i=i+1)s_data_buff[i] <= #1 {BIT_WIDTH{1'd0}};
end
else begin
  s_data_buff[0] <= #1 i_data;
  for(i=0; i< w_buff_length-1;i=i+1)s_data_buff[i+1] <= #1 s_data_buff[i];
end
这两种写法都可以使用吗?
Are the two styles both good ?

3.
parameter DEPTH = 10;
parameter WIDTH = 8;
generate
genvar i;
for ( i = 0;i <DEPTH;i = i + 1 ) begin:data_gen
reg [WIDTH - 1:0] data;
if ( i == 0 ) begin
    always @ ( posedge clk,negedge resetn )
    if ( !resetn ) begin
        data <= { ( DEPTH ) {1'b0}};
    end
    else begin
        if ( conditiona) data_gen[i].data <= { ( DEPTH ) {1'b0}};
        else if ( conditionb) data_gen[i].data <= din;
        else if ( conditionc ) data_gen[i].data <= data_gen[i + 1].data;
        else data_gen[i].data <= data_gen[i].data;
    end
end
else if ( i < DEPTH - 1 ) begin
    always @ ( posedge clk,negedge resetn )
    if ( !resetn ) begin
        data <= { ( DEPTH ) {1'b0}};
    end
    else begin
        if ( conditiona) data_gen[i].data <= din;
        else if ( conditionb ) data_gen[i].data <= data_gen[i + 1].data;
        else data_gen[i].data <= data_gen[i].data;
    end
end
else begin
    always @ ( posedge clk,negedge resetn )
    if ( !resetn ) begin
        data <= { ( DEPTH ) {1'b0}};
    end
    else begin
        if ( conditiona ) data_gen[i].data <= din;
        else data_gen[i].data <= data_gen[i].data;
    end
end
end
endgenerate
有人经常使用generate语法吗?
Is there anybody usually use generate syntax?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-29 08:40 , Processed in 0.012406 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表