generate用法
生活随笔
收集整理的這篇文章主要介紹了
generate用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
verilog2001中在呢個價四個關鍵字,generate,endgenerate, genvar, localparam.
genvar是一個新增的數據類型,用在generate的循環中的標尺變量必須定義為genvar類型。
module buffer_1(input wire in,output wire out);assign out = ~in; endmodule module buffer_8(input wire[7:0] din,output wire[7:0] dout);genvar i;generatefor(i=0; i<8; i=i+1) beginbuffer_1 buffer_1_1(.in(din[i]), .out(dout[i]));end endgenerate endmodulegenerate 語句中可以出現以下三種語句:
循環
module nbit_xor#(parameter SIZE=16)(input(SIZE-1:0) a,b,output[SIZE-1:0] y);genvar gv_i;generatefor(gv_i=0;gv_i<SIZE;gv_i++)begin:sblkaxor uxor(y[gv_i],a[gv_i],b[gv_i]);endendgenerate endmodule條件
module adder#(parameter SIZE=4)(input[SIZE-1:0] a,b,output[SIZE-1:0] sum,output carry_out);wire [SIZE-1:0] carry;genvar gv_k;generatefor(gv_k=0;gv_k<SIZE;gv_k++)begin: gen_blk_adderif(gv_k == 0)half_adder u_ha (.a(a[gv_k]),.b(b[gv_k]),.sum(sum[gv_k]),.carry_out(carry[gv_k]),);elsefull_adder u_ha (.a(a[gv_k]),.b(b[gv_k]),.sum(sum[gv_k]),.carry_in(carry[gv_k-1]),.carry_out(carry[gv_k]),);endendgenerate endmodule分支
module adder#(parameter SIZE=4parameter IMPLEMENTATION_LEVEL=0)(input[SIZE-1:0] arg1,arg2,output[SIZE-1:0] result,);generatecase(IMPLEMENTATION_LEVEL)0: assign result=arg1+arg2;1:.....;2:.....;3:.....;default:......;endgenerate endmodule總結
以上是生活随笔為你收集整理的generate用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业租用服务器大带宽有哪些优势
- 下一篇: Android 开发系列7 判断上网方式