芯片設計代碼的一些寫法記錄

1、generate用法

  • 定義genvar,作爲generate中的循環變量;
  • generate語句中定義的for語句,必須要有begin,爲後續增加標籤做準備;
  • begin必須要有名稱,也就是必須要有標籤,因爲標籤會作爲generate循環的實例名稱;
  • 可以使用在generate語句中的類型主要有:
    module(模塊)
    UDP(用戶自定義原語)
    門級原語
    連續賦值語句
    nitial或always語句
  • 基本結構如下:
genvar 循環變量名;
generate
	1. generate-loop循環語句
    2. generate-conditional條件語句
    3. generate-case分支語句
    4. 嵌套的generate語句
endgenerate

generate-for例子:

##一個參數化的gray-code to binary-code 轉換器,這裏採用複製產生多個assign語句的形式來實現
module gray2bin1 (bin, gray);
	parameter SIZE =8; 
	parameter SIZE =8; 
	input [SIZE-1:0] gray; 
	genvar i;
	generate  
		for(i=0; i<SIZE; i=i+1) 
		begin: bit 
			assign bin[i]=^gray[SIZE-1:i]; 
		end
	endgenerate 
endmodule 

generate-if例子:

generate if(MUX_NUM == 0)begin : mux4_1
    always@(*)begin
        data_out = data_in0;
    end
end else if(MUX_NUM = 1) begin : mux3_1
    always@(*)begin
        data_out = data_in1;
    end
end else begin : mux2_1
    always@(*)begin
        data_out = data_in2;
    end
end endgenerate

generate-case例子:

generate
    case(MUX_NUM)
        0:begin:mux_2
        end
        1:begin: mux_3
        end
        2:begin: mux_4
        end
        default:begin
        end
    endcase
end endgenerate

2、

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章