1樓:網友
他的話有點繞,實際上就是寫verilog的三條語法的應用。寫電路還的考慮可綜合性等等一些東西,和c還是有很大差距的,推薦你一本書《veriloghdl高階數字設計。
2樓:a清時明月
人家說的是生成塊,確實生成塊有if,for,case;但是不是一般的語句。我感覺生成塊得概念與c語言的預編譯系統相似,#ifdef……之類,
verilog中的生成塊因該怎樣理解
3樓:網友
generate相關的有generate for, generate if, generate case, generate block,genvar
generate可以理解為靜態行為。一般用的比較多的是它的generate for和generate if。這個和普通的for和if不一樣的地方在於,它描述的是設計單元,而非單純的組合邏輯電路。
而對他的要求在於一定要能在編譯時期,把行為預先確定下來。而for和if可以理解為執行期行為。
舉例而言,假設你有乙個。
parameter odd_chksum = 1'b1;
generate begin
if (odd_chksum == 1'b1) begin
odd_checksum i_checksum(data, o_chksum);
endelse begin
eva_checksum i_checksum(data, o_chksum);
endendgenerate
上述兩個instance只能例項化乙個。在simulation的訊號列表裡面只會看到乙個。而普通的if就不是這樣了,兩個分支你都看的到。
所以在generate block裡面可以有:instance 例項化,assign 語句,always 模組 注意這些都是模組級別的語句。
verilog 生成語句怎麼理解?
4樓:天策寺
3種生成語句其實就是for,if和case。這3種語句的用處都非常打。
for可以用在testbench的激勵設定中,定義乙個integer i,在initial塊中就可以用for來定義乙個迴圈激勵,只要i滿足一定條件,就有乙個對應的激勵產生。
if是最常用的條件語句。最常用在行為級的**書寫中。
比方說。if(!reset_n) /非同步清零有效。
q<=0;
elseq<=d;
case最主要的是要有衫畢個使能端,根據使能端來確定輸出。
如。case( 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
儘量不要用for語句,因為for語句其實是利用計數器完成的,在編譯過程中可能沒問題,但是綜合到實際電路很容易或櫻芹出問題。
使用if語句,不管有沒有else的內容,都要寫上else,即使後面跟空語句。這樣的話綜合不容易出問題。
verilog 生成塊怎麼理解,幹什麼用的,新手,不要笑話我啊,看書,查資料都看不懂。求解釋一下
5樓:網友
系統級抽象:
根據外部傳入的parameter引數,決定塊的實現。
這是verilog2001相對於95最大的改善。
如果是新手可以先不過多研究。
6樓:網友
生成塊跟易於優化設計,初學者在這方面完全不用看,先把結構改清楚再說。
verilog生成塊有什麼特殊的意義嗎我覺得g
7樓:
3種生成語句其實就是for,if和case。這姿殲桐3種語句的用處都非常打。 for可以用在testbench的激勵設定中,定義乙個integer i,在initial塊中就可以用for來定義跡坦乙個迴圈激勵,只要改運i滿足一定條件,就有乙個對應的激勵產生。
if是最常用的條件語句。
您好 請問在verilog裡生成塊和迴圈語句有什麼區別 似乎可以用迴圈語句代替生成塊 看過您在乙個類似問題 但
8樓:紅棗同學
只有連續賦值語句和例項引用語句可以獨立於過程塊存在。迴圈語句不可以。
代表的意義不一樣。生成塊描述的是模組一樣的東西,迴圈語句代表的是一種行為。可以這麼理解吧。
9樓:網友
for生成語句和for語句是兩碼事,for生成語句需把內部迴圈分別。比如你看到乙個for生成語句**只用了乙個門級原語,但實際用的是i個門。如果for生成語句內所有變數值與上次無關,那麼用非生成語句另寫是沒有普通for語句的。
10樓:叫撒名字啊啊啊
生成塊語句實際就是我們c,c++語言中的if,for,case。用法基本和c或者c++的用法也是相同的。
迴圈語句,有三種,分別是:
1) forever 連續的執行語句。
2) repeat 連續執行一條語句 n 次。
3) while 執行一條語句直到某個條件不滿足。如果一開始條件即不滿足(為假), 則語句一次也不能被執行。
不知道這麼說你能理解麼?在一些情況下是可以互相代替的。
verilog中生成語句如何理解?
11樓:
generate for裡面的運算是平行計算的。對於你的**裡面,就是平行計算多個xor。如果只是for,是乙個通常理解的迴圈。
verilog生成塊 這個問題以前有網友問過了 我只是複製了一下他的問題 希望能有更詳細的解答
12樓:八嘎神奈子
執行語句必須在塊中,這點書上都沒有說麼。
塊可以是initial,always之類的,否則單獨的執行語句系統怎麼知道應該在那個時段執行呢。
verilog中的條件運算子,在verilog是什麼運算子,怎麼運用?
不是。應該是當d1等於1即為真時led 5賦值為1,d1等於0即為假時led 5賦值為0 不。該句話意思是 如果d1值為真,即d1非零,則 led d5取1 b1 一位二進位制數1 值,若d1為零,則led d5取1 b0 一位二進位制數0 值 不是,應該是這樣的a b 1 b0 1 b0 當b為真...
如何用verilog程式中的測試模組進行測試
也算系統程式的一種吧.如何用verilog程式中的測試模組進行測試?quartus ii 中如何通過verilog編寫測試檔案 是的從9.0?以後的版本開始 quartus去掉了波形檔案 所以只能用第三方軟體 而且很多時候用第三方軟體更方便。至於怎麼一起用,網上找找的話有解釋滴。要把測試程式寫在源程...
離子方程式中微溶物 如硫酸鈣 在生成物中是寫作沉澱還是拆
微溶性物質,作為生成物一律寫成沉澱,也就是說不拆,直接寫成化學式專。當然,在極為少數的情況下屬微溶物沒有飽和,也就是在理論上有不拆的可能,但是他們的溶解性實在是太小了,我們老師說她在這麼多年根本沒有看見過微溶物拆開的情況,所以不要拆。高一化學重難點手冊上第92頁有,我是前兩天剛問了我們老師這個題目。...