一道verilog筆試題考察的generate特性

2021-10-04 20:42:04 字數 2787 閱讀 3875

可以動態的生成verilog**,當對向量中的多個位進行重複操作時,或者當進行多個模組的例項引用的重複操作時,或者根據引數的定義來確定程式中是否應該包含某段verilog**的時候,使用生成語句能大大簡化程式的編寫過程。

生成語句生成的例項範圍,關鍵字generate-endgenerate用來指定該範圍。生成例項可以是以下的乙個或多個型別:

(1)模組;(2)使用者定義原語;(3)門級語句;(4)連續賦值語句;(5)initial和always塊。

generate語句有generate-for,generate-if,generate-case三種語句。

用法:generate語法有generate for, genreate if和generate case三種

generate for語句必須有genvar關鍵字定義for的變數

for 的內容必須加begin和end

必須給for語段起個名字

基本結構如下:

genvar 迴圈變數名;

generate

// generate迴圈語句

// generate 條件語句

// generate 分支語句

// 巢狀的generate語句

endgenerate

下面是一道筆試題

以上邏輯不可綜合

generate if()後如果是語句需要加assign,如果是例項化模組不用加

例1:assign語句實現

module test(bin,gray)

; parameter size=8;

output [size-1:0] bin;

input [size-1:0] gray;

genvar i; //genvar i;也可以定義到generate語句裡面

generate

for(i=0;i

begin:bit

assign bin[i]

=^gray[size-1:i]

; end

endgenerate

endmodule

等同於下面語句

assign bin[0]

=^gray[size-1:0]

;assign bin[1]

=^gray[size-1:1]

;assign bin[2]

=^gray[size-1:2]

;assign bin[3]

=^gray[size-1:3]

;assign bin[4]

=^gray[size-1:4]

;assign bin[5]

=^gray[size-1:5]

;assign bin[6]

=^gray[size-1:6]

;assign bin[7]

=^gray[size-1:7]

;

generate if例子:

generate

if(reg_width == write_width) begin : new_data_a_generation

assign new_data_a = merge_update ? merge_wr_data : held_wr_data_a;

endelse begin

assign new_data_a = merge_update ?

}, merge_wr_data} :

}, held_wr_data_a}

;end

endgenerate

generate for的例子

generate

genvar i;

for(i=0;i

begin:shifter

always@(posedge clk)

shifter[i]

<=

(i==0)?din:shifter[i-1]

; end

endgenerate

相當於always@(posedge clk)

shifter[0]

<=din;

always@(posedge clk)

shifter[1]

<=shifter[0]

;always@(posedge clk)

shifter[2]

<=shifter[1]

;always@(posedge clk)

shifter[size]

<=shifter[size-1]

;generate-if,generate-case和generate-for語句類似。

下面是一道筆試題formality 是由synopsys公司開發的一種形式驗證工具,用於兩個design間等價性驗證,下面正確的是全對

一道筆試題

看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...

一道筆試題

上次去筆試的時候,有一道題,怎麼也沒做出來,當時也是很緊張,有些思路,但卻沒有做出來。有四個人要過乙個獨木橋,因為天比較黑,而且橋只能允許兩個人同時通過,並且他們只有乙個手電筒。四個人單獨同時橋的時間是1,2,5,8分鐘。問最短的時間是多少?當時我的答案 1和8,1回來,1 5,1回來,1 2 8 ...

一道筆試題

題目是這樣的 判斷乙個小於1000的正整數是否為素數。素數的定義就不說了,以下直接分析解法,畢竟是在寫與專業相關的東西,是給本專業的人看得,所以看的人應該有點基礎吧?求素數的問題是乙個數學上的難題,這是常識,但是本題目限制了最大範圍是在1000以內,所以就可以嘗試找出乙個足夠好的解了。首先給出乙個最...